diff --git a/admin/src/main/java/com/baiye/modules/distribute/controller/HomepageController.java b/admin/src/main/java/com/baiye/modules/distribute/controller/HomepageController.java index 7d6061c..4289e6c 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/controller/HomepageController.java +++ b/admin/src/main/java/com/baiye/modules/distribute/controller/HomepageController.java @@ -4,6 +4,7 @@ import com.baiye.modules.distribute.qo.HomePageQo; import com.baiye.modules.distribute.service.HomepageService; import com.baiye.result.R; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -31,13 +32,13 @@ public class HomepageController { @PostMapping("/enter") - @Operation(description = "渠道录入") + @Operation(description = "渠道录入--管理员") public R channelEnterClue(@RequestBody HomePageQo homePageQo) { return R.ok(homepageService.channelEnterClue(homePageQo)); } @PostMapping("/assigned") - @Operation(description = "渠道分发") + @Operation(description = "渠道分发--管理员") public R channelAssignedClue(@RequestBody HomePageQo homePageQo) { return R.ok(homepageService.channelAssignedClue(homePageQo)); } @@ -47,4 +48,16 @@ public class HomepageController { public void channelClueExport(HttpServletResponse response, @RequestBody HomePageQo homePageQo) { homepageService.channelClueExport(response, homePageQo); } + + @PostMapping("/distributors") + @Operation(summary = "分发员") + public R distributorsEnterClue(@RequestBody HomePageQo homePageQo) { + return R.ok(homepageService.distributorsEnterClue(homePageQo)); + } + + @PostMapping("/salesman") + @Operation(summary = "业务员") + public R salesmanEnterClue(@RequestBody HomePageQo homePageQo) { + return R.ok(homepageService.salesmanEnterClue(homePageQo)); + } } diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/HomePageDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/HomePageDTO.java index aaed6cf..af92279 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/HomePageDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/HomePageDTO.java @@ -18,4 +18,6 @@ public class HomePageDTO { private Long createBy; private String enterName; + + private Integer num; } diff --git a/admin/src/main/java/com/baiye/modules/distribute/mapper/ClueMapper.java b/admin/src/main/java/com/baiye/modules/distribute/mapper/ClueMapper.java index 04c0f65..e8075d9 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/mapper/ClueMapper.java +++ b/admin/src/main/java/com/baiye/modules/distribute/mapper/ClueMapper.java @@ -14,9 +14,11 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; public interface ClueMapper extends ExtendMapper { @@ -76,4 +78,7 @@ public interface ClueMapper extends ExtendMapper { List selectDetailByChannelAndAssigned(@Param("qo") HomePageQo homePageQo); Integer addCount(@Param("date") String date, @Param("companyId") Long companyId); + + List distributorsAssignedClueByTime(@Param("qo") HomePageQo homePageQo); + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/mapper/CustomMapper.java b/admin/src/main/java/com/baiye/modules/distribute/mapper/CustomMapper.java index 3bda5b4..fc5ff28 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/mapper/CustomMapper.java +++ b/admin/src/main/java/com/baiye/modules/distribute/mapper/CustomMapper.java @@ -14,9 +14,11 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; public interface CustomMapper extends ExtendMapper { default PageResult queryPage(PageParam pageParam, CustomQo qo) { @@ -33,12 +35,12 @@ public interface CustomMapper extends ExtendMapper { /** * 查询最大编号 */ - String selectMaxBatchNoByCompanyId(@Param("code") String code,@Param("companyId") Long companyId); - + String selectMaxBatchNoByCompanyId(@Param("code") String code, @Param("companyId") Long companyId); /** * 根据 qo 构造查询 wrapper + * * @param qo 查询条件 * @return LambdaQueryWrapperX */ @@ -66,7 +68,7 @@ public interface CustomMapper extends ExtendMapper { } - default List queryList(CustomQo customQo){ + default List queryList(CustomQo customQo) { Wrapper wrapperX = buildQueryWrapper(customQo); return this.selectList(wrapperX); } @@ -75,4 +77,6 @@ public interface CustomMapper extends ExtendMapper { List selectByCompanyIdAndTime(@Param("qo") HomePageQo homePageQo); List addCount(@Param("date") String date, @Param("companyId") Long companyId); + + List distributorsEnterClueByTime(@Param("qo") HomePageQo homePageQo); } diff --git a/admin/src/main/java/com/baiye/modules/distribute/qo/HomePageQo.java b/admin/src/main/java/com/baiye/modules/distribute/qo/HomePageQo.java index 3711219..6c224e8 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/qo/HomePageQo.java +++ b/admin/src/main/java/com/baiye/modules/distribute/qo/HomePageQo.java @@ -25,6 +25,9 @@ public class HomePageQo { @Parameter(description = "添加的结束时间") private String createEndTime; + @Parameter(description = "分配的客户id") + private Long assignedId; + @Parameter(description = "分配的客户id") private List assignedIdList; @@ -36,4 +39,8 @@ public class HomePageQo { @Parameter(description = "下载类型 1- 录入 2-分发") private Integer type; + + @Parameter(description = "分发员id") + private Long distributorId; + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/HomepageService.java b/admin/src/main/java/com/baiye/modules/distribute/service/HomepageService.java index a799f4c..fa05125 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/HomepageService.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/HomepageService.java @@ -42,4 +42,19 @@ public interface HomepageService { */ Map> channelAssignedClue(HomePageQo homePageQo); + /** + * 统计分发员的进线和分发数 + * + * @param homePageQo + * @return + */ + Object distributorsEnterClue(HomePageQo homePageQo); + + /** + * 业务员统计 + * + * @param homePageQo + * @return + */ + Object salesmanEnterClue(HomePageQo homePageQo); } diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/HomepageServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/HomepageServiceImpl.java index 38d45f7..f76c454 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/HomepageServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/HomepageServiceImpl.java @@ -218,4 +218,47 @@ public class HomepageServiceImpl implements HomepageService { } return mapChannelType; } + + + @Override + public Object distributorsEnterClue(HomePageQo homePageQo) { + homePageQo.setDistributorId(SecurityUtils.getCurrentUserId()); + //分发员进线 + List enterList = customMapper.distributorsEnterClueByTime(homePageQo); + Map enterMap = enterList.stream() + .collect(Collectors.toMap(HomePageDTO::getCreateTime, HomePageDTO::getNum)); + //分发员分发数 + List assignedList = clueMapper.distributorsAssignedClueByTime(homePageQo); + Map assignedMap = assignedList.stream() + .collect(Collectors.toMap(HomePageDTO::getCreateTime, HomePageDTO::getNum)); + + Map> map = new LinkedHashMap<>(8); + long betweenDay = DateUtil.between(DateUtil.parseDate(homePageQo.getCreateStartTime()), DateUtil.parseDate(homePageQo.getCreateEndTime()), DateUnit.DAY); + for (int i = 0; i <= betweenDay; i++) { + Map mapNum = new LinkedHashMap<>(16); + String time = DateUtil.format(DateUtil.offsetDay(DateUtil.parseDate(homePageQo.getCreateStartTime()), i), "yyyy-MM-dd"); + mapNum.put("enter", enterMap.getOrDefault(time, 0)); + mapNum.put("assigned", assignedMap.getOrDefault(time, 0)); + map.put(time, mapNum); + } + return map; + } + + @Override + public Object salesmanEnterClue(HomePageQo homePageQo) { + homePageQo.setAssignedId(SecurityUtils.getCurrentUserId()); + //业务员进线数 + List assignedList = clueMapper.distributorsAssignedClueByTime(homePageQo); + Map assignedMap = assignedList.stream() + .collect(Collectors.toMap(HomePageDTO::getCreateTime, HomePageDTO::getNum)); + + Map map = new LinkedHashMap<>(8); + long betweenDay = DateUtil.between(DateUtil.parseDate(homePageQo.getCreateStartTime()), DateUtil.parseDate(homePageQo.getCreateEndTime()), DateUnit.DAY); + //返回日期值 如{"2023-12-6":100} + for (int i = 0; i <= betweenDay; i++) { + String time = DateUtil.format(DateUtil.offsetDay(DateUtil.parseDate(homePageQo.getCreateStartTime()), i), "yyyy-MM-dd"); + map.put(time, assignedMap.getOrDefault(time, 0)); + } + return map; + } } diff --git a/admin/src/main/resources/mapper/ClueMapper.xml b/admin/src/main/resources/mapper/ClueMapper.xml index abec46b..2f8f00f 100644 --- a/admin/src/main/resources/mapper/ClueMapper.xml +++ b/admin/src/main/resources/mapper/ClueMapper.xml @@ -77,4 +77,18 @@ tb_clue ce ${ew.customSqlSegment} + diff --git a/admin/src/main/resources/mapper/CustomMapper.xml b/admin/src/main/resources/mapper/CustomMapper.xml index 4c4dc1a..3751e83 100644 --- a/admin/src/main/resources/mapper/CustomMapper.xml +++ b/admin/src/main/resources/mapper/CustomMapper.xml @@ -60,6 +60,16 @@ select type from tb_custom where DATE_FORMAT(create_time, '%Y-%m-%d') = #{date} - and company_id = #{companyId} + and company_id = #{companyId} + + +