jyy
2022-04-15 f57554f7da5e4d05b4b4bab99bf49ac9ca8c2038
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
@@ -21,6 +21,7 @@
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.hive.vo.DailyBeautyListVo;
import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -174,8 +175,7 @@
        boolean flag = projServicesService.skipServiceOrderStep(Dictionary.SALE_MAN_IS_CONSUME_ACHIEVE);
        Set<Long> beautyIds = new HashSet<>();
        for (SysBeauticianState beauticianState : beauticianStateList) {
            // 是否第一次计算改美疗师
            boolean isFirst = true;
@@ -222,13 +222,13 @@
//                }
            }
            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());
            }
//            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())) {
@@ -244,11 +244,14 @@
                achieveNew.setProjTime(beauticianState.getExcTime());
                isFirst = false;
            }
            beautyIds.add(achieveNew.getBeaultId());
            achieveNewList.add(achieveNew);
        }
        if (CollectionUtils.isNotEmpty(achieveNewList)) {
            achieveNewDao.batchInsert(achieveNewList);
            achieveNumOfPeople(beautyIds, projServices.getVipId());
        }
    }
@@ -297,9 +300,33 @@
        }
    }
    /**
     *
     * 合并订单与服务单人头逻辑,即每一个客户对美疗师/顾问来说,每一天同一个客户只算一个人头。
     * 如若A给客户X下订单,并给客户X服务,对A来说只算一个人头
     */
    private void achieveNumOfPeople(Set<Long> beautyIds, Long vipId) {
        for (Long userId : beautyIds) {
            double num;
            List<AchieveNew> achieveNewList = achieveNewDao.selectBeautyManAchieveList(userId, vipId, new Date());
            if (CollUtil.isEmpty(achieveNewList)) {
                num = 1D;
            } else {
                num = 1D / achieveNewList.size();
            }
            if (CollUtil.isNotEmpty(achieveNewList)) {
                achieveNewDao.updateAchieveNumOfPeople(achieveNewList, num);
            }
        }
    }
    @Override
    public void addAchaeveByOrder(SysOrder pageOrder) {
        List<AchieveNew> achieveNewList = new ArrayList<>();
        Set<Long> beautyIds = new HashSet<>();
        if (CollectionUtils.isNotEmpty(pageOrder.getItems())) {
            for (SysOrderItem orderItem : pageOrder.getItems()) {
@@ -309,13 +336,19 @@
                        if (achieveNew !=null   && achieveNew.getGoodsCash()!=null) {
                            buildAchieve(pageOrder,  orderItem, achieveNew);
                            achieveNewList.add(achieveNew);
                            beautyIds.add(achieveNew.getBeaultId());
                        }
                    }
                }
            }
        }
        if (CollectionUtils.isNotEmpty(achieveNewList)) {
            achieveNewDao.batchInsert(achieveNewList);
            if (!beautyIds.isEmpty()) {
                achieveNumOfPeople(beautyIds, pageOrder.getVipId());
            }
        }
    }
@@ -354,7 +387,7 @@
        }
        // 设置顾问人头业绩
        saleAchieveNumOfPeople(achieveNew);
//        saleAchieveNumOfPeople(achieveNew);
        achieveNew.setOrderType(Dictionary.ORDER_TYPE_SEAL);
        achieveNew.setOrderId(pageOrder.getId());
@@ -390,7 +423,7 @@
    }
    @Override
    public List<AchieveNew> findVipConsumeStatisticsList(AchieveNew achieveNew, PaginationVO pageVo) {
    public List<Map<String, Object>> findVipConsumeStatisticsList(AchieveNew achieveNew, PaginationVO pageVo) {
        return achieveNewDao.selectVipConsumeStatisticsList(achieveNew, pageVo);
    }
@@ -439,4 +472,21 @@
    public List<AchieveNew> findOrderItemAchieve(Long orderId) {
        return achieveNewDao.selectOrderItemAchieveByOrderId(orderId);
    }
    @Override
    public List<DailyBeautyListVo> findDailyBeautyList(AchieveNew achieveNew, PaginationVO pageVo) {
        List<DailyBeautyListVo> list = achieveNewDao.selectDailyBeautyList(achieveNew, pageVo);
        if (CollUtil.isNotEmpty(list)) {
            for (DailyBeautyListVo item : list) {
                String pl = achieveNewDao.selectPlInfoByVipIdAndDate(item.getDatatime(), item.getVipId());
                item.setProjInfo(pl);
            }
        }
        return list;
    }
    @Override
    public int findDailyBeautyListTotal(AchieveNew achieveNew) {
        return achieveNewDao.selectDailyBeautyListTotal(achieveNew);
    }
}