package com.ydtech.modules.admin.service.impl; import cn.hutool.core.bean.BeanUtil; import com.alibaba.excel.annotation.ExcelProperty; 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.BusinessOrderData; import com.ydtech.modules.admin.model.vo.SysUserPartner; 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.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; 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.text.DecimalFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; 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) { String leaderId = taskStatisticsVo.getLeaderId(); if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){ //获取领导人下级所有 List ids = new ArrayList<>(); List userList = this.getUserTreeHx(leaderId, ids); userList.add(leaderId); if(userList.size()>0){ taskStatisticsVo.setLeaderIds(userList); } } 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()); 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.getBeginDate(), taskStatisticsVo.getEndDate()); taskStatisticsVo.setBeginDate(dateMapByType.get("startDate")); taskStatisticsVo.setEndDate(dateMapByType.get("endDate")); IPage list = this.insAreaCompanyMapper.queryPageTaskStatistics(page,taskStatisticsVo); Long total = this.insAreaCompanyMapper.queryPageTaskStatisticsTotal(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()); } } } } taskStatisticsVo.setUserId(record.getUserId()); HashMap sumEntryStatus = this.insAreaCompanyMapper.getSumEntryStatus(taskStatisticsVo); if(!sumEntryStatus.isEmpty()){ String entryStatus = sumEntryStatus.get("entryStatus").toString(); String outStatus = sumEntryStatus.get("outStatus").toString(); record.setSumEntryStatus(entryStatus); record.setOutStatus(outStatus); } taskStatisticsVo.setUserId(null); } } list.setTotal(total); return list; } @Override public HttpResult ordersDetailsExcel(TaskStatisticsVo taskStatisticsVo) { String leaderId = taskStatisticsVo.getLeaderId(); if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){ //获取领导人下级所有 List ids = new ArrayList<>(); List userList = this.getUserTreeHx(leaderId, ids); userList.add(leaderId); if(userList.size()>0){ taskStatisticsVo.setLeaderIds(userList); } } 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()); 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.getBeginDate(), taskStatisticsVo.getEndDate()); taskStatisticsVo.setBeginDate(dateMapByType.get("startDate")); taskStatisticsVo.setEndDate(dateMapByType.get("endDate")); List list = taskStatisticsMapper.ordersDetailsExcel(taskStatisticsVo); this.saveTranslate(list); 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, "任务明细导出", OrdersDetailsExcel.class, list); return HttpResult.ok("", uploadUrl + "excel/" + fileName); } private void saveTranslate(List list) { for (OrdersDetailsExcel ordersDetailsExcel : list) { if(StringUtils.isNotEmpty(ordersDetailsExcel.getOrderSource())){ if("1".equals(ordersDetailsExcel.getOrderSource()) && "0".equals(ordersDetailsExcel.getOrderstatus()) ){ ordersDetailsExcel.setOrderSource("app报价"); } if("0".equals(ordersDetailsExcel.getOrderSource()) && "0".equals(ordersDetailsExcel.getOrderstatus())){ ordersDetailsExcel.setOrderSource("pc报价"); } } if (StringUtils.isNotEmpty(ordersDetailsExcel.getOrderstatus())) { if("0".equals(ordersDetailsExcel.getOrderstatus())){ ordersDetailsExcel.setOrderstatus("报价完成"); } if("1".equals(ordersDetailsExcel.getOrderstatus())){ ordersDetailsExcel.setOrderstatus("待核保"); } if("2".equals(ordersDetailsExcel.getOrderstatus())){ ordersDetailsExcel.setOrderstatus("已核保待缴费"); } if("3".equals(ordersDetailsExcel.getOrderstatus())){ ordersDetailsExcel.setOrderstatus("已承保"); } if("10".equals(ordersDetailsExcel.getOrderstatus())){ ordersDetailsExcel.setOrderstatus("报价失败"); } if("11".equals(ordersDetailsExcel.getOrderstatus())){ ordersDetailsExcel.setOrderstatus("重复投保"); } if("4".equals(ordersDetailsExcel.getOrderstatus())){ ordersDetailsExcel.setOrderstatus("核保退回"); } } if(StringUtils.isNotEmpty(ordersDetailsExcel.getEntryStatus())){ if("1".equals(ordersDetailsExcel.getEntryStatus())){ ordersDetailsExcel.setEntryStatus("车险录入"); } if("2".equals(ordersDetailsExcel.getEntryStatus())){ ordersDetailsExcel.setEntryStatus("待客录单"); } if("3".equals(ordersDetailsExcel.getEntryStatus())){ ordersDetailsExcel.setEntryStatus("外部订单"); } } } } private List getUserTreeHx(String leaderId, List ids) { List sysUsers = sysUserMapper.selectByLeadId(leaderId); if (!sysUsers.isEmpty()) { ids.addAll(sysUsers.stream().map(SysUser::getId).collect(Collectors.toList())); } for (SysUser sysUser : sysUsers) { this.getUserTreeHx(sysUser.getId(), ids); } return ids; } /** * @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) { String leaderId = taskStatisticsVo.getLeaderId(); if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){ //获取领导人下级所有 List ids = new ArrayList<>(); List userList = this.getUserTreeHx(leaderId, ids); userList.add(leaderId); if(userList.size()>0){ taskStatisticsVo.setLeaderIds(userList); } } 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查询 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.getBeginDate(), taskStatisticsVo.getEndDate()); taskStatisticsVo.setBeginDate(dateMapByType.get("startDate")); taskStatisticsVo.setEndDate(dateMapByType.get("endDate")); 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/11 **/ @Override public IPage queryPageElectric(TaskStatisticsVo taskStatisticsVo) { String leaderId = taskStatisticsVo.getLeaderId(); if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){ //获取领导人下级所有 List ids = new ArrayList<>(); List userList = this.getUserTreeHx(leaderId, ids); userList.add(leaderId); if(userList.size()>0){ taskStatisticsVo.setLeaderIds(userList); } } 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()); 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.getBeginDate(), taskStatisticsVo.getEndDate()); taskStatisticsVo.setBeginDate(dateMapByType.get("startDate")); taskStatisticsVo.setEndDate(dateMapByType.get("endDate")); IPage list = this.insAreaCompanyMapper.queryPageElectric(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.queryPageElectricTotal(taskStatisticsVo); list.setTotal(total); return list; } /** * @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"); } } if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterProvinceId())){ String provinceId = this.removeTrailingZeros(taskStatisticsVo.getParterProvinceId()); taskStatisticsVo.setParterProvinceId(provinceId); } if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCityId())){ String cityId = this.removeTrailingZeros(taskStatisticsVo.getParterCityId()); taskStatisticsVo.setParterCityId(cityId); } if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCountyId())){ String countyId = this.removeTrailingZeros(taskStatisticsVo.getParterCountyId()); taskStatisticsVo.setParterCountyId(countyId); } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); getDateByType(taskStatisticsVo.getDateType(), 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.getBusinessData(page,taskStatisticsVo); return list; } /** * @description: 控制台-业务数据-统计 * @author: whp * @date: 2024/10/12 **/ @Override public TaskStatisticsDto getCountBusinessData(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"); } } if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterProvinceId())){ String provinceId = this.removeTrailingZeros(taskStatisticsVo.getParterProvinceId()); taskStatisticsVo.setParterProvinceId(provinceId); } if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCityId())){ String cityId = this.removeTrailingZeros(taskStatisticsVo.getParterCityId()); taskStatisticsVo.setParterCityId(cityId); } if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCountyId())){ String countyId = this.removeTrailingZeros(taskStatisticsVo.getParterCountyId()); taskStatisticsVo.setParterCountyId(countyId); } getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); TaskStatisticsDto result = this.insAreaCompanyMapper.getCountBusinessData(taskStatisticsVo); TaskStatisticsDto userNumberdto = this.insAreaCompanyMapper.getUserNumber(taskStatisticsVo); if(ObjectUtils.isNotEmpty(userNumberdto)){ BigDecimal userNumber = userNumberdto.getUserNumber(); BigDecimal totalPremium = new BigDecimal(result.getTotalPremium()); BigDecimal resultDivided = totalPremium.divide(userNumber, 2, RoundingMode.HALF_UP); //人均产能 result.setPerCapitaAmount(resultDivided); result.setUserNumber(userNumberdto.getUserNumber()); } return result; } /** * @description: 控制台-业务数据 - 保险分布 * @author: whp * @date: 2024/8/13 **/ @Override public List getDistribution(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")); getDateByType(taskStatisticsVo.getDateType(), 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) { String leaderId = taskStatisticsVo.getLeaderId(); if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){ //获取领导人下级所有 List ids = new ArrayList<>(); List userList = this.getUserTreeHx(leaderId, ids); userList.add(leaderId); if(userList.size()>0){ taskStatisticsVo.setLeaderIds(userList); } } 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查询 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.getBeginDate(), taskStatisticsVo.getEndDate()); taskStatisticsVo.setBeginDate(dateMapByType.get("startDate")); taskStatisticsVo.setEndDate(dateMapByType.get("endDate")); 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 name =""; if(taskStatisticsVo.getManagementSource().equals("1")){ name="渠道导出"; } else if (taskStatisticsVo.getManagementSource().equals("2")) { name="代理人导出"; }else { name="电销导出"; } String fileName = EasyExcelUtils.downExcel(uploadPath, name, 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() && userIds.get(0)!=null){ 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()); if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()) ) ){ return new Page<>(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageNum()); } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); IPage list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo); List records = list.getRecords(); for (BusinessAgentData record : records) { this.appendName(record); if (record.getDistributionAmountRate() == null) { record.setDistributionAmountRate(new BigDecimal("0.0000")); } } 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"); queryWrapperUser.notLike(SysUser::getId,"M"); 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); if(!strIds.contains(userId)){ strIds.add(userId); } 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 = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) || "3".equals(taskStatisticsVo.getManagementSource())){ if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){ List userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId()); if(!userIds.isEmpty() && userIds.get(0)!=null){ 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<>()); } } if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()))) { return new BusinessAgentData(); } 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, 4, BigDecimal.ROUND_DOWN); result.setSumPremiumProportion(multiply); } }else { result.setSumPremiumProportion(BigDecimal.ZERO); } BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO; BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO; BigDecimal subtract = entranceAllFee.subtract(exportAllFee); result.setDistributionAmount(subtract); //毛利润 if(subtract.compareTo(BigDecimal.ZERO)>0){ BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能 result.setDistributionAmountRate(resultDivided); }else { result.setDistributionAmountRate(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/10/29 **/ @Override public HttpResult electricExcel(TaskStatisticsVo taskStatisticsVo) { taskStatisticsVo.setManagementSource("3"); return getHttpResult(taskStatisticsVo); } /** * @description: 任务统计-保险公司-导出 * @author: whp * @date: 2024/9/9 **/ @Override public HttpResult insuranceCompanyExcel(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"); } } 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")); getDateByType(taskStatisticsVo.getDateType(), 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.taskStatisticsMapper.getBusinessAgentDataDetails(page, taskStatisticsVo); Long total = this.taskStatisticsMapper.getBusinessAgentDataDetailsAdd(taskStatisticsVo); list.setTotal(total); return list; } /** * * @param taskStatisticsVo * @return 控制台任务统计 渠道代理人详情 */ @Override public IPage channelAgentDetails(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.getBeginDate(), taskStatisticsVo.getEndDate()); taskStatisticsVo.setBeginDate(dateMapByType.get("startDate")); taskStatisticsVo.setEndDate(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.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()); } } } /** * @description: 任控制台-业务数据-渠道-详情 * @author: hh * @date: 2024/11/19 **/ @Override public PageInfo getBusinessOrderDataDetails(TaskStatisticsVo taskStatisticsVo) { getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); PageHelper.startPage(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize()); List businessOrderList = this.taskStatisticsMapper.getBusinessOrderDataDetails(taskStatisticsVo); if (!com.ydtech.utils.StringUtils.isNullOrEmpty(businessOrderList) && !businessOrderList.isEmpty()) { for (BusinessOrderData businessOrderData : businessOrderList) { BigDecimal entranceAllFee = businessOrderData.getEntranceAllFee() != null ? businessOrderData.getEntranceAllFee().setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO; BigDecimal exportAllFee = businessOrderData.getExportAllFee() != null ? businessOrderData.getExportAllFee() : BigDecimal.ZERO; BigDecimal distributionAmount = entranceAllFee.subtract(exportAllFee); businessOrderData.setDistributionAmount(distributionAmount); //毛利润 businessOrderData.setEntranceAllFee(entranceAllFee); if(distributionAmount.compareTo(BigDecimal.ZERO) > 0 && businessOrderData.getSumPremium().compareTo(BigDecimal.ZERO) > 0){ BigDecimal resultDivided = distributionAmount.divide(businessOrderData.getSumPremium(), 4, RoundingMode.HALF_UP); //人均产能 businessOrderData.setDistributionAmountRate(resultDivided); }else { businessOrderData.setDistributionAmountRate(new BigDecimal("0.0000")); } } } return new PageInfo<>(businessOrderList); } /** * @description: 任控制台-业务数据-渠道-合计 * @author: hh * @date: 2024/11/19 **/ @Override public BusinessOrderData getBusinessOrderDataTotal(TaskStatisticsVo taskStatisticsVo) { getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); BusinessOrderData result = this.taskStatisticsMapper.getBusinessOrderDataTotal(taskStatisticsVo); if (com.ydtech.utils.StringUtils.isNullOrEmpty(result)) { return null; } BigDecimal sumPremium = result.getSumPremium(); BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo); if (ObjectUtils.isNotEmpty(sumPremium)) { BigDecimal allSumPremium = allsumPremium.getSumPremium(); if (sumPremium.compareTo(BigDecimal.ZERO) == 1 && allSumPremium.compareTo(BigDecimal.ZERO) > 0) { BigDecimal multiply = sumPremium.divide(allSumPremium, 4, BigDecimal.ROUND_DOWN); result.setSumPremiumProportion(multiply); } } else { result.setSumPremiumProportion(BigDecimal.ZERO); } BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO; BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO; BigDecimal subtract = entranceAllFee.subtract(exportAllFee); result.setDistributionAmount(subtract); //毛利润 if(subtract.compareTo(BigDecimal.ZERO) > 0 && sumPremium.compareTo(BigDecimal.ZERO) > 0){ BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能 result.setDistributionAmountRate(resultDivided); }else { result.setDistributionAmountRate(new BigDecimal("0.0000")); } return result; } /** * 任控制台-业务数据-渠道" * @param taskStatisticsVo * @return */ @Override public IPage getBusinessElectricData(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()); if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId())){ List userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId()); taskStatisticsVo.setUserIds(userIds); } if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()) ) ){ return new Page<>(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageNum()); } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); IPage list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo); List records = list.getRecords(); for (BusinessAgentData record : records) { this.appendName(record); if (record.getDistributionAmountRate() == null) { record.setDistributionAmountRate(new BigDecimal("0.0000")); } } Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo); list.setTotal(total); return list; } /** * 任控制台-业务数据-电销-合计 * @param taskStatisticsVo * @return */ @Override public BusinessAgentData getBusinessElectricDataTotal(TaskStatisticsVo taskStatisticsVo) { if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId())){ List userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId()); taskStatisticsVo.setUserIds(userIds); } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()))) { return new BusinessAgentData(); } 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, 4, BigDecimal.ROUND_DOWN); result.setSumPremiumProportion(multiply); } }else { result.setSumPremiumProportion(BigDecimal.ZERO); } BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO; BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO; BigDecimal subtract = entranceAllFee.subtract(exportAllFee); result.setDistributionAmount(subtract); //毛利润 if(subtract.compareTo(BigDecimal.ZERO)>0){ BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能 result.setDistributionAmountRate(resultDivided); }else { result.setDistributionAmountRate(BigDecimal.ZERO); } return result; } @Override public HttpResult getBusinessDataExcel(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"); } } if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterProvinceId())) { String provinceId = this.removeTrailingZeros(taskStatisticsVo.getParterProvinceId()); taskStatisticsVo.setParterProvinceId(provinceId); } if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCityId())) { String cityId = this.removeTrailingZeros(taskStatisticsVo.getParterCityId()); taskStatisticsVo.setParterCityId(cityId); } if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCountyId())) { String countyId = this.removeTrailingZeros(taskStatisticsVo.getParterCountyId()); taskStatisticsVo.setParterCountyId(countyId); } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); List list = this.insAreaCompanyMapper.getBusinessDataList(taskStatisticsVo); List sysUserPartners = BeanUtil.copyToList(list, BusinessCompanyExcel.class); 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, "业务数据保险公司导出", BusinessCompanyExcel.class, sysUserPartners); return HttpResult.ok("", uploadUrl + "excel/" + fileName); } /** * @description: 控制台 - 业务数据 - 代理人导出 * @author: whp * @date: 2024/12/13 **/ @Override public HttpResult getBusinessAgentExcel(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() && userIds.get(0)!=null){ 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<>()); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); List list = this.taskStatisticsMapper.getBusinessAgentDataExcel(taskStatisticsVo); for (BusinessAgentData record : list) { this.appendName(record); if (record.getDistributionAmountRate() == null) { record.setDistributionAmountRate(new BigDecimal("0.0000")); } if(record.getManagementSource().equals("2")){ record.setManagementSource("代理人"); } } List sysUserPartners = BeanUtil.copyToList(list, BusinessAgentExcel.class); 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, "业务数据代理人导出", BusinessAgentExcel.class, sysUserPartners); return HttpResult.ok("", uploadUrl + "excel/" + fileName); } /** * @description: 控制台 - 业务数据 -渠道导出 * @author: whp * @date: 2024/12/13 **/ @Override public HttpResult getChannelExcel(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() && userIds.get(0)!=null){ 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<>()); } } HashMap dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd()); taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate")); taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate")); getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo); List list = this.taskStatisticsMapper.getBusinessAgentDataExcel(taskStatisticsVo); for (BusinessAgentData record : list) { this.appendName(record); if (record.getDistributionAmountRate() == null) { record.setDistributionAmountRate(new BigDecimal("0.0000")); } if(record.getManagementSource().equals("1")){ record.setManagementSource("渠道"); } } List sysUserPartners = BeanUtil.copyToList(list, GetChannelExcel.class); 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, "业务数据渠道导出", GetChannelExcel.class, sysUserPartners); return HttpResult.ok("", uploadUrl + "excel/" + fileName); } /** * @version * @author: hh * @Date: 2024/11/19 * @Description: 通过时间类型判断 */ private static void getDateByType(String type, TaskStatisticsVo taskStatisticsVo) { String startDateStr = new String(); String endDateStr = new String(); if (StringUtils.isNotEmpty(type)) { switch (type) { case "1" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 00:00:00"; endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59"; break; case "2" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),1) + " 00:00:00"; endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59"; break; case "3" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),6) + " 00:00:00"; endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59"; break; } if (StringUtils.isNotEmpty(taskStatisticsVo.getTimeType())) { switch (taskStatisticsVo.getTimeType()) { case "1" : taskStatisticsVo.setEnterTimeStart(startDateStr); taskStatisticsVo.setEnterTimeEnd(endDateStr); break; case "2" : taskStatisticsVo.setSigningTimeStart(startDateStr); taskStatisticsVo.setSigningTimeEnd(endDateStr); break; } } } } /** * @description: 财务中心 - 费用校验 - 人员查询 * @author: whp **/ @Override public IPage costReviewer(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.costReviewer(page,taskStatisticsVo); return list; } }