From 1d917e41e6a31a535932fbfde6324fe4bdf6ed8b Mon Sep 17 00:00:00 2001 From: jyy <jyy> Date: Fri, 04 Jun 2021 14:55:15 +0800 Subject: [PATCH] 业绩规则3 --- zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html | 184 ++++++++++++++++++++++++++++-------- zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java | 2 zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java | 2 zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 43 +++++++ zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 17 ++ zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java | 2 6 files changed, 200 insertions(+), 50 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 835d02c..f160d12 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 @@ -42,7 +42,7 @@ private Date orderTime; /** - * 收款 + * calculationType: 1, */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") private Date payTime; diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java index f0c6d88..6b84084 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java @@ -1,6 +1,7 @@ package com.matrix.system.hive.service.imp; import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.JSONUtil; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.PaginationVO; @@ -16,13 +17,11 @@ import com.matrix.system.common.dao.SysUsersDao; import com.matrix.system.constance.Dictionary; import com.matrix.system.hive.bean.*; -import com.matrix.system.hive.dao.AchieveNewDao; -import com.matrix.system.hive.dao.ShoppingGoodsDao; -import com.matrix.system.hive.dao.SysBeauticianStateDao; -import com.matrix.system.hive.dao.SysProjUseDao; +import com.matrix.system.hive.dao.*; import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.hive.service.AchieveNewService; import com.matrix.system.hive.service.SysProjServicesService; +import com.matrix.system.hiveErp.pojo.AchieveRuleItem; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -185,8 +184,14 @@ // 是否为赠送业绩 if (Dictionary.TAOCAN_SOURCE_ZS.equals(projUse.getSource())) { achieveNew.setFreeConsume(projUse.getPrice()*beauticianState.getCount()); + //计算提成 + achieveNew.setProjPercentage( + calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_ZS,achieveNew.getFreeConsume(),beauticianState.getProjId())); } else { achieveNew.setHisConsume(projUse.getPrice()*beauticianState.getCount()); + //计算提成 + achieveNew.setProjPercentage( + calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_BJ,achieveNew.getHisConsume(),beauticianState.getProjId())); } achieveNew.setT2(projUse.getSource()); achieveNew.setDatatime(new Date()); @@ -239,6 +244,36 @@ } + @Autowired + AchieveRuleDao achieveRuleDao; + + private Double calculationProjPercentage(int type, Double consume, Long goodsId) { + ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(goodsId); + if(shoppingGoods.getAchieveRuleId()!=null){ + + AchieveRule achieveRule = achieveRuleDao.selectById(shoppingGoods.getAchieveRuleId()); + if(achieveRule!=null){ + List<AchieveRuleItem> achieveRuleItems = JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class); + double percentage=0D; + for(AchieveRuleItem item:achieveRuleItems){ + if(item.getAchieveType()==type + && (item.getLower() == consume + || (item.getLower()< consume && consume < item.getUpper() ))){ + + if(AchieveRuleItem.ACHIEVE_TYPE_FIXED==item.getCalculationType()){ + percentage=item.getAchieve(); + }else{ + percentage= consume * (item.getAchieve()/100); + } + break; + } + } + return percentage; + } + } + return 0D; + } + /** * 顾问人头业绩 * @param achieveNew 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 3d19de0..93553f8 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 @@ -1205,13 +1205,20 @@ } else { puse.setPrice(goodsAssemble.getPrice() * zk); } - puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount()))); + // 赠送和打折后金额为0的都视为赠送项目 if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) { puse.setSource(Dictionary.TAOCAN_SOURCE_GM); } else { + //赠送产品按原价计算消耗 puse.setSource(Dictionary.TAOCAN_SOURCE_ZS); + if (taocanId == null) { + puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() ); + } else { + puse.setPrice(goodsAssemble.getPrice()); + } } + puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount()))); puse.setFailTime(failTime); sysProjUseDao.insert(puse); return puse; @@ -1291,18 +1298,22 @@ puse.setVipId(order.getVipId()); puse.setStatus(Dictionary.TAOCAN_STATUS_YX); puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM); - puse.setBalance(sysOrderItem.getZkPrice()); - puse.setPrice(sysOrderItem.getZkPrice()); + + puse.setProjName(sysOrderItem.getShoppingGoods().getName()); // 赠送和打折后金额为0的都视为赠送项目 if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) { puse.setSource(Dictionary.TAOCAN_SOURCE_GM); + puse.setPrice(sysOrderItem.getZkPrice()); } else { puse.setSource(Dictionary.TAOCAN_SOURCE_ZS); + //赠送产品按原价计算消耗 + puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice()); } // 设置失效时间 Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null); puse.setFailTime(invalidTime); + puse.setBalance(sysOrderItem.getShoppingGoods().getSealPice()*puse.getSurplusCount()); sysProjUseDao.insert(puse); } diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java index 8d3d386..ee9deaf 100644 --- a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java +++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java @@ -92,7 +92,7 @@ @GetMapping("/removeById/{id}") public AjaxResult removeById(@PathVariable Long id) { achieveRuleDao.deleteById(id); - return AjaxResult.buildFailInstance("删除成功"); + return AjaxResult.buildSuccessInstance("删除成功"); } diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java index 6b67b4e..8eec4db 100644 --- a/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java +++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java @@ -16,7 +16,7 @@ /** * 类型,2赠送消耗 */ - public static final int ACHIEVE_TYPE_CONSUME=2; + public static final int ACHIEVE_TYPE_ZS =2; /** * 计算类型 1 固定值 */ diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html index 1c379bf..c82e927 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html @@ -44,7 +44,7 @@ <div class="panel-body" id="app"> <el-row class="buttonPanel"> - <el-button @click="openAdd" type="primary">新增</el-button> + <el-button @click="openForm('add')" type="primary">新增</el-button> </el-row> <el-row class="rowPanel"> @@ -62,8 +62,7 @@ <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange"> <el-table-column prop="name" - label="规则名称" - width="180"> + label="规则名称"> </el-table-column> <el-table-column prop="updateTime" @@ -86,12 +85,13 @@ </el-table-column> <el-table-column prop="createBy" - label="创建人"> + label="创建人" + width="180"> </el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> - <el-button type="text" @click="openModify(scope.$index, scope.row)" size="small">修改</el-button> + <el-button type="text" @click="openForm('modify', scope.row)" size="small">修改</el-button> <el-button type="text" @click="remove(scope.$index, scope.row)" size="small">删除</el-button> </template> </el-table-column> @@ -110,16 +110,73 @@ </el-row> <el-dialog - title="title" + :title="title" :visible.sync="dialogVisible" width="60%" :before-close="handleClose"> - <span>这是一段信息</span> + + <el-form :model="formData" ref="ruleForm" label-width="100px" class="demo-ruleForm"> + + <el-form-item label="规则名称" > + <el-input style="width: 200px" v-model="formData.name"></el-input> + <el-button type="primary" @click="addRuleItem()" size="small">添加规则</el-button> + </el-form-item> + + <el-form-item label="绩效方案" > + <el-table + :data="formData.ruleItemList" + style="width: 100%"> + <el-table-column + label="业绩类型" + > + <template slot-scope="scope"> + <el-select v-model="scope.row.achieveType" placeholder="请选择业绩类型"> + <el-option label="本金消耗" :value="1"></el-option> + <el-option label="赠送消耗" :value="2"></el-option> + </el-select> + </template> + </el-table-column> + <el-table-column + label="计算方式" + > + <template slot-scope="scope"> + <el-select v-model="scope.row.calculationType" placeholder="请选择计算方式"> + <el-option label="固定金额" :value="1"></el-option> + <el-option label="百分比(%)" :value="2"></el-option> + </el-select> + </template> + </el-table-column> + <el-table-column + label="区间" + width="240"> + <template slot-scope="scope"> + <el-input style="width: 100px" v-model="scope.row.lower"></el-input> + - + <el-input style="width: 100px" v-model="scope.row.upper"></el-input> + </template> + </el-table-column> + <el-table-column + label="业绩"> + <template slot-scope="scope"> + <el-input v-model="scope.row.achieve"></el-input> + </template> + </el-table-column> + <el-table-column label="操作"> + <template slot-scope="scope"> + <el-button type="text" @click="removeRuleItem(scope.$index, scope.row)" size="small">删除</el-button> + </template> + </el-table-column> + </el-table> + </el-form-item> + + + + </el-form> <span slot="footer" class="dialog-footer"> - <el-button @click="dialogVisible = false">取 消</el-button> - <el-button type="primary" @click="dialogVisible = false">确 定</el-button> - </span> - </el-dialog> + <el-button @click="dialogVisible = false">取 消</el-button> + <el-button type="primary" @click="submitForm">确 定</el-button> + </span> +</el-dialog> </div> @@ -151,33 +208,19 @@ title: '', formData: { name: '', - ruleItemList: [this.defaultRuleItem] + ruleItemList: [ + { + achieveType: 1, + calculationType: 1, + lower: '', + upper: '', + achieve: '', + } + ] }, - defaultRuleItem: { - achieveType: 1, - calculationType: 1, - Lower: '', - upper: '', - achieve: '', - }, + type: '', - achieveTypeList: [{ - label: '本金消耗', - value: 1 - } - , { - label: '赠送消耗', - value: 2 - }], - calculationTypeList: [ - { - label: '固定值', - value: 1 - } - , { - label: '百分比', - value: 2 - }] + }, created: function () { this.loadData(); @@ -249,12 +292,11 @@ type: 'GET', url: basePath + "/admin/achieveRule/removeById/" + row.id, callback: function (data) { + _this.loadData(); _this.$message({ type: 'success', message: data.info, }); - debugger - _this.loadData(); } }); }).catch(() => { @@ -269,7 +311,8 @@ if (type == 'add') { this.title = '新增规则'; - this.$refs['formName'].resetFields(); + //this.$refs['formName'].resetFields(); + } else { this.title = '修改规则'; this.formData = data; @@ -278,13 +321,74 @@ this.dialogVisible = true; }, //提交表单 - submit() { + submitForm() { let url = basePath + "/admin/achieveRule/add"; if (this.type == 'modify') { url = basePath + "/admin/achieveRule/update"; } + let data=this.formData; + if(MTools.isBlank(data.name)){this.$message.error("请输入规则名称");return;} + if(data.ruleItemList.length<1){ + this.$message.error("最少需要一个计算规则");;return;} + let flag=true; + data.ruleItemList.forEach(item=>{ + if(MTools.isBlank(item.lower)){ + this.$message.error("请输入业绩下限");flag=false;} + else if(MTools.isBlank(item.upper)){ + this.$message.error("请输入业绩上限");flag=false;} + else if(MTools.isBlank(item.achieve)){ + this.$message.error("请输入业绩金额或者比例");flag=false;} + }) + if(flag){ + var _this=this; + AjaxProxy.requst({ + app: _this, + data:data, + url:url, + callback: function (data) { + _this.$message.success(data.info); + _this.loadData(); + _this.dialogVisible = false; + _this.formData={ + name: '', + ruleItemList: [ + { + achieveType: 1, + calculationType: 1, + lower: '', + upper: '', + achieve: '', + } + ] + }; + } + }); + + } + }, + handleClose(done) { + this.$confirm('确认关闭?') + .then(_ => { + done(); + }) + .catch(_ => { + }); + }, + addRuleItem(){ + this.formData.ruleItemList.push( + { + achieveType: 1, + calculationType: 1, + lower: '', + upper: '', + achieve: '', + } + ); + }, + removeRuleItem(index,row){ + this.formData.ruleItemList.splice(index, 1); }, -- Gitblit v1.9.1