From d58a5eecbbf9db6a9469801273e537a55bc8e794 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 07 Jan 2021 21:24:58 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java |  170 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 117 insertions(+), 53 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 23c1e7e..00031d1 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
@@ -6,6 +6,11 @@
 import com.matrix.core.tools.LogUtil;
 import com.matrix.core.tools.StringUtils;
 import com.matrix.core.tools.WebUtil;
+import com.matrix.system.app.dto.OrderListDto;
+import com.matrix.system.app.vo.OrderDetailAchieveItemVo;
+import com.matrix.system.app.vo.OrderDetailItemVo;
+import com.matrix.system.app.vo.OrderDetailVo;
+import com.matrix.system.app.vo.RankingVo;
 import com.matrix.system.common.bean.SysUsers;
 import com.matrix.system.common.dao.BusParameterSettingsDao;
 import com.matrix.system.common.dao.SysUsersDao;
@@ -80,10 +85,16 @@
     private AchieveNewService achieveNewService;
 
     @Autowired
+    private AchieveNewDao achieveNewDao;
+
+    @Autowired
     private WarehouseDao warehouseDao;
 
     @Autowired
     private ShoppingGoodsService shoppingGoodsService;
+
+    @Autowired
+    private SysOrderFlowDao sysOrderFlowDao;
 
     @Override
     public int add(SysOrder sysOrder) {
@@ -172,10 +183,10 @@
             // 如果支付方式是非现金则记录现金支付金额
             if (!item.getPayMethod().equals(PayMethodEnum.VIP_CARD.getCode())) {
                 xjMoney = MoneyUtil.add(xjMoney, item.getPayMoney());
-                item.setCashPay(item.getPayMoney());
+//                item.setCashPay(item.getPayMoney());
             } else {
                 cardMoney = MoneyUtil.add(cardMoney, item.getPayMoney());
-                item.setCardPay(item.getPayMoney());
+//                item.setCardPay(item.getPayMoney());
 
             }
 
@@ -183,28 +194,30 @@
             // 订单欠款减去支付金额 设置实际欠款
             Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
             zkTotal=MoneyUtil.add(zkTotal, itemZkTotal);
-            item.setArrears(MoneyUtil.sub(itemZkTotal, item.getPayMoney()));
+//            item.setArrears(MoneyUtil.sub(itemZkTotal, item.getPayMoney()));
 
 
             // 如果存在欠款,将条目状态设置为欠款
-            if (item.getArrears() > 0) {
-                item.setStatus(Dictionary.ORDER_STATU_QK);
-            } else if (item.getArrears() < 0) {
-                item.setPayMoney(item.getZkPrice());
-                item.setStatus(Dictionary.ORDER_STATU_DFK);
-            } else {
-                item.setStatus(Dictionary.ORDER_STATU_DFK);
-            }
+//            if (item.getArrears() > 0) {
+//                item.setStatus(Dictionary.ORDER_STATU_QK);
+//            } else if (item.getArrears() < 0) {
+//                item.setPayMoney(item.getZkPrice());
+//                item.setStatus(Dictionary.ORDER_STATU_DFK);
+//            } else {
+//                item.setStatus(Dictionary.ORDER_STATU_DFK);
+//            }
+            item.setStatus(Dictionary.ORDER_STATU_DFK);
         }
         double arrears;
         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
         // 如果是收款,收款可以改变订单价格,所以需要求和出 订单折后价来计算本次欠款
         arrears = MoneyUtil.sub(zkTotal, MoneyUtil.add(cardMoney, xjMoney));
         sysOrder.setZkTotal(zkTotal);
-        sysOrder.setArrears(arrears);
-        sysOrder.setCardPay(cardMoney);
-        sysOrder.setCashPay(xjMoney);
+//        sysOrder.setArrears(arrears);
+//        sysOrder.setCardPay(cardMoney);
+//        sysOrder.setCashPay(xjMoney);
         sysOrder.setStatu(Dictionary.ORDER_STATU_DFK);
+        sysOrder.setStaffId(user.getSuId());
         sysOrder.setCompanyId(user.getCompanyId());
 
         sysOrder.setPayTime(new Date());
@@ -355,7 +368,7 @@
             throw new GlobleException("没用选择购买产品");
         }
         // 获取会员信息,判断等级 获取相应家居折扣
-        SysVipInfo info = (SysVipInfo) WebUtil.getSession().getAttribute(SystemConstance.CURRENT_CUSTOMER);
+        SysVipInfo info = sysVipInfoDao.selectById(car.getVipId());
 
         //获取折扣-----
         Double zk = zk = 1.0;
@@ -375,6 +388,7 @@
         order.setStatu(Dictionary.ORDER_STATU_DFK);
         order.setCardPay(0.00);
         order.setCashPay(0.00);
+        order.setCompanyId(user.getCompanyId());
         order.setBeatuyId(car.getBeatuyId() + "");
         // 根据美疗师id查询美疗师姓名
         if (car.getBeatuyId() != null) {
@@ -489,40 +503,43 @@
      */
     private void changeOrderStatu(SysOrder sourceOrder) {
 
-      boolean haQk=false;
+        for (SysOrderFlow flow : sourceOrder.getFlows()) {
+            // 若使用储值卡付款
+            if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
 
-        for(SysOrderItem sysOrderItem:sourceOrder.getItems()){
-
-            if(!sysOrderItem.getStatus().equals(Dictionary.ORDER_STATU_QK)){
-                SysOrderItem updateItem=new SysOrderItem();
-                updateItem.setId(sysOrderItem.getId());
-                updateItem.setStatus(Dictionary.ORDER_STATU_YFK);
-
-                if (sysOrderItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY_CARD )  ) {
-
-                    if(sysOrderItem.getPayMethodDetail()!=null){
-                        // 查询要支付的充值卡
-                        MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(Long.parseLong(sysOrderItem.getPayMethodDetail()));
-                        // 扣除付款卡金额并添加流水
-                        cardPaySk(moneyCardUse, sourceOrder,  sysOrderItem);
-                    }else{
-                        throw  new GlobleException("请选择支付的会员卡");
-                    }
-
-
-                }
-                orderItemDao.update(updateItem);
-            }else {
-                haQk=true;
             }
         }
-        //更新收款状态
-        if(haQk){
-            sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
-        }else{
-            sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
-        }
+//      boolean haQk=false;
+//
+//        for(SysOrderItem sysOrderItem:sourceOrder.getItems()){
+//
+//            if(!sysOrderItem.getStatus().equals(Dictionary.ORDER_STATU_QK)){
+//                SysOrderItem updateItem=new SysOrderItem();
+//                updateItem.setId(sysOrderItem.getId());
+//                updateItem.setStatus(Dictionary.ORDER_STATU_YFK);
+//
+//                if (sysOrderItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY_CARD )  ) {
+//
+//                    if(sysOrderItem.getPayMethodDetail()!=null){
+//                        // 查询要支付的充值卡
+//                        MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(Long.parseLong(sysOrderItem.getPayMethodDetail()));
+//                        // 扣除付款卡金额并添加流水
+//                        cardPaySk(moneyCardUse, sourceOrder,  sysOrderItem);
+//                    }else{
+//                        throw  new GlobleException("请选择支付的会员卡");
+//                    }
+//
+//
+//                }
+//                orderItemDao.update(updateItem);
+//            }else {
+//                haQk=true;
+//            }
+//        }
 
+
+        // 更新收款状态
+        sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
         sysOrderDao.update(sourceOrder);
 
 
@@ -629,6 +646,10 @@
             moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
             moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX);
         }
+
+        ShoppingGoods shoppingGoods = shoppingGoodsService.findById(moneyCardUse.getGoodsId());
+        Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime());
+        moneyCardUse.setFailTime(invalidTime);
         // 更新充值卡信息
         moneyCardUseDao.update(moneyCardUse);
     }
@@ -736,14 +757,17 @@
                     moneyCardUse.setLastCount(moneyCar.getCarUseCount());
                 }
                 moneyCardUse.setVipId(sourceOrder.getVipId());
-                if (moneyCar.getValidity() == null || moneyCar.getValidity() == 0) {
-                    // 设置失效时间
-                    Calendar cal = Calendar.getInstance();
-                    cal.set(2200, 1, 1);
-                    moneyCardUse.setFailTime(cal.getTime());
-                } else {
-                    moneyCardUse.setFailTime(DateUtil.nextNDate(new Date(), 30 * moneyCar.getValidity()));
-                }
+//                if (moneyCar.getValidity() == null || moneyCar.getValidity() == 0) {
+//                    // 设置失效时间
+//                    Calendar cal = Calendar.getInstance();
+//                    cal.set(2200, 1, 1);
+//                    moneyCardUse.setFailTime(cal.getTime());
+//                } else {
+//                    moneyCardUse.setFailTime(DateUtil.nextNDate(new Date(), 30 * moneyCar.getValidity()));
+//                }
+                Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
+                moneyCardUse.setFailTime(invalidTime);
+
                 moneyCardUseDao.insert(moneyCardUse);
             }
         }
@@ -1204,4 +1228,44 @@
     public SysOrder findSysOrderTjByVipId(Long vipId) {
         return sysOrderDao.selectVipOrderInfoTotal(vipId);
     }
+
+    @Override
+    public List<OrderDetailVo> findApiOrderListInPage(OrderListDto orderListDto, PaginationVO pageVo) {
+        return sysOrderDao.selectApiOrderListInPage(orderListDto, pageVo);
+    }
+
+    @Override
+    public int findApiOrderListTotal(OrderListDto orderListDto) {
+        return sysOrderDao.selectApiOrderListTotal(orderListDto);
+    }
+
+    @Override
+    public OrderDetailVo findApiOrderDetailByOrderId(Long orderId) {
+        OrderDetailVo orderDetail = sysOrderDao.selectApiOrderDetailById(orderId);
+
+        if (orderDetail == null) {
+            throw new GlobleException("该订单不存在");
+        }
+
+        List<OrderDetailItemVo> items = orderItemDao.selectApiOrderDetailItemsByOrderId(orderId);
+        if (CollectionUtils.isNotEmpty(items)) {
+            for (OrderDetailItemVo item : items) {
+                List<OrderDetailAchieveItemVo> achieveItems = achieveNewDao.selectApiOrderItemAchieve(item.getId());
+                item.setAchieves(achieveItems);
+            }
+        }
+
+        orderDetail.setItems(items);
+        return orderDetail;
+    }
+
+    @Override
+    public List<RankingVo> findApiShopAchieveRanking(SysOrder sysOrder) {
+        return sysOrderDao.selectShopAchieveRanking(sysOrder);
+    }
+
+    @Override
+    public List<RankingVo> findStaffSaleAchieveRanking(SysOrder sysOrder) {
+        return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder);
+    }
 }

--
Gitblit v1.9.1