feat(wms): 添加钢卷物料的物品类型校验功能
- 启用 WmsProductMapper 和 WmsRawMaterialMapper 的依赖注入 - 实现根据 itemType 参数校验 itemId 存在性的逻辑 - 添加原材料类型的校验支持 - 添加产品的校验支持 - 对无效物品类型抛出异常 - 在钢卷修改逻辑中集成物品存在性验证
This commit is contained in:
@@ -573,6 +573,19 @@ public class WmsMaterialCoilController extends BaseController {
|
|||||||
return R.ok(iWmsMaterialCoilService.getCategoryWidthStatistics());
|
return R.ok(iWmsMaterialCoilService.getCategoryWidthStatistics());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询itemId和itemType不匹配的钢卷
|
||||||
|
* 检查所有钢卷的itemId是否存在于对应的表中(根据itemType)
|
||||||
|
* 返回所有不匹配的钢卷记录,用于数据清理和修复
|
||||||
|
*
|
||||||
|
* @return 不匹配的钢卷列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/queryMismatchedItemCoils")
|
||||||
|
public R<List<WmsMaterialCoilVo>> queryMismatchedItemCoils() {
|
||||||
|
List<WmsMaterialCoilVo> mismatchedCoils = iWmsMaterialCoilService.queryMismatchedItemCoils();
|
||||||
|
return R.ok(mismatchedCoils);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -253,5 +253,14 @@ public interface IWmsMaterialCoilService {
|
|||||||
* 报表汇总(待操作条件 + 钢卷条件)
|
* 报表汇总(待操作条件 + 钢卷条件)
|
||||||
*/
|
*/
|
||||||
WmsMaterialCoilReportSummaryVo reportSummary(WmsMaterialCoilReportSummaryBo bo);
|
WmsMaterialCoilReportSummaryVo reportSummary(WmsMaterialCoilReportSummaryBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询itemId和itemType不匹配的钢卷
|
||||||
|
* 检查所有钢卷的itemId是否存在于对应的表中(根据itemType)
|
||||||
|
* 返回所有不匹配的钢卷记录
|
||||||
|
*
|
||||||
|
* @return 不匹配的钢卷列表
|
||||||
|
*/
|
||||||
|
List<WmsMaterialCoilVo> queryMismatchedItemCoils();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4916,5 +4916,82 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
.toPlainString() + "%";
|
.toPlainString() + "%";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询itemId和itemType不匹配的钢卷
|
||||||
|
* 检查所有钢卷的itemId是否存在于对应的表中(根据itemType)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<WmsMaterialCoilVo> queryMismatchedItemCoils() {
|
||||||
|
// 查询所有钢卷
|
||||||
|
LambdaQueryWrapper<WmsMaterialCoil> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(WmsMaterialCoil::getDelFlag, 0);
|
||||||
|
queryWrapper.isNotNull(WmsMaterialCoil::getItemId);
|
||||||
|
queryWrapper.isNotNull(WmsMaterialCoil::getItemType);
|
||||||
|
List<WmsMaterialCoil> allCoils = baseMapper.selectList(queryWrapper);
|
||||||
|
|
||||||
|
if (allCoils == null || allCoils.isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 收集所有需要校验的itemId,按itemType分组
|
||||||
|
Set<Long> rawMaterialIds = new HashSet<>();
|
||||||
|
Set<Long> productIds = new HashSet<>();
|
||||||
|
|
||||||
|
for (WmsMaterialCoil coil : allCoils) {
|
||||||
|
if ("raw_material".equals(coil.getItemType())) {
|
||||||
|
rawMaterialIds.add(coil.getItemId());
|
||||||
|
} else if ("product".equals(coil.getItemType())) {
|
||||||
|
productIds.add(coil.getItemId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量查询原材料和产品,找出存在的ID
|
||||||
|
Set<Long> existingRawMaterialIds = new HashSet<>();
|
||||||
|
if (!rawMaterialIds.isEmpty()) {
|
||||||
|
List<WmsRawMaterial> rawMaterials = rawMaterialMapper.selectBatchIds(rawMaterialIds);
|
||||||
|
existingRawMaterialIds = rawMaterials.stream()
|
||||||
|
.map(WmsRawMaterial::getRawMaterialId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<Long> existingProductIds = new HashSet<>();
|
||||||
|
if (!productIds.isEmpty()) {
|
||||||
|
List<WmsProduct> products = productMapper.selectBatchIds(productIds);
|
||||||
|
existingProductIds = products.stream()
|
||||||
|
.map(WmsProduct::getProductId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 筛选出不匹配的钢卷
|
||||||
|
List<WmsMaterialCoilVo> mismatchedCoils = new ArrayList<>();
|
||||||
|
for (WmsMaterialCoil coil : allCoils) {
|
||||||
|
boolean isMismatched = false;
|
||||||
|
|
||||||
|
if ("raw_material".equals(coil.getItemType())) {
|
||||||
|
// 检查原材料ID是否存在
|
||||||
|
if (!existingRawMaterialIds.contains(coil.getItemId())) {
|
||||||
|
isMismatched = true;
|
||||||
|
}
|
||||||
|
} else if ("product".equals(coil.getItemType())) {
|
||||||
|
// 检查产品ID是否存在
|
||||||
|
if (!existingProductIds.contains(coil.getItemId())) {
|
||||||
|
isMismatched = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// itemType不是预期值,也视为不匹配
|
||||||
|
isMismatched = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isMismatched) {
|
||||||
|
// 转换为Vo并填充关联信息
|
||||||
|
WmsMaterialCoilVo vo = BeanUtil.toBean(coil, WmsMaterialCoilVo.class);
|
||||||
|
fillRelatedObjects(vo);
|
||||||
|
mismatchedCoils.add(vo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mismatchedCoils;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user