From ad31648c6f7a8bff1f7ccdf84b76006b9ffb78f8 Mon Sep 17 00:00:00 2001 From: jyy <jyy> Date: Sat, 17 Jul 2021 15:59:10 +0800 Subject: [PATCH] 1. 新增套餐中有效和无效的操作 2. 会员修改门店功能 3. 套餐新增编辑次数功能 4. 计算是否为赠送的条件为,全部为赠送金额购买且支付金额大于0 5. 打印小票功能调整间距,和收银人 6. PC端服务单新增划扣金额展示 --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 98 insertions(+), 9 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 40331bd..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; @@ -15,15 +17,16 @@ 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.*; /** @@ -45,6 +48,9 @@ @Autowired private SysProjUseDao sysProjUseDao; + + @Autowired + private SysProjServicesService projServicesService; @Override public int add(AchieveNew achieveNew) { @@ -164,6 +170,12 @@ Long achieveId = projServices.getCreateStaffId(); + // 下单人是否计算消耗业绩 + boolean flag = projServicesService.skipServiceOrderStep(Dictionary.SALE_MAN_IS_CONSUME_ACHIEVE); + + + + for (SysBeauticianState beauticianState : beauticianStateList) { // 是否第一次计算改美疗师 boolean isFirst = true; @@ -175,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()); @@ -187,7 +207,29 @@ 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())); @@ -211,6 +253,50 @@ } + @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 public void addAchaeveByOrder(SysOrder pageOrder) { List<AchieveNew> achieveNewList = new ArrayList<>(); @@ -222,7 +308,6 @@ for (AchieveNew achieveNew : orderItem.getAchieveList()) { if (achieveNew !=null && achieveNew.getGoodsCash()!=null) { buildAchieve(pageOrder, orderItem, achieveNew); - // 新增美疗师业绩 achieveNewList.add(achieveNew); } } @@ -248,7 +333,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()); @@ -265,7 +353,8 @@ } - + // 设置顾问人头业绩 + saleAchieveNumOfPeople(achieveNew); achieveNew.setOrderType(Dictionary.ORDER_TYPE_SEAL); achieveNew.setOrderId(pageOrder.getId()); -- Gitblit v1.9.1