From ba4f03556d24a1548de75c8219cbc3f06e4ff57c Mon Sep 17 00:00:00 2001
From: 于杰 <1210123631@qq.com>
Date: 星期一, 11 八月 2025 16:31:18 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java |  133 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 121 insertions(+), 12 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 0f1a412..1da9784 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
@@ -11,6 +11,7 @@
 import com.example.erp.entity.userInfo.Log;
 import com.example.erp.exception.ServiceException;
 import com.example.erp.mapper.pp.FlowCardMapper;
+import com.example.erp.mapper.pp.ReportingWorkMapper;
 import com.example.erp.mapper.sd.*;
 import com.example.erp.service.userInfo.LogService;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -47,8 +48,12 @@
 
     private final OrderDetailMapper orderDetailMapper;
     private final OrderMapper orderMapper;
+    private final ReportingWorkMapper reportingWorkMapper;
 
-    public FlowCardService(FlowCardMapper flowCardMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, LogService logService, ProductMapper productMapper, ProductDetailMapper productDetailMapper, OrderDetailMapper orderDetailMapper, OrderMapper orderMapper) {
+    public FlowCardService(FlowCardMapper flowCardMapper, OrderGlassDetailMapper orderGlassDetailMapper,
+                           OrderProcessDetailMapper orderProcessDetailMapper, LogService logService,
+                           ProductMapper productMapper, ProductDetailMapper productDetailMapper,
+                           OrderDetailMapper orderDetailMapper, OrderMapper orderMapper,ReportingWorkMapper reportingWorkMapper) {
         this.flowCardMapper = flowCardMapper;
         this.orderGlassDetailMapper = orderGlassDetailMapper;
         this.orderProcessDetailMapper = orderProcessDetailMapper;
@@ -57,6 +62,7 @@
         this.productDetailMapper = productDetailMapper;
         this.orderDetailMapper = orderDetailMapper;
         this.orderMapper = orderMapper;
+        this.reportingWorkMapper = reportingWorkMapper;
     }
 
     //娴佺▼鍗$鐞嗘煡璇�
@@ -321,9 +327,10 @@
                 if (printMerge.equals("") || printMerge.equals("null")) {
                     //鏄惁鍖呭惈鍒囧壊
                     //boolean containsCutting = flowCard.getProcess().contains("鍒囧壊");
-                    String processSub = flowCard.getProcess().substring(0, 2);
+                    String processSub = flowCard.getProcess().split("->")[0];
                     //鑾峰彇宸ュ簭瀵瑰簲鐨勫埆绉�
                     String processName = flowCardMapper.getProcessName(processSub);
+                    //processName.equals("stepC") || processName.equals("stepD")
                     if (processName.equals("stepC") || processName.equals("stepD")) {//宸ヨ壓鏄惁鍖呭惈澶硅兌涓┖
                         itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(),
                                 String.valueOf("null".equals(compound)
@@ -525,8 +532,24 @@
         List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("composing")), FlowCard.class);
         if (!flowCardList.isEmpty()) {
             for (FlowCard flowCard : flowCardList) {
-                flowCardMapper.updateComposing(flowCard.getProcessId());
+                //鍏堣幏鍙栨帓鐗堢姸鎬�
+                Integer layoutStatus = flowCardMapper.getLayoutStatus(flowCard.getProcessId());
+                //2浼樺寲鍗犵敤
+                if (layoutStatus!=2){
+                    flowCardMapper.updateComposing(flowCard.getProcessId());
+                }
+                else {
+                    return false;
+                }
+
             }
+            //淇濆瓨鏃ュ織
+            Log log = new Log();
+            log.setContent(object.toString());
+            log.setFunction("FlowCardSv娴佺▼鍗℃帓鐗堢姸鎬�");
+            log.setOperatorId((String) object.get("userId"));
+            log.setOperator((String) object.get("userName"));
+            logService.saveLog(log);
             return true;
         } else {
             return false;
@@ -617,6 +640,10 @@
 
 
     public Map<String, Object> getSelectPrintCustomLabelSv(String type, Integer lableType, Map<String, Object> object) {
+        //鏍规嵁mse浼犺繃鏉ョ殑鍊�,濡傛灉涓嶅瓨鍦� 璧嬪�糵alse
+        String isRepeat = Optional.ofNullable(object.get("isRepeat"))
+                .map(Object::toString)
+                .orElse("false");
         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);
@@ -628,21 +655,51 @@
                     String processId = flowCard.getProcessId();
                     Integer orderNumber = flowCard.getOrderNumber();
                     String uniqueKey = processId + "|" + orderNumber;  // 鐢ㄧ壒娈婂瓧绗﹁繛鎺ラ槻姝㈠啿绐�
-                    // 妫�鏌ユ槸鍚﹀凡缁忓鐞嗚繃璇� processId锛屽鏋滃鐞嗚繃鍒欒烦杩�
-                    if (processedKeys.contains(uniqueKey)) {
-                        continue;
+                    if (isRepeat=="false"){//鏍规嵁mse浼犺繃鏉ョ殑鍊煎垽鏂槸鍚﹀幓闄ら噸澶�
+                        // 妫�鏌ユ槸鍚﹀凡缁忓鐞嗚繃璇� processId锛屽鏋滃鐞嗚繃鍒欒烦杩�
+                        if (processedKeys.contains(uniqueKey)) {
+                            continue;
+                        }
                     }
-                    Map<String, Object> itemmap = new HashMap<>();
-                    itemmap.put("data", flowCardMapper.getPrintCustomData(flowCard.getProcessId(), flowCard.getOrderNumber()));
-                    list.add(itemmap);
 
+                    Map<String, Object> itemmap = new HashMap<>();
+
+                    Integer sumQuantity = flowCardMapper.getSumQuantity(flowCard.getOrderId());
+                    List<Map<String, Object>> details = flowCardMapper.getPrintCustomData(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getPrintQuantity());
+
+                    for (Map<String, Object> detail : details) {
+                        detail.put("sumQuantity", sumQuantity);
+                    }
+
+                    itemmap.put("data", details);
+                    list.add(itemmap);
                     // 灏嗚 processId 鍔犲叆宸插鐞嗛泦鍚�
                     processedKeys.add(uniqueKey);
                 }
             } else {//灏忕墖鏍囩
                 for (FlowCard flowCard : flowCardList) {
                     Map<String, Object> itemmap = new HashMap<>();
-                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(),flowCard.getOrderNumber()));
+                    String orderNumber = "";
+                    if (flowCard.getOrderNumber() != null) {
+                        orderNumber = String.valueOf(flowCard.getOrderNumber());
+                    }
+                    // 鍒ゆ柇鏄惁涓洪潪绌哄瓧绗︿覆
+                    if (orderNumber != null && !orderNumber.trim().isEmpty()) {
+
+                        itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(
+                                flowCard.getProcessId(),
+                                flowCard.getTechnologyNumber(),
+                                flowCard.getProcess(),
+                                flowCard.getOrderNumber(), flowCard.getPrintQuantity()
+                        ));
+                    } else {
+                            //鐢ㄤ簬澶╂触鐜板満娴佺▼鍗℃墦鍗扮晫闈㈢殑灏忕墖鏍囩鎵撳嵃
+                        itemmap.put("data", flowCardMapper.getPrintCustomDataSemiTj(
+                                flowCard.getProcessId(),
+                                flowCard.getTechnologyNumber(),
+                                flowCard.getProcess(), flowCard.getPrintQuantity()
+                        ));
+                    }
                     list.add(itemmap);
                 }
             }
@@ -678,7 +735,7 @@
             } else {//灏忕墖鏍囩
                 for (FlowCard flowCard : flowCardList) {
                     Map<String, Object> itemmap = new HashMap<>();
-                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber()));
+                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber(), flowCard.getPrintQuantity()));
                     list.add(itemmap);
                 }
             }
@@ -851,6 +908,10 @@
     }
 
     public Map<String, Object> getSelectPrintCustomLabelDetailsSv(String type, Integer lableType, Map<String, Object> object) {
+        String landingSequence = "";
+        if (object.get("landingSequence") != null) {
+            landingSequence = object.get("landingSequence").toString();
+        }
         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);
@@ -891,10 +952,30 @@
             } else {//灏忕墖鏍囩
                 for (FlowCard flowCard : flowCardList) {
                     Map<String, Object> itemmap = new HashMap<>();
-                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber()));
+                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber(), flowCard.getPrintQuantity()));
                     list.add(itemmap);
                 }
             }
+        }
+
+        if (!"1".equals(landingSequence)) {
+            // 鏋勯�犱竴涓厛鎸夌煭杈广�佸啀鎸夐暱杈圭殑姣旇緝鍣�
+            Comparator<Map<String,Object>> comparator = Comparator
+                    .comparingDouble((Map<String,Object> m) -> {
+                        Map<String,Object> first = ((List<Map<String,Object>>)m.get("data")).get(0);
+                        double w = ((Number) first.get("width")).doubleValue();
+                        double h = ((Number) first.get("height")).doubleValue();
+                        return Math.min(w, h);
+                    })
+                    .thenComparingDouble(m -> {
+                        Map<String,Object> first = ((List<Map<String,Object>>)m.get("data")).get(0);
+                        double w = ((Number) first.get("width")).doubleValue();
+                        double h = ((Number) first.get("height")).doubleValue();
+                        return Math.max(w, h);
+                    });
+
+            // 瀵规暣涓� list 鎺掑簭锛屽苟鏁翠綋鍙嶈浆锛岀煭杈瑰ぇ鈫掑墠锛岀煭杈圭浉鍚屾椂闀胯竟澶р啋鍓�
+            list.sort(comparator.reversed());
         }
         map.put("data", list);
         map.put("title", flowCardMapper.getPrintTitle(type));
@@ -1356,6 +1437,34 @@
         List<LocalDate> date= (List<LocalDate>) dates.get("date");
         return flowCardMapper.exportDateProcessMp(date);
     }
+
+    public Map<String, Object> selectSortingCardSv(String orderId, String productionId, String flashback, String optionVal, FlowCard flowCard) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", flowCardMapper.selectSortingCardMp(orderId, productionId,flashback,optionVal, flowCard));
+        map.put("maxFlowCard", flowCardMapper.selectMaxFlowCard(orderId, productionId));
+        map.put("orderOtherMoney", flowCardMapper.selectorderOtherMoney());
+        return map;
+    }
+
+    public Boolean updateTerminationSv(String processId, Integer orderNumber, Integer value) {
+        if (processId!=""){
+            flowCardMapper.updateTerminationMp(processId,orderNumber,value);
+            return true;
+        }else {
+            return false;
+        }
+
+    }
+
+    public Map<String, Object> selectCompletedSv(String processId, Integer orderNumber, String process) {
+        Map<String, Object> map = new HashMap<>();
+        String[] processList = process.split("->");
+        //鑾峰彇宸ヨ壓娴佺▼绗竴涓伐搴�
+        String interceptProcess = processList[0];
+        map.put("data", flowCardMapper.selectCompletedMp(processId, orderNumber,interceptProcess));
+
+        return map;
+    }
 }
 
 

--
Gitblit v1.8.0