feat(wms): 添加钢卷材质异常修复功能
- 在 IWmsMaterialCoilService 中新增 fixMaterialMismatchCoils 方法用于修复材质异常钢卷 - 在 WmsMaterialCoilController 中新增 /fixMaterialMismatch 接口提供修复功能 - 在 WmsMaterialCoilMapper.xml 中为材质异常查询添加按 coil_id 升序排序 - 在 WmsMaterialCoilServiceImpl 中实现材质异常修复逻辑,包括查询入场钢卷号、查找热轧卷板材质、批量更新 packing_status 等步骤
This commit is contained in:
@@ -5186,5 +5186,73 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
return TableDataInfo.build(voPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean fixMaterialMismatchCoils(Long coilId) {
|
||||
WmsMaterialCoil coil = baseMapper.selectById(coilId);
|
||||
if (coil == null) {
|
||||
throw new RuntimeException("钢卷不存在");
|
||||
}
|
||||
|
||||
String enterCoilNo = coil.getEnterCoilNo();
|
||||
if (StringUtils.isBlank(enterCoilNo)) {
|
||||
throw new RuntimeException("入场钢卷号为空");
|
||||
}
|
||||
|
||||
List<WmsMaterialCoil> sameEnterCoilNoCoils = baseMapper.selectList(
|
||||
Wrappers.lambdaQuery(WmsMaterialCoil.class)
|
||||
.eq(WmsMaterialCoil::getEnterCoilNo, enterCoilNo)
|
||||
.eq(WmsMaterialCoil::getDelFlag, 0)
|
||||
);
|
||||
|
||||
if (CollectionUtils.isEmpty(sameEnterCoilNoCoils)) {
|
||||
throw new RuntimeException("未找到相同入场钢卷号的钢卷");
|
||||
}
|
||||
|
||||
String targetMaterial = null;
|
||||
|
||||
for (WmsMaterialCoil c : sameEnterCoilNoCoils) {
|
||||
if (StringUtils.isNotBlank(c.getItemType()) && c.getItemId() != null) {
|
||||
String itemType = c.getItemType();
|
||||
Long itemId = c.getItemId();
|
||||
|
||||
if ("raw_material".equals(itemType)) {
|
||||
WmsRawMaterial rawMaterial = rawMaterialMapper.selectById(itemId);
|
||||
if (rawMaterial != null && StringUtils.isNotBlank(rawMaterial.getRawMaterialName())
|
||||
&& rawMaterial.getRawMaterialName().contains("热轧卷板")) {
|
||||
targetMaterial = rawMaterial.getMaterial();
|
||||
break;
|
||||
}
|
||||
} else if ("product".equals(itemType)) {
|
||||
WmsProduct product = productMapper.selectById(itemId);
|
||||
if (product != null && StringUtils.isNotBlank(product.getProductName())
|
||||
&& product.getProductName().contains("热轧卷板")) {
|
||||
targetMaterial = product.getMaterial();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtils.isBlank(targetMaterial)) {
|
||||
throw new RuntimeException("未找到热轧卷板对应的材质");
|
||||
}
|
||||
|
||||
if (!sameEnterCoilNoCoils.isEmpty()) {
|
||||
List<Long> coilIds = sameEnterCoilNoCoils.stream()
|
||||
.map(WmsMaterialCoil::getCoilId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
LambdaUpdateWrapper<WmsMaterialCoil> updateWrapper = Wrappers.lambdaUpdate();
|
||||
updateWrapper.in(WmsMaterialCoil::getCoilId, coilIds);
|
||||
updateWrapper.set(WmsMaterialCoil::getPackingStatus, targetMaterial);
|
||||
|
||||
WmsMaterialCoil updateEntity = new WmsMaterialCoil();
|
||||
updateEntity.setPackingStatus(targetMaterial);
|
||||
return baseMapper.update(updateEntity, updateWrapper) > 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user