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