Helius
2021-01-09 530885dff056bb75bea793a84db6ae486124a24a
modify
3 files modified
179 ■■■■ changed files
zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java 7 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java 89 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html 83 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
@@ -18,6 +18,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -184,6 +185,10 @@
    public String toBj(Long id) {
        // 根据id查到对应的订单信息
        SysOrder order = orderService.findById(id);
        SysOrderItem item = new SysOrderItem();
        item.setOrderId(order.getId());
        List<SysOrderItem> items = orderItemService.findByModel(item);
        order.setItems(items);
        WebUtil.getRequest().setAttribute("order", order);
        return "admin/hive/beautySalon/bj-form";
@@ -214,7 +219,7 @@
     */
    @RequestMapping(value = "/bj")
    public @ResponseBody
    AjaxResult bj(SysOrder order) throws GlobleException {
    AjaxResult bj(@RequestBody SysOrder order) throws GlobleException {
        orderService.updateAfterMoney(order);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "补交成功");
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);
        if (refundTotal == pageOrder.getArrears()) {
               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(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.setArrears(sourceOrder.getArrears() - refundTotal);
        sourceOrder.setCardPay(sourceOrder.getCardPay()+cardPayTotal);
        sourceOrder.setCashPay(sourceOrder.getCashPay()+carshPayTotal);
        sourceOrder.setCashPay(sourceOrder.getCashPay() + cashPayTotal);
        sysOrderDao.update(sourceOrder);
        // 设置业绩
        achieveNewService.addAchaeveByOrder(pageOrder);
    }
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html
@@ -58,7 +58,7 @@
    </style>
</head>
<div class="panel-body" id="app">
    <el-dialog title="还款" :visible.sync="dialogSettleVisible" show-close>
    <el-dialog title="还款" :visible.sync="dialogSettleVisible" :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false">
        <el-row type="flex" align="middle" style="padding: 0 0 10px 0;">
            <el-col :span="5" style="text-align: center;">还款金额</el-col>
            <el-col :span="10" style="text-align: center; line-height: 50px;"><span style="color: red; font-size: 20px;">¥ {{order.arrears}}</span></el-col>
@@ -110,7 +110,7 @@
        </el-row>
        <el-row style="text-align: center; margin: 10px 0 0 0">
            <el-button type="primary" @click="">确认收款</el-button>
            <el-button type="primary" @click="submitBj">确认收款</el-button>
        </el-row>
    </el-dialog>
</div>
@@ -164,15 +164,85 @@
            },
            treeSelect : [],
            payMoneys : [],
            printPaper : true,
            printPaper : false,
        },
        created : function() {
            this.order = /*[[${order}]]*/
            this.getVipMoneyCards();
            console.log(this.order)
        },
        methods : {
            submitBj() {
                let _this = this;
                if (_this.payMoneys.length > 0) {
                    let flows = []
                    var total = 0;
                    _this.payMoneys.forEach(item => {
                        let flow = {};
                        flow.payMethod = item.type;
                        if (!item.money) {
                            this.$message.warning("请输入" + item.type + "的付款金额");
                            return false;
                        }
                        flow.amount = item.money;
                        if (item.type == '储值卡'){
                            flow.isGift = item.isGift;
                            flow.cardId = item.id;
                        }
                        total += item.money;
                        flows.push(flow)
                    })
                    if (total > _this.order.arrears) {
                        this.$message.warning("输入付款总金额大于应还金额");
                        return false;
                    }
                    _this.order.flows = flows;
                } else {
                    this.$message.warning("请选择支付方式");
                    return false;
                }
                let url = basePath + "/admin/moneyCardUse/bj";
                AjaxProxy.requst({
                    app: _this,
                    data: _this.order,
                    url: url,
                    callback: function (data) {
                        if (_this.printPaper) {
                            _this.print();
                        }
                        if(parent.myGrid) {
                            parent.myGrid.serchData();
                        }
                        if (parent.app) {
                            parent.app.orderQuery();
                        }
                        _this.closeFrame();
                    }
                });
            },
            print() {
                let _this = this;
                if (_this.order.id) {
                    layer.open({
                        type: 2,
                        title: "打印订单",
                        area: ['250px', '550px'],
                        maxmin: true,
                        content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + this.order.id],
                        cancel: function (index, layero) {
                            _this.closeFram();
                        }
                    });
                } else {
                    this.$message.warning("请先挂单在打印");
                }
            },
            getVipMoneyCards() {
                let _this = this;
                if (_this.order.vipId) {
@@ -278,6 +348,9 @@
                    _this.payMoneys.splice(index, 1);
                }
            },
            closeFrame() {
                parent.layer.close(parent.layer.getFrameIndex(window.name));
            },
        }
    });
    //]]>