Helius
2021-01-07 d58a5eecbbf9db6a9469801273e537a55bc8e794
modify
3 files added
4 files modified
455 ■■■■ changed files
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java 10 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderFlow.java 155 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderFlowDao.java 8 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java 91 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderFlowDao.xml 57 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mybatis-config.xml 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html 133 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
@@ -115,6 +115,8 @@
     * 订单明细
     */
    private List<SysOrderItem> items;
    private List<SysOrderFlow> flows;
    /**
     * 会员姓名
     */
@@ -163,6 +165,14 @@
    private String type;
    public List<SysOrderFlow> getFlows() {
        return flows;
    }
    public void setFlows(List<SysOrderFlow> flows) {
        this.flows = flows;
    }
    public String getType() {
        return type;
    }
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderFlow.java
New file
@@ -0,0 +1,155 @@
package com.matrix.system.hive.bean;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * @author wzy
 * @date 2021-01-07
 **/
public class SysOrderFlow implements Serializable {
    private static final long serialVersionUID = 7519131902836023680L;
    public static final String PAY_METHOD_CARD = "会员卡";
    private String createBy;
    private Date createTime;
    private String updateBy;
    private Date updateTime;
    private Long id;
    private String flowNo;
    private Long orderId;
    private String flowContent;
    private String flowType;
    private BigDecimal amount;
    private String payMethod;
    private Long vipId;
    private Long cardId;
    private String isGift;
    public Long getCardId() {
        return cardId;
    }
    public void setCardId(Long cardId) {
        this.cardId = cardId;
    }
    public String getIsGift() {
        return isGift;
    }
    public void setIsGift(String isGift) {
        this.isGift = isGift;
    }
    public String getCreateBy() {
        return createBy;
    }
    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getUpdateBy() {
        return updateBy;
    }
    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getFlowNo() {
        return flowNo;
    }
    public void setFlowNo(String flowNo) {
        this.flowNo = flowNo;
    }
    public Long getOrderId() {
        return orderId;
    }
    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }
    public String getFlowContent() {
        return flowContent;
    }
    public void setFlowContent(String flowContent) {
        this.flowContent = flowContent;
    }
    public String getFlowType() {
        return flowType;
    }
    public void setFlowType(String flowType) {
        this.flowType = flowType;
    }
    public BigDecimal getAmount() {
        return amount;
    }
    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }
    public String getPayMethod() {
        return payMethod;
    }
    public void setPayMethod(String payMethod) {
        this.payMethod = payMethod;
    }
    public Long getVipId() {
        return vipId;
    }
    public void setVipId(Long vipId) {
        this.vipId = vipId;
    }
}
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderFlowDao.java
New file
@@ -0,0 +1,8 @@
package com.matrix.system.hive.dao;
import com.matrix.system.hive.bean.SysOrderFlow;
public interface SysOrderFlowDao {
    public int insert(SysOrderFlow sysOrderFlow);
}
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -93,6 +93,9 @@
    @Autowired
    private ShoppingGoodsService shoppingGoodsService;
    @Autowired
    private SysOrderFlowDao sysOrderFlowDao;
    @Override
    public int add(SysOrder sysOrder) {
        return sysOrderDao.insert(sysOrder);
@@ -180,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());
            }
@@ -191,27 +194,28 @@
            // 订单欠款减去支付金额 设置实际欠款
            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());
//            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);
            } else {
                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());
@@ -499,40 +503,43 @@
     */
    private void changeOrderStatu(SysOrder sourceOrder) {
      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("请选择支付的会员卡");
                    }
        for (SysOrderFlow flow : sourceOrder.getFlows()) {
            // 若使用储值卡付款
            if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
                }
                orderItemDao.update(updateItem);
            }else {
                haQk=true;
            }
        }
//      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(haQk){
            sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
        }else{
            sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
        }
        sysOrderDao.update(sourceOrder);
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderFlowDao.xml
New file
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.matrix.system.hive.dao.SysOrderFlowDao">
    <resultMap id="SysOrderFlowMap" type="SysOrderFlow">
        <id property="id" column="id" />
        <result property="createBy" column="create_by" />
        <result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" />
        <result property="updateTime" column="update_time" />
        <result property="flowNo" column="flow_no" />
        <result property="orderId" column="order_id" />
        <result property="flowContent" column="flow_content" />
        <result property="flowType" column="flow_type" />
        <result property="amount" column="amount" />
        <result property="vipId" column="vip_id" />
        <result property="payMethod" column="pay_method" />
        <result property="cardId" column="card_id" />
        <result property="isGift" column="is_gift" />
    </resultMap>
    <insert id="insert" parameterType="SysOrderFlow" useGeneratedKeys="true"
            keyProperty="id">
        INSERT INTO sys_order_flow (
        ID,
        create_by,
        create_time,
        update_by,
        update_time,
        flow_no,
        order_id,
        flow_content,
        flow_type,
        amount,
        vip_id,
        pay_method,
        card_id,
        is_gift
        )
        VALUES (
        #{id},
        #{createBy},
        now(),
        #{updateBy},
        now(),
        #{flowNo},
        #{orderId},
        #{flowContent},
        #{flowType},
        #{amount},
        #{vipId},
        #{payMethod},
        #{cardId},
        #{isGift}
        )
    </insert>
</mapper>
zq-erp/src/main/resources/mybatis/mybatis-config.xml
@@ -63,5 +63,6 @@
        <typeAlias alias="ServicesFlow"  type="com.matrix.system.hive.bean.ServicesFlow" />
        <typeAlias alias="VipAnswer"  type="com.matrix.system.hive.bean.VipAnswer" />
        <typeAlias alias="SysWorktime"  type="com.matrix.system.hive.bean.SysWorktime" />
        <typeAlias alias="SysOrderFlow"  type="com.matrix.system.hive.bean.SysOrderFlow" />
    </typeAliases>
</configuration>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
@@ -112,6 +112,10 @@
             border: 3px solid;
             border-color: transparent #4884ff #4884ff transparent;
         }
        .el-dialog__body {
            padding-top: 10px !important;
        }
    </style>
</head>
<body>
@@ -451,9 +455,9 @@
    </el-drawer>
    <el-dialog title="收款" :visible.sync="dialogSettleVisible">
        <el-row type="flex" align="middle" style="padding: 10px 0;">
        <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;">¥ 80</span></el-col>
            <el-col :span="10" style="text-align: center; line-height: 50px;"><span style="color: red; font-size: 20px;">¥ {{order.payMoney}}</span></el-col>
        </el-row>
        <el-row type="flex" align="middle" style="padding: 10px 0;">
@@ -463,7 +467,7 @@
                    <ul>
                        <span v-for="(item, index) in payMethods">
                            <el-popover
                                    :disabled="item.type != 6"
                                    :disabled="item.type != '会员卡'"
                                    placement="bottom"
                                    trigger="hover"
                                    @hide="popoverHide(item)">
@@ -486,13 +490,13 @@
            </el-col>
        </el-row>
        <el-row type="flex" align="middle" style="padding: 10px 0;">
        <el-row type="flex" align="middle" style="padding: 10px 0 50px 0;">
            <el-col :span="5" style="text-align: center;">支付金额</el-col>
            <el-col :span="15">
                <el-row style="line-height: 50px;" v-for="(item, index) in payMoneys">
                    <el-col :span="5" style="text-align: right; padding-right: 10px; font-size: 12px;">{{item.value}}</el-col>
                    <el-col :span="8"><el-input v-model="item.money"></el-input></el-col>
                    <el-col :span="5" style="margin-left: 10px;" v-if="item.type == 6">余额:<span class="arrears">¥ {{item.balance}}</span></el-col>
                    <el-col :span="6" style="text-align: right; padding-right: 10px; font-size: 12px;">{{item.value}}</el-col>
                    <el-col :span="8"><el-input v-model.number="item.money"></el-input></el-col>
                    <el-col :span="6" style="margin-left: 10px;" v-if="item.type == '会员卡'">{{item.isGift == 1 ? '赠送余额' : '余额' }}:<span class="arrears">¥ {{item.balance}}</span></el-col>
                </el-row>
            </el-col>
        </el-row>
@@ -552,31 +556,31 @@
            payMethods: [{
                value: '现金支付',
                isActive: false,
                type: 1
                type: '现金支付'
            }, {
                value: '微信',
                isActive: false,
                type: 2
                type: '微信'
            }, {
                value: '支付宝',
                isActive: false,
                type: 3
                type: '支付宝'
            }, {
                value: '银行卡',
                isActive: false,
                type: 4
                type: '银行卡'
            }, {
                value: '团购',
                isActive: false,
                type: 5
                type: '团购'
            }, {
                value: '会员卡',
                isActive: false,
                type: 6
                type: '会员卡'
            }, {
                value: '欠款',
                isActive: false,
                type: 7
                type: '欠款'
            },],
            achieveList: [],
            //会员可用的充值卡
@@ -707,11 +711,24 @@
                        contentType: 'application/x-www-form-urlencoded',
                        url: basePath + '/admin/moneyCardUse/getUseMoneyCard',
                        callback: function (data) {
                            console.log(_this.moneyCards)
                            if (data.rows.length > 0) {
                                data.rows.forEach(function (item, index, input) {
                                    item.showLable = item.cardName + "-余额:" + (item.realMoney + item.giftMoney)
                                    item.showLable = item.cardName + "-余额:" + (item.realMoney)
                                    item.uuid = MTools.uuid();
                                    if (item.giftMoney != 0) {
                                        var children = [];
                                        var gift = {};
                                        gift.id = item.id;
                                        gift.giftMoney = item.giftMoney;
                                        gift.showLable = item.cardName + '-赠送金额' + item.giftMoney;
                                        gift.cardName = item.cardName;
                                        gift.isGift = 1;
                                        gift.uuid = MTools.uuid();
                                        children.push(gift);
                                        item.children = children;
                                    }
                                });
                                console.log(data.rows)
                                _this.moneyCards = data.rows;
                            }
@@ -859,21 +876,30 @@
                    //检查支付方式
                    let hasPayMethod=true;
                    _this.order.items.forEach(item=>{
                        if(!item.payMethod){
                            hasPayMethod=false;
                            return;
                    // let hasPayMethod=true;
                    // _this.order.items.forEach(item=>{
                    //     if(!item.payMethod){
                    //         hasPayMethod=false;
                    //         return;
                    //     }
                    // });
                    // if(!hasPayMethod){
                    //     this.$message.warning("请选择支付方式");
                    //     return false;
                    // }
                    let flows = []
                    _this.payMoneys.forEach(item=>{
                        let flow = {};
                        flow.payMethod = item.type;
                        flow.amount = item.money;
                        if (item.type == 6) {
                            flow.isGift = item.isGift;
                            flow.cardId = item.id;
                        }
                    });
                    if(!hasPayMethod){
                        this.$message.warning("请选择支付方式");
                        return false;
                    }
                        flows.push(flow)
                    })
                    _this.order.flows = flows;
                    //匹配业绩
@@ -1159,37 +1185,44 @@
                    Vue.set(item, 'isActive', true)
                }
            },
            handleCheckChange(click, checked) {
            handleCheckChange(clickNode, checked) {
                let _this = this;
                let selectNodes = checked.checkedNodes;
                this.treeSelect = selectNodes;
                let payMoneys = this.payMoneys;
                for(var i = 0; i < payMoneys.length; i++) {
                    if(payMoneys[i].type == 6) {
                        _this.payMoneys.splice(i, 1);
                let nodes = checked.checkedNodes;
                _this.treeSelect = nodes;
                var index = -1;
                // 判断点击节点是否在已展示支付方式中
                for(var i = 0; i < _this.payMoneys.length; i++) {
                    let node = _this.payMoneys[i];
                    if (node.uuid === clickNode.uuid) {
                        index = i;
                        break;
                    }
                }
                for(var i = 0; i < selectNodes.length; i++) {
                    var node = selectNodes[i];
                // 若点击节点在选中节点中,且已展示支付方式不存在,则添加
                if (nodes.indexOf(clickNode) > -1 && index === -1) {
                    var node = clickNode;
                    var item = {};
                    if (node.isGift) {
                    item.value = node.cardName;
                    item.balance = node.money;
                        item.balance = node.giftMoney;
                        item.isGift = 1;
                    } else {
                        item.value = node.cardName;
                        item.balance = node.realMoney;
                    item.isGift = 0;
                    item.type = 6;
                    item.id = node.id;
                    if (node.giftMoney != 0) {
                        var giftItem = {};
                        giftItem.value = node.cardName + "赠送金额";
                        giftItem.id = node.id;
                        giftItem.balance = node.giftMoney;
                        giftItem.isGift = 1;
                        giftItem.type = 6;
                        _this.payMoneys.push(giftItem);
                    }
                    item.type = '会员卡';
                    item.id = node.id;
                    item.uuid = clickNode.uuid;
                    _this.payMoneys.push(item);
                }
                // 若点击节点不存在选中节点中,且已展示支付方式中存在,则移除
                if (nodes.indexOf(clickNode) === -1 && index > -1) {
                    _this.payMoneys.splice(index, 1);
                }
            },
            submitPay() {
            }