From 64b5d1677272a375e6b8ac56f475f462d05723a0 Mon Sep 17 00:00:00 2001
From: JiangYouYao <ak473600000>
Date: Fri, 18 Mar 2022 16:46:06 +0800
Subject: [PATCH] 重构:订单取消逻辑

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 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 b403130..2049a70 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
@@ -614,6 +614,7 @@
             Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
             zkTotal = MoneyUtil.add(zkTotal, itemZkTotal);
             item.setStatus(Dictionary.ORDER_STATU_DFK);
+            item.setRefundCount(0);
         }
 
         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
@@ -624,6 +625,7 @@
         sysOrder.setCompanyId(user.getCompanyId());
         sysOrder.setOrderTime(new Date());
         sysOrder.setOrderType(SysOrder.ORDER_TYPE_SEAL);
+
 
         //新增订单
         sysOrder.setOrderNo(codeService.getOrderCode());
@@ -717,5 +719,50 @@
         return order;
     }
 
+    /**
+     * 创建退款订单
+     * @return
+     */
+    public SysOrder createTkOrder(SysOrder sysOrder){
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+
+        //原订单设置为退款状态
+        SysOrder sourceOrder = new SysOrder();
+        sourceOrder.setId(sysOrder.getOldOrderId());
+        sourceOrder.setIsHasRefund(SysOrder.IS_HAS_REFUND_Y);
+        sysOrderDao.update(sourceOrder);
+
+        sysOrder.setId(null);
+        sysOrder.setStaffId(user.getSuId());
+        sysOrder.setCompanyId(user.getCompanyId());
+        sysOrder.setShopId(user.getShopId());
+        sysOrder.setOrderType(SysOrder.ORDER_TYPE_REFUND);
+        sysOrder.setStatu(Dictionary.ORDER_STATU_YFK);
+        Date now = new Date();
+        sysOrder.setOrderTime(now);
+        sysOrder.setPayTime(now);
+        sysOrder.setOrderNo(codeService.getRefundOrderNo());
+        sysOrder.setZkTotal(-sysOrder.getZkTotal());
+        //新增订单
+        sysOrderDao.insert(sysOrder);
+        //插入明细
+        for (SysOrderItem item : sysOrder.getItems()) {
+
+            //更新原订单明细的可退数量
+            SysOrderItem oldItem =   orderItemDao.selectById(item.getId());
+            if((oldItem.getRefundCount()+item.getCount()) <= oldItem.getCount()){
+                oldItem.setRefundCount(oldItem.getRefundCount()+item.getCount());
+                orderItemDao.update(oldItem);
+            }else{
+                throw new GlobleException("退款数量大于购买数量");
+            }
+            //插入新的订单明细
+            item.setCount(-item.getCount());
+            item.setOrderId(sysOrder.getId());
+            orderItemDao.insert(item);
+        }
+        LogUtil.info("创建退款订单:{} " , JSON.toJSONString(sysOrder) ) ;
+        return sysOrder;
+    }
 
 }
\ No newline at end of file

--
Gitblit v1.9.1