From cc8efc81d2d35bed40e47d0a5b0920a4b6f8095f Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期四, 23 十月 2025 11:04:05 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java |  525 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 408 insertions(+), 117 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
index eec8a30..6fc915b 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -10,10 +10,7 @@
 import com.example.erp.common.Constants;
 import com.example.erp.dto.pp.OrderNumberTransferDTO;
 import com.example.erp.entity.pp.*;
-import com.example.erp.entity.sd.BasicData;
-import com.example.erp.entity.sd.Order;
-import com.example.erp.entity.sd.OrderDetail;
-import com.example.erp.entity.sd.OrderProcessDetail;
+import com.example.erp.entity.sd.*;
 import com.example.erp.entity.userInfo.Log;
 import com.example.erp.entity.userInfo.SysError;
 import com.example.erp.exception.ServiceException;
@@ -92,12 +89,32 @@
         this.reportingWorkTransferMapper = reportingWorkTransferMapper;
     }*/
 
+    //灏嗗眰鏁板瓧绗︿覆鐢ㄩ�楀彿闅斿紑
+    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> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process, String reportType) {
         Map<String, Object> map = new HashMap<>();
         //鑾峰彇鎶ュ伐宸ュ簭鏄惁涓哄鍚堝伐绋�
         String laminating = reportingWorkMapper.getProcessLaminating(process);
         //鏌ヨ娴佺▼鍗″伐鑹烘祦绋�
-        String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(processIdStr,technologyStr);
+        String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(processIdStr,splitTechNumbers(technologyStr));
 
         if (technologicalProcess!=null || !technologicalProcess.equals("")){
             String[] processList = technologicalProcess.split("->");
@@ -126,7 +143,7 @@
                         nextProcess = processList[i + 1];
                     }
                     //鏌ヨ褰撳墠宸ュ簭鐨勮〃澶存暟鎹�
-                    map.put("data", reportingWorkMapper.AddSelectLastWorkMp(processIdStr, technologyStr, previousProcess, nextProcess, process,reportType));
+                    map.put("data", reportingWorkMapper.AddSelectLastWorkMp(processIdStr, splitTechNumbers(technologyStr), previousProcess, nextProcess, process,reportType));
                     map.put("thisProcess", processList);
                     break;
                 }
@@ -147,12 +164,12 @@
             //鏌ヨ鏈伐搴忔姤宸ラ渶瑕佸摢鍑犲眰锛屼笂宸ュ簭鏄粈涔�
             String obtainTechnology = reportingWorkMapper.SelectWorkTechnologyMp(processIdStr);
 
-            map.put("numberList", flowCardMapper.getGlassNumber(technologyStr,processIdStr));
+            map.put("numberList", flowCardMapper.getGlassNumber(splitTechNumbers(technologyStr),processIdStr));
 
             //鍒ゆ柇鏈伐搴忔槸涓嶆槸绗竴閬撳伐搴�
             if (interceptProcess.equals(process)) {
                 //鏄涓�閬撳伐搴忥紝鏌ヨ娴佺▼鍗℃暟鎹�
-                map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr, technologyStr, process,reportType));
+                map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr, splitTechNumbers(technologyStr), process,reportType));
             } else {
                 ReportingWork retrievedData = (ReportingWork) map.get("data");
                 if (retrievedData!=null){
@@ -160,7 +177,7 @@
                     //鏍规嵁瀹℃牳鐘舵�佹煡璇㈡湭瀹℃牳鏁版嵁
                    // if (reviewedState==1){//宸插鏍�
                         //涓嶆槸绗竴閬撳伐搴忥紝鏌ヨ鎶ュ伐鏁版嵁
-                        List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMp(processIdStr, technologyStr, process,previousProcess,laminating);
+                        List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMp(processIdStr, splitTechNumbers(technologyStr), process,previousProcess,laminating);
                         if(process.equals("涓┖")){
                             //鑾峰彇璇ユ祦绋嬪崱璁㈠崟鍙�
                             String orderId = reportingWorkMapper.selectOrderid(processIdStr);
@@ -237,90 +254,127 @@
         return map;
     }
 
-    //鎶ュ伐鏂板
+
     @Transactional(rollbackFor = Exception.class)
     public boolean SaveReportingWorkSv(Map<String, Object> reportingWorkMap) {
-        //鎺ユ敹瑙f瀽涓婚檮琛ㄤ俊鎭�
+        // 鎺ユ敹瑙f瀽涓婚檮琛ㄤ俊鎭�
         JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
-        ReportingWork reportingWork = JSONObject.parseObject(JSONObject.toJSONString(reportingWorkJson.get("title")), ReportingWork.class);
-        List<ReportingWorkDetail> reportingWorkDetails = JSONArray.parseArray(JSONObject.toJSONString(reportingWorkJson.get("detail")), ReportingWorkDetail.class);
-        //鑾峰彇褰撳墠鏈�澶ф姤宸ュ崟鍙风敓鎴愭姤宸ュ崟鍙�
-        String formattedNumber = String.format("%04d", reportingWorkMapper.selectMaxReportingWorkId() + 1);
-        //鏍煎紡鍖栧綋鍓嶆棩鏈�
+        ReportingWork reportingWork = JSONObject.parseObject(
+                JSONObject.toJSONString(reportingWorkJson.get("title")), ReportingWork.class);
+        List<ReportingWorkDetail> reportingWorkDetails = JSONArray.parseArray(
+                JSONObject.toJSONString(reportingWorkJson.get("detail")), ReportingWorkDetail.class);
+
+        // 鎶ュ伐缂栧彿
+        Integer maxId = reportingWorkMapper.selectMaxReportingWorkId();
+        if (maxId == null) {
+            maxId = 0;
+        }
+        String formattedNumber = String.format("%04d", maxId + 1);
+
+        // 鏍煎紡鍖栧綋鍓嶆棩鏈�
         Date currentDate = new Date();
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
         String formattedDate = dateFormat.format(currentDate);
         String reportingWorkId = "BG" + formattedDate + formattedNumber;
         reportingWork.setReportingWorkId(reportingWorkId);
-        String[] processIdStr = reportingWork.getProcessId().split("/");
-        reportingWork.setProcessId(processIdStr[0]);
+
+        // 澶勭悊宸ュ簭 ID
+        String[] processIdStr = reportingWork.getProcessId() != null
+                ? reportingWork.getProcessId().split("/")
+                : new String[]{""};
+        reportingWork.setProcessId(processIdStr[0]); // 淇濆簳鍙彇绗竴涓�
         reportingWork.setThisWornQuantity(0);
         reportingWork.setThisCompletedQuantity(0);
 
-        int reviewState = (int) reportingWorkJson.get("type");
-        if (reviewState == 1) {//瀹℃牳閫氳繃
+        // 瀹℃牳鐘舵��
+        Integer reviewState = reportingWorkJson.getInteger("type");
+        if (reviewState != null && reviewState == 1) { // 瀹℃牳閫氳繃
             reportingWork.setReviewed(reportingWork.getCreator());
             reportingWork.setReviewedState(1);
         } else {
             reportingWork.setReviewedState(0);
         }
-        if(reportingWork.getReportingWorkTime()==null){
-            LocalDateTime localDateTime = LocalDateTime.now();
-            reportingWork.setReportingWorkTime(localDateTime);
-        }
-        //鏄惁绾胯ˉ 1鐜拌ˉ 0鏈幇琛�
-        int isPatch = (reportingWorkJson.get("isPatch") != null) ? (int) reportingWorkJson.get("isPatch") : 0;
 
-        //涓昏〃鎻掑叆
+        // 鏃堕棿涓虹┖鍒欒ˉ涓婂綋鍓嶆椂闂�
+        if (reportingWork.getReportingWorkTime() == null) {
+            reportingWork.setReportingWorkTime(LocalDateTime.now());
+        }
+
+        // 鏄惁绾胯ˉ 1鐜拌ˉ 0鏈幇琛�
+        int isPatch = reportingWorkJson.getInteger("isPatch") != null
+                ? reportingWorkJson.getInteger("isPatch") : 0;
+
+        // 涓昏〃鎻掑叆
         reportingWorkMapper.insert(reportingWork);
-        //鍓〃寰幆鎻掑叆锛屽苟涓旀彃鍏ユ鐮翠俊鎭〃銆傚啀鏍规嵁娆$牬淇℃伅淇敼璁㈠崟鐜荤拑娴佺▼琛ㄧ殑瀹屽伐鏁伴噺涓庡埡鐮存暟閲�
-        final Integer[] maxTechnologyNumber = {0,0};
+
+        // 鍓〃寰幆鎻掑叆锛屽苟澶勭悊娆$牬閫昏緫
+        final Integer[] maxTechnologyNumber = {0, 0};
         reportingWorkDetails.forEach(reportingWorkDetail -> {
-            //鍚堢墖鏁伴噺姹囨�诲噺灏�
-            if(Integer.parseInt(reportingWorkDetail.getTechnologyNumber()) > maxTechnologyNumber[0]){
-                maxTechnologyNumber[0] = Integer.valueOf(reportingWorkDetail.getTechnologyNumber());
-                maxTechnologyNumber[1]+=1;
+            if (reportingWorkDetail == null) return;
+
+            // 缁熶竴鐢ㄥ畨鍏ㄦ暟鍊硷紝閬垮厤 null 鎶ラ敊
+            int completedQty = Optional.ofNullable(reportingWorkDetail.getCompletedQuantity()).orElse(0);
+            int breakageQty = Optional.ofNullable(reportingWorkDetail.getBreakageQuantity()).orElse(0);
+
+            // 鍚堢墖鏁伴噺姹囨�诲噺灏�
+            try {
+                int techNum = Integer.parseInt(reportingWorkDetail.getTechnologyNumber());
+                if (techNum > maxTechnologyNumber[0]) {
+                    maxTechnologyNumber[0] = techNum;
+                    maxTechnologyNumber[1] += 1;
+                }
+            } catch (NumberFormatException ignored) {
             }
-            reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity() + reportingWorkDetail.getCompletedQuantity());
-            reportingWork.setThisWornQuantity(reportingWork.getThisWornQuantity() + reportingWorkDetail.getBreakageQuantity());
-            int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
+
+            reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity() + completedQty);
+            reportingWork.setThisWornQuantity(reportingWork.getThisWornQuantity() + breakageQty);
+
+            int qualityInsStatus = reportingWorkJson.getInteger("qualityInsStatus") != null
+                    ? reportingWorkJson.getInteger("qualityInsStatus") : 0;
+
             reportingWorkDetail.setReportingWorkId(reportingWorkId);
             List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
-            reportingWork.setNextProcess(orderProcessDetailMapper.selectNextProcess(processIdStr[0],processIdStr[1],reportingWork.getThisProcess(),reportingWorkDetail.getOrderNumber()));
 
-            //娆$牬鏄庣粏琛ㄦ彃鍏ユ暟鎹�
+            reportingWork.setNextProcess(orderProcessDetailMapper.selectNextProcess(
+                    processIdStr[0],
+                    processIdStr.length > 1 ? processIdStr[1] : "",
+                    reportingWork.getThisProcess(),
+                    reportingWorkDetail.getOrderNumber()
+            ));
+
+            // 娆$牬鏄庣粏琛ㄦ彃鍏ユ暟鎹�
             if (damageDetails != null && !damageDetails.isEmpty()) {
                 damageDetails.forEach(damageDetail -> {
+                    if (damageDetail == null) return;
                     damageDetail.setReportingWorkId(reportingWorkId);
                     damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
                     damageDetail.setProcessId(reportingWork.getProcessId());
                     damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
-                    //璺ㄥ伐搴忔鐮翠慨鏀硅川妫�鐘舵��
-                    if (!damageDetail.getResponsibleProcess().equals(reportingWork.getThisProcess()) && qualityInsStatus==2) {
+
+                    if (!Objects.equals(damageDetail.getResponsibleProcess(), reportingWork.getThisProcess())
+                            && qualityInsStatus == 2) {
                         damageDetail.setQualityInsStatus(1);
                     }
-                    if (isPatch == 1){
+                    if (isPatch == 1) {
                         damageDetail.setQualityInsStatus(2);
                     }
                     damageDetailsMapper.insert(damageDetail);
                 });
             }
-            //鏌ヨ娴佺▼鍗″伐鑹烘祦绋�
-            String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(reportingWork.getProcessId(), reportingWorkDetail.getTechnologyNumber());
 
-            int index = technologicalProcess.indexOf("-");
-            String interceptProcess = "";
-            if (index <0){
-                 interceptProcess = technologicalProcess;
-            }
-            else {
-                //鑾峰彇宸ヨ壓娴佺▼绗竴涓伐搴�
-                 interceptProcess = technologicalProcess.substring(0, index);
+            // 鏌ヨ宸ヨ壓娴佺▼
+            String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(
+                    reportingWork.getProcessId(), reportingWorkDetail.getTechnologyNumber());
+            String interceptProcess;
+            if (technologicalProcess != null) {
+                int index = technologicalProcess.indexOf("-");
+                interceptProcess = (index < 0) ? technologicalProcess : technologicalProcess.substring(0, index);
+            } else {
+                interceptProcess = "";
             }
 
-
-            //鍒ゆ柇褰撳墠宸ュ簭鏄惁涓虹涓�閬撳伐搴忓伐搴忥紝浣跨敤娴佺▼鍗¤〃鏁伴噺鎴栬�呭皬鐗囨祦绋嬭〃涓婂伐搴忔暟閲�
-            int processNum = 0;
+            // 鍒ゆ柇鏄惁绗竴閬撳伐搴�
+            int processNum;
             if (interceptProcess.equals(reportingWork.getThisProcess())) {
                 processNum = reportingWorkMapper.selectFlowCardNum(
                         reportingWorkDetail.getOrderNumber(),
@@ -337,75 +391,244 @@
                 );
             }
 
-
-            //鍒ゆ柇鏄惁澶т簬褰撳墠鏁伴噺骞朵笖鎶涘嚭寮傚父
-            if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
+            // 鏍¢獙鏁伴噺鍚堟硶鎬�
+            if (processNum < (breakageQty + completedQty)) {
                 Map<String, Object> map = new HashMap<>();
                 map.put("orderNumber", reportingWorkDetail.getOrderNumber());
-                map.put("technologyNumber", reportingWorkDetail.getOrderNumber());
+                map.put("technologyNumber", reportingWorkDetail.getTechnologyNumber()); // 淇閿欒
                 map.put("processNum", processNum);
-                map.put("sumNum", reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity());
+                map.put("sumNum", breakageQty + completedQty);
                 String msg = JSON.toJSONString(map);
                 throw new ServiceException(Constants.Code_600, msg);
             }
 
             OrderProcessDetail orderProcessDetail = new OrderProcessDetail();
-            orderProcessDetail.setBrokenNum(reportingWorkDetail.getBreakageQuantity());
-            orderProcessDetail.setReportingWorkNum(reportingWorkDetail.getCompletedQuantity());
-            orderProcessDetail.setReportingWorkNumCount(reportingWorkDetail.getCompletedQuantity());
+            orderProcessDetail.setBrokenNum(breakageQty);
+            orderProcessDetail.setReportingWorkNum(completedQty);
+            orderProcessDetail.setReportingWorkNumCount(completedQty);
 
-
-            if (isPatch == 0){//鏈幇琛�
-                //鏍规嵁璁㈠崟id锛岃鍗曞簭鍙凤紝浠ュ強灏忕墖搴忓彿 鏇存柊灏忕墖娴佺▼鐨勫畬宸ユ暟閲忎互鍙婂埡鐮存暟閲�
+            // 鏈幇琛ワ細鏇存柊灏忕墖娴佺▼鏁伴噺
+            if (isPatch == 0) {
                 LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>();
                 updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber())
                         .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId())
                         .eq(OrderProcessDetail::getOrderId, reportingWork.getOrderId())
                         .eq(OrderProcessDetail::getProcess, reportingWork.getThisProcess())
                         .eq(OrderProcessDetail::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber())
-                        .setSql("reporting_work_num_count = reporting_work_num_count +" + orderProcessDetail.getReportingWorkNum())
-                        .setSql("reporting_work_num =reporting_work_num +" + orderProcessDetail.getReportingWorkNum())
+                        .setSql("reporting_work_num_count = reporting_work_num_count +" + completedQty)
+                        .setSql("reporting_work_num = reporting_work_num +" + completedQty)
                         .setSql("update_time = now()")
-                        .setSql("broken_num =broken_num +" + orderProcessDetail.getBrokenNum());
+                        .setSql("broken_num = broken_num +" + breakageQty);
                 orderProcessDetailMapper.update(null, updateWrapper);
             }
 
-            //鍒ゆ柇瀹屽伐鏁伴噺鍜屽埡鐮存暟閲忔槸鍚︿负0锛屼负0鍒欎笉鎻掑叆鍒版暟鎹簱
-            if (!(reportingWorkDetail.getCompletedQuantity() == 0 && reportingWorkDetail.getBreakageQuantity() == 0)) {
+            // 鍒ゆ柇瀹屽伐鏁伴噺鍜屾鐮存暟閲忔槸鍚︿负0锛屼负0鍒欎笉鎻掑叆
+            if (!(completedQty == 0 && breakageQty == 0)) {
                 reportingWorkDetailMapper.insert(reportingWorkDetail);
             }
 
-            //鏇存柊娴佺▼鍗¤〃鐨勬姤宸ユ暟閲�
+            // 鏇存柊娴佺▼鍗℃姤宸ユ暟閲�
             if (reportingWork.getNextProcess() == null || reportingWork.getNextProcess().isEmpty()) {
-                LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper =
-                        new LambdaUpdateWrapper<>();
+                LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
                 flowCardLambdaUpdateWrapper
                         .eq(FlowCard::getProcessId, reportingWork.getProcessId())
                         .eq(FlowCard::getOrderNumber, reportingWorkDetail.getOrderNumber())
                         .eq(FlowCard::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber())
-                        .setSql("inventory_quantity = inventory_quantity +" + orderProcessDetail.getReportingWorkNum());
+                        .setSql("inventory_quantity = inventory_quantity +" + completedQty);
                 flowCardMapper.update(null, flowCardLambdaUpdateWrapper);
             }
-
-
         });
-        //鑾峰彇鎶ュ伐宸ュ簭鏄惁涓哄鍚堝伐绋�
 
-        reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity()/maxTechnologyNumber[1]);
-
+        // 鑾峰彇鎶ュ伐宸ュ簭鏄惁涓哄鍚堝伐绋�
+        if (maxTechnologyNumber[1] != 0) {
+            reportingWork.setThisCompletedQuantity(
+                    reportingWork.getThisCompletedQuantity() / maxTechnologyNumber[1]);
+        }
 
         reportingWorkMapper.update(reportingWork, new LambdaUpdateWrapper<ReportingWork>()
                 .eq(ReportingWork::getId, reportingWork.getId()));
 
-        //淇濆瓨鏃ュ織
+        // 淇濆瓨鏃ュ織
         Log log = new Log();
-        log.setContent(reportingWorkMap.toString());
+        log.setContent(JSON.toJSONString(reportingWorkMap));
         log.setFunction("saveReportingWork鎶ュ伐鏂板");
-        log.setOperatorId((String) reportingWorkJson.get("userId"));
-        log.setOperator((String) reportingWorkJson.get("userName"));
+        log.setOperatorId(reportingWorkJson.getString("userId"));
+        log.setOperator(reportingWorkJson.getString("userName"));
         logService.saveLog(log);
+
         return true;
     }
+
+
+    //鎶ュ伐鏂板
+//    @Transactional(rollbackFor = Exception.class)
+//    public boolean SaveReportingWorkSv(Map<String, Object> reportingWorkMap) {
+//        //鎺ユ敹瑙f瀽涓婚檮琛ㄤ俊鎭�
+//        JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
+//        ReportingWork reportingWork = JSONObject.parseObject(JSONObject.toJSONString(reportingWorkJson.get("title")), ReportingWork.class);
+//        List<ReportingWorkDetail> reportingWorkDetails = JSONArray.parseArray(JSONObject.toJSONString(reportingWorkJson.get("detail")), ReportingWorkDetail.class);
+//        //鑾峰彇褰撳墠鏈�澶ф姤宸ュ崟鍙风敓鎴愭姤宸ュ崟鍙�
+//        String formattedNumber = String.format("%04d", reportingWorkMapper.selectMaxReportingWorkId() + 1);
+//        //鏍煎紡鍖栧綋鍓嶆棩鏈�
+//        Date currentDate = new Date();
+//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
+//        String formattedDate = dateFormat.format(currentDate);
+//        String reportingWorkId = "BG" + formattedDate + formattedNumber;
+//        reportingWork.setReportingWorkId(reportingWorkId);
+//        String[] processIdStr = reportingWork.getProcessId().split("/");
+//        reportingWork.setProcessId(processIdStr[0]);
+//        reportingWork.setThisWornQuantity(0);
+//        reportingWork.setThisCompletedQuantity(0);
+//
+//        int reviewState = (int) reportingWorkJson.get("type");
+//        if (reviewState == 1) {//瀹℃牳閫氳繃
+//            reportingWork.setReviewed(reportingWork.getCreator());
+//            reportingWork.setReviewedState(1);
+//        } else {
+//            reportingWork.setReviewedState(0);
+//        }
+//        if(reportingWork.getReportingWorkTime()==null){
+//            LocalDateTime localDateTime = LocalDateTime.now();
+//            reportingWork.setReportingWorkTime(localDateTime);
+//        }
+//        //鏄惁绾胯ˉ 1鐜拌ˉ 0鏈幇琛�
+//        int isPatch = (reportingWorkJson.get("isPatch") != null) ? (int) reportingWorkJson.get("isPatch") : 0;
+//
+//        //涓昏〃鎻掑叆
+//        reportingWorkMapper.insert(reportingWork);
+//        //鍓〃寰幆鎻掑叆锛屽苟涓旀彃鍏ユ鐮翠俊鎭〃銆傚啀鏍规嵁娆$牬淇℃伅淇敼璁㈠崟鐜荤拑娴佺▼琛ㄧ殑瀹屽伐鏁伴噺涓庡埡鐮存暟閲�
+//        final Integer[] maxTechnologyNumber = {0,0};
+//        reportingWorkDetails.forEach(reportingWorkDetail -> {
+//            //鍚堢墖鏁伴噺姹囨�诲噺灏�
+//            if(Integer.parseInt(reportingWorkDetail.getTechnologyNumber()) > maxTechnologyNumber[0]){
+//                maxTechnologyNumber[0] = Integer.valueOf(reportingWorkDetail.getTechnologyNumber());
+//                maxTechnologyNumber[1]+=1;
+//            }
+//            reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity() + reportingWorkDetail.getCompletedQuantity());
+//            reportingWork.setThisWornQuantity(reportingWork.getThisWornQuantity() + reportingWorkDetail.getBreakageQuantity());
+//            int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
+//            reportingWorkDetail.setReportingWorkId(reportingWorkId);
+//            List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
+//            reportingWork.setNextProcess(orderProcessDetailMapper.selectNextProcess(processIdStr[0],processIdStr[1],reportingWork.getThisProcess(),reportingWorkDetail.getOrderNumber()));
+//
+//            //娆$牬鏄庣粏琛ㄦ彃鍏ユ暟鎹�
+//            if (damageDetails != null && !damageDetails.isEmpty()) {
+//                damageDetails.forEach(damageDetail -> {
+//                    damageDetail.setReportingWorkId(reportingWorkId);
+//                    damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
+//                    damageDetail.setProcessId(reportingWork.getProcessId());
+//                    damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
+//                    //璺ㄥ伐搴忔鐮翠慨鏀硅川妫�鐘舵��
+//                    if (!damageDetail.getResponsibleProcess().equals(reportingWork.getThisProcess()) && qualityInsStatus==2) {
+//                        damageDetail.setQualityInsStatus(1);
+//                    }
+//                    if (isPatch == 1){
+//                        damageDetail.setQualityInsStatus(2);
+//                    }
+//                    damageDetailsMapper.insert(damageDetail);
+//                });
+//            }
+//            //鏌ヨ娴佺▼鍗″伐鑹烘祦绋�
+//            String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(reportingWork.getProcessId(), reportingWorkDetail.getTechnologyNumber());
+//
+//            int index = technologicalProcess.indexOf("-");
+//            String interceptProcess = "";
+//            if (index <0){
+//                 interceptProcess = technologicalProcess;
+//            }
+//            else {
+//                //鑾峰彇宸ヨ壓娴佺▼绗竴涓伐搴�
+//                 interceptProcess = technologicalProcess.substring(0, index);
+//            }
+//
+//
+//            //鍒ゆ柇褰撳墠宸ュ簭鏄惁涓虹涓�閬撳伐搴忓伐搴忥紝浣跨敤娴佺▼鍗¤〃鏁伴噺鎴栬�呭皬鐗囨祦绋嬭〃涓婂伐搴忔暟閲�
+//            int processNum = 0;
+//            if (interceptProcess.equals(reportingWork.getThisProcess())) {
+//                processNum = reportingWorkMapper.selectFlowCardNum(
+//                        reportingWorkDetail.getOrderNumber(),
+//                        reportingWorkDetail.getTechnologyNumber(),
+//                        reportingWork.getProcessId(),
+//                        reportingWork.getThisProcess()
+//                );
+//            } else {
+//                processNum = reportingWorkMapper.selectGlassProcessNum(
+//                        reportingWorkDetail.getOrderNumber(),
+//                        reportingWorkDetail.getTechnologyNumber(),
+//                        reportingWork.getProcessId(),
+//                        reportingWork.getThisProcess()
+//                );
+//            }
+//
+//
+//            //鍒ゆ柇鏄惁澶т簬褰撳墠鏁伴噺骞朵笖鎶涘嚭寮傚父
+//            if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
+//                Map<String, Object> map = new HashMap<>();
+//                map.put("orderNumber", reportingWorkDetail.getOrderNumber());
+//                map.put("technologyNumber", reportingWorkDetail.getOrderNumber());
+//                map.put("processNum", processNum);
+//                map.put("sumNum", reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity());
+//                String msg = JSON.toJSONString(map);
+//                throw new ServiceException(Constants.Code_600, msg);
+//            }
+//
+//            OrderProcessDetail orderProcessDetail = new OrderProcessDetail();
+//            orderProcessDetail.setBrokenNum(reportingWorkDetail.getBreakageQuantity());
+//            orderProcessDetail.setReportingWorkNum(reportingWorkDetail.getCompletedQuantity());
+//            orderProcessDetail.setReportingWorkNumCount(reportingWorkDetail.getCompletedQuantity());
+//
+//
+//            if (isPatch == 0){//鏈幇琛�
+//                //鏍规嵁璁㈠崟id锛岃鍗曞簭鍙凤紝浠ュ強灏忕墖搴忓彿 鏇存柊灏忕墖娴佺▼鐨勫畬宸ユ暟閲忎互鍙婂埡鐮存暟閲�
+//                LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>();
+//                updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber())
+//                        .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId())
+//                        .eq(OrderProcessDetail::getOrderId, reportingWork.getOrderId())
+//                        .eq(OrderProcessDetail::getProcess, reportingWork.getThisProcess())
+//                        .eq(OrderProcessDetail::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber())
+//                        .setSql("reporting_work_num_count = reporting_work_num_count +" + orderProcessDetail.getReportingWorkNum())
+//                        .setSql("reporting_work_num =reporting_work_num +" + orderProcessDetail.getReportingWorkNum())
+//                        .setSql("update_time = now()")
+//                        .setSql("broken_num =broken_num +" + orderProcessDetail.getBrokenNum());
+//                orderProcessDetailMapper.update(null, updateWrapper);
+//            }
+//
+//            //鍒ゆ柇瀹屽伐鏁伴噺鍜屽埡鐮存暟閲忔槸鍚︿负0锛屼负0鍒欎笉鎻掑叆鍒版暟鎹簱
+//            if (!(reportingWorkDetail.getCompletedQuantity() == 0 && reportingWorkDetail.getBreakageQuantity() == 0)) {
+//                reportingWorkDetailMapper.insert(reportingWorkDetail);
+//            }
+//
+//            //鏇存柊娴佺▼鍗¤〃鐨勬姤宸ユ暟閲�
+//            if (reportingWork.getNextProcess() == null || reportingWork.getNextProcess().isEmpty()) {
+//                LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper =
+//                        new LambdaUpdateWrapper<>();
+//                flowCardLambdaUpdateWrapper
+//                        .eq(FlowCard::getProcessId, reportingWork.getProcessId())
+//                        .eq(FlowCard::getOrderNumber, reportingWorkDetail.getOrderNumber())
+//                        .eq(FlowCard::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber())
+//                        .setSql("inventory_quantity = inventory_quantity +" + orderProcessDetail.getReportingWorkNum());
+//                flowCardMapper.update(null, flowCardLambdaUpdateWrapper);
+//            }
+//
+//
+//        });
+//        //鑾峰彇鎶ュ伐宸ュ簭鏄惁涓哄鍚堝伐绋�
+//
+//        reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity()/maxTechnologyNumber[1]);
+//
+//
+//        reportingWorkMapper.update(reportingWork, new LambdaUpdateWrapper<ReportingWork>()
+//                .eq(ReportingWork::getId, reportingWork.getId()));
+//
+//        //淇濆瓨鏃ュ織
+//        Log log = new Log();
+//        log.setContent(reportingWorkMap.toString());
+//        log.setFunction("saveReportingWork鎶ュ伐鏂板");
+//        log.setOperatorId((String) reportingWorkJson.get("userId"));
+//        log.setOperator((String) reportingWorkJson.get("userName"));
+//        logService.saveLog(log);
+//        return true;
+//    }
 
     //涓嬪伐搴忓鏍告柟娉�
     public boolean ReviewReportingWorkSv(Map<String, String> reportingWork) {
@@ -449,6 +672,7 @@
                 orderMapper.selectOne(new LambdaQueryWrapper<Order>()
                         .eq(Order::getOrderId, reportingWork.getOrderId())));
         reportingWork.setFlowCard(new FlowCard());
+
 
 
 
@@ -587,15 +811,29 @@
     }
 
     //鎶ュ伐绠$悊鏌ヨ
-    public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, java.sql.Date selectTime1, java.sql.Date selectTime2, String orderId, ReportingWork reportingWork) {
+    public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, List<String> selectDate, String orderId, ReportingWork reportingWork) {
         Integer offset = (pageNum - 1) * pageSize;
         if ("null".equals(orderId)) {
             orderId = "";
         }
+        String endDate = LocalDate.now().toString();
+        String startDate = LocalDate.now().minusDays(3).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", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
+        map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, startDate, endDate, orderId, reportingWork));
        // map.put("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
-        map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
+        map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, startDate, endDate, orderId, reportingWork));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
         return map;
     }
 
@@ -615,6 +853,17 @@
             if (transferState !=3){
                 //鍒ゆ柇鏄惁鏈夎ˉ鐗囪繑宸ユ暟鎹�
                 if (countStates==0){
+                    //褰撲笅宸ュ簭鏈鏍稿垯鍒犻櫎鏈伐搴�
+                    ReportingWork reportingWork = reportingWorkMapper.selectOne(new LambdaQueryWrapper<ReportingWork>()
+                            .eq(ReportingWork::getReportingWorkId, reportingWorkId));
+                    //淇濆瓨鏃ュ織
+                    Log log = new Log();
+                    log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
+                    log.setFunction("deleteWork鎶ュ伐鍒犻櫎");
+                    log.setOperatorId(userId);
+                    log.setOperator(userName);
+
+
                     //鍒ゆ柇鏄惁鏄叆搴撳伐搴�
                     if (lastProcess.equals(thisProcess)) {//鏄叆搴撳伐搴�
                         //鏌ヨ璇ユ祦绋嬪崱鏁伴噺銆佸彲鍏ュ簱鏁伴噺銆佸凡鍏ュ簱鏁伴噺
@@ -641,12 +890,6 @@
                                 }
                                 //鍒犻櫎鎶ュ伐锛屽皢瀹℃牳鐘舵�佹敼涓�-1
                                 reportingWorkMapper.deleteWork(reportingWorkId);
-                                //淇濆瓨鏃ュ織
-                                Log log = new Log();
-                                log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
-                                log.setFunction("deleteWork鎶ュ伐鍏ュ簱鍒犻櫎");
-                                log.setOperatorId(userId);
-                                log.setOperator(userName);
                                 logService.saveLog(log);
                                 return true;
                             } else {
@@ -655,6 +898,19 @@
                         }
 
                     } else {//涓嶆槸鍏ュ簱宸ュ簭
+                        if(reportingWork.getReviewedState()==0){
+                            //鏌ヨ褰撳墠鎶ュ伐缂栧彿瀹屽伐娆$牬鏁伴噺鐨勬暟鎹�
+                            List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
+                            for (Map<String, Object> item : workDateList) {
+                                //鏇存柊鎶ュ伐娴佺▼琛ㄦ暟鎹�
+                                reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
+                            }
+                            //鍒犻櫎鎶ュ伐锛屽皢瀹℃牳鐘舵�佹敼涓�-1
+                            reportingWorkMapper.deleteWork(reportingWorkId);
+                            logService.saveLog(log);
+                            return true;
+                        }
+
                         if (count == 0) {
                             //鏌ヨ褰撳墠鎶ュ伐缂栧彿瀹屽伐娆$牬鏁伴噺鐨勬暟鎹�
                             List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
@@ -665,12 +921,7 @@
                             //鍒犻櫎鎶ュ伐锛屽皢瀹℃牳鐘舵�佹敼涓�-1
                             reportingWorkMapper.deleteWork(reportingWorkId);
 
-                            //淇濆瓨鏃ュ織
-                            Log log = new Log();
-                            log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
-                            log.setFunction("deleteWork鎶ュ伐鍒犻櫎");
-                            log.setOperatorId(userId);
-                            log.setOperator(userName);
+
                             logService.saveLog(log);
                             return true;
                         } else {
@@ -690,15 +941,28 @@
     }
 
     //鏌ヨ璐ㄦ瀹℃牳
-    public Map<String, Object> selectQualityTestingSv(Integer pageNum, Integer pageSize, java.sql.Date selectTime1, java.sql.Date selectTime2, Integer state, String processId, ReportingWork reportingWork) {
+    public Map<String, Object> selectQualityTestingSv(Integer pageNum, Integer pageSize, List<String> selectDate, Integer state, String processId, ReportingWork reportingWork) {
         Integer offset = (pageNum - 1) * pageSize;
         if ("null".equals(processId)) {
             processId = "";
         }
+        String endDate = LocalDate.now().toString();
+        String startDate = LocalDate.now().minusDays(3).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", reportingWorkMapper.selectQualityTestingMp(offset, pageSize, selectTime1, selectTime2, state, processId, reportingWork));
-        map.put("total", reportingWorkMapper.getQualityPageTotal(offset, pageSize, selectTime1, selectTime2, state, processId, reportingWork));
-
+        map.put("data", reportingWorkMapper.selectQualityTestingMp(offset, pageSize, startDate, endDate, state, processId, reportingWork));
+        map.put("total", reportingWorkMapper.getQualityPageTotal(offset, pageSize, startDate, endDate, state, processId, reportingWork));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
         return map;
     }
 
@@ -1010,7 +1274,7 @@
                         .eq("order_sort", reportingWork.get("oldOrderNumber"))
                         .eq("review_status",0)
         );
-        if (patchLogs.isEmpty()){
+        if (!patchLogs.isEmpty()){
             result.put("msg","鏃ц鍗曞瓨鍦ㄨˉ鐗囨湭瀹℃牳鏁版嵁");
             result.put("data",false);
             return result;
@@ -1021,7 +1285,7 @@
                     .eq("order_sort", reportingWork.get("oldOrderNumber"))
                     .eq("review_status",0)
         );
-        if (patchLogs.isEmpty()){
+        if (!patchLogs.isEmpty()){
             result.put("msg","鏃ц鍗曞瓨鍦ㄨ繑宸ユ湭瀹℃牳鏁版嵁锛岃鍏堝鏍告姤宸ュ悗鍐嶈繘琛岃浆鍑�");
             result.put("data",false);
             return result;
@@ -1147,7 +1411,7 @@
         //restTemplate.postForObject("http://localhost:8086/order/test",orderNumberTransferList,String.class);
 
         //鍚憁es鍙戦�乭ttp璇锋眰
-        ResponseEntity<OrderNumberTransferDTO> response =restTemplate.exchange(
+        /*ResponseEntity<OrderNumberTransferDTO> response =restTemplate.exchange(
                 "http://localhost:88/api/loadGlass/order/order/orderChange",
                 HttpMethod.POST,
                 new HttpEntity<>(orderNumberTransferList),
@@ -1159,7 +1423,9 @@
         }else{
             result.put("msg","杩炴帴mes鍝嶅簲瓒呮椂");
             result.put("data",false);
-        }
+        }*/
+
+        result.put("data",true);
         return result;
 
     }
@@ -1181,7 +1447,10 @@
         date.add(endDate);
         Map<String, Object> result = new HashMap<>();
         BasicData basicData = basicDataMapper
-                .selectOne(new QueryWrapper<BasicData>().eq("basic_name", reportingWork.get("process")));
+                .selectOne(new QueryWrapper<BasicData>()
+                        .eq("basic_name", reportingWork.get("process"))
+                        .last("limit 1")
+                );
         result.put("data",orderProcessDetailMapper.selectShiftQuantitySv(creatorId, startDate, endDate,basicData==null?null:basicData.getNickname()));
         result.put("date",date);
         return result;
@@ -1201,26 +1470,48 @@
         date.add(startDate);
         date.add(endDate);
         Map<String, Object> result = new HashMap<>();
-        result.put("data",reportingWorkMapper.selectList(
+        List<ReportingWork> reportingWorkList = reportingWorkMapper.selectList(
                 new QueryWrapper<ReportingWork>().nested(
                                 reportingWork.get("process")!=null,
                                 wrapper-> wrapper.eq("creator_id",reportingWork.get("userId"))//褰撳伐搴忎负绌烘椂锛屾煡璇㈡墍鏈夋姤宸ヤ俊鎭�
                         )
                         .gt("reviewed_state",-1)
                         .between("date(reporting_work_time)",startDate,endDate)
-                        .orderByDesc("id")));
+                        .orderByDesc("id"));
+        reportingWorkList.forEach(reportingWork1 -> {
+            String Plies =  reportingWorkDetailMapper.getGlassPliesCount(reportingWork1.getReportingWorkId());
+            reportingWork1.setProcessId(reportingWork1.getProcessId()+'/'+Plies);
+        });
+
+        result.put("data",reportingWorkList);
         result.put("date",date);
 
          return result;
 
     }
 
-		public List<BasicDataProduce> selectEquipmentByProcessSv(String process) {
-		       return reportingWorkMapper.SelectWorkBasicDeviceMp(process);
-		    }
+    public List<BasicDataProduce> selectEquipmentByProcessSv(String process) {
+           return reportingWorkMapper.SelectWorkBasicDeviceMp(process);
+        }
 
-		public String saveWorkStorage(Map<String, Object> object) {
-		        //List<Map<String, Object>> flowCard = reportingWorkMapper.getStorageData();
-		        //finishedGoodsInventoryService.addSelectWarehousing(object);
-		        return null;
-		    }}
+    public String saveWorkStorage(Map<String, Object> object) {
+            //List<Map<String, Object>> flowCard = reportingWorkMapper.getStorageData();
+            //finishedGoodsInventoryService.addSelectWarehousing(object);
+            return null;
+        }
+
+    public Map<String, Object> mesBasicDataSv() {
+        Map<String, Object> map = new HashMap<>();
+        //宸ュ簭
+        map.put("process",flowCardMapper.getProcessNameList());
+        //璁惧涓嬫媺妗�
+        map.put("device", reportingWorkMapper.mesSelectWorkBasicDeviceMp());
+        //鐝粍涓嬫媺妗�
+        map.put("teams", reportingWorkMapper.mesSelectWorkBasicTeamsMp());
+        //娆$牬绫诲瀷
+        map.put("breakageType", reportingWorkMapper.selectBasicNameByType("breakagetype"));
+        //娆$牬鍘熷洜
+        map.put("breakageReason", reportingWorkMapper.selectBasicNameByType("breakagereason"));
+        return map;
+    }
+}

--
Gitblit v1.8.0