From 7c1e701b523bc54dc2decffac6e8f5a0e3987b98 Mon Sep 17 00:00:00 2001 From: hongjli <3117313295@qq.com> Date: 星期五, 23 五月 2025 09:26:34 +0800 Subject: [PATCH] 补充关联不到工艺路线的料号保存至气体异常料号报表 --- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java | 46 ++++++++++++++++++++++ aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml | 22 +++++++++-- aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml | 14 +++++++ aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireErrorMapper.java | 8 ++++ aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java | 7 +++ 5 files changed, 92 insertions(+), 5 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java index d2a255c..6dd1432 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java @@ -115,4 +115,11 @@ * @return 鍘熷缁熻鏁版嵁鍒楄〃 */ public List<Map<String, Object>> selectRawStatData(Map<String, Object> params); + + /** + * 鏌ヨ鎵�鏈夋墜宸ユ皵浣撳伐鍗曟暟鎹� + * + * @return 鎵�鏈夋墜宸ユ皵浣撳伐鍗曟暟鎹� + */ + public List<Map<String, Object>> selectAllMoData(); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireErrorMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireErrorMapper.java index dcc3134..f65cecb 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireErrorMapper.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateStandardRequireErrorMapper.java @@ -61,5 +61,13 @@ */ public int deleteApsPlateStandardRequireErrorByIds(Long[] ids); + /** + * 鎵归噺鎻掑叆閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭� + * + * @param errorList 闇�瑕佹彃鍏ョ殑寮傚父鏁版嵁闆嗗悎 + * @return 缁撴灉 + */ + public int batchInsert(List<ApsPlateStandardRequireError> errorList); + int deleteLastPatch(String batchNumber); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java index eb9f304..ce61324 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java @@ -6,10 +6,12 @@ import com.aps.common.core.utils.uuid.IdUtils; import com.aps.common.security.utils.SecurityUtils; import com.aps.core.domain.*; +import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireError; import com.aps.core.mapper.*; import com.aps.core.service.IApsGasMaterialUsageService; import com.aps.core.service.IApsGasPipingRouteStatService; import com.aps.core.service.IApsStandardProcessService; +import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.*; @@ -58,6 +60,9 @@ @Autowired private IApsStandardProcessService apsStandardProcessService; + + @Autowired + private ApsPlateStandardRequireErrorMapper apsPlateStandardRequireErrorMapper; /** * 鏌ヨ姘斾綋绠¤矾浜ц兘璐熻浇缁熻 @@ -1117,6 +1122,12 @@ // 澶勭悊鎵嬪伐姘斾綋宸ュ崟鏁版嵁 - 浣跨敤鑱斿悎鏌ヨ鑾峰彇鎵�鏈夌浉鍏虫暟鎹� List<Map<String, Object>> moDataList = apsGasPipingRouteStatMapper.selectMoRouteData(); + // 鑾峰彇鎵�鏈夌殑MO鏁版嵁锛岀敤浜庢鏌ュ摢浜汳O娌℃湁鍏宠仈鍒板伐鑹鸿矾绾� + List<Map<String, Object>> allMoData = apsGasPipingRouteStatMapper.selectAllMoData(); + + // 璁板綍宸插叧鑱斿伐鑹鸿矾绾跨殑MO缂栧彿 + Set<String> processedMoSet = new HashSet<>(); + // 鎸夊伐鍗曞彿鍒嗙粍锛屼究浜庡鐞嗗悓涓�宸ュ崟鐨勪笉鍚屽伐搴� Map<String, List<Map<String, Object>>> moGroups = moDataList.stream() .collect(Collectors.groupingBy(data -> data.get("work_order_no").toString())); @@ -1124,6 +1135,9 @@ // 澶勭悊姣忎釜宸ュ崟鐨勫伐鑹鸿矾绾� for (String workOrderNo : moGroups.keySet()) { List<Map<String, Object>> workOrderData = moGroups.get(workOrderNo); + + // 鏍囪璇ュ伐鍗曞凡澶勭悊 + processedMoSet.add(workOrderNo); // 鎸夊伐搴忓彿鎺掑簭 workOrderData.sort((a, b) -> { @@ -1202,6 +1216,36 @@ statList.addAll(processList); } + } + + // 澶勭悊娌℃湁鍏宠仈鍒板伐鑹鸿矾绾跨殑MO鏁版嵁 + List<ApsPlateStandardRequireError> errorList = new ArrayList<>(); + for (Map<String, Object> moData : allMoData) { + String workOrderNo = moData.get("mo").toString(); + // 濡傛灉璇ュ伐鍗曟病鏈夎澶勭悊杩囷紝璇存槑娌℃湁鍏宠仈鍒板伐鑹鸿矾绾� + if (!processedMoSet.contains(workOrderNo)) { + ApsPlateStandardRequireError error = ApsPlateStandardRequireError.builder() + .id(Long.valueOf(IdUtils.fastSimpleUUID().hashCode())) + .batchNumber(batchNumber) + .requireId(IdUtil.getSnowflakeNextId()) + .docNum(workOrderNo) + .itemNum(moData.get("material_code").toString()) + .orgCode(moData.get("factory").toString()) + .message("鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�") + .delFlag("0") + .build(); + + // 璁剧疆鍩虹被灞炴�� + error.setCreateBy(SecurityUtils.getUsername()); + error.setCreateTime(truncateToSeconds(DateUtils.getNowDate())); + + errorList.add(error); + } + } + + // 鎵归噺鎻掑叆寮傚父鏁版嵁 + if (!errorList.isEmpty()) { + apsPlateStandardRequireErrorMapper.batchInsert(errorList); } // 鎵归噺鎻掑叆鏁版嵁 @@ -1580,7 +1624,7 @@ rowEntry.put(rowGroupValue, rowDetail); plantTable.add(rowEntry); } - + result.put("plantTable", plantTable); result.put("timePoints", timePoints); result.put("rowGroupBy", rowGroupBy); diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml index 4b097a5..4789ec5 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml @@ -261,13 +261,14 @@ l.route_name as process_name, l.route_num as process_number, l.standard_time, - m.domain, - s.work_shop as workshop + string_agg(DISTINCT m.domain, ';') as domain, + string_agg(DISTINCT s.work_shop, ';') as workshop FROM aps_gas_pipeline_prediction p JOIN aps_standard_process_route_header h ON p.material_code = h.item_code AND p.factory = h.org_code JOIN aps_standard_process_route_line l ON h.route_id = l.route_id LEFT JOIN aps_material_product_group_management m ON p.material_code = m.material_code AND p.factory = m.factory LEFT JOIN aps_standard_process s ON l.route_name = s.process_name + GROUP BY p.id, p.material_code, p.factory, p.predict_quantity, p.predict_date, h.route_id, l.route_name, l.route_num, l.standard_time ORDER BY p.material_code, l.route_num </select> @@ -283,12 +284,13 @@ r.process_name, r.process_number, r.standard_time, - m.domain, - s.work_shop as workshop + string_agg(DISTINCT m.domain, ';') as domain, + string_agg(DISTINCT s.work_shop, ';') as workshop FROM aps_gas_pipeline_mo mo JOIN aps_process_route r ON mo.mo = r.work_order_no LEFT JOIN aps_material_product_group_management m ON mo.material_code = m.material_code AND mo.factory = m.factory LEFT JOIN aps_standard_process s ON r.process_name = s.process_name + GROUP BY mo.id, mo.mo, mo.material_code, mo.factory, mo.quantity, mo.plan_end, r.process_name, r.process_number, r.standard_time ORDER BY mo.mo, r.process_number </select> @@ -399,4 +401,16 @@ process_plan_start_day </select> + <!-- 鏌ヨ鎵�鏈夋墜宸ユ皵浣撳伐鍗曟暟鎹� --> + <select id="selectAllMoData" resultType="java.util.Map"> + SELECT + id, + mo, + factory, + material_code, + plan_end, + quantity + FROM aps_gas_pipeline_mo + </select> + </mapper> \ No newline at end of file diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml index 5ab7280..5e8507f 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml @@ -107,4 +107,18 @@ set del_flag = '1' where del_flag = '0' and batch_number != #{batchNumber} </update> + + <insert id="batchInsert" parameterType="java.util.List"> + insert into aps_plate_standard_require_error( + id, batch_number, require_id, doc_num, item_num, org_code, + message, del_flag, create_by, create_time + ) values + <foreach collection="list" item="item" separator=","> + ( + #{item.id}, #{item.batchNumber}, #{item.requireId}, #{item.docNum}, + #{item.itemNum}, #{item.orgCode}, #{item.message}, #{item.delFlag}, + #{item.createBy}, #{item.createTime} + ) + </foreach> + </insert> </mapper> \ No newline at end of file -- Gitblit v1.9.3