|
|
|
@ -3,6 +3,7 @@ package com.baiye.module.service.impl;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.json.JSONArray;
|
|
|
|
@ -199,7 +200,6 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
List<Long> userIds = organizeClient.findOrganizeIdByMember(clueQueryCriteria.getMemberId()).getBody();
|
|
|
|
|
//如果查询的小组id不为空 ,说明是组长并有权限查看组员信息
|
|
|
|
|
if (CollUtil.isNotEmpty(userIds)) {
|
|
|
|
|
// clueQueryCriteria.setOrganizeId(organizeId);
|
|
|
|
|
clueQueryCriteria.setUserIdList(userIds);
|
|
|
|
|
clueQueryCriteria.setMemberId(null);
|
|
|
|
|
}
|
|
|
|
@ -636,6 +636,7 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
if (dynamicTaskDto.getWhichUserId() == null) {
|
|
|
|
|
throw new BadRequestException("添加失败");
|
|
|
|
|
}
|
|
|
|
|
dynamicTaskDto.setUserId(dynamicTaskDto.getWhichUserId());
|
|
|
|
|
TaskQueryCriteria taskQueryCriteria = new TaskQueryCriteria();
|
|
|
|
|
taskQueryCriteria.setCreateBy(dynamicTaskDto.getWhichUserId());
|
|
|
|
|
taskQueryCriteria.setIsForm(2);
|
|
|
|
@ -714,6 +715,55 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
return CommonResponse.createBySuccess(list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public CommonResponse<Object> reportFunnel(ReportStageAndTurnoverDto reportDto) {
|
|
|
|
|
if (ObjectUtil.isNull(reportDto) || reportDto.getMemberId() == null) {
|
|
|
|
|
return CommonResponse.createByErrorMessage("查询人员为空");
|
|
|
|
|
}
|
|
|
|
|
String startTime = reportDto.getStartTime();
|
|
|
|
|
String endTime = reportDto.getEndTime();
|
|
|
|
|
List<ClueMiddle> clueMiddles;
|
|
|
|
|
if (StrUtil.isBlank(reportDto.getStartTime()) || StrUtil.isBlank(reportDto.getEndTime())) {
|
|
|
|
|
// startTime = DateUtil.beginOfDay(DateUtil.date()).toString();
|
|
|
|
|
// endTime = DateUtil.date().toString();
|
|
|
|
|
clueMiddles = clueMiddleRepository.findByMemberId(reportDto.getMemberId());
|
|
|
|
|
} else {
|
|
|
|
|
clueMiddles = clueMiddleRepository.queryAllByTimeAndMemberId(startTime, endTime, reportDto.getMemberId());
|
|
|
|
|
}
|
|
|
|
|
HashMap<String, Object> reportMap = getReportMap(clueMiddles);
|
|
|
|
|
// List<Integer> stages = Arrays.asList(ClueStageEnum.EFFICIENT.getKey(), ClueStageEnum.ADD_WECHAT.getKey(), ClueStageEnum.INTENTION.getKey(), ClueStageEnum.INVITING.getKey(), ClueStageEnum.INTERVIEW.getKey());
|
|
|
|
|
|
|
|
|
|
// double dealRate = 0.00;
|
|
|
|
|
// double communicatRate = 0.00;
|
|
|
|
|
// double intentionRate = 0.00;
|
|
|
|
|
// if (CollUtil.isNotEmpty(clueMiddles)) {
|
|
|
|
|
// //无意向
|
|
|
|
|
// int noIntention = (int) reportMap.get(ClueStageEnum.NO_INTENTION.getValue());
|
|
|
|
|
// int size = clueMiddles.size() - noIntention;
|
|
|
|
|
// //成交
|
|
|
|
|
// int deal = (int) reportMap.get(ClueStageEnum.DEAL.getValue());
|
|
|
|
|
// dealRate = NumberUtil.div(deal, size, 2);
|
|
|
|
|
//
|
|
|
|
|
// //待跟进
|
|
|
|
|
// int communicat = (int) reportMap.get(ClueStageEnum.NEW_CLUE.getValue()) + (int) reportMap.get(ClueStageEnum.COMMUNICAT.getValue());
|
|
|
|
|
// communicatRate = NumberUtil.div(communicat, size, 2);
|
|
|
|
|
//
|
|
|
|
|
// //有意向
|
|
|
|
|
// int i = (int) reportMap.get(ClueStageEnum.EFFICIENT.getValue());
|
|
|
|
|
// int i1 = (int) reportMap.get(ClueStageEnum.ADD_WECHAT.getValue());
|
|
|
|
|
// int i2 = (int) reportMap.get(ClueStageEnum.INTENTION.getValue());
|
|
|
|
|
// int i3 = (int) reportMap.get(ClueStageEnum.INVITING.getValue());
|
|
|
|
|
// int i4 = (int) reportMap.get(ClueStageEnum.INTERVIEW.getValue());
|
|
|
|
|
// int intention = i + i1 + i2 + i3 + i4;
|
|
|
|
|
// intentionRate = NumberUtil.div(intention, size, 2);
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
// reportMap.put("dealRate", dealRate);
|
|
|
|
|
// reportMap.put("communicatRate", communicatRate);
|
|
|
|
|
// reportMap.put("intentionRate", intentionRate);
|
|
|
|
|
return CommonResponse.createBySuccess(reportMap);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Map<Long, Integer> countClueByMemberStatus(ClueQueryCriteria clueQueryCriteria) {
|
|
|
|
|