Browse Source

feat(pms): 添加备品备件编码自动生成功能

- 新增 getMaxPartNo 接口用于获取当前BU下备品备件编码最大值+1
- 在 PartSpareMapper 中添加 listPartNoByBu 数据查询方法
- 更新数据库查询排序规则为按编码降序排列
- 实现编码解析逻辑,支持字母前缀+数字后缀格式自动递增
- 添加正则表达式匹配和数字格式化处理
- 集成到 PartSpareService 服务层提供统一接口
master
qiankanghui 2 weeks ago
parent
commit
f68aa003da
  1. 12
      src/main/java/com/xujie/sys/modules/pms/controller/PartSpareController.java
  2. 2
      src/main/java/com/xujie/sys/modules/pms/mapper/PartSpareMapper.java
  3. 35
      src/main/java/com/xujie/sys/modules/pms/service/Impl/PartSpareServiceImpl.java
  4. 7
      src/main/java/com/xujie/sys/modules/pms/service/PartSpareService.java
  5. 11
      src/main/resources/mapper/pms/PartSpareMapper.xml

12
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: 修改备品备件信息

2
src/main/java/com/xujie/sys/modules/pms/mapper/PartSpareMapper.java

@ -43,5 +43,7 @@ public interface PartSpareMapper extends BaseMapper<PartSpareEntity> {
List<InventoryStockData> selectInventoryStock(InventoryStockData inData);
List<String> listPartNoByBu(@Param("site") String site, @Param("buNo") String buNo);
void insertInventoryStock(InventoryStockData inData);
}

35
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<PartSpareMapper, PartSpare
}
@Override
public String getMaxPartNo(PartSpareEntity partSpare) {
// 获得 site 和 bu
if (partSpare.getBu() == null || partSpare.getBu().split("_").length < 2) {
throw new RuntimeException("工厂和部门有误!");
}
String site = partSpare.getBu().split("_")[0];
String buNo = partSpare.getBu().split("_")[1];
// 查询当前BU下所有编码,取“字母前缀+数字后缀”中数字最大的一条,前缀与补零位数保持不变后+1
List<String> 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) {
// 校验备品备件是否在被使用

7
src/main/java/com/xujie/sys/modules/pms/service/PartSpareService.java

@ -57,6 +57,13 @@ public interface PartSpareService extends IService<PartSpareEntity> {
*/
void savePartSpare(PartSpareEntity partSpare);
/**
* @description: 获取当前BU下备品备件编码最大值+1
* @param [partSpare]
* @return: java.lang.String
*/
String getMaxPartNo(PartSpareEntity partSpare);
/**
* @author: sxm
* @description: 修改在途信息

11
src/main/resources/mapper/pms/PartSpareMapper.xml

@ -128,7 +128,7 @@
and A.coreFlag = #{query.coreFlag}
</if>
</where>
order by A.create_date desc
order by A.part_no desc, A.create_date desc
</select>
<select id="getObjectList1" resultType="com.xujie.sys.modules.pms.data.EamObjectInData" parameterType="com.xujie.sys.modules.pms.entity.PartSpareEntity">
@ -214,6 +214,15 @@
where site = #{site} and citem_code = #{citemCode} and part_no = #{partNo}
</select>
<!-- 获取当前BU下所有备品备件编码(供后端计算最大值+1) -->
<select id="listPartNoByBu" resultType="java.lang.String">
select A.part_no
from part_spare A
where A.site = #{site}
and A.bu_no = #{buNo}
and A.part_no is not null
</select>
<update id="updatePartSpare" parameterType="com.xujie.sys.modules.pms.entity.PartSpareEntity">
UPDATE part_spare
SET part_description = #{partDescription},

Loading…
Cancel
Save