From e53fcbe9fe844b7788b29c5106c1ac24d17c5535 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Sat, 08 May 2021 22:40:19 +0800
Subject: [PATCH] Merge branch 'score_shop' into api_score_meger

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java |   98 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 76 insertions(+), 22 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 c91af9b..f0c6d88 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,6 @@
 package com.matrix.system.hive.service.imp;
 
+import cn.hutool.core.collection.CollUtil;
 import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.exception.GlobleException;
 import com.matrix.core.pojo.PaginationVO;
@@ -8,7 +9,10 @@
 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.*;
@@ -18,6 +22,8 @@
 import com.matrix.system.hive.dao.SysProjUseDao;
 import com.matrix.system.hive.plugin.util.CollectionUtils;
 import com.matrix.system.hive.service.AchieveNewService;
+import com.matrix.system.hive.service.SysProjServicesService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -42,6 +48,9 @@
 
     @Autowired
     private SysProjUseDao sysProjUseDao;
+
+    @Autowired
+    private SysProjServicesService projServicesService;
 
     @Override
     public int add(AchieveNew achieveNew) {
@@ -161,6 +170,9 @@
 
         Long achieveId = projServices.getCreateStaffId();
 
+        // 下单人是否计算消耗业绩
+        boolean flag = projServicesService.skipServiceOrderStep(Dictionary.SALE_MAN_IS_CONSUME_ACHIEVE);
+
         for (SysBeauticianState beauticianState : beauticianStateList) {
             // 是否第一次计算改美疗师
             boolean isFirst = true;
@@ -184,18 +196,38 @@
             achieveNew.setShopId(projServices.getShopId());
             achieveNew.setCompanyId(projServices.getCompanyId());
             achieveNew.setShoppingGoodsId(projUse.getProjId());
-            achieveNew.setNumberOfPeople(1D / size);
+
+            if (flag) {
+//                if (!achieveId.equals(beauticianState.getStaffId())) {
+                    AchieveNew saleMan = new AchieveNew();
+                    BeanUtils.copyProperties(achieveNew, saleMan);
+                    saleMan.setBeaultId(achieveId);
+
+                    saleAchieveNumOfPeople(saleMan);
+                    achieveNewList.add(saleMan);
+//                }
+            }
+
+            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);
@@ -207,16 +239,30 @@
 
     }
 
+    /**
+     * 顾问人头业绩
+     * @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<>();
         if (CollectionUtils.isNotEmpty(pageOrder.getItems())) {
             for (SysOrderItem orderItem : pageOrder.getItems()) {
 
-                if (orderItem != null && CollectionUtils.isNotEmpty(orderItem.getAchaeveList())) {
+                if (orderItem != null && CollectionUtils.isNotEmpty(orderItem.getAchieveList())) {
 
-                    for (AchieveNew achieveNew : orderItem.getAchaeveList()) {
-                        if (achieveNew !=null   && achieveNew.getT1()!=null) {
+                    for (AchieveNew achieveNew : orderItem.getAchieveList()) {
+                        if (achieveNew !=null   && achieveNew.getGoodsCash()!=null) {
                             buildAchieve(pageOrder,  orderItem, achieveNew);
                             // 新增美疗师业绩
                             achieveNewList.add(achieveNew);
@@ -232,12 +278,15 @@
 
     @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());
-            achieveNew.setT1((0 - Double.parseDouble(achieveNew.getT1())) + "");
+            achieveNew.setGoodsCash(0 - achieveNew.getGoodsCash());
         }
 
         achieveNew.setVipId(pageOrder.getVipId());
@@ -248,6 +297,19 @@
         } 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());
@@ -256,14 +318,6 @@
         achieveNew.setShoppingGoodsId(orderItem.getGoodsId());
         // 是否赠送
         achieveNew.setT2(orderItem.getIsFree());
-        // 根据商品类型设置业绩类型
-
-        if (Dictionary.ACHIEVE_TYPE_CASH.equals(achieveNew.getT3())){
-            achieveNew.setCardCash(Double.parseDouble(achieveNew.getT1()));
-        } else {
-            // 设置划扣金额
-            achieveNew.setConsume(Double.parseDouble(achieveNew.getT1()));
-        }
     }
 
     @Override
@@ -309,17 +363,17 @@
             // 本日
             case 1 :
                 break;
-                // 昨日
+            // 昨日
             case 2:
                 startTime = DateUtil.previousNDate(startTime, 1);
                 endTime = startTime;
                 break;
-                // 本月
+            // 本月
             case 3:
                 calendar.set(Calendar.DAY_OF_MONTH, 1);
                 startTime = calendar.getTime();
                 break;
-                // 上月
+            // 上月
             case 4:
                 calendar.add(Calendar.MONTH, -1);
                 calendar.set(Calendar.DAY_OF_MONTH, 1);

--
Gitblit v1.9.1