chenlu
2025-10-09 dec442000bc7c51516954c6618a4bc94bf729ffd
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -65,6 +65,25 @@
        this.reportingWorkMapper = reportingWorkMapper;
    }
    //将层数字符串用逗号隔开
    public static String splitTechNumbers(String input) {
        if (input == null || input.isEmpty()) {
            return "";
        }
        List<String> result = new ArrayList<>();
        for (int i = 0; i < input.length(); i++) {
            // 特殊处理 "10"
            if (input.charAt(i) == '1' && i + 1 < input.length() && input.charAt(i + 1) == '0') {
                result.add("10");
                i++; // 跳过下一个字符
            } else {
                result.add(String.valueOf(input.charAt(i)));
            }
        }
        return String.join(",", result);
    }
    //流程卡管理查询
    public Map<String, Object> selectProcessCard(Integer pageNum, Integer pageSize,List<String> selectDate, FlowCard flowCard) {
        Integer offset = (pageNum - 1) * pageSize;
@@ -89,9 +108,23 @@
    }
    //分架查询
    public Map<String, Object> selectAddProcess(Date selectTime1, Date selectTime2, FlowCard flowCard) {
    public Map<String, Object> selectAddProcess(List<String> selectDate, FlowCard flowCard) {
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectFlowCardMp(selectTime1, selectTime2, flowCard));
        map.put("data", flowCardMapper.selectFlowCardMp( startDate, endDate, flowCard));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
@@ -248,23 +281,51 @@
        return map;
    }
    public Object selectPrintFlowCardSv(Date selectTime1, Date selectTime2, String orderId, String project, String userId, Integer state, FlowCard flowCard) {
    public Object selectPrintFlowCardSv(List<String> selectDate, String orderId, String project, String userId, Integer state, FlowCard flowCard) {
        if ("null".equals(orderId)) {
            orderId = "";
        }
        if ("null".equals(project)) {
            project = "";
        }
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectPrintFlowCardMp(selectTime1, selectTime2, orderId, project,state, flowCard));
        map.put("data", flowCardMapper.selectPrintFlowCardMp(startDate, endDate, orderId, project,state, flowCard));
        String roleId = flowCardMapper.selectUserMp(userId);
        map.put("user", roleId);
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
    public Object selectPrintFlowCard(Date selectTime1, Date selectTime2) {
    public Object selectPrintFlowCard(List<String> selectDate) {
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectPrintFlowCard(selectTime1, selectTime2));
        map.put("data", flowCardMapper.selectPrintFlowCard(startDate, endDate));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
@@ -341,10 +402,10 @@
                        if (compound == null
                                || "null".equals(compound)
                                || compound.trim().isEmpty()){
                            List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(),flashback,landingSequence);
                            List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), splitTechNumbers(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,landingSequence);
                            itemmap.put("detailList", detailList);
                        }else {//有需要同架的层
                            List<Map<String, Object>> detailList = flowCardMapper.getDetailCompoundList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(),flashback,compound,landingSequence);
                            List<Map<String, Object>> detailList = flowCardMapper.getDetailCompoundList(flowCard.getProcessId(), splitTechNumbers(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,splitTechNumbers(compound),landingSequence);
                            itemmap.put("detailList", detailList);
                        }
                    } else {
@@ -367,10 +428,11 @@
                            if (compound == null
                                    || "null".equals(compound)
                                    || compound.trim().isEmpty()){
                                List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,landingSequence);
                                List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), splitTechNumbers(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,landingSequence);
                                itemmap.put("detailList", detailList);
                            }else {//有需要同架的层
                                List<Map<String, Object>> detailList = flowCardMapper.getDetailListLikeCompound(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,compound,landingSequence);
                                List<Map<String, Object>> detailList = flowCardMapper.getDetailListLikeCompound(flowCard.getProcessId(), splitTechNumbers(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,splitTechNumbers(compound),landingSequence);
                                itemmap.put("detailList", detailList);
                            }
                        }
@@ -1490,6 +1552,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;
    }
}