From 2ca19d805dcbe5f0796067c1a91fbb890804e1eb Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Wed, 13 Jan 2021 10:18:11 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java |   97 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 94 insertions(+), 3 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 42ea6ff..2afd6ee 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
@@ -159,8 +159,22 @@
         // 计算订单折扣金额,收款情况下 计算订单总额
         double zkTotal = 0.0;
 
+        // 判断是否为退款
+        String orderStatus = Dictionary.ORDER_STATU_DFK;
+        if (Dictionary.ORDER_STATU_TK.equals(sysOrder.getStatu())) {
+            orderStatus = Dictionary.ORDER_STATU_TK;
+        }
+
         // 页面的pageOrder 参数只包含支付金额信息,不带有购买商品
         for (SysOrderItem item : sysOrder.getItems()) {
+            // 若为退款,则先更新原有数量
+            if (orderStatus.equals(Dictionary.ORDER_STATU_TK)) {
+                SysOrderItem sysOrderItem = new SysOrderItem();
+                sysOrderItem.setId(item.getId());
+                sysOrderItem.setCount(item.getPreCount() - item.getCount());
+                orderItemDao.update(sysOrderItem);
+            }
+            item.setId(null);
 
             ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
             item.setType(shoppingGoods.getGoodType());
@@ -171,12 +185,12 @@
             // 订单欠款减去支付金额 设置实际欠款
             Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
             zkTotal=MoneyUtil.add(zkTotal, itemZkTotal);
-            item.setStatus(Dictionary.ORDER_STATU_DFK);
+            item.setStatus(orderStatus);
         }
 
         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
         sysOrder.setZkTotal(zkTotal);
-        sysOrder.setStatu(Dictionary.ORDER_STATU_DFK);
+        sysOrder.setStatu(orderStatus);
         sysOrder.setStaffId(user.getSuId());
         sysOrder.setCompanyId(user.getCompanyId());
 
@@ -472,7 +486,12 @@
             ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
             flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
 
-            flow.setOrderId(sourceOrder.getId());
+            if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) {
+                flow.setOrderId(sourceOrder.getOldOrderId());
+            } else {
+                flow.setOrderId(sourceOrder.getId());
+            }
+
             flow.setVipId(sourceOrder.getVipId());
             flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
             // 若使用储值卡付款
@@ -494,6 +513,10 @@
             }
             sysOrderFlowDao.insert(flow);
             i++;
+        }
+
+        if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) {
+            orderStatus = Dictionary.ORDER_STATU_TK;
         }
 
         // 更新收款状态
@@ -1205,4 +1228,72 @@
     public List<RankingVo> findStaffSaleAchieveRanking(SysOrder sysOrder) {
         return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder);
     }
+
+    @Override
+    public void refundOrderMoney(SysOrder pageOrder) {
+
+        // 插入订单流水
+        changeOrderStatu(pageOrder);
+
+        for (SysOrderItem item : pageOrder.getItems()) {
+
+            SysProjUse queryProjUse = new SysProjUse();
+            queryProjUse.setIsOver(Dictionary.FLAG_NO_N);
+            queryProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
+            queryProjUse.setOrderItemId(item.getId());
+            // 修改项目信息
+            if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType()) && Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) {
+                SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0);
+
+                int sub = sysProjUse.getSurplusCount() - item.getCount();
+                sysProjUse.setSurplusCount(sub);
+                if (sub <= 0) {
+                    sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
+                    sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+                }
+                sysProjUseDao.update(sysProjUse);
+            }
+
+            if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(item.getType())) {
+                queryProjUse.setTaocanId(-1L);
+                SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0);
+                sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
+                sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+
+                sysProjUseDao.update(sysProjUse);
+            }
+
+            if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) {
+                MoneyCardUse queryCardUse = new MoneyCardUse();
+                queryCardUse.setIsOver(Dictionary.FLAG_NO_N);
+                queryCardUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
+                queryCardUse.setOrderItemId(item.getId());
+
+                MoneyCardUse moneyCardUse = moneyCardUseDao.selectByModel(queryCardUse).get(0);
+                moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
+                moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX);
+                moneyCardUseDao.update(moneyCardUse);
+            }
+
+            // TODO 综合卡退款
+            if (Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(item.getType())) {
+
+            }
+
+        }
+
+        // 设置会员充值卡使用情况
+        addMoneyCardUse(pageOrder);
+
+        // 新增出库单
+        addOutStore(pageOrder);
+
+        // 改变客户项目套餐使用情况
+        addTaocanProj(pageOrder);
+
+        // 设置业绩
+        achieveNewService.addAchaeveByOrder(pageOrder);
+
+        setShopSelCount(pageOrder);
+    }
 }

--
Gitblit v1.9.1