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/sd/OrderService.java |  162 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 147 insertions(+), 15 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
index 4f3d29a..8f479a8 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -1,5 +1,6 @@
 package com.example.erp.service.sd;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -10,22 +11,22 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.example.erp.common.Constants;
 import com.example.erp.dto.sd.OrderDTO;
-import com.example.erp.dto.sd.OrderDetailProductDTO;
+import com.example.erp.dto.sd.OrderSearchDTO;
 import com.example.erp.entity.sd.*;
 import com.example.erp.entity.userInfo.Log;
 import com.example.erp.entity.userInfo.SysError;
 import com.example.erp.exception.ServiceException;
+import com.example.erp.mapper.pp.FlowCardMapper;
+import com.example.erp.mapper.pp.WorkOrderMapper;
 import com.example.erp.mapper.sd.*;
 import com.example.erp.service.userInfo.LogService;
 import com.example.erp.service.userInfo.SysErrorService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.sql.SQLOutput;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.util.*;
@@ -42,9 +43,11 @@
     private final OrderOtherMoneyMapper orderOtherMoneyMapper;
     private final ProductMapper productMapper;
     private final LogService logService;
+    private final WorkOrderMapper workOrderMapper;
+    private final FlowCardMapper flowCardMapper;
 
     private final OrderProcessDetailMapper orderProcessDetailMapper;
-    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService) {
+    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper) {
         this.orderMapper = orderMapper;
         this.orderDetailMapper = orderDetailMapper;
         this.orderGlassDetailMapper = orderGlassDetailMapper;
@@ -53,6 +56,8 @@
         this.orderOtherMoneyMapper = orderOtherMoneyMapper;
         this.productMapper = productMapper;
         this.logService = logService;
+        this.workOrderMapper = workOrderMapper;
+        this.flowCardMapper = flowCardMapper;
     }
 
     public boolean saveOrder(Map<String,Object> orderMap) throws Exception {
@@ -114,7 +119,15 @@
             log.setFunction("saveOrderTitle淇濆瓨琛ㄥご:"+order.getOrderId());
 
             Order order1 = orderMapper.selectOrderId(order.getOrderId());
+            //浣跨敤璁㈠崟鍘熸湰鐨勭姸鎬佸拰璁$畻鏂瑰紡
             order.setCalculateType(order1.getCalculateType());
+            order.setCreateOrder(order1.getCreateOrder());
+            order.setProcessReview(order1.getProcessReview());
+            order.setOrderReview(order1.getOrderReview());
+            order.setProductionOrder(order1.getProductionOrder());
+            order.setProcessingCard(order1.getProcessingCard());
+            order.setWarehousing(order1.getWarehousing());
+            order.setDelivery(order1.getDelivery());
 
             LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(Order::getOrderId, order.getOrderId());
@@ -165,7 +178,7 @@
 
     private String getOrderId(String dateType){
         String orderId = null;
-        if(dateType.equals("day")){
+        if(dateType==null || dateType.equals("day")){
             Integer maxOrderId = orderMapper.selectMaxOrderId();
             //鏌ヨ璁㈠崟id锛屽苟涓旇嚜澧�
             String formattedNumber = String.format("%02d", maxOrderId+1);
@@ -196,9 +209,16 @@
 
 
     //淇敼璁㈠崟鏁版嵁锛屽苟涓旈噸鏂扮敓鎴愬涓壇琛ㄦ暟鎹�
-    public void updateOrder(Order order,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) {
-
+    public void updateOrder(Order order,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) throws Exception {
+        Order oldOrder = orderMapper.selectOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderId,order.getOrderId()));
+        if(oldOrder.getProcessReview()==2){
+            throw  new ServiceException(Constants.Code_600,"璇ヨ鍗曞凡缁忓鏍革紝鏃犳硶淇敼");
+        }
+        if(!Objects.equals(oldOrder.getVersion(), order.getVersion())){
+            throw  new ServiceException(Constants.Code_600,"璇ヨ鍗曞凡缁忎慨鏀癸紝璇峰埛鏂伴〉闈�");
+        }
         order.setCreateTime(null);
+        order.setVersion(order.getVersion()+1);
         LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.eq(Order::getOrderId, order.getOrderId());
         orderMapper.update(order,updateWrapper);
@@ -316,7 +336,7 @@
     }
 
     //鏌ヨ鑾峰彇鍒楄〃
-    public Map<String,Object> getOrderList(Integer pageNum, Integer pageSize, List<String> selectDate, Order order,Integer orderType) {
+    public Map<String,Object> getOrderList(Integer pageNum, Integer pageSize, List<String> selectDate, Map<String,Object> config,Integer orderType) {
         Integer offset = (pageNum-1)*pageSize;
         String endDate = LocalDate.now().toString();
         String startDate = LocalDate.now().minusDays(15).toString();
@@ -328,9 +348,14 @@
                 endDate = selectDate.get(1);
             }
         }
+        JSONObject orderJson = new JSONObject(config);
+        OrderSearchDTO order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), OrderSearchDTO.class);
+        Map<String,String> sortDate = (Map<String, String>) config.get("sort");
+        String field = sortDate.get("field").replaceAll("(?<!^)([A-Z])", "_$1").toLowerCase();
+        String orderBy = sortDate.get("order");
 
         Map<String,Object> map = new HashMap<>();
-        map.put("data",orderMapper.getOrderList(offset, pageSize, startDate, endDate, order,orderType));
+        map.put("data",orderMapper.getOrderList(offset, pageSize, startDate, endDate, order,orderType, field, orderBy));
         map.put("total",orderMapper.getPageTotal(offset, pageSize, startDate, endDate, order,orderType));
         List<String> list = new ArrayList<>();
         list.add(startDate);
@@ -361,6 +386,12 @@
     }
     //璁㈠崟瀹℃牳
     public boolean reviewOrderById(String id, Integer status, String userId, String userName) {
+        Log log = new Log();
+        log.setOperator(userName);
+        log.setOperatorId(userId);
+        log.setContent(status.toString());
+        log.setFunction("reviewOrderById:"+id);
+        logService.saveLog(log);
         Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",id));
         if(order.getProcessReview()!=2){
             throw  new ServiceException(Constants.Code_600,"璇ヨ鍗曡繕鏈鏍�");
@@ -373,6 +404,9 @@
     }
     //宸ヨ壓瀹℃牳鐣岄潰瀹℃牳鏇存柊鏁版嵁
     public boolean reviewProcessById(String id, Integer status,List<OrderGlassDetail> orderGlassDetails) {
+        Log log = new Log();
+        log.setContent(orderGlassDetails.toString());
+        log.setFunction("reviewProcessById:"+id);
         if(!orderGlassDetails.isEmpty() && status==2){
             orderGlassDetails.forEach(orderGlassDetail ->{
                 double area = Math.round((orderGlassDetail.getChildWidth()*orderGlassDetail.getChildHeight()/1000000) * 100) * 0.01d;
@@ -387,7 +421,7 @@
 //            //璧嬪�艰鍗曞伐鑹鸿〃
 //            orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList);
         }
-
+        logService.saveLog(log);
         return orderMapper.reviewProcessById(id,status);
     }
     //宸ヨ壓瀹℃牳鐣岄潰鏁版嵁鏌ヨ
@@ -480,9 +514,21 @@
         BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice());
         BigDecimal getQuantity= BigDecimal.valueOf(orderDetail.getQuantity());
         BigDecimal getComputeGrossArea= BigDecimal.valueOf(orderDetail.getComputeGrossArea());
+        BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea());
+        BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth());
+        BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight());
         if (calculateType == 3) {
             orderDetail.setGrossAmount(getPrice.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
-        } else {
+        }else if (calculateType == 4) {
+            if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){
+                orderDetail.setGrossAmount(getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice).
+                        divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue());
+            }else{
+                orderDetail.setGrossAmount(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            }
+        }else if (calculateType == 1){
+            orderDetail.setGrossAmount(getPrice.multiply(getComputeArea).multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        }else{
             orderDetail.setGrossAmount(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
         }
         return orderDetail;
@@ -494,7 +540,7 @@
     }
 
 
-    public Map<String,Object> getOrderReport(Integer pageNum, Integer pageSize, List<String> selectDate, OrderDetail orderDetail) {
+    public Map<String,Object> getOrderReport(Integer pageNum, Integer pageSize, List<String> selectDate, OrderDetail orderDetail, Integer model, Integer scope) {
         Integer offset = (pageNum-1)*pageSize;
         String endDate = LocalDate.now().toString();
         String startDate = LocalDate.now().minusDays(15).toString();
@@ -506,9 +552,8 @@
                 endDate = selectDate.get(1);
             }
         }
-
         Map<String,Object> map = new HashMap<>();
-        map.put("data",orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail));
+        map.put("data",orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail,model,scope));
         map.put("total",orderDetailMapper.getOrderReportTotal(offset, pageSize, startDate, endDate, orderDetail,"order"));
         List<String> list = new ArrayList<>();
         list.add(startDate);
@@ -600,6 +645,19 @@
             orderProductDetailMap.put("productId",map.get("productId"));
             orderProductDetailMap.put("productName",map.get("productName"));
             List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId);
+            orderDetails.forEach(orderDetail->{
+
+                List<OrderGlassDetail> orderGlassDetails =
+                        orderGlassDetailMapper.selectList(
+                                new QueryWrapper<OrderGlassDetail>().
+                                        eq("order_id",orderId).
+                                        eq("order_number",orderDetail.getOrderNumber())
+                        );
+                Integer differentSize = orderGlassDetailMapper.getDifferentSizeNumber(orderId,orderDetail.getOrderNumber());
+                orderDetail.setDifferentSize(differentSize);
+                orderDetail.setOrderGlassDetails(orderGlassDetails);
+            });
+
             orderProductDetailMap.put("productDetail",orderDetails);
             orderProductDetail.add(orderProductDetailMap);
         });
@@ -618,13 +676,24 @@
         }else{
             orderProductDistinct = orderDetailMapper.getOrderProductDistinctById(orderId);
         }
-
         List<Map<String,Object>> orderProductDetail = new ArrayList<>();
         orderProductDistinct.forEach(map->{
             Map<String,Object> orderProductDetailMap = new HashMap<>();
             orderProductDetailMap.put("productId",map.get("productId"));
             orderProductDetailMap.put("productName",map.get("productName"));
             List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId);
+            orderDetails.forEach(orderDetail->{
+
+                List<OrderGlassDetail> orderGlassDetails =
+                        orderGlassDetailMapper.selectList(
+                                new QueryWrapper<OrderGlassDetail>().
+                                        eq("order_id",orderId).
+                                        eq("order_number",orderDetail.getOrderNumber())
+                        );
+                Integer differentSize = orderGlassDetailMapper.getDifferentSizeNumber(orderId,orderDetail.getOrderNumber());
+                orderDetail.setDifferentSize(differentSize);
+                orderDetail.setOrderGlassDetails(orderGlassDetails);
+            });
 
 
             orderProductDetailMap.put("productDetail",orderDetails);
@@ -801,4 +870,67 @@
     public Boolean selectDifferentSize(String orderId) {
         return !orderMapper.selectDifferentSize(orderId).isEmpty();
     }
+
+    public Object processBack(String orderId,Integer status)  {
+        //鍒ゆ柇鏄惁杞紭鍖�
+        if(flowCardMapper.flowCardToOptimizeCount(orderId)>0){
+            return "false1";
+        }
+        //鍒ゆ柇鏄惁鏈夋姤宸�
+        if(flowCardMapper.reportingWorkCountByOrderId(orderId)>0){
+            return "false2";
+        }
+        //鍒ゆ柇鏄惁鏈夊簱瀛�
+        if(orderMapper.searchOrderWarehousing(orderId)>0){
+            return "false3";
+        }
+        //閫�鍥炲埌鐢熶骇鍔犲伐鍗�
+        if(status<5){
+            //鏇存柊灏忕墖鏄庣粏琛ㄥ垎鏋剁姸鎬�
+            flowCardMapper.updateDeleteState(orderId,"all");
+            //鍒犻櫎姝よ鍗曞皬鐗囨祦绋嬫姤宸ユ槑缁�
+            flowCardMapper.deleteReportingWorkByOrderId(orderId);
+            //鍒犻櫎娴佺▼鍗�
+            flowCardMapper.deleteFlowCardMp(orderId,"all");
+            //鍒犻櫎娴佺▼鍗℃帓搴�
+            flowCardMapper.deleteflowCardSortByOrderId(orderId);
+            flowCardMapper.updateProcessingCard(orderId, 0);
+        }
+        //閫�鍥炲埌璁㈠崟瀹℃牳鍚�
+        if(status<4){
+            workOrderMapper.deleteOrderWorkMp(orderId, null);
+            workOrderMapper.updateWorkType(orderId, 0);
+        }
+        //閫�鍥炲埌宸ヨ壓瀹℃牳鍚�
+        if(status<3){
+            orderMapper.backReviewOrderById(orderId);
+        }
+        //閫�鍥炲埌涓嬪崟鍚�
+        if(status<2){
+            orderMapper.reviewProcessById(orderId,0);
+        }
+        //鏃ュ織浼犲叆
+        Log log = new Log();
+        log.setOperator((String) StpUtil.getLoginId());
+        log.setOperatorId((String) StpUtil.getLoginId());
+        log.setContent(String.valueOf(status));
+        log.setFunction("updateOrderMoney閲戦閲嶇疆:"+orderId);
+        return true;
+    }
+
+    public Object scannerGlassInfo(String projectNo) {
+        try{
+            String projectId = "P" + projectNo.substring(0,8);
+            //鐐夊彿
+            Integer heatNo = Integer.valueOf(projectNo.substring(8,11));
+            //鐐夊唴搴忓彿
+            Integer sortNo = Integer.valueOf(projectNo.substring(11,14));
+            String processId = orderMapper.getProcessIdByOptimizeHeatDetail(projectId,heatNo,sortNo);
+            String orderId = flowCardMapper.getOrderIdByProcessId(processId);
+            return orderMapper.scannerGlassInfo(projectId,heatNo,sortNo,orderId);
+        }catch (Exception e){
+            return null;
+        }
+
+    }
 }

--
Gitblit v1.8.0