diff --git a/klp-wms/src/main/java/com/klp/domain/WmsStock.java b/klp-wms/src/main/java/com/klp/domain/WmsStock.java index e8d15731..44cd8c61 100644 --- a/klp-wms/src/main/java/com/klp/domain/WmsStock.java +++ b/klp-wms/src/main/java/com/klp/domain/WmsStock.java @@ -35,10 +35,6 @@ public class WmsStock extends BaseEntity { * 物品ID(指向原材料或产品主键) */ private Long itemId; - /** - * 钢卷ID(指向wms_material_coil.coil_id) - */ - private Long coilId; /** * 批次号(可选) */ diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index c2e1c0b1..98c84e71 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -161,6 +161,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setCoilId(add.getCoilId()); + // 4. 更新二维码内容中的coilId + updateQrcodeCoilId(qrcodeRecordId, add.getCoilId()); } return flag; } @@ -175,6 +177,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { contentMap.put("enter_coil_no", bo.getEnterCoilNo()); // 入场钢卷号(唯一不变) contentMap.put("current_coil_no", currentCoilNo); // 当前钢卷号(可变) + contentMap.put("coil_id", null); // 钢卷ID(新增时暂时为null,插入后更新) // 创建steps数组 List> steps = new ArrayList<>(); @@ -395,6 +398,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { validEntityBeforeSave(newCoil); baseMapper.insert(newCoil); newCoils.add(newCoil); + + // 更新二维码内容中的coilId + updateQrcodeCoilId(newQrcodeId, newCoil.getCoilId()); } } else if (isMerge) { // 合卷:将bo作为合卷后的新钢卷,newCoils中的对象作为参与合卷的原始钢卷 @@ -428,6 +434,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { validEntityBeforeSave(newCoil); baseMapper.insert(newCoil); newCoils.add(newCoil); + + // 更新二维码内容中的coilId + updateQrcodeCoilId(mergedQrcodeId, newCoil.getCoilId()); } return true; @@ -441,6 +450,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { Map contentMap = new HashMap<>(); contentMap.put("enter_coil_no", oldCoil.getEnterCoilNo()); contentMap.put("current_coil_no", newCoilBo.getCurrentCoilNo()); + contentMap.put("coil_id", null); // 钢卷ID(分卷时暂时为null,插入后更新) // 复制原钢卷的历史steps List> steps = new ArrayList<>(); @@ -464,6 +474,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { splitStep.put("action", "更新"); splitStep.put("operation", "分卷"); splitStep.put("old_current_coil_no", oldCoil.getCurrentCoilNo()); + splitStep.put("old_coil_id", oldCoil.getCoilId()); splitStep.put("new_current_coil_nos", String.join(",", allNewCoilNos)); splitStep.put("child_coils", allNewCoilNos); steps.add(splitStep); @@ -507,6 +518,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } contentMap.put("enter_coil_no", enterCoilNo); contentMap.put("current_coil_no", mergedCoilBo.getCurrentCoilNo()); + contentMap.put("coil_id", null); // 钢卷ID(合卷时暂时为null,插入后更新) // 合并所有参与合卷的原始钢卷的历史steps List> steps = new ArrayList<>(); @@ -540,16 +552,21 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { mergeStep.put("action", "更新"); mergeStep.put("operation", "合卷"); - // 收集参与合卷的原始钢卷号 + // 收集参与合卷的原始钢卷号和ID List originalCoilNos = new ArrayList<>(); + List originalCoilIds = new ArrayList<>(); if (originalCoils != null && !originalCoils.isEmpty()) { for (WmsMaterialCoilBo originalCoilBo : originalCoils) { if (originalCoilBo.getCurrentCoilNo() != null) { originalCoilNos.add(originalCoilBo.getCurrentCoilNo()); } + if (originalCoilBo.getCoilId() != null) { + originalCoilIds.add(originalCoilBo.getCoilId().toString()); + } } } mergeStep.put("parent_coil_nos", String.join(",", originalCoilNos)); + mergeStep.put("parent_coil_ids", String.join(",", originalCoilIds)); mergeStep.put("new_current_coil_no", mergedCoilBo.getCurrentCoilNo()); steps.add(mergeStep); @@ -571,6 +588,35 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { throw new RuntimeException("生成合卷二维码失败: " + e.getMessage()); } } + /** + * 更新二维码内容中的coilId + */ + private void updateQrcodeCoilId(Long qrcodeRecordId, Long coilId) { + try { + // 获取二维码记录 + WmsGenerateRecordVo record = generateRecordService.queryById(qrcodeRecordId); + if (record == null) { + throw new RuntimeException("二维码记录不存在"); + } + + // 解析现有content + ObjectMapper objectMapper = new ObjectMapper(); + Map contentMap = objectMapper.readValue(record.getContent(), Map.class); + + // 更新coilId + contentMap.put("coil_id", coilId); + + // 更新二维码记录 + String newContentJson = objectMapper.writeValueAsString(contentMap); + WmsGenerateRecordBo updateBo = new WmsGenerateRecordBo(); + updateBo.setRecordId(qrcodeRecordId); + updateBo.setContent(newContentJson); + generateRecordService.updateByBo(updateBo); + } catch (Exception e) { + throw new RuntimeException("更新二维码coilId失败: " + e.getMessage()); + } + } + /** * 更新二维码内容(单个更新) */ @@ -602,6 +648,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { newStep.put("action", "更新"); newStep.put("old_current_coil_no", oldCoil.getCurrentCoilNo()); // 原当前钢卷号 newStep.put("new_current_coil_no", bo.getCurrentCoilNo()); // 新当前钢卷号 + newStep.put("coil_id", bo.getCoilId()); // 钢卷ID // 判断操作类型 if (bo.getHasMergeSplit() != null && bo.getHasMergeSplit() == 2) { @@ -691,6 +738,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { extractCoilNo(step, "new_current_coil_nos", coilNos); extractCoilNo(step, "merged_from", coilNos); extractCoilNo(step, "parent_coil_nos", coilNos); + // 提取钢卷ID字段 + extractCoilId(step, "coil_id", coilNos); + extractCoilId(step, "old_coil_id", coilNos); + extractCoilId(step, "parent_coil_ids", coilNos); } } @@ -757,5 +808,24 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } } + + /** + * 从step中提取钢卷ID + */ + private void extractCoilId(Map step, String fieldName, Set coilNos) { + Object value = step.get(fieldName); + if (value != null) { + String strValue = value.toString(); + if (strValue.contains(",")) { + // 如果是逗号分隔的多个钢卷ID,分割后添加 + String[] coilArray = strValue.split(","); + for (String coilId : coilArray) { + coilNos.add(coilId.trim()); + } + } else { + coilNos.add(strValue.trim()); + } + } + } }