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 |  455 ++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 275 insertions(+), 180 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 2981768..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
@@ -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) {
@@ -143,24 +154,27 @@
 
     @Override
     public SysOrder checkAndSaveOrder(SysOrder sysOrder) {
-
         // 收款改变订单状态
-        /**
-         * 判断订单条目的一个付款情况
-         */
-        // 计算现金支付金额
-        double xjMoney = 0.0;
-        // 计算卡支付总额
-        double cardMoney = 0.0;
+
         // 计算订单折扣金额,收款情况下 计算订单总额
         double zkTotal = 0.0;
-        /**
-         * 记录本次消费的卡,防止扣除多次消费记录
-         */
-        ArrayList<Long> userCard = new ArrayList<Long>();
+
+        // 判断是否为退款
+        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());
@@ -168,43 +182,16 @@
                 item.setIsFree(Dictionary.FLAG_YES);
             }
 
-
-            // 如果支付方式是非现金则记录现金支付金额
-            if (!item.getPayMethod().equals(PayMethodEnum.VIP_CARD.getCode())) {
-                xjMoney = MoneyUtil.add(xjMoney, item.getPayMoney());
-                item.setCashPay(item.getPayMoney());
-            } else {
-                cardMoney = MoneyUtil.add(cardMoney, item.getPayMoney());
-                item.setCardPay(item.getPayMoney());
-
-            }
-
-
             // 订单欠款减去支付金额 设置实际欠款
             Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
             zkTotal=MoneyUtil.add(zkTotal, itemZkTotal);
-            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);
-            }
+            item.setStatus(orderStatus);
         }
-        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.setStatu(Dictionary.ORDER_STATU_DFK);
+        sysOrder.setStatu(orderStatus);
+        sysOrder.setStaffId(user.getSuId());
         sysOrder.setCompanyId(user.getCompanyId());
 
         sysOrder.setPayTime(new Date());
@@ -355,7 +342,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 +362,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) {
@@ -488,44 +476,54 @@
      * @author:姜友瑶
      */
     private void changeOrderStatu(SysOrder sourceOrder) {
+        int i = 1;
+        String orderStatus = Dictionary.ORDER_STATU_YFK;
+        double cashPayTotal = 0D;
+        double cardPayTotal = 0D;
+        for (SysOrderFlow flow : sourceOrder.getFlows()) {
+            flow.setFlowNo(codeService.getFlowCode() + "-" + i);
+            Long goodsId = sourceOrder.getItems().get(0).getGoodsId();
+            ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
+            flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
 
-      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;
+            if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) {
+                flow.setOrderId(sourceOrder.getOldOrderId());
+            } else {
+                flow.setOrderId(sourceOrder.getId());
             }
-        }
-        //更新收款状态
-        if(haQk){
-            sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
-        }else{
-            sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
+
+            flow.setVipId(sourceOrder.getVipId());
+            flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
+            // 若使用储值卡付款
+            if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+                if (flow.getCardId() != null) {
+                    MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
+                    cardPaySk(moneyCardUse, sourceOrder, flow);
+                    cardPayTotal += flow.getAmount().doubleValue();
+                }
+            }
+
+            if (SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod())) {
+                orderStatus = Dictionary.ORDER_STATU_QK;
+                sourceOrder.setArrears(flow.getAmount().doubleValue());
+            }
+
+            if (!SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod()) && !SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+                cashPayTotal += flow.getAmount().doubleValue();
+            }
+            sysOrderFlowDao.insert(flow);
+            i++;
         }
 
+        if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) {
+            orderStatus = Dictionary.ORDER_STATU_TK;
+        }
+
+        // 更新收款状态
+        sourceOrder.setStatu(orderStatus);
+        sourceOrder.setCardPay(cardPayTotal);
+        sourceOrder.setCashPay(cashPayTotal);
         sysOrderDao.update(sourceOrder);
-
-
 
     }
 
@@ -564,59 +562,50 @@
      * 使用充值卡付款操作
      *
      * @param sourceOrder
-     * @param userCard
-     * @param orderItem
-     * @param temp        设置是否扣除使用次数 true 扣除
+     * @param moneyCardUse
+     * @param flow
      */
-    private void cardPaySk(MoneyCardUse moneyCardUse, SysOrder sourceOrder,
-                           SysOrderItem orderItem) {
+    private void cardPaySk(MoneyCardUse moneyCardUse, SysOrder sourceOrder, SysOrderFlow flow) {
         // 判断商品是否在充值卡的限制购买,判断分类
-        if (!isInBangding(moneyCardUse, orderItem.getGoodsId())) {
-            throw new GlobleException(shoppingGoodsDao.selectById(orderItem.getGoodsId()).getName() + "不在"
-                    + moneyCardUse.getCardName() + "优惠中");
-        }
-        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
-        Double balance = moneyCardUse.getRealMoney();
-        if (moneyCardUse.getGiftMoney() != null) {
-            balance = MoneyUtil.add(balance, moneyCardUse.getGiftMoney());
-        }
-        // 判断金额是否足够支付
-        if (balance >= orderItem.getPayMoney()) {
-
-            MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
-
-            // 余额充足先从本金中扣除
-            if (moneyCardUse.getRealMoney() >= orderItem.getPayMoney()) {
-                double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), orderItem.getPayMoney());
-                moneyCardUse.setRealMoney(surplus);
-                moneyCardUseFlow.setTotal(0-orderItem.getPayMoney());
-
-            } else {
-                // 本金不够
-                double surplus = MoneyUtil.sub(orderItem.getPayMoney(), moneyCardUse.getRealMoney());
-                moneyCardUseFlow.setTotal(0- moneyCardUse.getRealMoney());
-                // 扣除所有本金
-                moneyCardUse.setRealMoney(0D);
-                moneyCardUse.setGiftMoney(MoneyUtil.sub(moneyCardUse.getGiftMoney(), surplus));
-                // 只要是用了赠送金额购买的就视为赠送套餐 18-12-01 jyy
-                orderItem.setIsFree(Dictionary.FLAG_YES);
-                moneyCardUseFlow.setGiftMoney(0-surplus);
+        sourceOrder.getItems().forEach(item -> {
+            if (!isInBangding(moneyCardUse, item.getGoodsId())) {
+                throw new GlobleException(shoppingGoodsDao.selectById(item.getGoodsId()).getName() + "不在" + moneyCardUse.getCardName() + "优惠中");
             }
+        });
 
-            //设置卡项使用流水
-            moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
-            moneyCardUseFlow.setOrderNo(sourceOrder.getOrderNo());
-            moneyCardUseFlow.setVipId(sourceOrder.getVipId());
-            moneyCardUseFlow.setTimes(-1);
-            moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
-            moneyCardUseFlow.setCreateTime(new Date());
-            moneyCardUseFlow.setOperationId(user.getSuId());
-            moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney()+moneyCardUse.getRealMoney());
-            moneyCardUseFlowDao.insert(moneyCardUseFlow);
+        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
 
+        MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
+        if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
+            if(moneyCardUse.getGiftMoney() >= flow.getAmount().doubleValue()) {
+                double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), flow.getAmount().doubleValue());
+                moneyCardUse.setGiftMoney(surplus);
+
+                moneyCardUseFlow.setGiftMoney(0D - flow.getAmount().doubleValue());
+            } else {
+                throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
+            }
         } else {
-            throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
+            if(moneyCardUse.getRealMoney() >= flow.getAmount().doubleValue()) {
+                double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), flow.getAmount().doubleValue());
+                moneyCardUse.setRealMoney(surplus);
+
+                moneyCardUseFlow.setTotal(0 - flow.getAmount().doubleValue());
+            } else {
+                throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
+            }
         }
+
+        //设置卡项使用流水
+        moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+        moneyCardUseFlow.setOrderNo(sourceOrder.getOrderNo());
+        moneyCardUseFlow.setVipId(sourceOrder.getVipId());
+        moneyCardUseFlow.setTimes(-1);
+        moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
+        moneyCardUseFlow.setCreateTime(new Date());
+        moneyCardUseFlow.setOperationId(user.getSuId());
+        moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney()+moneyCardUse.getRealMoney());
+        moneyCardUseFlowDao.insert(moneyCardUseFlow);
 
         // 达到使用次数后自动清空余额
         if (!moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_YES_Y)
@@ -629,6 +618,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 +729,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);
             }
         }
@@ -756,66 +752,54 @@
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void updateAfterMoney(SysOrder pageOrder) {
-
         SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId());
+
+        int i = 1;
+        double refundTotal = 0D;
+        double cardPayTotal = 0D;
+        double cashPayTotal = 0D;
+        for (SysOrderFlow flow : pageOrder.getFlows()) {
+            flow.setFlowNo(codeService.getFlowCode() + "-" + i);
+            Long goodsId = pageOrder.getItems().get(0).getGoodsId();
+            ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
+            flow.setFlowContent(goods.getName() + "等" + pageOrder.getItems().size() + "件产品");
+
+            flow.setOrderId(pageOrder.getId());
+            flow.setVipId(pageOrder.getVipId());
+            flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY);
+            // 若使用储值卡付款
+            if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+                if (flow.getCardId() != null) {
+                    cardPayTotal += flow.getAmount().doubleValue();
+                    MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
+                    cardPaySk(moneyCardUse, pageOrder, flow);
+                }
+            } else {
+                cashPayTotal += flow.getAmount().doubleValue();
+            }
+
+            refundTotal += flow.getAmount().doubleValue();
+            sysOrderFlowDao.insert(flow);
+            i++;
+        }
 
         boolean haQk=false;
 
-        double cardPayTotal=0D;
-        double carshPayTotal=0D;
-
-
-        for(SysOrderItem pageItem:pageOrder.getItems()){
-           SysOrderItem sourceItem=orderItemDao.selectById(pageItem.getId());
-
-           //结清
-           if(sourceItem.getArrears() == pageItem.getPayMoney()){
-
-               sourceItem.setStatus(Dictionary.ORDER_STATU_YFK);
-            }else if(sourceItem.getArrears() > pageItem.getPayMoney()) {
-               //未结清
-               sourceItem.setStatus(Dictionary.ORDER_STATU_QK);
-               haQk=true;
-           }else  if(sourceItem.getArrears() < pageItem.getPayMoney()) {
-
-               throw new GlobleException("支付金额不能大于欠款金额");
-
-           }
-
-           //更新卡支付
-           if (!pageItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY)) {
-                // 查询要支付的充值卡
-                MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(Long.parseLong(pageItem.getPayMethod()));
-                // 扣除付款卡金额并添加流水
-                cardPaySk(moneyCardUse, sourceOrder,  pageItem);
-               sourceItem.setCardPay((sourceItem.getCardPay()==null?0:sourceItem.getCardPay())+pageItem.getPayMoney());
-               cardPayTotal+=pageItem.getPayMoney();
-            }else{
-               carshPayTotal+=pageItem.getPayMoney();
-               sourceItem.setCashPay((sourceItem.getCashPay()==null?0:sourceItem.getCashPay())+pageItem.getPayMoney());
-           }
-
-            //更新订单明细状态
-            sourceItem.setArrears(sourceItem.getArrears()-pageItem.getPayMoney());
-
-            orderItemDao.update(sourceItem);
-
+        if (refundTotal == pageOrder.getArrears()) {
+            haQk = true;
         }
+
         //更新收款状态
         if(haQk){
-            sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
-        }else{
             sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
+        }else{
+            sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
         }
 
-        sourceOrder.setArrears(sourceOrder.getArrears()-carshPayTotal-cardPayTotal);
-        sourceOrder.setCardPay(sourceOrder.getCardPay()+cardPayTotal);
-        sourceOrder.setCashPay(sourceOrder.getCashPay()+carshPayTotal);
+        sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal);
+        sourceOrder.setCardPay(sourceOrder.getCardPay() + cardPayTotal);
+        sourceOrder.setCashPay(sourceOrder.getCashPay() + cashPayTotal);
         sysOrderDao.update(sourceOrder);
-
-        // 设置业绩
-        achieveNewService.addAchaeveByOrder(pageOrder);
-
     }
 
 
@@ -1049,6 +1033,7 @@
         taocanProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
         taocanProjUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC);
         taocanProjUse.setIsCourse(taocanShoppingGoods.getIsCourse());
+        taocanProjUse.setIsInfinite(taocanShoppingGoods.getIsInfinite());
         // 赠送和打折后金额为0的都视为赠送项目
         if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
             taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
@@ -1199,6 +1184,116 @@
     }
 
 
+    @Override
+    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);
+    }
+
+    @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