Merge remote-tracking branch 'origin/0.8.X' into 0.8.X
This commit is contained in:
@@ -260,6 +260,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
recordBo.setQrcodeType(0L);
|
||||
recordBo.setIsEnabled(0L);
|
||||
recordBo.setSize(200L);
|
||||
recordBo.setStatus(1); // 1=当前有效码
|
||||
|
||||
WmsGenerateRecordVo record = generateRecordService.insertByBo(recordBo);
|
||||
return record.getRecordId();
|
||||
@@ -362,8 +363,19 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
throw new RuntimeException("原钢卷不存在");
|
||||
}
|
||||
|
||||
// 1. 更新二维码,添加操作记录
|
||||
updateQrcodeContent(oldCoil.getQrcodeRecordId(), bo);
|
||||
// 判断warehouseId是否发生变化
|
||||
boolean warehouseChanged = bo.getWarehouseId() != null &&
|
||||
!bo.getWarehouseId().equals(oldCoil.getWarehouseId());
|
||||
|
||||
Long qrcodeRecordId;
|
||||
if (warehouseChanged) {
|
||||
// 如果库区发生变化,生成新的二维码
|
||||
qrcodeRecordId = generateQrcodeForUpdate(oldCoil, bo);
|
||||
} else {
|
||||
// 如果库区未变化,更新原二维码内容
|
||||
updateQrcodeContent(oldCoil.getQrcodeRecordId(), bo);
|
||||
qrcodeRecordId = oldCoil.getQrcodeRecordId();
|
||||
}
|
||||
|
||||
// 2. 将原数据更新为历史数据(data_type=0)
|
||||
LambdaUpdateWrapper<WmsMaterialCoil> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
@@ -375,12 +387,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
WmsMaterialCoil newCoil = BeanUtil.toBean(bo, WmsMaterialCoil.class);
|
||||
newCoil.setCoilId(null); // 清空ID,让数据库自动生成新的ID
|
||||
newCoil.setDataType(1); // 设置为当前数据
|
||||
newCoil.setQrcodeRecordId(oldCoil.getQrcodeRecordId()); // 继承二维码ID
|
||||
newCoil.setQrcodeRecordId(qrcodeRecordId); // 使用新的或原有的二维码ID
|
||||
|
||||
// 确保关键字段不丢失
|
||||
if (newCoil.getEnterCoilNo() == null) {
|
||||
newCoil.setEnterCoilNo(oldCoil.getEnterCoilNo());
|
||||
}
|
||||
// 确保关键字段不丢失(入场钢卷号始终不变)
|
||||
newCoil.setEnterCoilNo(oldCoil.getEnterCoilNo()); // 入场钢卷号始终不变
|
||||
if (newCoil.getSupplierCoilNo() == null) {
|
||||
newCoil.setSupplierCoilNo(oldCoil.getSupplierCoilNo()); // 保留厂家原料卷号
|
||||
}
|
||||
@@ -395,10 +405,83 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
boolean flag = baseMapper.insert(newCoil) > 0;
|
||||
if (flag) {
|
||||
bo.setCoilId(newCoil.getCoilId());
|
||||
// 如果生成了新二维码,更新二维码中的coilId
|
||||
if (warehouseChanged) {
|
||||
updateQrcodeCoilId(qrcodeRecordId, newCoil.getCoilId());
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成二维码(更新时库区变化)
|
||||
*/
|
||||
private Long generateQrcodeForUpdate(WmsMaterialCoil oldCoil, WmsMaterialCoilBo bo) {
|
||||
try {
|
||||
// 1. 将原二维码标记为历史码(status = 0)
|
||||
if (oldCoil.getQrcodeRecordId() != null) {
|
||||
WmsGenerateRecordBo oldQrBo = new WmsGenerateRecordBo();
|
||||
oldQrBo.setRecordId(oldCoil.getQrcodeRecordId());
|
||||
oldQrBo.setStatus(0); // 0=历史码
|
||||
generateRecordService.updateByBo(oldQrBo);
|
||||
}
|
||||
|
||||
Map<String, Object> contentMap = new HashMap<>();
|
||||
String currentCoilNo = bo.getCurrentCoilNo() != null ? bo.getCurrentCoilNo() : oldCoil.getCurrentCoilNo();
|
||||
|
||||
contentMap.put("enter_coil_no", oldCoil.getEnterCoilNo()); // 入场钢卷号(始终不变)
|
||||
contentMap.put("current_coil_no", currentCoilNo); // 当前钢卷号
|
||||
contentMap.put("coil_id", "null"); // 钢卷ID(更新时暂时为null,插入后更新)
|
||||
|
||||
// 复制原钢卷的历史steps
|
||||
List<Map<String, Object>> steps = new ArrayList<>();
|
||||
if (oldCoil.getQrcodeRecordId() != null) {
|
||||
WmsGenerateRecordVo oldRecord = generateRecordService.queryById(oldCoil.getQrcodeRecordId());
|
||||
if (oldRecord != null) {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> oldContentMap = objectMapper.readValue(oldRecord.getContent(), Map.class);
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Map<String, Object>> oldSteps = (List<Map<String, Object>>) oldContentMap.get("steps");
|
||||
if (oldSteps != null) {
|
||||
steps.addAll(oldSteps);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 添加更新步骤(库区变化)
|
||||
Map<String, Object> updateStep = new HashMap<>();
|
||||
updateStep.put("step", steps.size() + 1);
|
||||
updateStep.put("action", "更新");
|
||||
updateStep.put("operation", "库区变更");
|
||||
updateStep.put("old_warehouse_id", String.valueOf(oldCoil.getWarehouseId()));
|
||||
updateStep.put("new_warehouse_id", String.valueOf(bo.getWarehouseId()));
|
||||
updateStep.put("old_coil_id", String.valueOf(oldCoil.getCoilId()));
|
||||
updateStep.put("current_coil_no", currentCoilNo);
|
||||
updateStep.put("operator", LoginHelper.getUsername()); // 操作者
|
||||
steps.add(updateStep);
|
||||
|
||||
contentMap.put("steps", steps);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String contentJson = objectMapper.writeValueAsString(contentMap);
|
||||
|
||||
// 2. 生成新的二维码(status = 1)
|
||||
WmsGenerateRecordBo recordBo = new WmsGenerateRecordBo();
|
||||
recordBo.setContent(contentJson);
|
||||
recordBo.setSerialNumber(oldCoil.getEnterCoilNo() + "-W" + bo.getWarehouseId()); // 使用入场钢卷号+库区ID作为编号
|
||||
recordBo.setQrcodeType(0L);
|
||||
recordBo.setIsEnabled(0L);
|
||||
recordBo.setSize(200L);
|
||||
recordBo.setStatus(1); // 1=当前有效码
|
||||
|
||||
WmsGenerateRecordVo record = generateRecordService.insertByBo(recordBo);
|
||||
return record.getRecordId();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("生成更新二维码失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新(分卷/合卷)
|
||||
*/
|
||||
@@ -586,6 +669,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
recordBo.setQrcodeType(0L);
|
||||
recordBo.setIsEnabled(0L);
|
||||
recordBo.setSize(200L);
|
||||
recordBo.setStatus(1); // 1=当前有效码
|
||||
|
||||
WmsGenerateRecordVo record = generateRecordService.insertByBo(recordBo);
|
||||
return record.getRecordId();
|
||||
@@ -680,6 +764,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
recordBo.setQrcodeType(0L);
|
||||
recordBo.setIsEnabled(0L);
|
||||
recordBo.setSize(200L);
|
||||
recordBo.setStatus(1); // 1=当前有效码
|
||||
|
||||
WmsGenerateRecordVo record = generateRecordService.insertByBo(recordBo);
|
||||
return record.getRecordId();
|
||||
|
||||
Reference in New Issue
Block a user