From d5bb894f9be2e0a3b62d475b60b44f2ab138528c Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期四, 12 六月 2025 16:48:35 +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 |  786 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 606 insertions(+), 180 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 7b8af8f..871c18a 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,67 +4,75 @@
 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.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.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.OrderGlassDetailMapper;
-import com.example.erp.mapper.sd.OrderMapper;
-import com.example.erp.mapper.sd.OrderProcessDetailMapper;
+import com.example.erp.mapper.sd.*;
 import com.example.erp.mapper.userInfo.LogMapper;
 import com.example.erp.service.sd.OrderProcessDetailService;
 import com.example.erp.service.userInfo.LogService;
 import com.example.erp.service.userInfo.SysErrorService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+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.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 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;
+    private final PatchLogMapper patchLogMapper;
+    private final ReworkMapper reworkMapper;
+    private final BasicDateMapper basicDataMapper;
 
 
-    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;
@@ -77,7 +85,10 @@
         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<>();
@@ -145,7 +156,7 @@
                 if (retrievedData!=null){
                     Integer reviewedState = retrievedData.getReviewedState();
                     //鏍规嵁瀹℃牳鐘舵�佹煡璇㈡湭瀹℃牳鏁版嵁
-                    if (reviewedState==1){//宸插鏍�
+                   // if (reviewedState==1){//宸插鏍�
                         //涓嶆槸绗竴閬撳伐搴忥紝鏌ヨ鎶ュ伐鏁版嵁
                         List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMp(processIdStr, technologyStr, process,previousProcess,laminating);
                         if(process.equals("涓┖")){
@@ -163,24 +174,24 @@
                             });
                         }
                         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 );
-                    }
+//                    }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 );
+//                    }
                 }
             }
 
@@ -196,6 +207,8 @@
             map.put("historyTeams", reportingWorkMapper.historyTeamsMp(processIdStr, process));
             //鍘嗗彶宸ュ簭
             map.put("historyProcess", reportingWorkMapper.SelectHistoryProcessMp(historyProcess, process));
+            //鏄惁鍚堢墖宸ュ簭
+            map.put("laminating", laminating);
         }
         return map;
     }
@@ -204,6 +217,8 @@
     public Map<String, Object> SelectProcessSv(String userId) {
         Map<String, Object> map = new HashMap<>();
         String process = reportingWorkMapper.selectUserProcess(userId);
+        //宸ュ簭鍒楄〃
+        List<Map<String, Object>> processNameList = flowCardMapper.getProcessNameList();
         if (process==null) {
             map.put("process", reportingWorkMapper.SelectProcessMp());
         }
@@ -216,7 +231,7 @@
                 map.put("process",reportingWorkMapper.getSelectProcessDuoqu() );
             }
         }
-
+        map.put("processNameList", processNameList);
         return map;
     }
 
@@ -245,13 +260,20 @@
         } 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.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();
@@ -265,6 +287,9 @@
                     //璺ㄥ伐搴忔鐮翠慨鏀硅川妫�鐘舵��
                     if (!damageDetail.getResponsibleProcess().equals(reportingWork.getThisProcess()) && qualityInsStatus==2) {
                         damageDetail.setQualityInsStatus(1);
+                    }
+                    if (isPatch == 1){
+                        damageDetail.setQualityInsStatus(2);
                     }
                     damageDetailsMapper.insert(damageDetail);
                 });
@@ -318,17 +343,22 @@
             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())
-                    .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)) {
                 reportingWorkDetailMapper.insert(reportingWorkDetail);
@@ -348,6 +378,8 @@
 
 
         });
+        reportingWorkMapper.update(reportingWork, new LambdaUpdateWrapper<ReportingWork>()
+                .eq(ReportingWork::getId, reportingWork.getId()));
 
         //淇濆瓨鏃ュ織
         Log log = new Log();
@@ -369,8 +401,11 @@
         String result = processId.substring(index);
         String technologyStr = reportingWork.get("technologyStr");
         String[] processIdStr = processId.split("/");
+        String nowDate = LocalDate.now().toString();
+        //鑾峰彇鎶ュ伐宸ュ簭鏄惁涓哄鍚堝伐绋�
+        String laminating = reportingWorkMapper.getProcessLaminating(thisProcess);
 //鍚堢墖宸ュ簭
-if (thisProcess.equals("澶硅兌") || thisProcess.equals("涓┖") || thisProcess.equals("鍖呰")){
+if (laminating.indexOf("step")!=-1){
     LambdaUpdateWrapper
                 <ReportingWork> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper
@@ -378,7 +413,8 @@
                 .eq(ReportingWork::getThisProcess, reportingWork.get("process"))
                 .eq(ReportingWork::getReviewedState, 0)
                 .setSql("reviewed_state =1")
-                .set(ReportingWork::getReviewed, userName);
+                .set(ReportingWork::getReviewed, userName)
+                .set(ReportingWork::getExamineTime, nowDate);
         reportingWorkMapper.update(null, updateWrapper);
 }else {
     reportingWorkMapper.ReviewReportingWorkMp(processIdStr[0],reportingWork.get("process"),technologyStr,userName);
@@ -459,73 +495,79 @@
         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);
+        //鏌ヨ璇ユ姤宸ユ槸鍚︿负鎶ュ伐杞Щ璁㈠崟
+        Integer transferState = reportingWorkMapper.selectReviewedState(reportingWork.getReportingWorkId());
+        if (transferState !=3){
+            //鍒犻櫎鍒虹牬鏄庣粏琛ㄥ埡鐮存暟鎹�
+            damageDetailsMapper.delete(
+                    new LambdaQueryWrapper<DamageDetails>()
+                            .eq(DamageDetails::getReportingWorkId, reportingWork.getReportingWorkId())
+            );
+            //淇敼灏忕墖娴佺▼琛ㄦ暟閲�
+            orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "delete");
+            //鍒犻櫎鎶ュ伐鏄庣粏琛ㄦ暟鎹�
+            reportingWorkDetailMapper
+                    .delete(new LambdaQueryWrapper<ReportingWorkDetail>()
+                            .eq(ReportingWorkDetail::getReportingWorkId, reportingWork.getReportingWorkId()));
 
-        //鍒犻櫎鍒虹牬鏄庣粏琛ㄥ埡鐮存暟鎹�
-        damageDetailsMapper.delete(
-                new LambdaQueryWrapper<DamageDetails>()
-                        .eq(DamageDetails::getReportingWorkId, reportingWork.getReportingWorkId())
-        );
-        //淇敼灏忕墖娴佺▼琛ㄦ暟閲�
-        orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "delete");
-        //鍒犻櫎鎶ュ伐鏄庣粏琛ㄦ暟鎹�
-        reportingWorkDetailMapper
-                .delete(new LambdaQueryWrapper<ReportingWorkDetail>()
-                        .eq(ReportingWorkDetail::getReportingWorkId, reportingWork.getReportingWorkId()));
-
-        //鏇存柊鎶ュ伐涓昏〃
-        int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
-        reportingWorkMapper.updateById(reportingWork);
-        reportingWorkDetails.forEach(reportingWorkDetail -> {
-            reportingWorkDetail.setReportingWorkId(reportingWork.getReportingWorkId());
-            List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
-            //姣忎竴鏉℃姤宸ユ暟鎹惊鐜彃鍏ユ鐮存槑缁嗚〃
-            if (damageDetails != null && !damageDetails.isEmpty()) {
-                damageDetails.forEach(damageDetail -> {
-                    damageDetail.setReportingWorkId(reportingWork.getReportingWorkId());
-                    damageDetail.setProcessId(reportingWork.getProcessId());
-                    damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
-                    damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
-                    //鏄惁淇敼璐ㄦ鐘舵��
-                    if (!Objects.equals(reportingWork.getThisProcess(), damageDetail.getResponsibleProcess()) && qualityInsStatus==2) {
-                        damageDetail.setQualityInsStatus(1);
-                    }
-                    if (Objects.equals(reviewState, "review")) {
-                        damageDetail.setQualityInsStatus(2);
-                    }
-
-                    damageDetailsMapper.insert(damageDetail);
-                });
-            }
-            //鎻掑叆鎶ュ伐鏁版嵁
-            reportingWorkDetailMapper.insert(reportingWorkDetail);
-            orderProcessDetailMapper.insertByReportingWorkDetail(reportingWorkDetail,reportingWork.getProcessId(),reportingWork.getThisProcess());
-            //淇敼鍖呰鏃朵慨鏀瑰簱瀛樻暟閲�
-            if (reportingWork.getNextProcess()==null || reportingWork.getNextProcess().isEmpty()){
-                //鑾峰彇璇ユ姤宸ヤ慨鏀瑰悗鐨勫彲鍏ュ簱鏁伴噺
-                Integer  inventory = reportingWorkDetailMapper.selectInventory(reportingWork.getProcessId(),Integer.parseInt(reportingWorkDetail.getOrderNumber()),Integer.parseInt(reportingWorkDetail.getTechnologyNumber()),reportingWork.getThisProcess());
-                //淇敼娴佺▼鍗¤〃搴撳瓨鏁伴噺
-                flowCardMapper.updateInventory(reportingWork.getProcessId(),reportingWorkDetail.getOrderNumber(),reportingWorkDetail.getTechnologyNumber(),inventory);
-            }
-        });
-        //鑾峰彇璐ㄦ鏃堕棿
-        if (Objects.equals(reviewState, "review")) {
-            LocalDateTime
-                    currentDate = LocalDateTime.now();
-            reportingWork.setQualityInsTime(currentDate);
+            //鏇存柊鎶ュ伐涓昏〃
+            int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
             reportingWorkMapper.updateById(reportingWork);
+            reportingWorkDetails.forEach(reportingWorkDetail -> {
+                reportingWorkDetail.setReportingWorkId(reportingWork.getReportingWorkId());
+                List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
+                //姣忎竴鏉℃姤宸ユ暟鎹惊鐜彃鍏ユ鐮存槑缁嗚〃
+                if (damageDetails != null && !damageDetails.isEmpty()) {
+                    damageDetails.forEach(damageDetail -> {
+                        damageDetail.setReportingWorkId(reportingWork.getReportingWorkId());
+                        damageDetail.setProcessId(reportingWork.getProcessId());
+                        damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
+                        damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
+                        //鏄惁淇敼璐ㄦ鐘舵��
+                        if (!Objects.equals(reportingWork.getThisProcess(), damageDetail.getResponsibleProcess()) && qualityInsStatus==2) {
+                            damageDetail.setQualityInsStatus(1);
+                        }
+                        if (Objects.equals(reviewState, "review")) {
+                            damageDetail.setQualityInsStatus(2);
+                        }
+
+                        damageDetailsMapper.insert(damageDetail);
+                    });
+                }
+                //鎻掑叆鎶ュ伐鏁版嵁
+                reportingWorkDetailMapper.insert(reportingWorkDetail);
+                orderProcessDetailMapper.insertByReportingWorkDetail(reportingWorkDetail,reportingWork.getProcessId(),reportingWork.getThisProcess());
+                //淇敼鍖呰鏃朵慨鏀瑰簱瀛樻暟閲�
+                if (reportingWork.getNextProcess()==null || reportingWork.getNextProcess().isEmpty()){
+                    //鑾峰彇璇ユ姤宸ヤ慨鏀瑰悗鐨勫彲鍏ュ簱鏁伴噺
+                    Integer  inventory = reportingWorkDetailMapper.selectInventory(reportingWork.getProcessId(),Integer.parseInt(reportingWorkDetail.getOrderNumber()),Integer.parseInt(reportingWorkDetail.getTechnologyNumber()),reportingWork.getThisProcess());
+                    //淇敼娴佺▼鍗¤〃搴撳瓨鏁伴噺
+                    flowCardMapper.updateInventory(reportingWork.getProcessId(),reportingWorkDetail.getOrderNumber(),reportingWorkDetail.getTechnologyNumber(),inventory);
+                }
+            });
+            //鑾峰彇璐ㄦ鏃堕棿
+            if (Objects.equals(reviewState, "review")) {
+                LocalDateTime
+                        currentDate = LocalDateTime.now();
+                reportingWork.setQualityInsTime(currentDate);
+                reportingWorkMapper.updateById(reportingWork);
+            }
+
+            //淇敼灏忕墖娴佺▼琛ㄦ暟閲忎负鎶ュ伐鏄庣粏琛ㄦ暟閲�
+            //orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "add");
+            //淇濆瓨鏃ュ織
+            Log log = new Log();
+            log.setContent(reportingWorkMap.toString());
+            log.setFunction("updateReportingWork鎶ュ伐淇敼");
+            log.setOperatorId((String) reportingWorkJson.get("userId"));
+            log.setOperator((String) reportingWorkJson.get("userName"));
+            logService.saveLog(log);
+
+            return true;
+        } else {
+            return false;
         }
 
-        //淇敼灏忕墖娴佺▼琛ㄦ暟閲忎负鎶ュ伐鏄庣粏琛ㄦ暟閲�
-        //orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "add");
-        //淇濆瓨鏃ュ織
-        Log log = new Log();
-        log.setContent(reportingWorkMap.toString());
-        log.setFunction("updateReportingWork鎶ュ伐淇敼");
-        log.setOperatorId((String) reportingWorkJson.get("userId"));
-        log.setOperator((String) reportingWorkJson.get("userName"));
-        logService.saveLog(log);
-
-        return true;
     }
 
     //鎶ュ伐绠$悊鏌ヨ
@@ -536,7 +578,8 @@
         }
         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("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
+        map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
         return map;
     }
 
@@ -551,38 +594,65 @@
             String lastProcess = reportingWorkMapper.selectLastProcess(processId);
             //鑾峰彇鏄惁鏈夊凡琛ョ墖鎴栬繑宸�
             Integer countStates= Integer.valueOf(reportingWorkMapper.getPatchConditionMp(reportingWorkId));
-            //鍒ゆ柇鏄惁鏈夎ˉ鐗囪繑宸ユ暟鎹�
-            if (countStates==0){
-                //鍒ゆ柇鏄惁鏄叆搴撳伐搴�
-                if (lastProcess.equals(thisProcess)) {//鏄叆搴撳伐搴�
-                    //鏌ヨ璇ユ祦绋嬪崱鏁伴噺銆佸彲鍏ュ簱鏁伴噺銆佸凡鍏ュ簱鏁伴噺
-                    Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId);
-                    if (list.get("quantity") == list.get("receiptQuantity")) {
-                        return false;
-                    } else {
-                        //杞崲绫诲瀷:宸插叆搴撴暟閲�
-                        Integer receiptQuantity = Integer.parseInt(list.get("receivedQuantity").toString());
-                        //杞崲绫诲瀷:鍙叆搴撴暟閲�
-                        Integer inventoryQuantity = Integer.parseInt(list.get("inventoryQuantity").toString());
-                        //鏌ヨ璇ユ姤宸ョ紪鍙锋湰宸ュ簭瀹屽伐鏁伴噺
-                        Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId);
-                        //褰撹宸ュ簭瀹屽伐鏁伴噺灏忎簬绛変簬宸插叆搴撴暟閲忔椂
-                        //鍙叆搴撴暟閲�-宸插叆搴撴暟閲�>=鎶ュ伐缂栧彿鏈伐搴忓畬宸ユ暟閲�
-                        if (inventoryQuantity - receiptQuantity >= completedQuantity) {
+            //鏌ヨ璇ユ姤宸ユ槸鍚︿负鎶ュ伐杞Щ璁㈠崟
+            Integer transferState = reportingWorkMapper.selectReviewedState(reportingWorkId);
+            if (transferState !=3){
+                //鍒ゆ柇鏄惁鏈夎ˉ鐗囪繑宸ユ暟鎹�
+                if (countStates==0){
+                    //鍒ゆ柇鏄惁鏄叆搴撳伐搴�
+                    if (lastProcess.equals(thisProcess)) {//鏄叆搴撳伐搴�
+                        //鏌ヨ璇ユ祦绋嬪崱鏁伴噺銆佸彲鍏ュ簱鏁伴噺銆佸凡鍏ュ簱鏁伴噺
+                        Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId);
+                        if (list.get("quantity") == list.get("receiptQuantity")) {
+                            return false;
+                        } else {
+                            //杞崲绫诲瀷:宸插叆搴撴暟閲�
+                            Integer receiptQuantity = Integer.parseInt(list.get("receivedQuantity").toString());
+                            //杞崲绫诲瀷:鍙叆搴撴暟閲�
+                            Integer inventoryQuantity = Integer.parseInt(list.get("inventoryQuantity").toString());
+                            //鏌ヨ璇ユ姤宸ョ紪鍙锋湰宸ュ簭瀹屽伐鏁伴噺
+                            Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId);
+                            //褰撹宸ュ簭瀹屽伐鏁伴噺灏忎簬绛変簬宸插叆搴撴暟閲忔椂
+                            //鍙叆搴撴暟閲�-宸插叆搴撴暟閲�>=鎶ュ伐缂栧彿鏈伐搴忓畬宸ユ暟閲�
+                            if (inventoryQuantity - receiptQuantity >= completedQuantity) {
+                                //鏌ヨ褰撳墠鎶ュ伐缂栧彿瀹屽伐娆$牬鏁伴噺鐨勬暟鎹�
+                                List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
+                                for (Map<String, Object> item : workDateList) {
+                                    //鏇存柊娴佺▼鍗″彲鍏ュ簱鏁伴噺
+                                    reportingWorkMapper.updateInventoryQuantity(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"));
+                                    //鏇存柊鎶ュ伐娴佺▼琛ㄦ暟鎹�
+                                    reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
+                                }
+                                //鍒犻櫎鎶ュ伐锛屽皢瀹℃牳鐘舵�佹敼涓�-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 {
+                                return false;
+                            }
+                        }
+
+                    } else {//涓嶆槸鍏ュ簱宸ュ簭
+                        if (count == 0) {
                             //鏌ヨ褰撳墠鎶ュ伐缂栧彿瀹屽伐娆$牬鏁伴噺鐨勬暟鎹�
                             List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
                             for (Map<String, Object> item : workDateList) {
-                                //鏇存柊娴佺▼鍗″彲鍏ュ簱鏁伴噺
-                                reportingWorkMapper.updateInventoryQuantity(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"));
                                 //鏇存柊鎶ュ伐娴佺▼琛ㄦ暟鎹�
                                 reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                             }
                             //鍒犻櫎鎶ュ伐锛屽皢瀹℃牳鐘舵�佹敼涓�-1
                             reportingWorkMapper.deleteWork(reportingWorkId);
+
                             //淇濆瓨鏃ュ織
                             Log log = new Log();
                             log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
-                            log.setFunction("deleteWork鎶ュ伐鍏ュ簱鍒犻櫎");
+                            log.setFunction("deleteWork鎶ュ伐鍒犻櫎");
                             log.setOperatorId(userId);
                             log.setOperator(userName);
                             logService.saveLog(log);
@@ -591,35 +661,13 @@
                             return false;
                         }
                     }
-
-                } else {//涓嶆槸鍏ュ簱宸ュ簭
-                    if (count == 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);
-
-                        //淇濆瓨鏃ュ織
-                        Log log = new Log();
-                        log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
-                        log.setFunction("deleteWork鎶ュ伐鍒犻櫎");
-                        log.setOperatorId(userId);
-                        log.setOperator(userName);
-                        logService.saveLog(log);
-                        return true;
-                    } else {
-                        return false;
-                    }
                 }
-            }
-            else {
+                else {
+                    return false;
+                }
+            } else {
                 return false;
             }
-
         } else {
             return false;
         }
@@ -635,6 +683,12 @@
         map.put("data", reportingWorkMapper.selectQualityTestingMp(offset, pageSize, selectTime1, selectTime2, state, processId, reportingWork));
         map.put("total", reportingWorkMapper.getQualityPageTotal(offset, pageSize, selectTime1, selectTime2, state, processId, reportingWork));
 
+        return map;
+    }
+
+    public Map<String, Object>  qualityReviewSearchSv() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportingWorkMapper.qualityReviewSearchMp());
         return map;
     }
 
@@ -670,13 +724,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;
@@ -774,4 +853,351 @@
 
         }
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    public Object reportingWorkTransferSv(Map<String, String> reportingWork) {
+        Map<String, Object> result = new HashMap<>();
+
+        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"))
+        );
+        if(oldOrder == null){
+            result.put("msg","鏃ц鍗曚笉瀛樺湪");
+            result.put("data",false);
+            return result;
+        }
+        if(oldOrderDetail == null){
+            result.put("msg","鏃ц鍗曟搴忓彿涓嶅瓨鍦�");
+            result.put("data",false);
+            return result;
+        }
+
+        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 (newOrder == null){
+            result.put("msg","鏂拌鍗曚笉瀛樺湪");
+            result.put("data",false);
+            return result;
+        }
+        if(newOrderDetail == null){
+            result.put("msg","鏂拌鍗曟搴忓彿涓嶅瓨鍦�");
+            result.put("data",false);
+            return result;
+        }
+        if(Objects.equals(oldOrder.getOrderId(), newOrder.getOrderId())){
+            result.put("msg","鏂版棫璁㈠崟鍙蜂竴鑷�");
+            result.put("data",false);
+            return result;
+        }
+
+        if(!Objects.equals(oldOrder.getCustomerId(), newOrder.getCustomerId())){
+            result.put("msg","鏂版棫璁㈠崟瀹㈡埛涓嶄竴鑷�");
+            result.put("data",false);
+            return result;
+        }
+        if(!Objects.equals(oldOrderDetail.getProductId(), newOrderDetail.getProductId())){
+            result.put("msg","鏂版棫璁㈠崟浜у搧涓嶄竴鑷�");
+            result.put("data",false);
+            return result;
+        }
+        if (!Objects.equals(oldOrderDetail.getWidth(), newOrderDetail.getWidth())
+                || !Objects.equals(oldOrderDetail.getHeight(), newOrderDetail.getHeight())){
+            result.put("msg","鏂版棫璁㈠崟灏哄涓嶄竴鑷�");
+            result.put("data",false);
+            return result;
+        }
+
+
+        //鑾峰彇鏃ц鍗曟槸鍚︽祦绋嬪崱鏄惁瀛樺湪
+        List<OrderProcessDetail> oldOrderProcessDetailList = orderProcessDetailMapper
+                .selectList(new QueryWrapper<OrderProcessDetail>()
+                        .eq("order_id", reportingWork.get("oldOrderId"))
+                        .eq("order_number", reportingWork.get("oldOrderNumber"))
+                );
+        if(oldOrderProcessDetailList.isEmpty()){
+            result.put("msg","鏃ц鍗曟湭鍒嗘祦绋嬪崱");
+            result.put("data",false);
+            return result;
+        }
+        //鑾峰彇鏂拌鍗曟槸鍚︽祦绋嬪崱鏄惁瀛樺湪
+        List<OrderProcessDetail> newOrderProcessDetailList = orderProcessDetailMapper
+                .selectList(new QueryWrapper<OrderProcessDetail>()
+                        .eq("order_id", reportingWork.get("newOrderId"))
+                        .eq("order_number", reportingWork.get("newOrderNumber"))
+                );
+        if(newOrderProcessDetailList.isEmpty()){
+            result.put("msg","鏂拌鍗曟湭鍒嗘祦绋嬪崱");
+            result.put("data",false);
+            return result;
+        }
+        //鏂拌鍗曟槸鍚﹀瓨鍦ㄥ凡缁忔帓鐗堝簭鍙�
+        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()){
+            result.put("msg","鏂拌鍗曟搴忓彿瀛樺湪鎺掔増");
+            result.put("data",false);
+            return result;
+        }
+        List<ReportingWorkTransfer> reportingWorkTransferList = reportingWorkTransferMapper
+                .selectList(new QueryWrapper<ReportingWorkTransfer>()
+                        .eq("old_order", reportingWork.get("newOrderId"))
+                        .eq("old_order_number", reportingWork.get("newOrderNumber"))
+                );
+        if(!reportingWorkTransferList.isEmpty()){
+            result.put("msg","鏂拌鍗曞簭鍙蜂箣鍓嶅凡杞嚭鎶ュ伐鏁版嵁锛屾棤娉曡繘琛岃浆鍏�");
+            result.put("data",false);
+            return result;
+        }
+
+        //鑾峰彇鏃ц鍗曟姤宸ユ暟鎹眹鎬�
+        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)
+        );
+
+        if (oldOrderProcessDetailForReport.isEmpty()){
+            result.put("msg","鏃ц鍗曟病鏈夊彲杞嚭鐨勬姤宸ユ暟鎹�");
+            result.put("data",false);
+            return result;
+        }
+        List<String> oldOrderProcessIdList = new ArrayList<>();
+        oldOrderProcessDetailList.forEach(oldOrderProcessDetail -> oldOrderProcessIdList.add(oldOrderProcessDetail.getProcessId()));
+
+        //鑾峰彇鏃ф暟鎹牬鎹熻〃鏄惁瀛樺湪鐮存崯
+        List<DamageDetails> damageDetails = damageDetailsMapper.selectList(
+                new QueryWrapper<DamageDetails>()
+                        .in("process_id",oldOrderProcessIdList)
+                        .eq("order_number", reportingWork.get("oldOrderNumber"))
+                        .eq("quantity",0)
+        );
+        if(!damageDetails.isEmpty()){
+            result.put("msg","鏃ц鍗曞瓨鍦ㄦ姤宸ユ湭澶勭悊鐮存崯鏁版嵁");
+            result.put("data",false);
+            return result;
+        }
+        //鑾峰彇琛ョ墖琛ㄦ槸鍚﹀瓨鍦ㄨˉ鐗囨湭瀹℃牳鐘舵��
+        List<PatchLog> patchLogs = patchLogMapper.selectList(
+                new QueryWrapper<PatchLog>()
+                        .eq("order_id", reportingWork.get("oldOrderId"))
+                        .eq("order_sort", reportingWork.get("oldOrderNumber"))
+                        .eq("review_status",0)
+        );
+        if (patchLogs.isEmpty()){
+            result.put("msg","鏃ц鍗曞瓨鍦ㄨˉ鐗囨湭瀹℃牳鏁版嵁");
+            result.put("data",false);
+            return result;
+        }
+        List<Rework> reworks = reworkMapper.selectList(
+                new QueryWrapper<Rework>()
+                    .eq("order_id", reportingWork.get("oldOrderId"))
+                    .eq("order_sort", reportingWork.get("oldOrderNumber"))
+                    .eq("review_status",0)
+        );
+        if (patchLogs.isEmpty()){
+            result.put("msg","鏃ц鍗曞瓨鍦ㄨ繑宸ユ湭瀹℃牳鏁版嵁锛岃鍏堝鏍告姤宸ュ悗鍐嶈繘琛岃浆鍑�");
+            result.put("data",false);
+            return result;
+        }
+
+
+        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 -> {
+            //淇敼鎶ュ伐鐘舵�佷负3
+            reportingWorkMapper.update(null,new UpdateWrapper<ReportingWork>()
+                    .set("reviewed_state",3)
+                    .eq("process_id",oldOrderProcessDetail.getProcessId())
+                    .gt("reviewed_state",0)
+            );
+
+
+            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()+thisFlowCard.getExportNumber()
+                                -thisFlowCard.getImportNumber();
+                    }else{
+                        //褰撲笉鏄涓�閬撳伐搴忓垯锛屾嬁涓婁竴閬撳伐搴忓噺鍘诲綋鍓嶅伐搴忎綔涓烘渶澶у��
+                        maxNum = orderProcessDetailMapper.selectById(newOrderProcessDetail.getId()-1).getReportingWorkNum()
+                        -orderProcessDetailMapper.selectById(newOrderProcessDetail.getId()).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<OrderNumberTransferDTO> response =restTemplate.exchange(
+                "http://localhost:88/api/loadGlass/order/order/orderChange",
+                HttpMethod.POST,
+                new HttpEntity<>(orderNumberTransferList),
+                OrderNumberTransferDTO.class);
+
+        if(response.getStatusCode() == HttpStatus.OK){
+            OrderNumberTransferDTO responseBody = response.getBody();
+            result.put("data",true);
+        }else{
+            result.put("msg","杩炴帴mes鍝嶅簲瓒呮椂");
+            result.put("data",false);
+        }
+        return result;
+
+    }
+
+    public Map<String, Object> selectShiftQuantitySv(Map<String, Object> reportingWork) {
+        String  creatorId = (String) reportingWork.get("userId");
+        List<LocalDateTime> dateList = (List<LocalDateTime>) reportingWork.get("searchDate");
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String startDate = LocalDateTime.now().with(LocalTime.MIN).format(formatter);
+        String endDate = LocalDateTime.now().format(formatter);
+        if (dateList.get(0)!=null){
+            startDate = String.valueOf(dateList.get(0));
+        }
+        if (dateList.get(1)!=null){
+            endDate = String.valueOf(dateList.get(1));
+        }
+        List<String> date = new ArrayList<>();
+        date.add(startDate);
+        date.add(endDate);
+        Map<String, Object> result = new HashMap<>();
+        BasicData basicData = basicDataMapper
+                .selectOne(new QueryWrapper<BasicData>().eq("basic_name", reportingWork.get("process")));
+        result.put("data",orderProcessDetailMapper.selectShiftQuantitySv(creatorId, startDate, endDate,basicData.getNickname()));
+        result.put("date",date);
+        return result;
+    }
+
+    public Map<String, Object> selectReportingWorkRecordByPhoneSv(Map<String,Object> reportingWork) {
+        List<LocalDateTime> dateList = (List<LocalDateTime>) reportingWork.get("searchDate");
+        String startDate = LocalDate.now().minusDays(14).toString();
+        String endDate = LocalDate.now().toString();
+        if (dateList.get(0)!=null){
+            startDate = String.valueOf(dateList.get(0));
+        }
+        if (dateList.get(1)!=null){
+            endDate = String.valueOf(dateList.get(1));
+        }
+        List<String> date = new ArrayList<>();
+        date.add(startDate);
+        date.add(endDate);
+        Map<String, Object> result = new HashMap<>();
+        result.put("data",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")));
+        result.put("date",date);
+
+         return result;
+
+    }
+
+
 }

--
Gitblit v1.8.0