From c27bbcc497711df8b13d096f4917b5a8f16508c9 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期日, 28 九月 2025 10:28:59 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java |  240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 217 insertions(+), 23 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
index 1f88a1b..a42e2fa 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
+++ b/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);
                             }
                         }
@@ -1214,26 +1276,29 @@
     }
 
     public Boolean updateProcessSv(String processId,String orderNumber, String technologyNumber, String orderId, String Orderprocess, Map<String, Object> object) {
+        List<OrderProcessDetail> resultList = new ArrayList<>();
         //鑾峰彇宸叉姤宸ュ伐鑹烘祦绋�
         String processOk = flowCardMapper.getProcessOk(processId,orderNumber,technologyNumber);
-        List<String> okList = Arrays.asList(processOk.split("->"));
-        List<String> orderList = Arrays.asList(Orderprocess.split("->"));
+        if (processOk != null && !processOk.isEmpty()){
+            List<String> okList = Arrays.asList(processOk.split("->"));
+            List<String> orderList = Arrays.asList(Orderprocess.split("->"));
 
-        // 鍒ゆ柇 processOk 鐨勬瘡涓伐搴忔槸鍚﹂兘鍖呭惈鍦� orderProcess 涓�
-        for (String p : okList) {
-            if (!orderList.contains(p)) {
-                return false;
+            // 鍒ゆ柇 processOk 鐨勬瘡涓伐搴忔槸鍚﹂兘鍖呭惈鍦� orderProcess 涓�
+            for (String p : okList) {
+                if (!orderList.contains(p)) {
+                    return false;
+                }
             }
-        }
 
-        List<OrderProcessDetail> resultList = new ArrayList<>();
 
-        for (String process : okList) {
-            List<OrderProcessDetail> details =
-                    flowCardMapper.getProcessDetail(processId,orderNumber, technologyNumber, process);
 
-            if (details != null && !details.isEmpty()) {
-                resultList.addAll(details);
+            for (String process : okList) {
+                List<OrderProcessDetail> details =
+                        flowCardMapper.getProcessDetail(processId,orderNumber, technologyNumber, process);
+
+                if (details != null && !details.isEmpty()) {
+                    resultList.addAll(details);
+                }
             }
         }
 
@@ -1487,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;
+    }
+
+
+
+
+
 }
 
 

--
Gitblit v1.8.0