zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderFlow.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderFlowDao.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderFlowDao.xml | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/resources/mybatis/mybatis-config.xml | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html | ●●●●● 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()); 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); 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 = {}; 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() { }