package com.ydtech.modules.admin.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.dao.SysAmountAuditingMapper; import com.ydtech.modules.admin.dao.SysDeptMapper; import com.ydtech.modules.admin.dao.SysUserMapper; import com.ydtech.modules.admin.dao.TaskStatisticsMapper; import com.ydtech.modules.admin.model.SysDept; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.dto.*; import com.ydtech.modules.admin.model.vo.BusinessAgentData; import com.ydtech.modules.admin.model.vo.TaskStatisticsVo; import com.ydtech.modules.admin.service.SysDeptService; import com.ydtech.modules.admin.service.TaskStatisticsService; import com.ydtech.modules.admin.utils.SliceUpDateUtil; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.base.model.vo.PageVo; import com.ydtech.modules.inv.utils.EasyExcelUtils; import com.ydtech.modules.order.dao.InsAreaCompanyMapper; import com.ydtech.modules.order.dao.InsOrdersMapper; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import static com.baomidou.mybatisplus.extension.toolkit.Db.list; /** * @description: 任务统计 * @author: whp * @date: 2024/7/25 **/ @Service public class TaskStatisticsServiceImpl implements TaskStatisticsService { @Autowired private InsAreaCompanyMapper insAreaCompanyMapper; @Autowired private SysAmountAuditingMapper sysAmountAuditingMapper; @Autowired private InsOrdersMapper insOrdersMapper; @Autowired private TaskStatisticsMapper taskStatisticsMapper; @Autowired private SysDeptService sysDeptService; @Autowired private SysUserMapper sysUserMapper; @Autowired private SysDeptMapper sysDeptMapper; @Value("${upload.file.path}") private String uploadPath; @Value("${upload.file.url}") private String uploadUrl; /** * @description: 渠道任务统计查询 * @author: whp * @date: 2024/7/25 **/ @Override public IPage queryPage(TaskStatisticsVo taskStatisticsVo) { PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询 pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); IPage list = this.insAreaCompanyMapper.queryPageTaskStatistics(page,taskStatisticsVo); if (list != null && !list.getRecords().isEmpty()) { List records = list.getRecords(); for (TaskStatisticsDto record : records) { String deptId = record.getDeptId(); if (StringUtils.isNotEmpty(deptId)) { int length = deptId.length(); if (length > 0) { if (length > 0) { if (length > 10) { String substring = deptId.substring(0, 6); String substring1 = deptId.substring(0, 8); String province = deptId.substring(0, 4); SysDept cityName = sysDeptService.getById(substring); SysDept districtName = sysDeptService.getById(substring1); SysDept provinceName = sysDeptService.getById(province); SysDept storeDeptName = sysDeptService.getById(deptId); record.setCityName(cityName.getName()); record.setDistrictName(districtName.getName()); record.setProvinceName(provinceName.getName()); record.setStoreDeptName(storeDeptName.getName()); } } } } } } Long total = this.insAreaCompanyMapper.queryPageTaskStatisticsTotal(taskStatisticsVo); list.setTotal(total); return list; } /** * @description: 保险公司统计查询 * @author: whp * @date: 2024/7/25 **/ @Override public IPage insuranceCompanyQueryPage(TaskStatisticsVo taskStatisticsVo) { if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getProvinceId())){ String provinceId = this.removeTrailingZeros(taskStatisticsVo.getProvinceId()); taskStatisticsVo.setProvinceId(provinceId); } if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCityId())){ String cityId = this.removeTrailingZeros(taskStatisticsVo.getCityId()); taskStatisticsVo.setCityId(cityId); } if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCountyId())){ String countyId = this.removeTrailingZeros(taskStatisticsVo.getCountyId()); taskStatisticsVo.setCountyId(countyId); } if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){ if("7".equals(taskStatisticsVo.getDays())){ taskStatisticsVo.setDays("2"); } else if ("30".equals(taskStatisticsVo.getDays())) { taskStatisticsVo.setDays("3"); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询 pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); IPage list = this.insAreaCompanyMapper.insuranceCompanyQueryPage(page,taskStatisticsVo); Long total = this.insAreaCompanyMapper.insuranceCompanyQueryTotal(taskStatisticsVo); list.setTotal(total); return list; } private String removeTrailingZeros(String value) { int len = value.length(); int i = len - 1; // 查找第一个非零字符的位置 while (i >= 0 && value.charAt(i) == '0') { i--; } // 如果所有字符都是0,则返回"0" if (i < 0) { return "0"; } // 使用substring方法获取去除末尾零的子串 return value.substring(0, i + 1); } /** * @description: 代理人统计查询 * @author: whp * @date: 2024/7/26 **/ @Override public IPage agentStatisticsQueryPage(TaskStatisticsVo taskStatisticsVo) { PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询 IPage list = this.insAreaCompanyMapper.agentStatisticsQueryPage(page,taskStatisticsVo); Long total = this.insAreaCompanyMapper.agentStatisticsQueryPageTotal(taskStatisticsVo); if (list != null && !list.getRecords().isEmpty()) { List records = list.getRecords(); for (TaskStatisticsDto record : records) { String deptId = record.getDeptId(); if (StringUtils.isNotEmpty(deptId)) { int length = deptId.length(); if (length > 0) { if (length > 0) { if (length > 10) { String substring = deptId.substring(0, 6); String substring1 = deptId.substring(0, 8); String province = deptId.substring(0, 4); SysDept cityName = sysDeptService.getById(substring); SysDept districtName = sysDeptService.getById(substring1); SysDept provinceName = sysDeptService.getById(province); SysDept storeDeptName = sysDeptService.getById(deptId); record.setCityName(cityName.getName()); record.setDistrictName(districtName.getName()); record.setProvinceName(provinceName.getName()); record.setStoreDeptName(storeDeptName.getName()); } } } } } } list.setTotal(total); return list; } /** * @description: 财务中心-费用校验 * @author: whp * @date: 2024/7/29 **/ @Override public IPage costCenter(TaskStatisticsVo taskStatisticsVo) { if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){ if("7".equals(taskStatisticsVo.getDays())){ taskStatisticsVo.setDays("2"); } else if ("30".equals(taskStatisticsVo.getDays())) { taskStatisticsVo.setDays("3"); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); IPage list = this.insAreaCompanyMapper.costCenter(page,taskStatisticsVo); return list; } /** * @description: 财务中心-费用校验-明细 * @author: whp * @date: 2024/10/10 **/ @Override public IPage costCenterDetails(TaskStatisticsVo taskStatisticsVo) { if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){ if("7".equals(taskStatisticsVo.getDays())){ taskStatisticsVo.setDays("2"); } else if ("30".equals(taskStatisticsVo.getDays())) { taskStatisticsVo.setDays("3"); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); IPage list = this.insAreaCompanyMapper.costCenterDetails(page,taskStatisticsVo); return list; } /** * @description: 任务统计-保险公司-导出 * @author: whp * @date: 2024/9/9 **/ @Override public HttpResult costCenterDetailsExcel(TaskStatisticsVo taskStatisticsVo) { if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){ if("7".equals(taskStatisticsVo.getDays())){ taskStatisticsVo.setDays("2"); } else if ("30".equals(taskStatisticsVo.getDays())) { taskStatisticsVo.setDays("3"); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); List list = this.insAreaCompanyMapper.costCenterDetailsExcel(taskStatisticsVo); String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } String fileName = EasyExcelUtils.downExcel(uploadPath, "费用校验审核人导出", TaskStatisticsDtoExcel.class, list); return HttpResult.ok("", uploadUrl + "excel/" + fileName); } /** * @description: 财务中心-费用校验-明细-查看 * @author: whp * @date: 2024/10/10 **/ @Override public TaskStatisticsDtoNew costCenterDetailsLicense(TaskStatisticsVo taskStatisticsVo) { if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){ if("7".equals(taskStatisticsVo.getDays())){ taskStatisticsVo.setDays("2"); } else if ("30".equals(taskStatisticsVo.getDays())) { taskStatisticsVo.setDays("3"); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); IPage list = this.insAreaCompanyMapper.costCenterDetailsLicense(page,taskStatisticsVo); TaskStatisticsDtoNew sumSecond = this.insAreaCompanyMapper.costCenterSecond(taskStatisticsVo); sumSecond.setPageResult(list); return sumSecond; } /** * @description: 保险公司统计总报价 * @author: whp * @date: 2024/8/12 **/ @Override public IPage totalQuotation(TaskStatisticsVo taskStatisticsVo) { PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); IPage list = this.insAreaCompanyMapper.totalQuotation(page,taskStatisticsVo); return list; } /** * @description: 控制台-业务数据 * @author: whp * @date: 2024/8/13 **/ @Override public IPage getBusinessData(TaskStatisticsVo taskStatisticsVo) { if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){ if("7".equals(taskStatisticsVo.getDays())){ taskStatisticsVo.setDateType("2"); } else if ("30".equals(taskStatisticsVo.getDays())) { taskStatisticsVo.setDateType("3"); } else if ("1".equals(taskStatisticsVo.getDays())){ taskStatisticsVo.setDateType("1"); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); IPage list = this.insAreaCompanyMapper.getBusinessData(page,taskStatisticsVo); return list; } /** * @description: 控制台-业务数据 - 保险分布 * @author: whp * @date: 2024/8/13 **/ @Override public List getDistribution(TaskStatisticsVo taskStatisticsVo) { List result = new ArrayList<>(); //0 报价中 1 待核保 2 已核保代缴费 3 已承保 4 核保退回 for (int i = 0; i < 5; i++) { taskStatisticsVo.setQuotationStatus(i+""); TaskStatisticsDto taskStatisticsDtoItem = insAreaCompanyMapper.getDistribution(taskStatisticsVo); if(ObjectUtils.isNotEmpty(taskStatisticsDtoItem)){ taskStatisticsDtoItem.setQuotationStatus(i+""); result.add(taskStatisticsDtoItem); } } return result; } /** * @description: 任务统计-渠道导出 * @author: whp * @date: 2024/09/09 **/ @Override public HttpResult channelExcel(TaskStatisticsVo taskStatisticsVo) { taskStatisticsVo.setManagementSource("1"); return getHttpResult(taskStatisticsVo); } private HttpResult getHttpResult(TaskStatisticsVo taskStatisticsVo) { List list = this.insAreaCompanyMapper.channelExcel(taskStatisticsVo); if (list != null && !list.isEmpty()) { for (TaskStatisticsExcel record : list) { String deptId = record.getDeptId(); if (StringUtils.isNotEmpty(deptId)) { int length = deptId.length(); if (length > 0) { if (length > 0) { if (length > 10) { String substring = deptId.substring(0, 6); String substring1 = deptId.substring(0, 8); String province = deptId.substring(0, 4); SysDept cityName = sysDeptService.getById(substring); SysDept districtName = sysDeptService.getById(substring1); SysDept provinceName = sysDeptService.getById(province); record.setCityName(cityName.getName()); record.setDistrictName(districtName.getName()); record.setProvinceName(provinceName.getName()); } } } } } } String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } String fileName = EasyExcelUtils.downExcel(uploadPath, taskStatisticsVo.getManagementSource() .equals("1") ? "渠道导出":"代理人导出", TaskStatisticsExcel.class, list); return HttpResult.ok("", uploadUrl + "excel/" + fileName); } /** * @description: 任控制台-业务数据-代理人 * @author: whp * @date: 2024/09/09 **/ @Override public IPage getBusinessAgentData(TaskStatisticsVo taskStatisticsVo) { if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType())){ if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType())){ List userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId()); if(!userIds.isEmpty()){ taskStatisticsVo.setUserIds(userIds); }else { taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId()); } }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){ taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId()); taskStatisticsVo.setTreeUserId(null); taskStatisticsVo.setUserIds(new ArrayList<>()); } } PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询 pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); IPage list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo); List records = list.getRecords(); for (BusinessAgentData record : records) { this.appendName(record); } Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo); list.setTotal(total); return list; } /** * * @param userId * @return 获取该用户下级所有用户id */ private List getNextLevel(String userId) { // 获取系统中的所有用户 LambdaQueryWrapper queryWrapperUser = new LambdaQueryWrapper<>(); queryWrapperUser.eq(SysUser :: getStatus,"1"); List users = this.sysUserMapper.selectList(queryWrapperUser); // 创建查询包装器,用于查询指定用户ID的用 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysUser::getId, userId); // 查询指定用户ID的用户,即第一级下属 List usersLevel1 = this.sysUserMapper.selectList(queryWrapper); // 用于存储所有下属的ID List strIds = new ArrayList<>(); // 递归获取第一级下属及其所有下属的ID findChildren(usersLevel1, users, strIds); return strIds; } /** * * @param usersLevel1 即第一级下属 * @param users 所有用户 * @param strIds 用于存储所有下属的ID */ private void findChildren(List SysUsers, List users, List strIds) { for (SysUser sysUser : SysUsers) { List children = new ArrayList<>(); for (SysUser user : users) { if (sysUser.getId() != null && sysUser.getId().equals(user.getLeaderId())) { if (!exists(children, user)) { children.add(user); strIds.add(user.getId()); } } } sysUser.setChildren(children); findChildren(children, users, strIds); } } private boolean exists(List sysUsers, SysUser sysUser) { boolean exist = false; for (SysUser user : sysUsers) { if (user.getId().equals(sysUser.getId())) { exist = true; } } return exist; } /** * @version * @author: hxl * @Date: 2024/6/19 11:57 * @Description: 通过时间类型判断 */ private static HashMap getDateMapByType(String type, String startDate, String endDate) { HashMap map =new HashMap<>(); String startDateStr=""; String endDateStr=""; if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)){ startDateStr= StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null; endDateStr= StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null; }else{ if("1".equals(type)){ // 一月内 startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),2)+" 00:00:00"; endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59"; }else if("2".equals(type)){ // 三月内 startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),3)+" 00:00:00"; endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59"; }else if("3".equals(type)){ // 近半年 startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),4)+" 00:00:00"; endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59"; } } map.put("startDate",startDateStr); map.put("endDate",endDateStr); return map; } /** * @version * @author: hxl * @Date: 2024/6/19 11:57 * @Description: 通过时间类型判断 */ private static HashMap getDateMapByTypeNew(String type, String startDate, String endDate) { HashMap map =new HashMap<>(); String startDateStr=""; String endDateStr=""; if(org.apache.commons.lang3.StringUtils.isNotBlank(startDate) && org.apache.commons.lang3.StringUtils.isNotBlank(endDate)){ startDateStr= org.apache.commons.lang3.StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null; endDateStr= org.apache.commons.lang3.StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null; }else{ if("1".equals(type)){ // 近1天 startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),0)+" 00:00:00"; endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59"; }else if("2".equals(type)){ // 近7天 startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),1)+" 00:00:00"; endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59"; }else if("3".equals(type)){ // 近30天 startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),6)+" 00:00:00"; endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59"; } } map.put("startDate",startDateStr); map.put("endDate",endDateStr); return map; } /** * @description: 任控制台-业务数据-代理人-合计 * @author: whp * @date: 2024/09/09 **/ @Override public BusinessAgentData getBusinessAgentDataTotal(TaskStatisticsVo taskStatisticsVo) { HashMap dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType())){ if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType())){ List userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId()); if(!userIds.isEmpty()){ taskStatisticsVo.setUserIds(userIds); }else { taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId()); } }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) &&"1".equals(taskStatisticsVo.getTreeType())){ taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId()); taskStatisticsVo.setTreeUserId(null); taskStatisticsVo.setUserIds(new ArrayList<>()); } } String deptId = BaseController.getDeptId(); BusinessAgentData result = this.taskStatisticsMapper.getBusinessAgentDataTotalAdd(taskStatisticsVo); Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo); result.setTotalNumber(total.toString()); BigDecimal sumPremium = result.getSumPremium(); BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo); if(ObjectUtils.isNotEmpty(sumPremium)){ BigDecimal sumPremium1 = allsumPremium.getSumPremium(); if(sumPremium.compareTo(BigDecimal.ZERO) ==1){ BigDecimal multiply = sumPremium.divide(sumPremium1, 2, BigDecimal.ROUND_DOWN); result.setSumPremiumProportion(multiply); } }else { result.setSumPremiumProportion(BigDecimal.ZERO); } return result; } /** * @description: 任务统计-代理人导出 * @author: whp * @date: 2024/9/9 **/ @Override public HttpResult agentExcel(TaskStatisticsVo taskStatisticsVo) { taskStatisticsVo.setManagementSource("2"); return getHttpResult(taskStatisticsVo); } /** * @description: 任务统计-保险公司-导出 * @author: whp * @date: 2024/9/9 **/ @Override public HttpResult insuranceCompanyExcel(TaskStatisticsVo taskStatisticsVo) { List list = this.insAreaCompanyMapper.insuranceCompanyExcel(taskStatisticsVo); String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } String fileName = EasyExcelUtils.downExcel(uploadPath, "保险公司导出", InsuranceCompanyExcel.class, list); return HttpResult.ok("", uploadUrl + "excel/" + fileName); } /** * @description: 任控制台-业务数据-代理人-详情 * @author: whp * @date: 2024/09/10 **/ @Override public IPage getBusinessAgentDataDetails(TaskStatisticsVo taskStatisticsVo) { HashMap dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询 pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); IPage list = this.taskStatisticsMapper.getBusinessAgentDataDetails(page, taskStatisticsVo); Long total = this.taskStatisticsMapper.getBusinessAgentDataDetailsAdd(taskStatisticsVo); list.setTotal(total); return list; } /** * * @param taskStatisticsVo * @return 控制台任务统计 渠道代理人详情 */ @Override public IPage channelAgentDetails(TaskStatisticsVo taskStatisticsVo) { PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); HashMap dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate()); taskStatisticsVo.setBeginDate(dateMapByType.get("startDate")); taskStatisticsVo.setEndDate(dateMapByType.get("endDate")); IPage list = this.taskStatisticsMapper.channelAgentDetails(page,taskStatisticsVo); return list; } /** * @description: 财务中心-费用校验-合计 * @author: whp * @date: 2024/9/28 **/ @Override public HashMap costCenterTotal(TaskStatisticsVo taskStatisticsVo) { if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){ if("7".equals(taskStatisticsVo.getDays())){ taskStatisticsVo.setDays("2"); } else if ("30".equals(taskStatisticsVo.getDays())) { taskStatisticsVo.setDays("3"); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); PageVo pageVo = new PageVo<>(); Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); pageVo.setPageNum(taskStatisticsVo.getPageNum()); pageVo.setPageSize(taskStatisticsVo.getPageSize()); HashMap list = this.insAreaCompanyMapper.costCenterTotal(taskStatisticsVo); return list; } private void appendName(BusinessAgentData user) { StringBuilder stringBuilder = new StringBuilder(); String deptId = user.getDeptId(); if (com.ydtech.utils.StringUtils.isNotEmpty(deptId)) { int length = deptId.length(); if (length > 0) { if (length <= 5) { String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1"); SysDept cityName = sysDeptMapper.selectById(dept); String name = cityName.getName(); stringBuilder.append("(").append(name).append(")"); } else if (length > 5) { String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1"); if (dept.length() < 5) { SysDept dept1 = sysDeptMapper.selectById(dept); SysDept cityName = sysDeptMapper.selectById(deptId); stringBuilder.append(dept1.getName()).append(cityName.getName()); } else { String deptIdTwo = dept.substring(0, 4); SysDept dept1 = sysDeptMapper.selectById(deptIdTwo); SysDept dept2 = sysDeptMapper.selectById(dept); stringBuilder.append(dept1.getName()).append(dept2.getName()); } } user.setDeptName(stringBuilder.toString()); } } } }