廖井涛
2025-09-17 bed74a0c68230ff5385eeb4c0726c83c84a01d9b
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -1532,6 +1532,135 @@
        return map;
    }
//    public Map<String, Object> getSelectPrintingConsolidatedSv(Map<String, Object> object, String printMerge, String printLike, String mergeTechnologyNumber) {
//        if (printMerge == null) {
//            printMerge = "";
//        }
//        if (printLike == null) {
//            printLike = "";
//        }
//        Map<String, Object> map = new HashMap<>();
//        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果
//        List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class);
//        if (!flowCardList.isEmpty()) {
//            Set<String> processedKeys = new HashSet<>();
//            for (FlowCard flowCard : flowCardList) {
//                String batch = flowCard.getOrder().getBatch();
//                String glassChild = flowCard.getGlassChild();
//                Map<String, Object> itemmap = new HashMap<>();
//                //流程卡表头表尾数据
//                itemmap.put("detail", flowCardMapper.getPrimaryListRefund(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getOrderNumber(), flowCard.getReportingWorkId(), mergeTechnologyNumber, flowCard.getPatchReason(), flowCard.getOrderId()));
//
//                List<Map<String, Object>> detailList = flowCardMapper.getDetailListRefund(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getOrderNumber(), flowCard.getReportingWorkId(), flowCard.getPatchReason());
//                itemmap.put("detailList", detailList);
//                //工艺流程
//                List<Map<String, Object>> processList = flowCardMapper.getProcessList(flowCard.getProcessId(), flowCard.getTechnologyNumber());
//                //工序列表
//                List<Map<String, Object>> processNameList = flowCardMapper.getProcessNameList();
//                itemmap.put("processList", processList);
//                itemmap.put("processNameList", processNameList);
//                //  itemmap.put("numberList", numberList);
//                list.add(itemmap);
//
//            }
//        }
//        map.put("data", list);
//        //初始化值
//        printLike = null;
//        return map;
//    }
    public Map<String, Object> getSelectPrintingConsolidatedSv(Map<String, Object> object,
                                                               String printMerge,
                                                               String printLike,
                                                               String mergeTechnologyNumber) {
        if (printMerge == null) printMerge = "";
        if (printLike == null) printLike = "";
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<>();
        List<FlowCard> flowCardList = JSONArray.parseArray(
                JSONObject.toJSONString(object.get("printList")), FlowCard.class);
        if (!flowCardList.isEmpty()) {
            // 用 Map 保存每个 key 对应的合并 detailList
            Map<String, List<Map<String, Object>>> keyToDetails = new LinkedHashMap<>();
            // 用 Map 保存每个 key 对应的第一个 flowCard,用于生成 itemmap 表头等信息
            Map<String, FlowCard> keyToFirstFlowCard = new HashMap<>();
            for (FlowCard flowCard : flowCardList) {
                String batch = flowCard.getBatch();
                String glassChild = flowCard.getProductName();
                String key = batch + "_" + glassChild;
                List<Map<String, Object>> currentDetailList = flowCardMapper.getDetailListRefund(
                        flowCard.getProcessId(),
                        flowCard.getTechnologyNumber(),
                        flowCard.getOrderNumber(),
                        flowCard.getReportingWorkId(),
                        flowCard.getPatchReason()
                );
                for (Map<String, Object> detail : currentDetailList) {
                    detail.put("processId", flowCard.getProcessId());
                    detail.put("technologyNumber", flowCard.getTechnologyNumber());
                }
                // 合并 detailList 到对应 key
                keyToDetails.computeIfAbsent(key, k -> new ArrayList<>()).addAll(currentDetailList);
                // 保存第一次出现的 flowCard,用于生成 itemmap
                keyToFirstFlowCard.putIfAbsent(key, flowCard);
            }
            // 遍历合并后的 key,生成 itemmap
            for (Map.Entry<String, List<Map<String, Object>>> entry : keyToDetails.entrySet()) {
                String key = entry.getKey();
                List<Map<String, Object>> mergedDetailList = entry.getValue();
                FlowCard firstFlowCard = keyToFirstFlowCard.get(key);
                Map<String, Object> itemmap = new HashMap<>();
                itemmap.put("detailList", mergedDetailList);
                // 表头表尾
                itemmap.put("detail", flowCardMapper.getPrimaryListRefundHB(
                        firstFlowCard.getProcessId(),
                        String.valueOf(firstFlowCard.getTechnologyNumber()),
                        firstFlowCard.getOrderNumber(),
                        firstFlowCard.getReportingWorkId(),
                        mergeTechnologyNumber,
                        firstFlowCard.getPatchReason(),
                        firstFlowCard.getOrderId()
                ));
                // 工艺流程
                List<Map<String, Object>> processList = flowCardMapper.getProcessList(
                        firstFlowCard.getProcessId(),
                        firstFlowCard.getTechnologyNumber()
                );
                // 工序列表
                List<Map<String, Object>> processNameList = flowCardMapper.getProcessNameList();
                itemmap.put("processList", processList);
                itemmap.put("processNameList", processNameList);
                list.add(itemmap);
            }
        }
        map.put("data", list);
        return map;
    }
}