Browse Source

2026-08-27

物料“编码”调整:
首字母不显示F和R;
保存“编码”时,同步修改同家族“未维护编码”的物料的“编码”;
master
fengyuan_yang 4 weeks ago
parent
commit
a168a3d367
  1. 87
      src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java

87
src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java

@ -106,6 +106,8 @@ import static com.spring.modules.part.task.PartRelatedTask.convertToSQLString;
@Slf4j
public class PartInformationServiceImpl extends ServiceImpl<PartInformationMapper, PartInformationEntity> implements PartInformationService {
private static final int DRAWING_NO_SYNC_PART_PREFIX_LENGTH = 8;
@Autowired
private ProcedureDao procedureDao;
@ -912,6 +914,7 @@ public class PartInformationServiceImpl extends ServiceImpl<PartInformationMappe
updateInformationWrapper.eq("site", data.getSite());
updateInformationWrapper.eq("part_no", data.getPartNo());
partInformationMapper.update(data, updateInformationWrapper);
syncDrawingNoByPartPrefix(data);
recordChangeRemark(data.getSite(), data.getPartNo(), data.getUpdateBy(), "用户编辑物料");
if (dataUrl) {
@ -1237,6 +1240,7 @@ public class PartInformationServiceImpl extends ServiceImpl<PartInformationMappe
updateInformationWrapper.eq("site", data.getSite());
updateInformationWrapper.eq("part_no", data.getPartNo());
partInformationMapper.update(data, updateInformationWrapper);
syncDrawingNoByPartPrefix(data);
recordChangeRemark(data.getSite(), data.getPartNo(), data.getUpdateBy(), "用户编辑物料(项目页面)");
// 判断是否需要修改项目物料的BU
if (StringUtils.hasText(data.getBuNo())) {
@ -1262,28 +1266,95 @@ public class PartInformationServiceImpl extends ServiceImpl<PartInformationMappe
@Override
@Transactional
public void updatePartDrawingNo(PartInformationVo data) {
if (!StringUtils.hasText(data.getSite()) || !StringUtils.hasText(data.getPartNo())) {
String site = normalizePartAndDrawingText(data.getSite());
String partNo = normalizePartAndDrawingText(data.getPartNo());
String drawingNo = normalizePartAndDrawingText(data.getDrawingNo());
if (!StringUtils.hasText(site) || !StringUtils.hasText(partNo)) {
throw new RuntimeException("缺少site或物料编码,无法自动保存编码!");
}
if (!StringUtils.hasText(data.getDrawingNo()) || "NA".equalsIgnoreCase(data.getDrawingNo().trim())) {
if (!StringUtils.hasText(drawingNo) || "NA".equalsIgnoreCase(drawingNo)) {
throw new RuntimeException("编码为空,无法自动保存!");
}
PartInformationEntity partData = partInformationMapper.selectOne(
new QueryWrapper<PartInformationEntity>()
.eq("site", data.getSite())
.eq("part_no", data.getPartNo())
.eq("site", site)
.eq("part_no", partNo)
);
if (partData == null) {
throw new RuntimeException("未找到对应物料,无法自动保存编码!");
}
PartInformationEntity updateData = new PartInformationEntity();
updateData.setDrawingNo(data.getDrawingNo().trim());
updateData.setDrawingNo(drawingNo);
updateData.setUpdateBy(data.getUpdateBy());
UpdateWrapper<PartInformationEntity> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("site", data.getSite());
updateWrapper.eq("part_no", data.getPartNo());
updateWrapper.eq("site", site);
updateWrapper.eq("part_no", partNo);
partInformationMapper.update(updateData, updateWrapper);
recordChangeRemark(data.getSite(), data.getPartNo(), data.getUpdateBy(), "占有编码自动保存");
data.setSite(site);
data.setPartNo(partNo);
data.setDrawingNo(drawingNo);
syncDrawingNoByPartPrefix(data);
recordChangeRemark(site, partNo, data.getUpdateBy(), "占有编码自动保存");
}
private void syncDrawingNoByPartPrefix(PartInformationVo data) {
if (data == null) {
return;
}
String site = normalizePartAndDrawingText(data.getSite());
String partNo = normalizePartAndDrawingText(data.getPartNo());
String drawingNo = normalizePartAndDrawingText(data.getDrawingNo());
if (!StringUtils.hasText(site) || !StringUtils.hasText(partNo) || isUnmaintainedDrawingNo(drawingNo)) {
return;
}
if (partNo.length() < DRAWING_NO_SYNC_PART_PREFIX_LENGTH) {
return;
}
String partNoPrefix = partNo.substring(0, DRAWING_NO_SYNC_PART_PREFIX_LENGTH);
List<PartInformationEntity> samePrefixPartList = partInformationMapper.selectList(
new QueryWrapper<PartInformationEntity>()
.select("part_no", "drawing_no")
.eq("site", site)
.likeRight("part_no", partNoPrefix)
.ne("part_no", partNo)
);
if (samePrefixPartList == null || samePrefixPartList.isEmpty()) {
return;
}
List<String> pendingSyncPartNos = samePrefixPartList.stream()
.filter(Objects::nonNull)
.filter(item -> isUnmaintainedDrawingNo(item.getDrawingNo()))
.map(PartInformationEntity::getPartNo)
.map(this::normalizePartAndDrawingText)
.filter(StringUtils::hasText)
.distinct()
.collect(Collectors.toList());
if (pendingSyncPartNos.isEmpty()) {
return;
}
PartInformationEntity syncData = new PartInformationEntity();
syncData.setDrawingNo(drawingNo);
syncData.setUpdateBy(data.getUpdateBy());
UpdateWrapper<PartInformationEntity> syncWrapper = new UpdateWrapper<>();
syncWrapper.eq("site", site);
syncWrapper.in("part_no", pendingSyncPartNos);
int syncRows = partInformationMapper.update(syncData, syncWrapper);
if (syncRows > 0) {
log.info("同前8位编码联动成功,site={}, sourcePartNo={}, prefix={}, drawingNo={}, syncRows={}",
site, partNo, partNoPrefix, drawingNo, syncRows);
}
}
private String normalizePartAndDrawingText(String text) {
if (text == null) {
return "";
}
return text.trim();
}
private boolean isUnmaintainedDrawingNo(String drawingNo) {
String normalizedDrawingNo = normalizePartAndDrawingText(drawingNo);
return !StringUtils.hasText(normalizedDrawingNo) || "NA".equalsIgnoreCase(normalizedDrawingNo);
}
/**

Loading…
Cancel
Save