From 2757ea108a2e870a72978f9957c8454af605176c Mon Sep 17 00:00:00 2001
From: Fancy <Fancy.fx@outlook.com>
Date: 星期一, 26 八月 2024 09:05:16 +0800
Subject: [PATCH] order status

---
 pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java |  134 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 100 insertions(+), 34 deletions(-)

diff --git a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java
index 24b0909..f058cf1 100644
--- a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java
+++ b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java
@@ -1,25 +1,22 @@
 package com.dy.pmsProduct.order;
 
-import cn.hutool.core.codec.Base64;
+import com.dy.common.webFilter.UserTokenContext;
 import com.dy.common.webUtil.QueryResultVo;
-import com.dy.pmsGlobal.daoOth.OthFileMapper;
 import com.dy.pmsGlobal.daoPr.*;
-import com.dy.pmsGlobal.dyFile.FileOperate;
-import com.dy.pmsGlobal.pojoPlt.PltProduct;
+import com.dy.pmsGlobal.pojoBa.BaUser;
 import com.dy.pmsGlobal.pojoPr.*;
-import com.dy.pmsGlobal.util.QrCodeUtil;
 import com.dy.pmsGlobal.util.UserUtil;
-import com.dy.pmsProduct.process.QueryVo;
-import com.google.zxing.WriterException;
+import com.dy.pmsProduct.taskPlan.PlanStatusEnum;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
 
@@ -29,10 +26,7 @@
     private PrOrderMapper orderDao;
     private PrOrderItemMapper orderItemDao;
     private UserUtil userUtil;
-    private FileOperate fileOperate;
-    private OthFileMapper othFileMapper;
-    @Value("${dy.webFile.fmUrl}")
-    private String fmUrl;
+
     @Autowired
     public void setOrderDao(PrOrderMapper orderDao) {
         this.orderDao = orderDao;
@@ -47,43 +41,42 @@
     public void setUserUtil(UserUtil userUtil) {
         this.userUtil = userUtil;
     }
-
-    @Autowired
-    public void setFileOperate(FileOperate fileOperate) {
-        this.fileOperate = fileOperate;
-    }
-
-    @Autowired
-    public void setOthFileMapper(OthFileMapper othFileMapper) {
-        this.othFileMapper = othFileMapper;
-    }
-
     @Transactional
     public int save(PrOrder p) {
+        p.id = null;
         //鍒ゆ柇浜у搧涓嶈兘閲嶅悕
         if (orderDao.exists(p.name, p.id)) {
             throw new RuntimeException("璁㈠崟鍚嶇О涓嶈兘閲嶅");
+        }
+        p.setDeleted(false);
+        BaUser loginUser = userUtil.getUser(UserTokenContext.get());
+        if (loginUser != null) {
+            p.creator = loginUser.id;
         }
         int count = orderDao.insertSelective(p);
         saveOrderItems(p);
         return count;
     }
+
     @Transactional
     public int update(PrOrder p) {
         if (orderDao.exists(p.name, p.id)) {
             throw new RuntimeException("璁㈠崟鍚嶇О涓嶈兘閲嶅");
         }
         int count = orderDao.updateByPrimaryKeySelective(p);
-        saveOrderItems(p);
+        if (count > 0) {
+            saveOrderItems(p);
+        }
         return count;
     }
+
     private void saveOrderItems(PrOrder p) {
-        p.items.forEach(param->{
-            param.orderId=p.id;
-            if(param.id !=null){
+        p.items.forEach(param -> {
+            param.orderId = p.id;
+            if (param.id != null) {
                 orderItemDao.updateByPrimaryKeySelective(param);
-            }else{
-                param.deleted=false;
+            } else {
+                param.deleted = false;
                 orderItemDao.insert(param);
             }
         });
@@ -91,6 +84,7 @@
 
     /**
      * 閫昏緫鍒犻櫎瀹炰綋
+     *
      * @param id 瀹炰綋ID
      * @return 褰卞搷璁板綍鏁伴噺
      */
@@ -100,7 +94,8 @@
     }
 
     public PrOrder selectById(String proId) {
-        PrOrder pro=orderDao.selectByPrimaryKey(Long.valueOf(proId));
+        PrOrder pro = orderDao.selectByPrimaryKey(Long.valueOf(proId));
+        changeRate(pro);
         return pro;
     }
 
@@ -117,13 +112,84 @@
         //璁$畻鍒嗛〉绛変俊鎭�
         rsVo.calculateAndSet(itemTotal, params);
 
+        List<PrOrder> orderList = orderDao.selectSome(params);
+        for (PrOrder prOrder : orderList) {
+            changeRate(prOrder);
+        }
         //鏌ヨ绗﹀悎鏉′欢鐨勮褰�
-        rsVo.obj = orderDao.selectSome(params);
+        rsVo.obj = orderList;
         return rsVo;
+    }
+
+    private void changeRate(PrOrder prOrder) {
+        List<PrOrderItem> items = prOrder.items;
+        for (int i = 1; i < items.size(); i++) {
+            for (int j = i - 1; j >= 0; j--) {
+                //鎷跨潃i渚濇璺熶笂涓�涓瘮杈�,濡傛灉浜у搧鐩稿悓,鍒欎笂涓�涓褰昪omplete_number - number 濡傛灉 > 0 鍒嗙粰i ,濡傛灉 < 0 鍒欏皢 complete_number 缃负0
+                if (items.get(j).getProId().intValue() == items.get(i).getProId().intValue()) {
+                    int remainNumber = items.get(j).getCompleteNumber() - items.get(j).getNumber();
+                    if (remainNumber > 0) {
+                        items.get(j).setCompleteNumber(items.get(j).getNumber());
+                        items.get(j).setCompleteRate("100.00%");
+                        items.get(i).setCompleteNumber(remainNumber);
+                        BigDecimal remainBig = new BigDecimal(remainNumber * 100);
+                        BigDecimal iNumberBig = new BigDecimal(items.get(i).getNumber());
+                        BigDecimal result = remainBig.divide(iNumberBig, 2, RoundingMode.HALF_UP);
+                        items.get(i).setCompleteRate(result.toString() +"%");
+                    }else{
+                        items.get(i).setCompleteNumber(0);
+                        items.get(i).setCompleteRate("0.00%");
+                    }
+                    break;
+                }
+            }
+        }
     }
 
     public List<PrOrder> selectAll(QueryVo queryVo) {
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
-        return orderDao.selectAll(params);
+        List<PrOrder> orderList = orderDao.selectAll(params);
+        for (PrOrder prOrder : orderList) {
+            changeRate(prOrder);
+        }
+        return orderList;
     }
+    /**
+     * 鍙洿鏂扮姸鎬�,涓嶆洿鏂板叾浠栧瓧娈�
+     * @param order
+     * 鏇存柊鐘舵��  濡傛灉鏈夊湪鎵ц涓殑浠诲姟,涓嶈鏆傚仠
+     * @return
+     */
+   @Transactional
+    public int updateStatus(PrOrder order) {
+        if(order.status == OrderStatusEnum.NORMAL.getCode()){
+            PrOrder prOrder = orderDao.selectByPrimaryKey(order.id);
+            prOrder.status = order.status;
+            //extractedCheck(prOrder);
+        }
+       PrOrder param = new PrOrder();
+        param.id =order.id;
+        param.status = order.status;
+        return orderDao.updateByPrimaryKeySelective(param);
+    }
+    /*private void extractedCheck(PrOrder order) {
+        PrProductionProcess process = processDao.selectByPrimaryKey(plan.processId);
+        if(process == null || !process.proId.equals(plan.proId)){
+            throw new RuntimeException("浜у搧涓庣敓浜ф祦绋嬩笉鍖归厤");
+        }
+        //寮�濮嬫棩鏈熻灏忎簬缁撴潫鏃ユ湡
+        if(plan.startDate.compareTo(plan.endDate) > 0){
+            throw new RuntimeException("寮�濮嬫棩鏈熶笉鑳藉ぇ浜庣粨鏉熸棩鏈�");
+        }
+        //Fancy add 2024/07/09   濡傛灉鐘舵�佷负鎵ц ,鍒欑粨鏉熸棩鏈熷繀椤诲ぇ浜庣瓑浜庡綋鍓嶆棩鏈�
+        if(plan.status == PlanStatusEnum.NORMAL.getCode()){
+            String endDateStr = plan.getEndDate();
+            LocalDate endDate = LocalDate.parse(endDateStr, DateTimeFormatter.ISO_LOCAL_DATE);
+            LocalDate nextDay = endDate.plusDays(1);
+            LocalDate today = LocalDate.now(); // 鑾峰彇褰撳墠鏃ユ湡
+            if (nextDay.isBefore(today)) {
+                throw new RuntimeException("鎵ц鐘舵�佺粨鏉熸棩鏈熷繀椤诲ぇ浜庣瓑浜庡綋鍓嶆棩鏈�,璇蜂慨鏀圭粨鏉熸棩鏈�");
+            }
+        }
+    }*/
 }
\ No newline at end of file

--
Gitblit v1.8.0