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/resources/mybatis/mapper/hive/SysOrderFlowDao.xml                |   57 +++++++
 zq-erp/src/main/resources/mybatis/mybatis-config.xml                             |    1 
 zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java                   |   10 +
 zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderFlow.java               |  155 +++++++++++++++++++
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html |  137 ++++++++++------
 zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderFlowDao.java             |    8 +
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java |   95 ++++++-----
 7 files changed, 367 insertions(+), 96 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
index 9c16a42..fc2f294 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
+++ b/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;
 	}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderFlow.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderFlow.java
new file mode 100644
index 0000000..6292e8f
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderFlow.java
@@ -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;
+    }
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderFlowDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderFlowDao.java
new file mode 100644
index 0000000..c6b11db
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderFlowDao.java
@@ -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);
+}
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 b64d15a..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
@@ -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());
-                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());
@@ -499,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);
 
 
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderFlowDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderFlowDao.xml
new file mode 100644
index 0000000..0a4e880
--- /dev/null
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderFlowDao.xml
@@ -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>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mybatis-config.xml b/zq-erp/src/main/resources/mybatis/mybatis-config.xml
index ac77a00..66fe1b7 100644
--- a/zq-erp/src/main/resources/mybatis/mybatis-config.xml
+++ b/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>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
index bd53d6f..48a3070 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
+++ b/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 = {};
-                    item.value = node.cardName;
-                    item.balance = node.money;
-                    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);
+                    if (node.isGift) {
+                        item.value = node.cardName;
+                        item.balance = node.giftMoney;
+                        item.isGift = 1;
+                    } else {
+                        item.value = node.cardName;
+                        item.balance = node.realMoney;
+                        item.isGift = 0;
                     }
+                    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() {
             }

--
Gitblit v1.9.1