From 7ef344dbe8fa92d479477d3cec483872f8080b77 Mon Sep 17 00:00:00 2001
From: jyy <jyy>
Date: Tue, 27 Jul 2021 12:01:27 +0800
Subject: [PATCH] Merge branch 'score_shop' into api_score_meger
---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 136 ++++++++++++++++++++++++++++++++++++++++----
1 files changed, 122 insertions(+), 14 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 2c4978c..e302e9f 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,5 +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;
@@ -8,19 +10,23 @@
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.vo.UserAchieveVo;
+import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.constance.AppConstance;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
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;
+import java.math.BigDecimal;
import java.util.*;
/**
@@ -42,6 +48,9 @@
@Autowired
private SysProjUseDao sysProjUseDao;
+
+ @Autowired
+ private SysProjServicesService projServicesService;
@Override
public int add(AchieveNew achieveNew) {
@@ -161,6 +170,12 @@
Long achieveId = projServices.getCreateStaffId();
+ // 下单人是否计算消耗业绩
+ boolean flag = projServicesService.skipServiceOrderStep(Dictionary.SALE_MAN_IS_CONSUME_ACHIEVE);
+
+
+
+
for (SysBeauticianState beauticianState : beauticianStateList) {
// 是否第一次计算改美疗师
boolean isFirst = true;
@@ -172,9 +187,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.setHisConsume(new BigDecimal(projUse.getPrice()*beauticianState.getCount()).setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue());
+ //计算提成
+ achieveNew.setProjPercentage(
+ calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_BJ,achieveNew.getHisConsume(),beauticianState.getProjId()));
}
achieveNew.setT2(projUse.getSource());
achieveNew.setDatatime(new Date());
@@ -184,18 +207,41 @@
achieveNew.setShopId(projServices.getShopId());
achieveNew.setCompanyId(projServices.getCompanyId());
achieveNew.setShoppingGoodsId(projUse.getProjId());
- achieveNew.setNumberOfPeople(1D / size);
+
+
+ if (flag) {
+// if (!achieveId.equals(beauticianState.getStaffId())) {
+ AchieveNew saleManAchieve = new AchieveNew();
+ BeanUtils.copyProperties(achieveNew, saleManAchieve);
+ saleManAchieve.setBeaultId(achieveId);
+
+ saleAchieveNumOfPeople(saleManAchieve);
+ //销售人员不计算项目提成
+ saleManAchieve.setProjPercentage(0D);
+ achieveNewList.add(saleManAchieve);
+// }
+ }
+
+ List<AchieveNew> beautyList = achieveNewDao.selectBeautyManAchieveList(beauticianState.getStaffId(), projServices.getVipId(), new Date());
+ if (CollUtil.isEmpty(beautyList)) {
+ achieveNew.setNumberOfPeople(1D / size);
+ } else {
+ achieveNew.setNumberOfPeople(1D / (size + beautyList.size()));
+ achieveNewDao.updateAchieveNumOfPeople(beautyList, achieveNew.getNumberOfPeople());
+ }
+
achieveNew.setProjNum(1);
if (StringUtils.isNotBlank(beauticianState.getExtract())) {
achieveNew.setProjPercentage(Double.parseDouble(beauticianState.getExtract()));
}
if (isFirst && beauticianState.getEndTime() != null && beauticianState.getBeginTime() != null) {
- long timeSpace = beauticianState.getEndTime().getTime() - beauticianState.getBeginTime().getTime();
- if (timeSpace > 0) {
- achieveNew.setProjTime((int) (timeSpace / 1000 / 60));
- } else {
- achieveNew.setProjTime(1);
- }
+// long timeSpace = beauticianState.getEndTime().getTime() - beauticianState.getBeginTime().getTime();
+// if (timeSpace > 0) {
+// achieveNew.setProjTime((int) (timeSpace / 1000 / 60));
+// } else {
+// achieveNew.setProjTime(1);
+// }
+ achieveNew.setProjTime(beauticianState.getExcTime());
isFirst = false;
}
achieveNewList.add(achieveNew);
@@ -205,6 +251,50 @@
achieveNewDao.batchInsert(achieveNewList);
}
+ }
+
+ @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
+ */
+ private void saleAchieveNumOfPeople(AchieveNew achieveNew) {
+ List<AchieveNew> saleList = achieveNewDao.selectSaleManAchieveList(achieveNew.getSaleId(), achieveNew.getVipId(), new Date());
+ if (CollUtil.isEmpty(saleList)) {
+ achieveNew.setNumberOfPeople(1D);
+ } else {
+ achieveNew.setNumberOfPeople(1D / (1D + saleList.size()));
+ achieveNewDao.updateAchieveNumOfPeople(saleList, achieveNew.getNumberOfPeople());
+ }
}
@Override
@@ -218,7 +308,6 @@
for (AchieveNew achieveNew : orderItem.getAchieveList()) {
if (achieveNew !=null && achieveNew.getGoodsCash()!=null) {
buildAchieve(pageOrder, orderItem, achieveNew);
- // 新增美疗师业绩
achieveNewList.add(achieveNew);
}
}
@@ -232,8 +321,11 @@
@Autowired
ShoppingGoodsDao shoppingGoodsDao;
+ @Autowired
+ BusParameterSettingsDao busParameterSettingsDao;
private void buildAchieve(SysOrder pageOrder, SysOrderItem orderItem, AchieveNew achieveNew) {
+ BusParameterSettings shopManageJjcpasConsume =null;
if (Dictionary.ORDER_STATU_TK.equals(pageOrder.getStatu())) {
achieveNew.setId(null);
achieveNew.setProjPercentage(0 - achieveNew.getProjPercentage());
@@ -241,13 +333,29 @@
}
achieveNew.setVipId(pageOrder.getVipId());
- achieveNew.setSaleId(pageOrder.getStaffId());
+ if(achieveNew.getSaleId()==null){
+ achieveNew.setSaleId(pageOrder.getStaffId());
+ }
+
if (pageOrder.getPayTime() != null) {
achieveNew.setDatatime(pageOrder.getPayTime());
} else {
achieveNew.setDatatime(new Date());
}
+ if(Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(orderItem.getShoppingGoods().getGoodType())){
+ if(shopManageJjcpasConsume==null){
+ shopManageJjcpasConsume = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_JJCPAS_CONSUME, pageOrder.getCompanyId());
+ }
+ if(AppConstance.IS_Y.equals(shopManageJjcpasConsume.getParamValue())){
+ achieveNew.setHisConsume(achieveNew.getGoodsCash());
+ }
+
+ }
+
+ // 设置顾问人头业绩
+ saleAchieveNumOfPeople(achieveNew);
+
achieveNew.setOrderType(Dictionary.ORDER_TYPE_SEAL);
achieveNew.setOrderId(pageOrder.getId());
achieveNew.setOrderItemId(orderItem.getId());
--
Gitblit v1.9.1