wzy
2021-01-10 16da0ad1fda1dffa3019425a6887d38ed4217f44
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -464,6 +464,8 @@
    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();
@@ -478,6 +480,7 @@
                if (flow.getCardId() != null) {
                    MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
                    cardPaySk(moneyCardUse, sourceOrder, flow);
                    cardPayTotal += flow.getAmount().doubleValue();
                }
            }
@@ -485,12 +488,18 @@
                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++;
        }
        // 更新收款状态
        sourceOrder.setStatu(orderStatus);
        sourceOrder.setCardPay(cardPayTotal);
        sourceOrder.setCashPay(cashPayTotal);
        sysOrderDao.update(sourceOrder);
    }
@@ -720,66 +729,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()));
                // 扣除付款卡金额并添加流水 TODO 补交卡支付
//                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);
    }