From 768e16999a8ce4bb500490ee76c659aa61ea1783 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期二, 25 三月 2025 10:08:13 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java |  447 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 359 insertions(+), 88 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 432e0c4..1ab73e9 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
@@ -4,19 +4,22 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.example.erp.common.Constants;
-import com.example.erp.entity.pp.DamageDetails;
-import com.example.erp.entity.pp.FlowCard;
-import com.example.erp.entity.pp.ReportingWork;
-import com.example.erp.entity.pp.ReportingWorkDetail;
+import com.example.erp.dto.pp.OrderNumberTransferDTO;
+import com.example.erp.entity.pp.*;
 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.userInfo.Log;
 import com.example.erp.entity.userInfo.SysError;
 import com.example.erp.exception.ServiceException;
+import com.example.erp.mapper.mm.FinishedOperateLogMapper;
 import com.example.erp.mapper.pp.*;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.mapper.sd.OrderDetailMapper;
 import com.example.erp.mapper.sd.OrderGlassDetailMapper;
 import com.example.erp.mapper.sd.OrderMapper;
 import com.example.erp.mapper.sd.OrderProcessDetailMapper;
@@ -25,47 +28,48 @@
 import com.example.erp.service.userInfo.LogService;
 import com.example.erp.service.userInfo.SysErrorService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.client.RestTemplate;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
 
 @Service
 @DS("pp")
+@RequiredArgsConstructor
 public class ReportingWorkService {
-    final
-    ReportingWorkMapper reportingWorkMapper;
-    final
-    BasicDateProduceMapper basicDateProduceMapper;
-    final
-    DamageDetailsMapper damageDetailsMapper;
-    final
-    OrderProcessDetailMapper orderProcessDetailMapper;
-    final
-    ReportingWorkDetailMapper
-            reportingWorkDetailMapper;
-    final OrderMapper
-            orderMapper;
+    private final ReportingWorkTransferMapper reportingWorkTransferMapper;
+    private final ReportingWorkMapper reportingWorkMapper;
+    private final BasicDateProduceMapper basicDateProduceMapper;
+    private final DamageDetailsMapper damageDetailsMapper;
+    private final OrderProcessDetailMapper orderProcessDetailMapper;
+    private final ReportingWorkDetailMapper reportingWorkDetailMapper;
+    private final OrderMapper  orderMapper;
+    private final OrderDetailMapper orderDetailMapper;
 
-    final
-    FlowCardMapper flowCardMapper;
+    private final FlowCardMapper flowCardMapper;
 
-    final
-    OrderProcessDetailService orderProcessDetailService;
+    private final OrderProcessDetailService orderProcessDetailService;
 
-    final
-    LogService logService;
+    private final LogService logService;
 
-    final LogMapper logMapper;
+    private final LogMapper logMapper;
     private final OrderGlassDetailMapper orderGlassDetailMapper;
     private final SysErrorService sysErrorService;
+    private final FinishedOperateLogMapper finishedOperateLogMapper;
+    private final RestTemplate restTemplate;
 
 
-    public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService) {
+    /*public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService, OrderDetailMapper orderDetailMapper, FinishedOperateLogMapper finishedOperateLogMapper, ReportingWorkTransferMapper reportingWorkTransferMapper) {
         this.reportingWorkMapper = reportingWorkMapper;
         this.basicDateProduceMapper = basicDateProduceMapper;
         this.damageDetailsMapper = damageDetailsMapper;
@@ -78,10 +82,15 @@
         this.logMapper = logMapper;
         this.orderGlassDetailMapper = orderGlassDetailMapper;
         this.sysErrorService = sysErrorService;
-    }
+        this.orderDetailMapper = orderDetailMapper;
+        this.finishedOperateLogMapper = finishedOperateLogMapper;
+        this.reportingWorkTransferMapper = reportingWorkTransferMapper;
+    }*/
 
     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);
 
@@ -125,38 +134,62 @@
             map.put("device", reportingWorkMapper.SelectWorkBasicDeviceMp(process));
             //鐝粍涓嬫媺妗�
             map.put("teams", reportingWorkMapper.SelectWorkBasicTeamsMp(process));
-
+            //娆$牬绫诲瀷
             map.put("breakageType", reportingWorkMapper.selectBasicNameByType("breakagetype"));
+            //娆$牬鍘熷洜
             map.put("breakageReason", reportingWorkMapper.selectBasicNameByType("breakagereason"));
 
             //鏌ヨ鏈伐搴忔姤宸ラ渶瑕佸摢鍑犲眰锛屼笂宸ュ簭鏄粈涔�
             String obtainTechnology = reportingWorkMapper.SelectWorkTechnologyMp(processIdStr);
 
-            map.put("numberList", flowCardMapper.getGlassNumber(Integer.valueOf(technologyStr),processIdStr));
+            map.put("numberList", flowCardMapper.getGlassNumber(technologyStr,processIdStr));
 
             //鍒ゆ柇鏈伐搴忔槸涓嶆槸绗竴閬撳伐搴�
             if (interceptProcess.equals(process)) {
                 //鏄涓�閬撳伐搴忥紝鏌ヨ娴佺▼鍗℃暟鎹�
                 map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr, technologyStr, process,reportType));
             } else {
-                //涓嶆槸绗竴閬撳伐搴忥紝鏌ヨ鎶ュ伐鏁版嵁
-                List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMp(processIdStr, technologyStr, process,previousProcess);
-                if(process.equals("涓┖")){
-                    String orderId = processIdStr.substring(0,10);
-                    details.forEach( detail -> {
-                        Integer glassId = orderGlassDetailMapper.
-                                getMinIdByGroup(orderId,
-                                        String.valueOf(detail.get("order_number")),
-                                        String.valueOf(detail.get("group")));
-                        int listGlassId = Integer.parseInt(String.valueOf(detail.get("glassId")));
-                        if(listGlassId  !=glassId){
-                            detail.put("rowClass","latter");
+                ReportingWork retrievedData = (ReportingWork) map.get("data");
+                if (retrievedData!=null){
+                    Integer reviewedState = retrievedData.getReviewedState();
+                    //鏍规嵁瀹℃牳鐘舵�佹煡璇㈡湭瀹℃牳鏁版嵁
+                    if (reviewedState==1){//宸插鏍�
+                        //涓嶆槸绗竴閬撳伐搴忥紝鏌ヨ鎶ュ伐鏁版嵁
+                        List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMp(processIdStr, technologyStr, process,previousProcess,laminating);
+                        if(process.equals("涓┖")){
+                            //鑾峰彇璇ユ祦绋嬪崱璁㈠崟鍙�
+                            String orderId = reportingWorkMapper.selectOrderid(processIdStr);
+                            details.forEach( detail -> {
+                                Integer glassId = orderGlassDetailMapper.
+                                        getMinIdByGroup(orderId,
+                                                String.valueOf(detail.get("order_number")),
+                                                String.valueOf(detail.get("group")));
+                                int listGlassId = Integer.parseInt(String.valueOf(detail.get("glassId")));
+                                if(listGlassId  !=glassId){
+                                    detail.put("rowClass","latter");
+                                }
+                            });
                         }
-                    });
+                        map.put("Detail",details );
+                    }else {
+                        //涓嶆槸绗竴閬撳伐搴忥紝鏌ヨ鎶ュ伐鏁版嵁
+                        List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMpReview(processIdStr, technologyStr, process,previousProcess,laminating);
+                        if(process.equals("涓┖")){
+                            String orderId = reportingWorkMapper.selectOrderid(processIdStr);
+                            details.forEach( detail -> {
+                                Integer glassId = orderGlassDetailMapper.
+                                        getMinIdByGroup(orderId,
+                                                String.valueOf(detail.get("order_number")),
+                                                String.valueOf(detail.get("group")));
+                                int listGlassId = Integer.parseInt(String.valueOf(detail.get("glassId")));
+                                if(listGlassId  !=glassId){
+                                    detail.put("rowClass","latter");
+                                }
+                            });
+                        }
+                        map.put("Detail",details );
+                    }
                 }
-
-
-                map.put("Detail",details );
             }
 
             // 绗竴閬撳伐搴忥紙娴佺▼鍗℃暟+琛ョ墖鏁伴噺-瀹屽伐鏁�-娆$牬鏁�-杩斿伐鏈畬鎴愭暟-绂佺敤鏁伴噺锛�
@@ -172,15 +205,26 @@
             //鍘嗗彶宸ュ簭
             map.put("historyProcess", reportingWorkMapper.SelectHistoryProcessMp(historyProcess, process));
         }
-
-
         return map;
     }
 
     //鏌ヨ宸ュ簭
-    public Map<String, Object> SelectProcessSv() {
+    public Map<String, Object> SelectProcessSv(String userId) {
         Map<String, Object> map = new HashMap<>();
-        map.put("process", reportingWorkMapper.SelectProcessMp());
+        String process = reportingWorkMapper.selectUserProcess(userId);
+        if (process==null) {
+            map.put("process", reportingWorkMapper.SelectProcessMp());
+        }
+        else {
+            //瀵规寚瀹氬伐搴忓崟鐙煡璇�
+            if (process.equals("澶硅兌")){
+                map.put("process",reportingWorkMapper.getSelectProcessJiajiao() );
+            }
+            if (process.equals("鎶�鏈儴澶氭洸")){
+                map.put("process",reportingWorkMapper.getSelectProcessDuoqu() );
+            }
+        }
+
         return map;
     }
 
@@ -199,27 +243,28 @@
         String formattedDate = dateFormat.format(currentDate);
         String reportingWorkId = "BG" + formattedDate + formattedNumber;
         reportingWork.setReportingWorkId(reportingWorkId);
-        reportingWork.setProcessId(reportingWork.getProcessId().substring(0, 14));
+        String[] processIdStr = reportingWork.getProcessId().split("/");
+        reportingWork.setProcessId(processIdStr[0]);
 
         int reviewState = (int) reportingWorkJson.get("type");
-        if (reviewState == 1) {
+        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;
+
+        reportingWork.setNextProcess(orderProcessDetailMapper.selectNextProcess(processIdStr[0],processIdStr[1],reportingWork.getThisProcess()));
         //涓昏〃鎻掑叆
         reportingWorkMapper.insert(reportingWork);
         //鍓〃寰幆鎻掑叆锛屽苟涓旀彃鍏ユ鐮翠俊鎭〃銆傚啀鏍规嵁娆$牬淇℃伅淇敼璁㈠崟鐜荤拑娴佺▼琛ㄧ殑瀹屽伐鏁伴噺涓庡埡鐮存暟閲�
         reportingWorkDetails.forEach(reportingWorkDetail -> {
-//            reportingWork.setThisProcessQuantity(
-//                    reportingWork.getThisProcessQuantity()
-//                            +reportingWorkDetail.getCompletedQuantity()
-//                            +reportingWorkDetail.getBreakageQuantity());
-//            reportingWork.setThisCompletedQuantity(
-//                    reportingWork.getThisCompletedQuantity()+reportingWorkDetail.getCompletedQuantity());
-//            reportingWork.setThisWornQuantity(
-//                    reportingWork.getThisWornQuantity()+reportingWorkDetail.getBreakageQuantity());
 
             int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
             reportingWorkDetail.setReportingWorkId(reportingWorkId);
@@ -234,6 +279,9 @@
                     //璺ㄥ伐搴忔鐮翠慨鏀硅川妫�鐘舵��
                     if (!damageDetail.getResponsibleProcess().equals(reportingWork.getThisProcess()) && qualityInsStatus==2) {
                         damageDetail.setQualityInsStatus(1);
+                    }
+                    if (isPatch == 1){
+                        damageDetail.setQualityInsStatus(2);
                     }
                     damageDetailsMapper.insert(damageDetail);
                 });
@@ -273,7 +321,6 @@
 
             //鍒ゆ柇鏄惁澶т簬褰撳墠鏁伴噺骞朵笖鎶涘嚭寮傚父
             if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
-                System.out.println(processNum+"--"+reportingWorkDetail.getBreakageQuantity()+"--"+reportingWorkDetail.getCompletedQuantity());
                 Map<String, Object> map = new HashMap<>();
                 map.put("orderNumber", reportingWorkDetail.getOrderNumber());
                 map.put("technologyNumber", reportingWorkDetail.getOrderNumber());
@@ -288,17 +335,21 @@
             orderProcessDetail.setReportingWorkNum(reportingWorkDetail.getCompletedQuantity());
             orderProcessDetail.setReportingWorkNumCount(reportingWorkDetail.getCompletedQuantity());
 
-            //鏍规嵁璁㈠崟id锛岃鍗曞簭鍙凤紝浠ュ強灏忕墖搴忓彿 鏇存柊灏忕墖娴佺▼鐨勫畬宸ユ暟閲忎互鍙婂埡鐮存暟閲�
-            LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>();
-            updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber())
-                    .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId().substring(0, 14))
-                    .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("broken_num =broken_num +" + orderProcessDetail.getBrokenNum());
-            orderProcessDetailMapper.update(null, updateWrapper);
+
+            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)) {
@@ -306,7 +357,7 @@
             }
 
             //鏇存柊娴佺▼鍗¤〃鐨勬姤宸ユ暟閲�
-            if (Objects.equals(reportingWork.getNextProcess(), "")) {
+            if (Objects.equals(reportingWork.getNextProcess(), "")|| Objects.equals(reportingWork.getNextProcess(), null)) {
                 LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper =
                         new LambdaUpdateWrapper<>();
                 flowCardLambdaUpdateWrapper
@@ -339,19 +390,24 @@
         int index = processId.lastIndexOf("/") + 1;
         String result = processId.substring(index);
         String technologyStr = reportingWork.get("technologyStr");
-
-if (thisProcess.equals("澶硅兌") || thisProcess.equals("涓┖") || thisProcess.equals("鍖呰")){
+        String[] processIdStr = processId.split("/");
+        String nowDate = LocalDate.now().toString();
+        //鑾峰彇鎶ュ伐宸ュ簭鏄惁涓哄鍚堝伐绋�
+        String laminating = reportingWorkMapper.getProcessLaminating(thisProcess);
+//鍚堢墖宸ュ簭
+if (laminating.equals("laminating")){
     LambdaUpdateWrapper
                 <ReportingWork> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper
-                .eq(ReportingWork::getProcessId, processId.substring(0, 14))
+                .eq(ReportingWork::getProcessId, processIdStr[0])
                 .eq(ReportingWork::getThisProcess, reportingWork.get("process"))
                 .eq(ReportingWork::getReviewedState, 0)
-                .eq(ReportingWork::getReviewed, userName)
-                .setSql("reviewed_state =1");
+                .setSql("reviewed_state =1")
+                .set(ReportingWork::getReviewed, userName)
+                .set(ReportingWork::getExamineTime, nowDate);
         reportingWorkMapper.update(null, updateWrapper);
 }else {
-    reportingWorkMapper.ReviewReportingWorkMp(processId.substring(0, 14),reportingWork.get("process"),technologyStr,userName);
+    reportingWorkMapper.ReviewReportingWorkMp(processIdStr[0],reportingWork.get("process"),technologyStr,userName);
 
 }
         return true;
@@ -383,13 +439,16 @@
         });
 
         Map<String, Object> map = new HashMap<>();
+        //鎶ュ伐涓昏〃
         map.put("reportingWork", reportingWork);
+        //鎶ュ伐鏄庣粏
         map.put("reportingWorkDetails", reportingWorkDetails);
+        //鎶ュ伐涓嬫媺妗嗘暟鎹�
         map.put("basic", getReportingWorkBase(reportingWork.getProcessId(), reportingWork.getThisProcess()));
         //鏍规嵁鎶ュ伐缂栧彿鑾峰彇灞�
         map.put("layer", reportingWorkMapper.selectLayerByReportingWorkId(reportingWorkId));
         map.put("numberList", flowCardMapper.getGlassNumber(reportingWorkMapper.selectLayerByReportingWorkId(reportingWorkId),reportingWork.getProcessId()));
-
+        map.put("title", "琛ョ墖鐘舵��");
         return map;
 
     }
@@ -401,8 +460,9 @@
         map.put("deviceType", reportingWorkMapper.SelectWorkBasicDeviceMp(thisProcess));
         //鐝粍涓嬫媺妗�
         map.put("teamsType", reportingWorkMapper.SelectWorkBasicTeamsMp(thisProcess));
-
+        //娆$牬绫诲瀷
         map.put("breakageType", reportingWorkMapper.selectBasicNameByType("breakagetype"));
+        //娆$牬鍘熷洜
         map.put("breakageReason", reportingWorkMapper.selectBasicNameByType("breakagereason"));
 
         //鑾峰彇璇ユ祦绋嬪崱鍙峰巻鍙叉姤宸ュ伐搴�
@@ -438,7 +498,7 @@
                 .delete(new LambdaQueryWrapper<ReportingWorkDetail>()
                         .eq(ReportingWorkDetail::getReportingWorkId, reportingWork.getReportingWorkId()));
 
-        //鏇寸粏鎶ュ伐涓昏〃
+        //鏇存柊鎶ュ伐涓昏〃
         int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
         reportingWorkMapper.updateById(reportingWork);
         reportingWorkDetails.forEach(reportingWorkDetail -> {
@@ -451,6 +511,7 @@
                     damageDetail.setProcessId(reportingWork.getProcessId());
                     damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
                     damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
+                    //鏄惁淇敼璐ㄦ鐘舵��
                     if (!Objects.equals(reportingWork.getThisProcess(), damageDetail.getResponsibleProcess()) && qualityInsStatus==2) {
                         damageDetail.setQualityInsStatus(1);
                     }
@@ -502,6 +563,7 @@
         Map<String, Object> map = new HashMap<>();
         map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
         map.put("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
+        map.put("footSum" ,reportingWorkMapper.getFootSum(selectTime1, selectTime2, orderId,reportingWork));
         return map;
     }
 
@@ -635,13 +697,38 @@
             JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
             ReportingWork reportingWork = JSONObject.parseObject(JSONObject.toJSONString(reportingWorkJson.get("title")), ReportingWork.class);
             ReportingWorkDetail reportingWorkDetail =JSON.parseObject(JSONObject.toJSONString(reportingWorkJson.get("detail")), ReportingWorkDetail.class);
+
+            //鏌ヨ娴佺▼鍗″伐鑹烘祦绋�
+            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()
+                );
+            }
+
             //鑾峰彇鍙姤鏁伴噺
-            int processNum = reportingWorkMapper.selectGlassProcessNum(
-                    reportingWorkDetail.getOrderNumber(),
-                    reportingWorkDetail.getTechnologyNumber(),
-                    reportingWork.getProcessId(),
-                    reportingWork.getThisProcess()
-            );
+
             //鍒ゆ柇鏄惁澶т簬褰撳墠鏁伴噺骞朵笖鎶涘嚭寮傚父
             if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
                 return false;
@@ -719,7 +806,7 @@
             //鏍规嵁璁㈠崟id锛岃鍗曞簭鍙凤紝浠ュ強灏忕墖搴忓彿 鏇存柊灏忕墖娴佺▼鐨勫畬宸ユ暟閲忎互鍙婂埡鐮存暟閲�
             LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber())
-                    .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId().substring(0, 14))
+                    .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId())
                     .eq(OrderProcessDetail::getOrderId, reportingWork.getOrderId())
                     .eq(OrderProcessDetail::getProcess, reportingWork.getThisProcess())
                     .eq(OrderProcessDetail::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber())
@@ -739,4 +826,188 @@
 
         }
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    public Object reportingWorkTransferSv(Map<String, String> reportingWork) {
+        Order oldOrder = orderMapper.selectOrderId(reportingWork.get("oldOrderId"));
+        OrderDetail oldOrderDetail = orderDetailMapper.selectOne(
+                new QueryWrapper<OrderDetail>()
+                        .eq("order_id", reportingWork.get("oldOrderId"))
+                        .eq("order_number", reportingWork.get("oldOrderNumber"))
+        );
+
+        Order newOrder = orderMapper.selectOrderId(reportingWork.get("newOrderId"));
+        OrderDetail newOrderDetail = orderDetailMapper.selectOne(
+                new QueryWrapper<OrderDetail>()
+                        .eq("order_id", reportingWork.get("newOrderId"))
+                        .eq("order_number", reportingWork.get("newOrderNumber"))
+        );
+        if(!Objects.equals(oldOrder.getCustomerId(), newOrder.getCustomerId())){
+            return "鏂版棫璁㈠崟瀹㈡埛涓嶄竴鑷�";
+        }
+        if(!Objects.equals(oldOrderDetail.getProductId(), newOrderDetail.getProductId())){
+            return "鏂版棫璁㈠崟浜у搧涓嶄竴鑷�";
+        }
+        if (!Objects.equals(oldOrderDetail.getWidth(), newOrderDetail.getWidth())
+                || !Objects.equals(oldOrderDetail.getHeight(), newOrderDetail.getHeight())){
+            return "鏂版棫璁㈠崟灏哄涓嶄竴鑷�";
+        }
+
+
+        //鑾峰彇鏃ц鍗曟槸鍚︽祦绋嬪崱鏄惁瀛樺湪
+        List<OrderProcessDetail> oldOrderProcessDetailList = orderProcessDetailMapper
+                .selectList(new QueryWrapper<OrderProcessDetail>()
+                        .eq("order_id", reportingWork.get("oldOrderId"))
+                        .eq("order_number", reportingWork.get("oldOrderNumber"))
+                );
+        if(oldOrderProcessDetailList.isEmpty()){
+            return "鏃ц鍗曟湭鍒嗘祦绋嬪崱";
+        }
+        //鑾峰彇鏂拌鍗曟槸鍚︽祦绋嬪崱鏄惁瀛樺湪
+        List<OrderProcessDetail> newOrderProcessDetailList = orderProcessDetailMapper
+                .selectList(new QueryWrapper<OrderProcessDetail>()
+                        .eq("order_id", reportingWork.get("newOrderId"))
+                        .eq("order_number", reportingWork.get("newOrderNumber"))
+                );
+        if(newOrderProcessDetailList.isEmpty()){
+            return "鏂拌鍗曟湭鍒嗘祦绋嬪崱";
+        }
+        //鏂拌鍗曟槸鍚﹀瓨鍦ㄥ凡缁忔帓鐗堝簭鍙�
+        List<FlowCard> newFlowCardLayoutStatus = flowCardMapper.selectList(new QueryWrapper<FlowCard>()
+                .eq("order_id", reportingWork.get("newOrderId"))
+                .eq("order_number", reportingWork.get("newOrderNumber"))
+                .gt("layout_status",0)
+        );
+        if(!newFlowCardLayoutStatus.isEmpty()){
+            return "鏂拌鍗曟搴忓彿瀛樺湪鎺掔増";
+        }
+        //鑾峰彇鏃ц鍗曟姤宸ユ暟鎹眹鎬�
+        List<OrderProcessDetail> oldOrderProcessDetailForReport = orderProcessDetailMapper
+                .selectList(new QueryWrapper<OrderProcessDetail>()
+                        .eq( "order_id", reportingWork.get("oldOrderId"))
+                        .eq("order_number", reportingWork.get("oldOrderNumber"))
+                        .gt("reporting_work_num",0)
+        );
+
+        Map<String,Object> log = new HashMap<>();
+        log.put("oldOrderBeforeChange",oldOrderProcessDetailForReport);
+
+        Map<String,Object> newOrderLog = new HashMap<>();
+        newOrderLog.put("newOrderBeforeChange",newOrderProcessDetailList);
+
+        //浼犵粰mes娴佺▼鍗℃暟閲忛泦鍚�
+        List<OrderNumberTransferDTO> orderNumberTransferList = new ArrayList<>();
+
+        oldOrderProcessDetailForReport.forEach(oldOrderProcessDetail -> {
+            int maxNum = 0;
+            for(OrderProcessDetail newOrderProcessDetail : newOrderProcessDetailList){
+                if(oldOrderProcessDetail.getReportingWorkNum() == 0){
+                    break;
+                }
+                //鍒ゆ柇灏忕墖鏄惁涓�鑷达紝宸ュ簭鏄惁涓�鑷�
+                if(newOrderProcessDetail.getProcess().equals(oldOrderProcessDetail.getProcess()) &&
+                        Objects.equals(newOrderProcessDetail.getTechnologyNumber(), oldOrderProcessDetail.getTechnologyNumber())){
+                    //鍒ゆ柇鏄惁涓虹涓�閬撳伐搴忥紝缁欏彲杞Щ鏈�澶у�艰祴鍊�
+                    if(oldOrderProcessDetail.getProcess().equals("鍒囧壊")){
+                        FlowCard  thisFlowCard = flowCardMapper.selectOne(new QueryWrapper<FlowCard>()
+                                .eq("process_id", newOrderProcessDetail.getProcessId())
+                                .eq("order_number", newOrderProcessDetail.getOrderNumber())
+                                .eq("technology_number",newOrderProcessDetail.getTechnologyNumber())
+                        );
+                        maxNum = thisFlowCard.getQuantity();
+                    }else{
+                        //褰撲笉鏄涓�閬撳伐搴忓垯锛屾嬁涓婁竴閬撳伐搴忎綔涓烘渶澶у��
+                        maxNum = orderProcessDetailMapper.selectById(newOrderProcessDetail.getId()-1).getReportingWorkNum();
+                    }
+                    //鍒ゆ柇琚浆绉荤殑鏁伴噺鏄惁澶т簬鍙浆绉荤殑鏁伴噺鏈�澶у��
+                    int transferNum = 0;
+                    if(oldOrderProcessDetail.getReportingWorkNum() > maxNum){
+                        transferNum = maxNum;
+                        oldOrderProcessDetail.setReportingWorkNum(oldOrderProcessDetail.getReportingWorkNum()-maxNum);
+                        oldOrderProcessDetail.setReportingWorkNumCount(oldOrderProcessDetail.getReportingWorkNumCount()-maxNum);
+                    }else{
+                        transferNum = oldOrderProcessDetail.getReportingWorkNum();
+                        oldOrderProcessDetail.setReportingWorkNum(0);
+                        oldOrderProcessDetail.setReportingWorkNumCount(0);
+                    }
+                    //鏇存柊鏃ц鍗曞皬鐗囨祦绋嬭〃鐨勬姤宸ユ暟閲�
+                    orderProcessDetailMapper.update(null,new UpdateWrapper<OrderProcessDetail>()
+                            .set("reporting_work_num",oldOrderProcessDetail.getReportingWorkNum())
+                            .set("reporting_work_num_count",oldOrderProcessDetail.getReportingWorkNumCount())
+                            .eq("id",oldOrderProcessDetail.getId())
+                    );
+                    //鏇存柊鏂拌鍗曞皬鐗囨祦绋嬭〃鐨勬姤宸ユ暟閲�
+                    orderProcessDetailMapper.update(null,new UpdateWrapper<OrderProcessDetail>()
+                            .set("reporting_work_num",transferNum)
+                            .set("reporting_work_num_count",transferNum)
+                            .eq("id",newOrderProcessDetail.getId())
+                    );
+                    if(oldOrderProcessDetail.getProcess().equals("鍒囧壊")){
+                        //鏇存柊鏃ц鍗曟祦绋嬪崱杞嚭鏁伴噺
+                        flowCardMapper.update(null,new UpdateWrapper<FlowCard>()
+                                .setSql("export_number = export_number + "+transferNum)
+                                .eq("process_id", oldOrderProcessDetail.getProcessId())
+                                .eq("order_number", oldOrderProcessDetail.getOrderNumber())
+                                .eq("technology_number",oldOrderProcessDetail.getTechnologyNumber())
+                        );
+                        //鏇存柊鏂拌鍗曟祦绋嬪崱杞嚭鏁伴噺
+                        flowCardMapper.update(null,new UpdateWrapper<FlowCard>()
+                                .setSql("import_number = import_number + "+transferNum)
+                                .eq("process_id", newOrderProcessDetail.getProcessId())
+                                .eq("order_number", newOrderProcessDetail.getOrderNumber())
+                                .eq("technology_number",newOrderProcessDetail.getTechnologyNumber())
+                        );
+
+                        //浼犵粰mes鏁版嵁璧嬪��
+                        OrderNumberTransferDTO orderNumberTransfer = new OrderNumberTransferDTO();
+                        orderNumberTransfer.setChangeNumber(transferNum);
+                        orderNumberTransfer.setOldProcessId(oldOrderProcessDetail.getProcessId());
+                        orderNumberTransfer.setNewProcessId(newOrderProcessDetail.getProcessId());
+                        orderNumberTransfer.setOldOrderNumber(oldOrderProcessDetail.getOrderNumber());
+                        orderNumberTransfer.setNewOrderNumber(newOrderProcessDetail.getOrderNumber());
+                        orderNumberTransfer.setOldTechnologyNumber(oldOrderProcessDetail.getTechnologyNumber());
+                        orderNumberTransfer.setNewTechnologyNumber(newOrderProcessDetail.getTechnologyNumber());
+                        orderNumberTransferList.add(orderNumberTransfer);
+
+                    }
+
+                }
+            }
+        });
+
+
+        //鎶婃棫璁㈠崟鏁版嵁鍜屾柊璁㈠崟鏁版嵁浼犲埌鏃ュ織琛ㄥ綋涓�
+        log.put("oldOrderChange",JSON.toJSONString(oldOrderProcessDetailForReport));
+
+        newOrderLog.put("newOrderChange",orderProcessDetailMapper
+                .selectList(new QueryWrapper<OrderProcessDetail>()
+                        .eq("order_id", reportingWork.get("newOrderId"))
+                        .eq("order_number", reportingWork.get("newOrderNumber"))
+                ));
+        //鏃ц鍗曚俊鎭紶鍏ユ棩蹇�
+        ReportingWorkTransfer reportingWorkTransfer = new ReportingWorkTransfer();
+        reportingWorkTransfer.setOldOrder(reportingWork.get("oldOrderId"));
+        reportingWorkTransfer.setOldOrderNumber(Integer.valueOf(reportingWork.get("oldOrderNumber")));
+        reportingWorkTransfer.setOldReportContent(JSON.toJSONString(log));
+
+        //鏂拌鍗曚俊鎭紶鍏ユ棩蹇�
+        reportingWorkTransfer.setNewOrder(reportingWork.get("newOrderId"));
+        reportingWorkTransfer.setNewOrderNumber(Integer.valueOf(reportingWork.get("newOrderNumber")));
+        reportingWorkTransfer.setNewReportContent(JSON.toJSONString(newOrderLog));
+        reportingWorkTransferMapper.insert(reportingWorkTransfer);
+        //restTemplate.postForObject("http://localhost:8086/order/test",orderNumberTransferList,String.class);
+
+        //鍚憁es鍙戦�乭ttp璇锋眰
+        ResponseEntity<String> response =restTemplate.exchange(
+                "http://localhost:88/api/loadGlass/order/order/orderChange",
+                HttpMethod.POST,
+                new HttpEntity<>(orderNumberTransferList),
+                String.class);
+
+        if(response.getStatusCode() == HttpStatus.OK){
+            return true;
+        }else{
+            return "mes鍝嶅簲瓒呮椂";
+        }
+    }
 }

--
Gitblit v1.8.0