From ab6ac91b7ed9ae3f9c68766f499ece11585c8859 Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期一, 30 六月 2025 08:56:20 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java |   68 ++++++++++++++++++++++++---------
 1 files changed, 49 insertions(+), 19 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 9f34bf6..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
@@ -11,7 +11,7 @@
 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;
@@ -21,20 +21,16 @@
 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.*;
 import java.util.stream.Collectors;
-
-import static org.apache.coyote.http11.Constants.a;
 
 @Service
 @DS("sd")
@@ -213,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);
@@ -346,7 +349,7 @@
             }
         }
         JSONObject orderJson = new JSONObject(config);
-        Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), Order.class);
+        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");
@@ -383,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,"璇ヨ鍗曡繕鏈鏍�");
@@ -395,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;
@@ -409,7 +421,7 @@
 //            //璧嬪�艰鍗曞伐鑹鸿〃
 //            orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList);
         }
-
+        logService.saveLog(log);
         return orderMapper.reviewProcessById(id,status);
     }
     //宸ヨ壓瀹℃牳鐣岄潰鏁版嵁鏌ヨ
@@ -502,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;
@@ -516,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();
@@ -528,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);
@@ -896,11 +919,18 @@
     }
 
     public Object scannerGlassInfo(String projectNo) {
-        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);
+        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