From baa1c7ecdc47c5da14790b422007ce21e0547ffa Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Fri, 18 Mar 2022 00:50:23 +0800
Subject: [PATCH] 重构:订单创建和修改方法

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java |  104 +++++++++++++++++++++++++
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java   |  116 +++-------------------------
 zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml                  |    2 
 3 files changed, 115 insertions(+), 107 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
index ec62439..fc54596 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
@@ -19,21 +19,27 @@
 import com.matrix.system.common.bean.SysUsers;
 import com.matrix.system.common.constance.AppConstance;
 import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.common.service.OperationLogService;
 import com.matrix.system.constance.Dictionary;
+import com.matrix.system.enums.OperationButtonEnum;
+import com.matrix.system.enums.OperationFunctionEnum;
 import com.matrix.system.hive.bean.*;
 import com.matrix.system.hive.dao.*;
 import com.matrix.system.hive.dto.MoneyCardOperationDto;
 import com.matrix.system.hive.dto.MoneyCardPayDto;
 import com.matrix.system.hive.dto.ProjUseOperationDto;
 import com.matrix.system.hive.plugin.util.CollectionUtils;
+import com.matrix.system.hive.plugin.util.MoneyUtil;
 import com.matrix.system.hive.service.CodeService;
 import com.matrix.system.hive.service.MoneyCardUseService;
 import com.matrix.system.hive.service.SysProjUseService;
 import com.matrix.system.score.constant.ScoreSettingConstant;
 import com.matrix.system.score.entity.ScoreVipDetail;
+import com.matrix.system.score.service.ScoreVipDetailService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -52,6 +58,9 @@
 @Component
 public class SysOrderServiceHelper {
 
+
+    @Autowired
+    ScoreVipDetailService scoreVipDetailService;
 
     @Autowired
     SysVipInfoDao sysVipInfoDao;
@@ -74,6 +83,11 @@
     SysOutStoreItemDao sysOutStoreItemDao;
 
     @Autowired
+    private SysOrderDao sysOrderDao;
+
+    @Autowired
+    private OperationLogService operationLogService;
+    @Autowired
     ShoppingGoodsDao shoppingGoodsDao;
 
     @Autowired
@@ -88,6 +102,10 @@
 
     @Autowired
     MoneyCardUseService moneyCardUseService;
+
+
+    @Autowired
+    private SysOrderItemDao orderItemDao;
 
     /**
      * 创建支付流水
@@ -259,6 +277,7 @@
     /**
      * 新增出库单并更新本店库存
      * jyytodo 继续优化
+     *
      * @param order
      */
     public void addOutStore(SysOrder order) {
@@ -373,10 +392,9 @@
     }
 
 
-
-
     /**
      * 设置会员消费积分
+     *
      * @param pageOrder
      */
     public void addVipScore(SysOrder pageOrder) {
@@ -527,8 +545,90 @@
         }
     }
 
+    /**
+     * 创建订单信息
+     *
+     * @param sysOrder
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public SysOrder saveOrder(SysOrder sysOrder) {
+
+        //校验参数 jyytodo
+
+        // 计算订单折扣金额,收款情况下 计算订单总额
+        double zkTotal = 0.0;
+        // 页面的pageOrder 参数只包含支付金额信息,不带有购买商品
+        for (SysOrderItem item : sysOrder.getItems()) {
+            ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
+            item.setType(shoppingGoods.getGoodType());
+            if (item.getZkPrice() == 0) {
+                item.setIsFree(Dictionary.FLAG_YES);
+            }
+            Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
+            zkTotal = MoneyUtil.add(zkTotal, itemZkTotal);
+            item.setStatus(Dictionary.ORDER_STATU_DFK);
+        }
+
+        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+        sysOrder.setZkTotal(zkTotal);
+        sysOrder.setStatu(Dictionary.ORDER_STATU_DFK);
+
+        sysOrder.setStaffId(user.getSuId());
+        sysOrder.setCompanyId(user.getCompanyId());
+
+        //新增订单
+        sysOrder.setOrderNo(codeService.getOrderCode());
+        sysOrderDao.insert(sysOrder);
+
+        //保存单据明细
+        sysOrder.getItems().forEach(sysOrderItem -> {
+            sysOrderItem.setOrderId(sysOrder.getId());
+            orderItemDao.insert(sysOrderItem);
+        });
+
+        //保存单据日志
+        operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
+                OperationFunctionEnum.ORDER,
+                OperationButtonEnum.CREATE,
+                sysOrder.getId(),
+                sysOrder.getOrderNo(),
+                sysOrder.getVipId());
+
+        return sysOrder;
+    }
 
 
 
 
+    /**
+     * 修改订单信息
+     *
+     * @param sysOrder
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public SysOrder modifyOrder(SysOrder sysOrder) {
+        // 计算订单折扣金额,收款情况下 计算订单总额
+        double zkTotal = 0.0;
+        for (SysOrderItem item : sysOrder.getItems()) {
+            ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
+            item.setType(shoppingGoods.getGoodType());
+            if (item.getZkPrice() == 0) {
+                item.setIsFree(Dictionary.FLAG_YES);
+            }
+            Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
+            zkTotal = MoneyUtil.add(zkTotal, itemZkTotal);
+        }
+        sysOrder.setZkTotal(zkTotal);
+        //更新订单
+        sysOrderDao.update(sysOrder);
+        //删除原有订单明细
+        orderItemDao.deleteByOrderId(sysOrder.getId());
+        sysOrder.getItems().forEach(sysOrderItem -> {
+            sysOrderItem.setOrderId(sysOrder.getId());
+            orderItemDao.insert(sysOrderItem);
+        });
+        return sysOrder;
+    }
 }
\ No newline at end of file
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 99bff37..72f57c1 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
@@ -37,8 +37,6 @@
 import com.matrix.system.hive.pojo.ShoppingCarItem;
 import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
 import com.matrix.system.hive.service.*;
-import com.matrix.system.score.constant.ScoreSettingConstant;
-import com.matrix.system.score.entity.ScoreVipDetail;
 import com.matrix.system.score.service.ScoreVipDetailService;
 import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting;
 import com.matrix.system.wechart.templateMsg.UniformMsgParam;
@@ -145,7 +143,6 @@
     private SysOrderServiceHelper sysOrderServiceHelper;
 
 
-
     @Autowired
     MoneyCardUseService moneyCardUseService;
 
@@ -156,91 +153,15 @@
     @Transactional(rollbackFor = Exception.class)
     public SysOrder checkAndSaveOrder(SysOrder sysOrder) {
 
-        // 计算订单折扣金额,收款情况下 计算订单总额
-        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());
-            if (item.getZkPrice() == 0) {
-                item.setIsFree(Dictionary.FLAG_YES);
-            }
-
-            // 订单欠款减去支付金额 设置实际欠款
-            Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
-            zkTotal = MoneyUtil.add(zkTotal, itemZkTotal);
-            item.setStatus(orderStatus);
-        }
-
-        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
-        sysOrder.setZkTotal(zkTotal);
-        sysOrder.setStatu(orderStatus);
-        SysOrder source = null;
-        if (sysOrder.getId() != null) {
-            source = sysOrderDao.selectById(sysOrder.getId());
-        }
-        sysOrder.setStaffId(source != null ? source.getStaffId() : user.getSuId());
-        sysOrder.setCompanyId(source != null ? source.getCompanyId() : user.getCompanyId());
-
-
-        if (sysOrder.getId() == null) {
-            //新增订单
-            sysOrder.setOrderNo(codeService.getOrderCode());
-            sysOrderDao.insert(sysOrder);
-            //保存单据日志
-            operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
-                    OperationFunctionEnum.ORDER,
-                    OperationButtonEnum.CREATE,
-                    sysOrder.getId(),
-                    sysOrder.getOrderNo(),
-                    sysOrder.getVipId());
-
+        if (Objects.isNull(sysOrder.getId())) {
+            LogUtil.info("新增正向订单");
+            return sysOrderServiceHelper.saveOrder(sysOrder);
         } else {
-            //更新订单
-            sysOrderDao.update(sysOrder);
-            //删除原有订单明细
-            orderItemDao.deleteByOrderId(sysOrder.getId());
-            //保存单据日志
-            operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
-                    OperationFunctionEnum.ORDER,
-                    OperationButtonEnum.UPDATE,
-                    sysOrder.getId(),
-                    sysOrder.getOrderNo(),
-                    sysOrder.getVipId(),
-                    "修改订单内容");
+            LogUtil.info("修改订单");
+            return sysOrderServiceHelper.modifyOrder(sysOrder);
         }
 
-        sysOrder.getItems().forEach(sysOrderItem -> {
-            sysOrderItem.setOrderId(sysOrder.getId());
-            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;
     }
 
     /**
@@ -485,7 +406,7 @@
         sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue());
 
         //添加支付流水
-        sysOrderServiceHelper.addOrderFlow(pageOrder,false);
+        sysOrderServiceHelper.addOrderFlow(pageOrder, false);
 
         //扣除储值卡余额
         sysOrderServiceHelper.cardPaySk(pageOrder);
@@ -533,7 +454,7 @@
      * @param pageOrder
      */
     private void updateOrderInfo(SysOrder pageOrder) {
-        LogUtil.info("付款更新订单信息 id={}",pageOrder.getId());
+        LogUtil.info("付款更新订单信息 id={}", pageOrder.getId());
         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
         pageOrder.setCashierId(user.getSuId());
 
@@ -594,7 +515,7 @@
         //检查业绩设置
         checkOrderAchieve(pageOrder);
 
-        LogUtil.info("订单满足支付条件 id={}",pageOrder.getId());
+        LogUtil.info("订单满足支付条件 id={}", pageOrder.getId());
 
     }
 
@@ -631,12 +552,9 @@
     }
 
 
-
-
-
-
     /**
      * 补交
+     *
      * @author:姜友瑶
      * @date 2016年9月19日
      */
@@ -646,7 +564,7 @@
         SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId());
 
         //添加支付流水
-        sysOrderServiceHelper.addOrderFlow(pageOrder,true);
+        sysOrderServiceHelper.addOrderFlow(pageOrder, true);
 
         //扣除储值卡余额
         sysOrderServiceHelper.cardPaySk(pageOrder);
@@ -667,7 +585,7 @@
 
         if (refundTotal == pageOrder.getArrears()) {
             sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
-        }else{
+        } else {
             sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
         }
         sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal);
@@ -675,14 +593,6 @@
         sourceOrder.setCashPay(sourceOrder.getCashPay() == null ? 0 : sourceOrder.getCashPay() + cashPayTotal);
         sysOrderDao.update(sourceOrder);
     }
-
-
-
-
-
-
-
-
 
 
     /**
@@ -773,7 +683,7 @@
 
         order.setFlows(czVo.getFlows());
 
-        sysOrderServiceHelper.addOrderFlow(order,false);
+        sysOrderServiceHelper.addOrderFlow(order, false);
 
         // 添加员工业绩
         achieveNewService.addAchaeveByOrder(order);
@@ -867,7 +777,7 @@
 
 
         // 添加订单收款流水
-        sysOrderServiceHelper.addOrderFlow(sysOrder,false);
+        sysOrderServiceHelper.addOrderFlow(sysOrder, false);
         //退款退套餐退项目
         refundProjUse(sysOrder);
         //删除积分
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
index 2e2de04..81ed5fc 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
@@ -88,7 +88,6 @@
     <insert id="insert" parameterType="SysOrderItem"
             useGeneratedKeys="true" keyProperty="id">
 		INSERT INTO sys_order_item (
-		ID,
 		ORDER_ID,
 		COUNT,
 		refundCount,
@@ -106,7 +105,6 @@
 		pay_method_detail
 		)
 		VALUES (
-		#{id},
 		#{orderId},
 		#{count},
 		#{refundCount},

--
Gitblit v1.9.1