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 |  243 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 217 insertions(+), 26 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 829693b..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,9 +28,15 @@
 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;
@@ -36,36 +45,31 @@
 
 @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,7 +82,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<>();
@@ -819,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