| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409 |
- package com.ydtech.modules.admin.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- 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<TaskStatisticsDto> queryPage(TaskStatisticsVo taskStatisticsVo) {
- String leaderId = taskStatisticsVo.getLeaderId();
- if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){
- //获取领导人下级所有
- List<String> ids = new ArrayList<>();
- List<String> userList = this.getUserTreeHx(leaderId, ids);
- userList.add(leaderId);
- if(userList.size()>0){
- taskStatisticsVo.setLeaderIds(userList);
- }
- }
- PageVo<TaskStatisticsVo> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
- taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
- taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
- IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.queryPageTaskStatistics(page,taskStatisticsVo);
- if (list != null && !list.getRecords().isEmpty()) {
- List<TaskStatisticsDto> 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<String,Object> 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);
- }
- }
- Long total = this.insAreaCompanyMapper.queryPageTaskStatisticsTotal(taskStatisticsVo);
- list.setTotal(total);
- return list;
- }
- private List<String> getUserTreeHx(String leaderId, List<String> ids) {
- List<SysUser> 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<TaskStatisticsDto> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- PageVo<TaskStatisticsVo> 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<TaskStatisticsDto> 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<TaskStatisticsDto> agentStatisticsQueryPage(TaskStatisticsVo taskStatisticsVo) {
- String leaderId = taskStatisticsVo.getLeaderId();
- if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){
- //获取领导人下级所有
- List<String> ids = new ArrayList<>();
- List<String> userList = this.getUserTreeHx(leaderId, ids);
- userList.add(leaderId);
- if(userList.size()>0){
- taskStatisticsVo.setLeaderIds(userList);
- }
- }
- PageVo<TaskStatisticsVo> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
- taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
- taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
- IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.agentStatisticsQueryPage(page,taskStatisticsVo);
- Long total = this.insAreaCompanyMapper.agentStatisticsQueryPageTotal(taskStatisticsVo);
- if (list != null && !list.getRecords().isEmpty()) {
- List<TaskStatisticsDto> 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<TaskStatisticsDto> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
- Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
- pageVo.setPageNum(taskStatisticsVo.getPageNum());
- pageVo.setPageSize(taskStatisticsVo.getPageSize());
- IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenter(page,taskStatisticsVo);
- return list;
- }
- /**
- * @description: 财务中心-费用校验-明细
- * @author: whp
- * @date: 2024/10/10
- **/
- @Override
- public IPage<TaskStatisticsDto> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
- Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
- pageVo.setPageNum(taskStatisticsVo.getPageNum());
- pageVo.setPageSize(taskStatisticsVo.getPageSize());
- IPage<TaskStatisticsDto> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- List<TaskStatisticsDtoExcel> 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<TaskStatisticsDto> queryPageElectric(TaskStatisticsVo taskStatisticsVo) {
- String leaderId = taskStatisticsVo.getLeaderId();
- if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){
- //获取领导人下级所有
- List<String> ids = new ArrayList<>();
- List<String> userList = this.getUserTreeHx(leaderId, ids);
- userList.add(leaderId);
- if(userList.size()>0){
- taskStatisticsVo.setLeaderIds(userList);
- }
- }
- PageVo<TaskStatisticsVo> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
- taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
- taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
- IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.queryPageElectric(page,taskStatisticsVo);
- if (list != null && !list.getRecords().isEmpty()) {
- List<TaskStatisticsDto> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
- Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
- pageVo.setPageNum(taskStatisticsVo.getPageNum());
- pageVo.setPageSize(taskStatisticsVo.getPageSize());
- IPage<TaskStatisticsDto> 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<TaskStatisticsDto> totalQuotation(TaskStatisticsVo taskStatisticsVo) {
- PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
- Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
- pageVo.setPageNum(taskStatisticsVo.getPageNum());
- pageVo.setPageSize(taskStatisticsVo.getPageSize());
- IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.totalQuotation(page,taskStatisticsVo);
- return list;
- }
- /**
- * @description: 控制台-业务数据
- * @author: whp
- * @date: 2024/8/13
- **/
- @Override
- public IPage<TaskStatisticsDto> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
- Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
- pageVo.setPageNum(taskStatisticsVo.getPageNum());
- pageVo.setPageSize(taskStatisticsVo.getPageSize());
- IPage<TaskStatisticsDto> 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);
- }
- HashMap<String, String> 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<TaskStatisticsDto> getDistribution(TaskStatisticsVo taskStatisticsVo) {
- List<TaskStatisticsDto> 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<TaskStatisticsExcel> 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<BusinessAgentData> getBusinessAgentData(TaskStatisticsVo taskStatisticsVo) {
- if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
- if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
- List<String> 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<TaskStatisticsVo> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
- IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
- List<BusinessAgentData> 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<String> getNextLevel(String userId) {
- // 获取系统中的所有用户
- LambdaQueryWrapper<SysUser> queryWrapperUser = new LambdaQueryWrapper<>();
- queryWrapperUser.eq(SysUser :: getStatus,"1");
- queryWrapperUser.notLike(SysUser::getId,"M");
- List<SysUser> users = this.sysUserMapper.selectList(queryWrapperUser);
- // 创建查询包装器,用于查询指定用户ID的用
- LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(SysUser::getId, userId);
- // 查询指定用户ID的用户,即第一级下属
- List<SysUser> usersLevel1 = this.sysUserMapper.selectList(queryWrapper);
- // 用于存储所有下属的ID
- List<String> 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<SysUser> SysUsers, List<SysUser> users, List<String> strIds) {
- for (SysUser sysUser : SysUsers) {
- List<SysUser> 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<SysUser> 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<String,String> getDateMapByType(String type, String startDate, String endDate) {
- HashMap<String,String> 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<String,String> getDateMapByTypeNew(String type, String startDate, String endDate) {
- HashMap<String,String> 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<String, String> 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<String> 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<InsuranceCompanyExcel> 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<BusinessAgentData> getBusinessAgentDataDetails(TaskStatisticsVo taskStatisticsVo) {
- HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
- PageVo<TaskStatisticsVo> 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<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataDetails(page, taskStatisticsVo);
- Long total = this.taskStatisticsMapper.getBusinessAgentDataDetailsAdd(taskStatisticsVo);
- list.setTotal(total);
- return list;
- }
- /**
- *
- * @param taskStatisticsVo
- * @return 控制台任务统计 渠道代理人详情
- */
- @Override
- public IPage<TaskStatisticsDto> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
- taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
- taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
- PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
- Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
- pageVo.setPageNum(taskStatisticsVo.getPageNum());
- pageVo.setPageSize(taskStatisticsVo.getPageSize());
- IPage<TaskStatisticsDto> list = this.taskStatisticsMapper.channelAgentDetails(page,taskStatisticsVo);
- return list;
- }
- /**
- * @description: 财务中心-费用校验-合计
- * @author: whp
- * @date: 2024/9/28
- **/
- @Override
- public HashMap<String, Object> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
- Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
- pageVo.setPageNum(taskStatisticsVo.getPageNum());
- pageVo.setPageSize(taskStatisticsVo.getPageSize());
- HashMap<String,Object> 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<BusinessOrderData> getBusinessOrderDataDetails(TaskStatisticsVo taskStatisticsVo) {
- getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
- PageHelper.startPage(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
- List<BusinessOrderData> 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<BusinessAgentData> getBusinessElectricData(TaskStatisticsVo taskStatisticsVo) {
- PageVo<TaskStatisticsVo> 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<String> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
- IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
- List<BusinessAgentData> 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<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
- taskStatisticsVo.setUserIds(userIds);
- }
- HashMap<String, String> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- List<TaskStatisticsDto> list = this.insAreaCompanyMapper.getBusinessDataList(taskStatisticsVo);
- List<BusinessCompanyExcel> 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<String> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
- List<BusinessAgentData> 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<BusinessAgentExcel> 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<String> 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<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
- taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
- taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
- getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
- List<BusinessAgentData> 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<GetChannelExcel> 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;
- }
- }
- }
- }
- }
|