From e423d56d730db1baed24f3f7dbbc4141038776b6 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Fri, 18 Jun 2021 22:12:03 +0800
Subject: [PATCH] 修复每日业绩bug和优化赠送业绩计算方式
---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 67 ++++++++++++++++++++++++++++-----
1 files changed, 56 insertions(+), 11 deletions(-)
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..2d5cf4d 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;
@@ -173,6 +172,9 @@
// 下单人是否计算消耗业绩
boolean flag = projServicesService.skipServiceOrderStep(Dictionary.SALE_MAN_IS_CONSUME_ACHIEVE);
+
+
+
for (SysBeauticianState beauticianState : beauticianStateList) {
// 是否第一次计算改美疗师
boolean isFirst = true;
@@ -184,9 +186,17 @@
achieveNew.setVipId(projServices.getVipId());
// 是否为赠送业绩
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());
@@ -197,14 +207,17 @@
achieveNew.setCompanyId(projServices.getCompanyId());
achieveNew.setShoppingGoodsId(projUse.getProjId());
+
if (flag) {
// if (!achieveId.equals(beauticianState.getStaffId())) {
- AchieveNew saleMan = new AchieveNew();
- BeanUtils.copyProperties(achieveNew, saleMan);
- saleMan.setBeaultId(achieveId);
+ AchieveNew saleManAchieve = new AchieveNew();
+ BeanUtils.copyProperties(achieveNew, saleManAchieve);
+ saleManAchieve.setBeaultId(achieveId);
- saleAchieveNumOfPeople(saleMan);
- achieveNewList.add(saleMan);
+ saleAchieveNumOfPeople(saleManAchieve);
+ //销售人员不计算项目提成
+ saleManAchieve.setProjPercentage(0D);
+ achieveNewList.add(saleManAchieve);
// }
}
@@ -239,6 +252,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
@@ -264,7 +307,6 @@
for (AchieveNew achieveNew : orderItem.getAchieveList()) {
if (achieveNew !=null && achieveNew.getGoodsCash()!=null) {
buildAchieve(pageOrder, orderItem, achieveNew);
- // 新增美疗师业绩
achieveNewList.add(achieveNew);
}
}
@@ -290,7 +332,10 @@
}
achieveNew.setVipId(pageOrder.getVipId());
- achieveNew.setSaleId(pageOrder.getStaffId());
+ if(achieveNew.getSaleId()==null){
+ achieveNew.setSaleId(pageOrder.getStaffId());
+ }
+
if (pageOrder.getPayTime() != null) {
achieveNew.setDatatime(pageOrder.getPayTime());
--
Gitblit v1.9.1