diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsCheckTaskServiceImpl.java b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsCheckTaskServiceImpl.java index b3613e59..76108b56 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsCheckTaskServiceImpl.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsCheckTaskServiceImpl.java @@ -51,71 +51,69 @@ public class WmsCheckTaskServiceImpl implements IWmsCheckTaskService { */ @Override public WmsCheckTaskVo queryById(Long taskId) { - WmsCheckTaskVo vo = baseMapper.selectVoByIdPlus(taskId); - if (vo != null && vo.getItemIds() != null) { - // 1. 拆分所有聚合字段(新增 checkTaskItemIds 的处理) - String[] ids = vo.getItemIds().split(","); // 检查项表的 item_id - String[] checkTaskItemIds = vo.getCheckTaskItemIds() != null ? vo.getCheckTaskItemIds().split(",") : new String[ids.length]; // 关联表的 item_id(新增) - String[] names = vo.getItemNames() != null ? vo.getItemNames().split(",") : new String[ids.length]; - String[] statusArr = vo.getItemStatus() != null ? vo.getItemStatus().split(",") : new String[ids.length]; - String[] targetUppers = vo.getTargetUppers() != null ? vo.getTargetUppers().split(",") : new String[ids.length]; - String[] targetLowers = vo.getTargetLowers() != null ? vo.getTargetLowers().split(",") : new String[ids.length]; - String[] standardTargets = vo.getStandardTargets() != null ? vo.getStandardTargets().split(",") : new String[ids.length]; - String[] units = vo.getUnits() != null ? vo.getUnits().split(",") : new String[ids.length]; - String[] qualitativeQuantitatives = vo.getQualitativeQuantitatives() != null ? vo.getQualitativeQuantitatives().split(",") : new String[ids.length]; - String[] actualMeasures = vo.getActualMeasures() != null ? vo.getActualMeasures().split(",") : new String[ids.length]; + WmsCheckTaskVo vo = baseMapper.selectVoById(taskId); + if (vo == null) { + return null; + } + // 查询检查任务与检查项关联关系 + List taskItems = wmsCheckTaskItemMapper.selectList( + Wrappers.lambdaQuery() + .eq(WmsCheckTaskItem::getCheckTaskId, taskId) + .eq(WmsCheckTaskItem::getDelFlag, 0) + ); + + if (!taskItems.isEmpty()) { + Set itemIds = new HashSet<>(); + for (WmsCheckTaskItem taskItem : taskItems) { + itemIds.add(taskItem.getCheckItemId()); + } + + // 查询检查项基础信息 + List checkItems = wmsCheckItemMapper.selectBatchIds(itemIds); + Map itemMap = new HashMap<>(); + for (WmsCheckItem item : checkItems) { + itemMap.put(item.getItemId(), item); + } + + // 组装检查项列表 List itemList = new ArrayList<>(); - for (int i = 0; i < ids.length; i++) { - if (!ids[i].isEmpty()) { // 跳过空字符串(避免拆分后出现空元素) - WmsCheckItemVo item = new WmsCheckItemVo(); - // 2. 赋值检查项 ID(原逻辑保留) - item.setItemId(Long.valueOf(ids[i])); - // 3. 新增:赋值关联表的 item_id - if (checkTaskItemIds.length > i && !checkTaskItemIds[i].isEmpty()) { - item.setCheckTaskItemId(Long.valueOf(checkTaskItemIds[i])); // 假设 WmsCheckItemVo 有这个字段 - } - // 4. 其他字段赋值(保持原逻辑,补充判空) - if (names.length > i) item.setItemName(names[i]); - if (statusArr.length > i) item.setStatus(statusArr[i]); - // 处理数值类型时,先判空再转换,避免 NumberFormatException - if (targetUppers.length > i && StringUtils.isNotBlank(targetUppers[i])) { - item.setTargetUpper(new BigDecimal(targetUppers[i])); // 推荐用 new BigDecimal,避免 Double 精度问题 - } - if (targetLowers.length > i && StringUtils.isNotBlank(targetLowers[i])) { - item.setTargetLower(new BigDecimal(targetLowers[i])); - } - if (standardTargets.length > i && StringUtils.isNotBlank(standardTargets[i])) { - item.setStandardTarget(new BigDecimal(standardTargets[i])); - } - if (units.length > i) item.setUnit(units[i]); - if (qualitativeQuantitatives.length > i && StringUtils.isNotBlank(qualitativeQuantitatives[i])) { - item.setQualitativeQuantitative(Integer.parseInt(qualitativeQuantitatives[i])); - } - if (actualMeasures.length > i) item.setActualMeasure(actualMeasures[i]); - itemList.add(item); + for (WmsCheckTaskItem taskItem : taskItems) { + WmsCheckItemVo itemVo = new WmsCheckItemVo(); + WmsCheckItem checkItem = itemMap.get(taskItem.getCheckItemId()); + + if (checkItem != null) { + itemVo.setItemId(checkItem.getItemId()); + itemVo.setItemName(checkItem.getItemName()); } + + itemVo.setCheckTaskItemId(taskItem.getItemId()); + itemVo.setStatus(taskItem.getStatus().toString()); + itemVo.setTargetUpper(taskItem.getTargetUpper()); + itemVo.setTargetLower(taskItem.getTargetLower()); + itemVo.setStandardTarget(taskItem.getStandardTarget()); + itemVo.setUnit(taskItem.getUnit()); + itemVo.setQualitativeQuantitative(taskItem.getQualitativeQuantitative()); + itemVo.setActualMeasure(taskItem.getActualMeasure() != null ? taskItem.getActualMeasure().toString() : null); + + itemList.add(itemVo); } vo.setItemList(itemList); } // 查询关联的钢卷信息 - List coilRelations = null; - if (vo != null) { - coilRelations = wmsCheckTaskCoilRelationMapper.selectList( - Wrappers.lambdaQuery() - .eq(WmsCheckTaskCoilRelation::getTaskId, vo.getTaskId()) - .eq(WmsCheckTaskCoilRelation::getDelFlag, 0) - ); - } + List coilRelations = wmsCheckTaskCoilRelationMapper.selectList( + Wrappers.lambdaQuery() + .eq(WmsCheckTaskCoilRelation::getTaskId, taskId) + .eq(WmsCheckTaskCoilRelation::getDelFlag, 0) + ); - if (coilRelations != null && !coilRelations.isEmpty()) { + if (!coilRelations.isEmpty()) { Set coilIdSet = new HashSet<>(); for (WmsCheckTaskCoilRelation relation : coilRelations) { coilIdSet.add(relation.getCoilId()); } - // 查询钢卷基础信息 List coilList = queryCoilsByIds(coilIdSet); vo.setCoilList(coilList); } @@ -134,7 +132,7 @@ public class WmsCheckTaskServiceImpl implements IWmsCheckTaskService { // 根据创建时间倒序 qw.orderByDesc("create_time"); - return wmsMaterialCoilMapper.selectVoList(qw); + return wmsMaterialCoilMapper.selectVoListWithDynamicJoin(qw); } diff --git a/klp-mes/src/main/resources/mapper/qc/WmsCheckTaskCoilRelationMapper.xml b/klp-mes/src/main/resources/mapper/qc/WmsCheckTaskCoilRelationMapper.xml index 4ffb7e76..11119f70 100644 --- a/klp-mes/src/main/resources/mapper/qc/WmsCheckTaskCoilRelationMapper.xml +++ b/klp-mes/src/main/resources/mapper/qc/WmsCheckTaskCoilRelationMapper.xml @@ -16,7 +16,7 @@ - UPDATE wms_check_task_coil_relation SET del_flag = 1 + UPDATE wms_check_task_coil_relation SET del_flag = 2 WHERE task_id IN #{taskId}