From 6dbefbb50c62e6b16ab851bb0f7f77da9321d206 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 18 Jan 2021 18:01:13 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java |   55 +++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 41 insertions(+), 14 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index 4a5ebcc..8bd6280 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -7,6 +7,7 @@
 import com.matrix.core.tools.StringUtils;
 import com.matrix.core.tools.WebUtil;
 import com.matrix.system.app.dto.OrderListDto;
+import com.matrix.system.app.mapper.SysProjUseMapper;
 import com.matrix.system.app.vo.OrderDetailAchieveItemVo;
 import com.matrix.system.app.vo.OrderDetailItemVo;
 import com.matrix.system.app.vo.OrderDetailVo;
@@ -106,6 +107,7 @@
     @Autowired
     private SysInstoreInfoService sysInstoreInfoService;
 
+
     @Override
     public int add(SysOrder sysOrder) {
         return sysOrderDao.insert(sysOrder);
@@ -165,6 +167,10 @@
     @Override
     public SysOrder checkAndSaveOrder(SysOrder sysOrder) {
         // 收款改变订单状态
+        SysOrder source = null;
+        if (sysOrder.getId() != null) {
+            source = sysOrderDao.selectById(sysOrder.getId());
+        }
 
         // 计算订单折扣金额,收款情况下 计算订单总额
         double zkTotal = 0.0;
@@ -201,8 +207,8 @@
         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
         sysOrder.setZkTotal(zkTotal);
         sysOrder.setStatu(orderStatus);
-        sysOrder.setStaffId(user.getSuId());
-        sysOrder.setCompanyId(user.getCompanyId());
+        sysOrder.setStaffId(source != null ? source.getStaffId() : user.getSuId());
+        sysOrder.setCompanyId(source != null ? source.getCompanyId() : user.getCompanyId());
 
         sysOrder.setPayTime(new Date());
         if(sysOrder.getId()==null){
@@ -219,7 +225,16 @@
 
         sysOrder.getItems().forEach(sysOrderItem -> {
             sysOrderItem.setOrderId(sysOrder.getId());
-            orderItemDao.insert(sysOrderItem);
+            if (sysOrder.getStatu().equals(Dictionary.ORDER_STATU_TK)) {
+                // 取负数
+                sysOrderItem.setCount(-sysOrderItem.getCount());
+                orderItemDao.insert(sysOrderItem);
+                // 调整回来
+                sysOrderItem.setCount(-sysOrderItem.getCount());
+            } else {
+                orderItemDao.insert(sysOrderItem);
+            }
+
         });
 
         return sysOrder;
@@ -422,7 +437,6 @@
         // 设置订单总价与折后价
         order.setTotal(total);
         order.setZkTotal(zkTotal);
-        order.setArrears(zkTotal);
         sysOrderDao.update(order);
         return i;
     }
@@ -525,6 +539,8 @@
             if (!SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod()) && !SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
                 cashPayTotal += flow.getAmount().doubleValue();
             }
+            flow.setShopId(sourceOrder.getShopId());
+            flow.setCompanyId(sourceOrder.getCompanyId());
             sysOrderFlowDao.insert(flow);
             i++;
         }
@@ -557,8 +573,7 @@
             Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId());
             buyNum = (buyNum == null ? 0 : buyNum);
             if ((buyNum + carItem.getCount()) > maxNum) {
-
-                throw new GlobleException(shopGoods.getName() + "已超过最大销售数量,还剩【" + (maxNum - buyNum) + "】件");
+                throw new GlobleException(shopGoods.getName() + "已超过最大销售数量");
             }
             if ((buyNum + carItem.getCount()) == maxNum) {
                 if (!shopGoods.getStaus().equals(Dictionary.BUSINESS_STATE_DOWN)) {
@@ -634,8 +649,10 @@
         }
 
         ShoppingGoods shoppingGoods = shoppingGoodsService.findById(moneyCardUse.getGoodsId());
-        Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime());
-        moneyCardUse.setFailTime(invalidTime);
+        if (shoppingGoods != null) {
+            Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime());
+            moneyCardUse.setFailTime(invalidTime);
+        }
         // 更新充值卡信息
         moneyCardUseDao.update(moneyCardUse);
     }
@@ -788,6 +805,8 @@
             }
 
             refundTotal += flow.getAmount().doubleValue();
+            flow.setShopId(sourceOrder.getShopId());
+            flow.setCompanyId(sourceOrder.getCompanyId());
             sysOrderFlowDao.insert(flow);
             i++;
         }
@@ -1233,15 +1252,10 @@
         return sysOrderDao.selectShopAchieveRanking(sysOrder);
     }
 
-    @Override
-    public List<RankingVo> findStaffSaleAchieveRanking(SysOrder sysOrder) {
-        return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder);
-    }
-
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void refundOrderMoney(SysOrder pageOrder) {
-
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
         // 插入订单流水
         changeOrderStatu(pageOrder);
 
@@ -1269,6 +1283,13 @@
                         sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
                     }
                     sysProjUseDao.update(sysProjUse);
+
+                    SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse);
+                    sysProjUseFlow.setOptionType("退款修改");
+                    sysProjUseFlow.setId(null);
+                    sysProjUseFlow.setUpdateBy(user.getSuName());
+                    sysProjUseFlow.setCreateBy(user.getSuName());
+                    sysProjUseDao.insertFlow(sysProjUseFlow);
                 }
             }
 
@@ -1285,6 +1306,12 @@
                     sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
 
                     sysProjUseDao.update(sysProjUse);
+                    SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse);
+                    sysProjUseFlow.setOptionType("退款修改");
+                    sysProjUseFlow.setId(null);
+                    sysProjUseFlow.setUpdateBy(user.getSuName());
+                    sysProjUseFlow.setCreateBy(user.getSuName());
+                    sysProjUseDao.insertFlow(sysProjUseFlow);
                 }
             }
 

--
Gitblit v1.9.1