|
|
@@ -1065,6 +1065,199 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
return super.baseMapper.getCustomerUsers(new SysUserVOExt());
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public IPage<QuUserNum> quAgentAreaAdmin(QuUserNumDto quUserNumDto) {
|
|
|
+
|
|
|
+ //获取所有代理人用户
|
|
|
+ List<SysUserBaseVO> agentUsers = baseMapper.getAgentUserIdsByAreaIds();
|
|
|
+
|
|
|
+ List<String> strIds = agentUsers.stream().map(SysUserBaseVO::getUserId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 根据区域编码和级别查询符合条件的区域
|
|
|
+ LambdaQueryWrapper<SysArea> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ if (strIds.size() != 0) {
|
|
|
+ if (quUserNumDto.getAreaCode() != null && !"".equals(quUserNumDto.getAreaCode())) {
|
|
|
+ String area = quUserNumDto.getAreaCode();
|
|
|
+ switch (quUserNumDto.getLevel()) {
|
|
|
+ case "1": { // 省级查询逻辑
|
|
|
+ quUserNumDto.setGrouping(4);
|
|
|
+ String prefix = area.substring(0, 2);
|
|
|
+ strIds.removeIf(id -> !id.contains("99" + prefix));
|
|
|
+ quUserNumDto.setLevel("2");
|
|
|
+ wrapper.eq(SysArea::getLevel, "2");
|
|
|
+ wrapper.likeRight(SysArea::getAreaCode, prefix);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case "2": { // 市级查询逻辑
|
|
|
+ quUserNumDto.setGrouping(6);
|
|
|
+ String prefix = area.substring(0, 4);
|
|
|
+ strIds.removeIf(id -> !id.contains("99" + prefix));
|
|
|
+ quUserNumDto.setLevel("3");
|
|
|
+ wrapper.eq(SysArea::getLevel, "3");
|
|
|
+ wrapper.likeRight(SysArea::getAreaCode, prefix);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case "3": { // 区县级查询逻辑
|
|
|
+ quUserNumDto.setGrouping(6);
|
|
|
+ String prefix = area.substring(0, 6);
|
|
|
+ strIds.removeIf(id -> !id.contains("99" + prefix));
|
|
|
+ quUserNumDto.setLevel("3");
|
|
|
+ wrapper.eq(SysArea::getLevel, "3");
|
|
|
+ wrapper.likeRight(SysArea::getAreaCode, prefix);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else { // 默认查询省级区域
|
|
|
+ quUserNumDto.setGrouping(2);
|
|
|
+ quUserNumDto.setLevel("1");
|
|
|
+ wrapper.eq(SysArea::getLevel, "1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //遍历匹配区域名称
|
|
|
+ List<SysArea> areaList = sysAreaService.list(wrapper);
|
|
|
+
|
|
|
+ List<QuUserNum> quUserNums = new ArrayList<>();
|
|
|
+ // 如果没有查询到用户ID,则直接返回空的分页对象
|
|
|
+ if (strIds.size() != 0) {
|
|
|
+ // 根据查询条件获取用户数量统计信息
|
|
|
+ quUserNumDto.setUserIds(strIds);
|
|
|
+ List<QuUserNum> userNums = sysUserMapper.getUserNum(quUserNumDto);
|
|
|
+
|
|
|
+ List<QuUserNum> orderDetails = sysUserMapper.getMainOrderDetails(quUserNumDto);
|
|
|
+ // 根据区域名称匹配用户数量统计信息,并构造最终返回的结果列表
|
|
|
+ for (QuUserNum quUserNum : userNums) {
|
|
|
+ for (SysArea sysArea : areaList) {
|
|
|
+ if (!Objects.isNull(sysArea.getAreaCode())) {
|
|
|
+ // 匹配区域名称
|
|
|
+ String substring = sysArea.getAreaCode().substring(0, quUserNumDto.getGrouping());
|
|
|
+ if (quUserNum.getAreaCode().equals(substring)) {
|
|
|
+ quUserNum.setAreaName(sysArea.getAreaCname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (QuUserNum orderDetail : orderDetails) {
|
|
|
+ if (quUserNum.getAreaCode().equals(orderDetail.getAreaCode())) {
|
|
|
+ quUserNum.setMainAcceptInsuranceSum(orderDetail.getMainAcceptInsuranceSum());
|
|
|
+ quUserNum.setMainWaitAuditSum(orderDetail.getMainWaitAuditSum());
|
|
|
+ quUserNum.setMainWaitPaySum(orderDetail.getMainWaitPaySum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ quUserNums.add(quUserNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 为每个区域生成未匹配到的统计信息
|
|
|
+ for (SysArea sysArea : areaList) {
|
|
|
+ if (exists(quUserNums, sysArea)) {
|
|
|
+ QuUserNum userNum = new QuUserNum();
|
|
|
+ // 设置未匹配到的区域的默认统计信
|
|
|
+ userNum.setAreaName(sysArea.getAreaCname());
|
|
|
+ quUserNums.add(userNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<QuUserNum> paginate = paginate(quUserNums, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
|
|
|
+
|
|
|
+ // 构造返回的分页对象
|
|
|
+ IPage<QuUserNum> recordsPage = new Page<>(quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
|
|
|
+ recordsPage.setRecords(paginate);
|
|
|
+ recordsPage.setTotal(quUserNums.size());
|
|
|
+ return recordsPage;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<QuUserNum> quAgentAreaAdminDetail(QuUserNumDto quUserNumDto) {
|
|
|
+
|
|
|
+ //获取所有代理人用户
|
|
|
+ List<SysUserBaseVO> agentUsers = baseMapper.getAgentUserIdsByAreaIds();
|
|
|
+
|
|
|
+ List<String> strIds = agentUsers.stream().map(SysUserBaseVO::getUserId).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ // 如果未指定区域码,返回空分页对
|
|
|
+ if (Objects.isNull(quUserNumDto.getAreaCode())) {
|
|
|
+ return new Page<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据区域码筛选有效的下属ID
|
|
|
+ strIds.removeIf(id -> !id.contains("99" + quUserNumDto.getAreaCode()));
|
|
|
+
|
|
|
+ // 如果筛选后没有有效的下属ID,返回空分页对象
|
|
|
+ if (strIds.size() == 0) {
|
|
|
+ return new Page<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置查询条件中的用户ID列表
|
|
|
+ quUserNumDto.setUserIds(strIds);
|
|
|
+
|
|
|
+ List<QuUserNum> deptByCompany = new ArrayList<>();
|
|
|
+
|
|
|
+ if (quUserNumDto.getQuMarks().equals(QuMarks.COMPANY_MARK.getCode())) {
|
|
|
+ // 根据公司和用户ID列表查询用户数量统计信息
|
|
|
+ deptByCompany = sysUserMapper.getUserByCompany(quUserNumDto);
|
|
|
+ // 获取公司主订单待核保订单数量
|
|
|
+ List<QuUserNum> mainWaitAuditSums = sysUserMapper.getComMainWaitAuditSum(quUserNumDto);
|
|
|
+ // 获取公司主订单已核保待缴费订单数量
|
|
|
+ List<QuUserNum> mainWaitPaySums = sysUserMapper.getComMainWaitPaySum(quUserNumDto);
|
|
|
+ // 获取公司主订单已承包订单数量
|
|
|
+ List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getComMainAcceptInsuranceSum(quUserNumDto);
|
|
|
+
|
|
|
+ for (QuUserNum quUserNum : deptByCompany) {
|
|
|
+ for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
|
|
|
+ if (quUserNum.getCompanyId().equals(mainWaitAuditSum.getCompanyId())) {
|
|
|
+ quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
|
|
|
+ if (quUserNum.getCompanyId().equals(mainWaitPaySum.getCompanyId())) {
|
|
|
+ quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
|
|
|
+ if (quUserNum.getCompanyId().equals(mainAcceptInsuranceSum.getCompanyId())) {
|
|
|
+ quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (quUserNumDto.getQuMarks().equals(QuMarks.USER_MARK.getCode())) {
|
|
|
+ // 根据公司和用户ID列表查询用户数量统计信息
|
|
|
+ deptByCompany = sysUserMapper.getUserDetail(quUserNumDto);
|
|
|
+
|
|
|
+ // 获取用户主订单待核保订单数量
|
|
|
+ List<QuUserNum> mainWaitAuditSums = sysUserMapper.getUserMainWaitAuditSum(quUserNumDto);
|
|
|
+ // 获取用户主订单已核保待缴费订单数量
|
|
|
+ List<QuUserNum> mainWaitPaySums = sysUserMapper.getUserMainWaitPaySum(quUserNumDto);
|
|
|
+ // 获取用户主订单已承包订单数量
|
|
|
+ List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getUserMainAcceptInsuranceSum(quUserNumDto);
|
|
|
+
|
|
|
+ for (QuUserNum quUserNum : deptByCompany) {
|
|
|
+ for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
|
|
|
+ if (quUserNum.getUserId().equals(mainWaitAuditSum.getUserId()) && quUserNum.getCompanyId().equals(mainWaitAuditSum.getCompanyId())) {
|
|
|
+ quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
|
|
|
+ if (quUserNum.getUserId().equals(mainWaitPaySum.getUserId()) && quUserNum.getCompanyId().equals(mainWaitPaySum.getCompanyId())) {
|
|
|
+ quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
|
|
|
+ if (quUserNum.getUserId().equals(mainAcceptInsuranceSum.getUserId()) && quUserNum.getCompanyId().equals(mainAcceptInsuranceSum.getCompanyId())) {
|
|
|
+ quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<QuUserNum> paginate = paginate(deptByCompany, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
|
|
|
+
|
|
|
+ // 创建并设置分页信息
|
|
|
+ IPage<QuUserNum> page = new Page<>(quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
|
|
|
+ page.setRecords(paginate);
|
|
|
+ page.setTotal(deptByCompany.size());
|
|
|
+ return page;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|