From f68aa003da112767b9587ee6efc49304c15d3d97 Mon Sep 17 00:00:00 2001 From: qiankanghui Date: Wed, 28 Oct 2026 16:51:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(pms):=20=E6=B7=BB=E5=8A=A0=E5=A4=87?= =?UTF-8?q?=E5=93=81=E5=A4=87=E4=BB=B6=E7=BC=96=E7=A0=81=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 getMaxPartNo 接口用于获取当前BU下备品备件编码最大值+1 - 在 PartSpareMapper 中添加 listPartNoByBu 数据查询方法 - 更新数据库查询排序规则为按编码降序排列 - 实现编码解析逻辑,支持字母前缀+数字后缀格式自动递增 - 添加正则表达式匹配和数字格式化处理 - 集成到 PartSpareService 服务层提供统一接口 --- .../pms/controller/PartSpareController.java | 12 +++++++ .../modules/pms/mapper/PartSpareMapper.java | 2 ++ .../service/Impl/PartSpareServiceImpl.java | 35 +++++++++++++++++++ .../modules/pms/service/PartSpareService.java | 7 ++++ .../resources/mapper/pms/PartSpareMapper.xml | 11 +++++- 5 files changed, 66 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/xujie/sys/modules/pms/controller/PartSpareController.java b/src/main/java/com/xujie/sys/modules/pms/controller/PartSpareController.java index 862dfb1b..46d4727f 100644 --- a/src/main/java/com/xujie/sys/modules/pms/controller/PartSpareController.java +++ b/src/main/java/com/xujie/sys/modules/pms/controller/PartSpareController.java @@ -80,6 +80,18 @@ public class PartSpareController { return R.ok(); } + /** + * @author: sxm + * @description: 获取当前BU下备品备件编码最大值+1 + * @param + * @return: com.xujie.common.utils.R + */ + @RequestMapping("/getMaxPartNo") + public R getMaxPartNo(@RequestBody PartSpareEntity partSpare) { + String maxPartNo = partSpareService.getMaxPartNo(partSpare); + return R.ok().put("maxPartNo", maxPartNo); + } + /** * @author: sxm * @description: 修改备品备件信息 diff --git a/src/main/java/com/xujie/sys/modules/pms/mapper/PartSpareMapper.java b/src/main/java/com/xujie/sys/modules/pms/mapper/PartSpareMapper.java index 48cc3420..3e74bf38 100644 --- a/src/main/java/com/xujie/sys/modules/pms/mapper/PartSpareMapper.java +++ b/src/main/java/com/xujie/sys/modules/pms/mapper/PartSpareMapper.java @@ -43,5 +43,7 @@ public interface PartSpareMapper extends BaseMapper { List selectInventoryStock(InventoryStockData inData); + List listPartNoByBu(@Param("site") String site, @Param("buNo") String buNo); + void insertInventoryStock(InventoryStockData inData); } diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/PartSpareServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/PartSpareServiceImpl.java index 7c7fe552..4228e745 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/PartSpareServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/Impl/PartSpareServiceImpl.java @@ -33,6 +33,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; @Service("partSpareService") @@ -127,6 +129,39 @@ public class PartSpareServiceImpl extends ServiceImpl codes = partSpareMapper.listPartNoByBu(site, buNo); + Pattern pattern = Pattern.compile("^(\\D*?)(\\d+)$"); + String prefix = "R"; + int digits = 4; + long maxNum = -1L; + for (String code : codes) { + if (code == null) { + continue; + } + Matcher matcher = pattern.matcher(code.trim()); + if (!matcher.matches()) { + continue; + } + long num = Long.parseLong(matcher.group(2)); + if (num > maxNum) { + maxNum = num; + prefix = matcher.group(1); + digits = matcher.group(2).length(); + } + } + long next = (maxNum < 0) ? 1L : maxNum + 1; + return prefix + String.format("%0" + digits + "d", next); + } + @Override public void deletePartSpare(PartSpareEntity partSpare) { // 校验备品备件是否在被使用 diff --git a/src/main/java/com/xujie/sys/modules/pms/service/PartSpareService.java b/src/main/java/com/xujie/sys/modules/pms/service/PartSpareService.java index b0719e50..365c8023 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/PartSpareService.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/PartSpareService.java @@ -57,6 +57,13 @@ public interface PartSpareService extends IService { */ void savePartSpare(PartSpareEntity partSpare); + /** + * @description: 获取当前BU下备品备件编码最大值+1 + * @param [partSpare] + * @return: java.lang.String + */ + String getMaxPartNo(PartSpareEntity partSpare); + /** * @author: sxm * @description: 修改在途信息 diff --git a/src/main/resources/mapper/pms/PartSpareMapper.xml b/src/main/resources/mapper/pms/PartSpareMapper.xml index 86f4c9b9..d5bef519 100644 --- a/src/main/resources/mapper/pms/PartSpareMapper.xml +++ b/src/main/resources/mapper/pms/PartSpareMapper.xml @@ -128,7 +128,7 @@ and A.coreFlag = #{query.coreFlag} - order by A.create_date desc + order by A.part_no desc, A.create_date desc + + + UPDATE part_spare SET part_description = #{partDescription},