TaskStatisticsServiceImpl.java 66 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421
  1. package com.ydtech.modules.admin.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.github.pagehelper.PageHelper;
  9. import com.github.pagehelper.PageInfo;
  10. import com.ydtech.core.page.HttpResult;
  11. import com.ydtech.core.page.PageRequest;
  12. import com.ydtech.exception.SystemException;
  13. import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
  14. import com.ydtech.modules.admin.dao.SysDeptMapper;
  15. import com.ydtech.modules.admin.dao.SysUserMapper;
  16. import com.ydtech.modules.admin.dao.TaskStatisticsMapper;
  17. import com.ydtech.modules.admin.model.SysDept;
  18. import com.ydtech.modules.admin.model.SysUser;
  19. import com.ydtech.modules.admin.model.dto.*;
  20. import com.ydtech.modules.admin.model.vo.BusinessAgentData;
  21. import com.ydtech.modules.admin.model.vo.BusinessOrderData;
  22. import com.ydtech.modules.admin.model.vo.SysUserPartner;
  23. import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
  24. import com.ydtech.modules.admin.service.SysDeptService;
  25. import com.ydtech.modules.admin.service.TaskStatisticsService;
  26. import com.ydtech.modules.admin.utils.SliceUpDateUtil;
  27. import com.ydtech.modules.base.controller.BaseController;
  28. import com.ydtech.modules.base.model.vo.PageVo;
  29. import com.ydtech.modules.inv.utils.EasyExcelUtils;
  30. import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
  31. import com.ydtech.modules.order.dao.InsOrdersMapper;
  32. import org.apache.commons.lang3.ObjectUtils;
  33. import org.apache.commons.lang3.StringUtils;
  34. import org.springframework.beans.BeanUtils;
  35. import org.springframework.beans.factory.annotation.Autowired;
  36. import org.springframework.beans.factory.annotation.Value;
  37. import org.springframework.stereotype.Service;
  38. import org.springframework.util.CollectionUtils;
  39. import java.io.File;
  40. import java.io.IOException;
  41. import java.math.BigDecimal;
  42. import java.math.RoundingMode;
  43. import java.nio.file.Files;
  44. import java.nio.file.Path;
  45. import java.nio.file.Paths;
  46. import java.text.DecimalFormat;
  47. import java.util.ArrayList;
  48. import java.util.Date;
  49. import java.util.HashMap;
  50. import java.util.List;
  51. import java.util.stream.Collectors;
  52. import static com.baomidou.mybatisplus.extension.toolkit.Db.list;
  53. /**
  54. * @description: 任务统计
  55. * @author: whp
  56. * @date: 2024/7/25
  57. **/
  58. @Service
  59. public class TaskStatisticsServiceImpl implements TaskStatisticsService {
  60. @Autowired
  61. private InsAreaCompanyMapper insAreaCompanyMapper;
  62. @Autowired
  63. private SysAmountAuditingMapper sysAmountAuditingMapper;
  64. @Autowired
  65. private InsOrdersMapper insOrdersMapper;
  66. @Autowired
  67. private TaskStatisticsMapper taskStatisticsMapper;
  68. @Autowired
  69. private SysDeptService sysDeptService;
  70. @Autowired
  71. private SysUserMapper sysUserMapper;
  72. @Autowired
  73. private SysDeptMapper sysDeptMapper;
  74. @Value("${upload.file.path}")
  75. private String uploadPath;
  76. @Value("${upload.file.url}")
  77. private String uploadUrl;
  78. /**
  79. * @description: 渠道任务统计查询
  80. * @author: whp
  81. * @date: 2024/7/25
  82. **/
  83. @Override
  84. public IPage<TaskStatisticsDto> queryPage(TaskStatisticsVo taskStatisticsVo) {
  85. String leaderId = taskStatisticsVo.getLeaderId();
  86. if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){
  87. //获取领导人下级所有
  88. List<String> ids = new ArrayList<>();
  89. List<String> userList = this.getUserTreeHx(leaderId, ids);
  90. userList.add(leaderId);
  91. if(userList.size()>0){
  92. taskStatisticsVo.setLeaderIds(userList);
  93. }
  94. }
  95. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  96. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  97. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  98. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  99. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  100. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  101. if("7".equals(taskStatisticsVo.getDays())){
  102. taskStatisticsVo.setDays("2");
  103. } else if ("30".equals(taskStatisticsVo.getDays())) {
  104. taskStatisticsVo.setDays("3");
  105. }
  106. }
  107. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
  108. taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
  109. taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
  110. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.queryPageTaskStatistics(page,taskStatisticsVo);
  111. if (list != null && !list.getRecords().isEmpty()) {
  112. List<TaskStatisticsDto> records = list.getRecords();
  113. for (TaskStatisticsDto record : records) {
  114. String deptId = record.getDeptId();
  115. if (StringUtils.isNotEmpty(deptId)) {
  116. int length = deptId.length();
  117. if (length > 0) {
  118. if (length > 0) {
  119. if (length > 10) {
  120. String substring = deptId.substring(0, 6);
  121. String substring1 = deptId.substring(0, 8);
  122. String province = deptId.substring(0, 4);
  123. SysDept cityName = sysDeptService.getById(substring);
  124. SysDept districtName = sysDeptService.getById(substring1);
  125. SysDept provinceName = sysDeptService.getById(province);
  126. SysDept storeDeptName = sysDeptService.getById(deptId);
  127. record.setCityName(cityName.getName());
  128. record.setDistrictName(districtName.getName());
  129. record.setProvinceName(provinceName.getName());
  130. record.setStoreDeptName(storeDeptName.getName());
  131. }
  132. }
  133. }
  134. }
  135. taskStatisticsVo.setUserId(record.getUserId());
  136. HashMap<String,Object> sumEntryStatus = this.insAreaCompanyMapper.getSumEntryStatus(taskStatisticsVo);
  137. if(!sumEntryStatus.isEmpty()){
  138. String entryStatus = sumEntryStatus.get("entryStatus").toString();
  139. String outStatus = sumEntryStatus.get("outStatus").toString();
  140. record.setSumEntryStatus(entryStatus);
  141. record.setOutStatus(outStatus);
  142. }
  143. taskStatisticsVo.setUserId(null);
  144. }
  145. }
  146. Long total = this.insAreaCompanyMapper.queryPageTaskStatisticsTotal(taskStatisticsVo);
  147. list.setTotal(total);
  148. return list;
  149. }
  150. private List<String> getUserTreeHx(String leaderId, List<String> ids) {
  151. List<SysUser> sysUsers = sysUserMapper.selectByLeadId(leaderId);
  152. if (!sysUsers.isEmpty()) {
  153. ids.addAll(sysUsers.stream().map(SysUser::getId).collect(Collectors.toList()));
  154. }
  155. for (SysUser sysUser : sysUsers) {
  156. this.getUserTreeHx(sysUser.getId(), ids);
  157. }
  158. return ids;
  159. }
  160. /**
  161. * @description: 保险公司统计查询
  162. * @author: whp
  163. * @date: 2024/7/25
  164. **/
  165. @Override
  166. public IPage<TaskStatisticsDto> insuranceCompanyQueryPage(TaskStatisticsVo taskStatisticsVo) {
  167. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getProvinceId())){
  168. String provinceId = this.removeTrailingZeros(taskStatisticsVo.getProvinceId());
  169. taskStatisticsVo.setProvinceId(provinceId);
  170. }
  171. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCityId())){
  172. String cityId = this.removeTrailingZeros(taskStatisticsVo.getCityId());
  173. taskStatisticsVo.setCityId(cityId);
  174. }
  175. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCountyId())){
  176. String countyId = this.removeTrailingZeros(taskStatisticsVo.getCountyId());
  177. taskStatisticsVo.setCountyId(countyId);
  178. }
  179. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  180. if("7".equals(taskStatisticsVo.getDays())){
  181. taskStatisticsVo.setDays("2");
  182. } else if ("30".equals(taskStatisticsVo.getDays())) {
  183. taskStatisticsVo.setDays("3");
  184. }
  185. }
  186. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  187. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  188. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  189. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  190. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  191. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  192. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  193. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  194. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.insuranceCompanyQueryPage(page,taskStatisticsVo);
  195. Long total = this.insAreaCompanyMapper.insuranceCompanyQueryTotal(taskStatisticsVo);
  196. list.setTotal(total);
  197. return list;
  198. }
  199. private String removeTrailingZeros(String value) {
  200. int len = value.length();
  201. int i = len - 1;
  202. // 查找第一个非零字符的位置
  203. while (i >= 0 && value.charAt(i) == '0') {
  204. i--;
  205. }
  206. // 如果所有字符都是0,则返回"0"
  207. if (i < 0) {
  208. return "0";
  209. }
  210. // 使用substring方法获取去除末尾零的子串
  211. return value.substring(0, i + 1);
  212. }
  213. /**
  214. * @description: 代理人统计查询
  215. * @author: whp
  216. * @date: 2024/7/26
  217. **/
  218. @Override
  219. public IPage<TaskStatisticsDto> agentStatisticsQueryPage(TaskStatisticsVo taskStatisticsVo) {
  220. String leaderId = taskStatisticsVo.getLeaderId();
  221. if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){
  222. //获取领导人下级所有
  223. List<String> ids = new ArrayList<>();
  224. List<String> userList = this.getUserTreeHx(leaderId, ids);
  225. userList.add(leaderId);
  226. if(userList.size()>0){
  227. taskStatisticsVo.setLeaderIds(userList);
  228. }
  229. }
  230. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  231. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  232. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  233. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  234. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  235. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  236. if("7".equals(taskStatisticsVo.getDays())){
  237. taskStatisticsVo.setDays("2");
  238. } else if ("30".equals(taskStatisticsVo.getDays())) {
  239. taskStatisticsVo.setDays("3");
  240. }
  241. }
  242. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
  243. taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
  244. taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
  245. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.agentStatisticsQueryPage(page,taskStatisticsVo);
  246. Long total = this.insAreaCompanyMapper.agentStatisticsQueryPageTotal(taskStatisticsVo);
  247. if (list != null && !list.getRecords().isEmpty()) {
  248. List<TaskStatisticsDto> records = list.getRecords();
  249. for (TaskStatisticsDto record : records) {
  250. String deptId = record.getDeptId();
  251. if (StringUtils.isNotEmpty(deptId)) {
  252. int length = deptId.length();
  253. if (length > 0) {
  254. if (length > 0) {
  255. if (length > 10) {
  256. String substring = deptId.substring(0, 6);
  257. String substring1 = deptId.substring(0, 8);
  258. String province = deptId.substring(0, 4);
  259. SysDept cityName = sysDeptService.getById(substring);
  260. SysDept districtName = sysDeptService.getById(substring1);
  261. SysDept provinceName = sysDeptService.getById(province);
  262. SysDept storeDeptName = sysDeptService.getById(deptId);
  263. record.setCityName(cityName.getName());
  264. record.setDistrictName(districtName.getName());
  265. record.setProvinceName(provinceName.getName());
  266. record.setStoreDeptName(storeDeptName.getName());
  267. }
  268. }
  269. }
  270. }
  271. }
  272. }
  273. list.setTotal(total);
  274. return list;
  275. }
  276. /**
  277. * @description: 财务中心-费用校验
  278. * @author: whp
  279. * @date: 2024/7/29
  280. **/
  281. @Override
  282. public IPage<TaskStatisticsDto> costCenter(TaskStatisticsVo taskStatisticsVo) {
  283. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  284. if("7".equals(taskStatisticsVo.getDays())){
  285. taskStatisticsVo.setDays("2");
  286. } else if ("30".equals(taskStatisticsVo.getDays())) {
  287. taskStatisticsVo.setDays("3");
  288. }
  289. }
  290. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  291. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  292. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  293. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  294. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  295. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  296. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  297. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenter(page,taskStatisticsVo);
  298. return list;
  299. }
  300. /**
  301. * @description: 财务中心-费用校验-明细
  302. * @author: whp
  303. * @date: 2024/10/10
  304. **/
  305. @Override
  306. public IPage<TaskStatisticsDto> costCenterDetails(TaskStatisticsVo taskStatisticsVo) {
  307. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  308. if("7".equals(taskStatisticsVo.getDays())){
  309. taskStatisticsVo.setDays("2");
  310. } else if ("30".equals(taskStatisticsVo.getDays())) {
  311. taskStatisticsVo.setDays("3");
  312. }
  313. }
  314. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  315. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  316. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  317. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  318. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  319. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  320. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  321. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenterDetails(page,taskStatisticsVo);
  322. return list;
  323. }
  324. /**
  325. * @description: 任务统计-保险公司-导出
  326. * @author: whp
  327. * @date: 2024/9/9
  328. **/
  329. @Override
  330. public HttpResult costCenterDetailsExcel(TaskStatisticsVo taskStatisticsVo) {
  331. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  332. if("7".equals(taskStatisticsVo.getDays())){
  333. taskStatisticsVo.setDays("2");
  334. } else if ("30".equals(taskStatisticsVo.getDays())) {
  335. taskStatisticsVo.setDays("3");
  336. }
  337. }
  338. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  339. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  340. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  341. List<TaskStatisticsDtoExcel> list = this.insAreaCompanyMapper.costCenterDetailsExcel(taskStatisticsVo);
  342. String uploadPath = this.uploadPath + "/excel/";
  343. Path path = Paths.get(uploadPath);
  344. if (!Files.exists(path)) {
  345. try {
  346. Files.createDirectories(path);
  347. } catch (IOException e) {
  348. e.printStackTrace();
  349. }
  350. }
  351. String fileName = EasyExcelUtils.downExcel(uploadPath, "费用校验审核人导出", TaskStatisticsDtoExcel.class, list);
  352. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  353. }
  354. /**
  355. * @description: 电销任务统计查询
  356. * @author: whp
  357. * @date: 2024/10/11
  358. **/
  359. @Override
  360. public IPage<TaskStatisticsDto> queryPageElectric(TaskStatisticsVo taskStatisticsVo) {
  361. String leaderId = taskStatisticsVo.getLeaderId();
  362. if(com.ydtech.utils.StringUtils.isNotEmpty(leaderId)){
  363. //获取领导人下级所有
  364. List<String> ids = new ArrayList<>();
  365. List<String> userList = this.getUserTreeHx(leaderId, ids);
  366. userList.add(leaderId);
  367. if(userList.size()>0){
  368. taskStatisticsVo.setLeaderIds(userList);
  369. }
  370. }
  371. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  372. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  373. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  374. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  375. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  376. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  377. if("7".equals(taskStatisticsVo.getDays())){
  378. taskStatisticsVo.setDays("2");
  379. } else if ("30".equals(taskStatisticsVo.getDays())) {
  380. taskStatisticsVo.setDays("3");
  381. }
  382. }
  383. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
  384. taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
  385. taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
  386. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.queryPageElectric(page,taskStatisticsVo);
  387. if (list != null && !list.getRecords().isEmpty()) {
  388. List<TaskStatisticsDto> records = list.getRecords();
  389. for (TaskStatisticsDto record : records) {
  390. String deptId = record.getDeptId();
  391. if (StringUtils.isNotEmpty(deptId)) {
  392. int length = deptId.length();
  393. if (length > 0) {
  394. if (length > 0) {
  395. if (length > 10) {
  396. String substring = deptId.substring(0, 6);
  397. String substring1 = deptId.substring(0, 8);
  398. String province = deptId.substring(0, 4);
  399. SysDept cityName = sysDeptService.getById(substring);
  400. SysDept districtName = sysDeptService.getById(substring1);
  401. SysDept provinceName = sysDeptService.getById(province);
  402. SysDept storeDeptName = sysDeptService.getById(deptId);
  403. record.setCityName(cityName.getName());
  404. record.setDistrictName(districtName.getName());
  405. record.setProvinceName(provinceName.getName());
  406. record.setStoreDeptName(storeDeptName.getName());
  407. }
  408. }
  409. }
  410. }
  411. }
  412. }
  413. Long total = this.insAreaCompanyMapper.queryPageElectricTotal(taskStatisticsVo);
  414. list.setTotal(total);
  415. return list;
  416. }
  417. /**
  418. * @description: 财务中心-费用校验-明细-查看
  419. * @author: whp
  420. * @date: 2024/10/10
  421. **/
  422. @Override
  423. public TaskStatisticsDtoNew costCenterDetailsLicense(TaskStatisticsVo taskStatisticsVo) {
  424. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  425. if("7".equals(taskStatisticsVo.getDays())){
  426. taskStatisticsVo.setDays("2");
  427. } else if ("30".equals(taskStatisticsVo.getDays())) {
  428. taskStatisticsVo.setDays("3");
  429. }
  430. }
  431. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  432. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  433. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  434. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  435. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  436. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  437. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  438. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenterDetailsLicense(page,taskStatisticsVo);
  439. TaskStatisticsDtoNew sumSecond = this.insAreaCompanyMapper.costCenterSecond(taskStatisticsVo);
  440. sumSecond.setPageResult(list);
  441. return sumSecond;
  442. }
  443. /**
  444. * @description: 保险公司统计总报价
  445. * @author: whp
  446. * @date: 2024/8/12
  447. **/
  448. @Override
  449. public IPage<TaskStatisticsDto> totalQuotation(TaskStatisticsVo taskStatisticsVo) {
  450. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  451. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  452. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  453. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  454. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.totalQuotation(page,taskStatisticsVo);
  455. return list;
  456. }
  457. /**
  458. * @description: 控制台-业务数据
  459. * @author: whp
  460. * @date: 2024/8/13
  461. **/
  462. @Override
  463. public IPage<TaskStatisticsDto> getBusinessData(TaskStatisticsVo taskStatisticsVo) {
  464. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  465. if("7".equals(taskStatisticsVo.getDays())){
  466. taskStatisticsVo.setDateType("2");
  467. } else if ("30".equals(taskStatisticsVo.getDays())) {
  468. taskStatisticsVo.setDateType("3");
  469. } else if ("1".equals(taskStatisticsVo.getDays())){
  470. taskStatisticsVo.setDateType("1");
  471. }
  472. }
  473. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterProvinceId())){
  474. String provinceId = this.removeTrailingZeros(taskStatisticsVo.getParterProvinceId());
  475. taskStatisticsVo.setParterProvinceId(provinceId);
  476. }
  477. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCityId())){
  478. String cityId = this.removeTrailingZeros(taskStatisticsVo.getParterCityId());
  479. taskStatisticsVo.setParterCityId(cityId);
  480. }
  481. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCountyId())){
  482. String countyId = this.removeTrailingZeros(taskStatisticsVo.getParterCountyId());
  483. taskStatisticsVo.setParterCountyId(countyId);
  484. }
  485. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  486. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  487. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  488. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  489. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  490. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  491. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  492. IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.getBusinessData(page,taskStatisticsVo);
  493. return list;
  494. }
  495. /**
  496. * @description: 控制台-业务数据-统计
  497. * @author: whp
  498. * @date: 2024/10/12
  499. **/
  500. @Override
  501. public TaskStatisticsDto getCountBusinessData(TaskStatisticsVo taskStatisticsVo) {
  502. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  503. if("7".equals(taskStatisticsVo.getDays())){
  504. taskStatisticsVo.setDateType("2");
  505. } else if ("30".equals(taskStatisticsVo.getDays())) {
  506. taskStatisticsVo.setDateType("3");
  507. } else if ("1".equals(taskStatisticsVo.getDays())){
  508. taskStatisticsVo.setDateType("1");
  509. }
  510. }
  511. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterProvinceId())){
  512. String provinceId = this.removeTrailingZeros(taskStatisticsVo.getParterProvinceId());
  513. taskStatisticsVo.setParterProvinceId(provinceId);
  514. }
  515. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCityId())){
  516. String cityId = this.removeTrailingZeros(taskStatisticsVo.getParterCityId());
  517. taskStatisticsVo.setParterCityId(cityId);
  518. }
  519. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCountyId())){
  520. String countyId = this.removeTrailingZeros(taskStatisticsVo.getParterCountyId());
  521. taskStatisticsVo.setParterCountyId(countyId);
  522. }
  523. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  524. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  525. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  526. TaskStatisticsDto result = this.insAreaCompanyMapper.getCountBusinessData(taskStatisticsVo);
  527. TaskStatisticsDto userNumberdto = this.insAreaCompanyMapper.getUserNumber(taskStatisticsVo);
  528. if(ObjectUtils.isNotEmpty(userNumberdto)){
  529. BigDecimal userNumber = userNumberdto.getUserNumber();
  530. BigDecimal totalPremium = new BigDecimal(result.getTotalPremium());
  531. BigDecimal resultDivided = totalPremium.divide(userNumber, 2, RoundingMode.HALF_UP); //人均产能
  532. result.setPerCapitaAmount(resultDivided);
  533. result.setUserNumber(userNumberdto.getUserNumber());
  534. }
  535. return result;
  536. }
  537. /**
  538. * @description: 控制台-业务数据 - 保险分布
  539. * @author: whp
  540. * @date: 2024/8/13
  541. **/
  542. @Override
  543. public List<TaskStatisticsDto> getDistribution(TaskStatisticsVo taskStatisticsVo) {
  544. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  545. if("7".equals(taskStatisticsVo.getDays())){
  546. taskStatisticsVo.setDateType("2");
  547. } else if ("30".equals(taskStatisticsVo.getDays())) {
  548. taskStatisticsVo.setDateType("3");
  549. } else if ("1".equals(taskStatisticsVo.getDays())){
  550. taskStatisticsVo.setDateType("1");
  551. }
  552. }
  553. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  554. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  555. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  556. List<TaskStatisticsDto> result = new ArrayList<>();
  557. //0 报价中 1 待核保 2 已核保代缴费 3 已承保 4 核保退回
  558. for (int i = 0; i < 5; i++) {
  559. taskStatisticsVo.setQuotationStatus(i+"");
  560. TaskStatisticsDto taskStatisticsDtoItem = insAreaCompanyMapper.getDistribution(taskStatisticsVo);
  561. if(ObjectUtils.isNotEmpty(taskStatisticsDtoItem)){
  562. taskStatisticsDtoItem.setQuotationStatus(i+"");
  563. result.add(taskStatisticsDtoItem);
  564. }
  565. }
  566. return result;
  567. }
  568. /**
  569. * @description: 任务统计-渠道导出
  570. * @author: whp
  571. * @date: 2024/09/09
  572. **/
  573. @Override
  574. public HttpResult channelExcel(TaskStatisticsVo taskStatisticsVo) {
  575. taskStatisticsVo.setManagementSource("1");
  576. return getHttpResult(taskStatisticsVo);
  577. }
  578. private HttpResult getHttpResult(TaskStatisticsVo taskStatisticsVo) {
  579. List<TaskStatisticsExcel> list = this.insAreaCompanyMapper.channelExcel(taskStatisticsVo);
  580. if (list != null && !list.isEmpty()) {
  581. for (TaskStatisticsExcel record : list) {
  582. String deptId = record.getDeptId();
  583. if (StringUtils.isNotEmpty(deptId)) {
  584. int length = deptId.length();
  585. if (length > 0) {
  586. if (length > 0) {
  587. if (length > 10) {
  588. String substring = deptId.substring(0, 6);
  589. String substring1 = deptId.substring(0, 8);
  590. String province = deptId.substring(0, 4);
  591. SysDept cityName = sysDeptService.getById(substring);
  592. SysDept districtName = sysDeptService.getById(substring1);
  593. SysDept provinceName = sysDeptService.getById(province);
  594. record.setCityName(cityName.getName());
  595. record.setDistrictName(districtName.getName());
  596. record.setProvinceName(provinceName.getName());
  597. }
  598. }
  599. }
  600. }
  601. }
  602. }
  603. String uploadPath = this.uploadPath + "/excel/";
  604. Path path = Paths.get(uploadPath);
  605. if (!Files.exists(path)) {
  606. try {
  607. Files.createDirectories(path);
  608. } catch (IOException e) {
  609. e.printStackTrace();
  610. }
  611. }
  612. String name ="";
  613. if(taskStatisticsVo.getManagementSource().equals("1")){
  614. name="渠道导出";
  615. } else if (taskStatisticsVo.getManagementSource().equals("2")) {
  616. name="代理人导出";
  617. }else {
  618. name="电销导出";
  619. }
  620. String fileName = EasyExcelUtils.downExcel(uploadPath, name, TaskStatisticsExcel.class, list);
  621. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  622. }
  623. /**
  624. * @description: 任控制台-业务数据-代理人
  625. * @author: whp
  626. * @date: 2024/09/09
  627. **/
  628. @Override
  629. public IPage<BusinessAgentData> getBusinessAgentData(TaskStatisticsVo taskStatisticsVo) {
  630. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
  631. if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
  632. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  633. if(!userIds.isEmpty() && userIds.get(0)!=null){
  634. taskStatisticsVo.setUserIds(userIds);
  635. }else {
  636. taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
  637. }
  638. }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){
  639. taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
  640. taskStatisticsVo.setTreeUserId(null);
  641. taskStatisticsVo.setUserIds(new ArrayList<>());
  642. }
  643. }
  644. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  645. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  646. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  647. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  648. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  649. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()) ) ){
  650. return new Page<>(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageNum());
  651. }
  652. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  653. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  654. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  655. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  656. IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
  657. List<BusinessAgentData> records = list.getRecords();
  658. for (BusinessAgentData record : records) {
  659. this.appendName(record);
  660. if (record.getDistributionAmountRate() == null) {
  661. record.setDistributionAmountRate(new BigDecimal("0.0000"));
  662. }
  663. }
  664. Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
  665. list.setTotal(total);
  666. return list;
  667. }
  668. /**
  669. *
  670. * @param userId
  671. * @return 获取该用户下级所有用户id
  672. */
  673. private List<String> getNextLevel(String userId) {
  674. // 获取系统中的所有用户
  675. LambdaQueryWrapper<SysUser> queryWrapperUser = new LambdaQueryWrapper<>();
  676. queryWrapperUser.eq(SysUser :: getStatus,"1");
  677. queryWrapperUser.notLike(SysUser::getId,"M");
  678. List<SysUser> users = this.sysUserMapper.selectList(queryWrapperUser);
  679. // 创建查询包装器,用于查询指定用户ID的用
  680. LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
  681. queryWrapper.eq(SysUser::getId, userId);
  682. // 查询指定用户ID的用户,即第一级下属
  683. List<SysUser> usersLevel1 = this.sysUserMapper.selectList(queryWrapper);
  684. // 用于存储所有下属的ID
  685. List<String> strIds = new ArrayList<>();
  686. // 递归获取第一级下属及其所有下属的ID
  687. findChildren(usersLevel1, users, strIds);
  688. if(!strIds.contains(userId)){
  689. strIds.add(userId);
  690. }
  691. return strIds;
  692. }
  693. /**
  694. *
  695. * @param usersLevel1 即第一级下属
  696. * @param users 所有用户
  697. * @param strIds 用于存储所有下属的ID
  698. */
  699. private void findChildren(List<SysUser> SysUsers, List<SysUser> users, List<String> strIds) {
  700. for (SysUser sysUser : SysUsers) {
  701. List<SysUser> children = new ArrayList<>();
  702. for (SysUser user : users) {
  703. if (sysUser.getId() != null && sysUser.getId().equals(user.getLeaderId())) {
  704. if (!exists(children, user)) {
  705. children.add(user);
  706. strIds.add(user.getId());
  707. }
  708. }
  709. }
  710. sysUser.setChildren(children);
  711. findChildren(children, users, strIds);
  712. }
  713. }
  714. private boolean exists(List<SysUser> sysUsers, SysUser sysUser) {
  715. boolean exist = false;
  716. for (SysUser user : sysUsers) {
  717. if (user.getId().equals(sysUser.getId())) {
  718. exist = true;
  719. }
  720. }
  721. return exist;
  722. }
  723. /**
  724. * @version
  725. * @author: hxl
  726. * @Date: 2024/6/19 11:57
  727. * @Description: 通过时间类型判断
  728. */
  729. private static HashMap<String,String> getDateMapByType(String type, String startDate, String endDate) {
  730. HashMap<String,String> map =new HashMap<>();
  731. String startDateStr="";
  732. String endDateStr="";
  733. if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)){
  734. startDateStr= StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null;
  735. endDateStr= StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null;
  736. }else{
  737. if("1".equals(type)){
  738. // 一月内
  739. startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),2)+" 00:00:00";
  740. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  741. }else if("2".equals(type)){
  742. // 三月内
  743. startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),3)+" 00:00:00";
  744. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  745. }else if("3".equals(type)){
  746. // 近半年
  747. startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),4)+" 00:00:00";
  748. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  749. }
  750. }
  751. map.put("startDate",startDateStr);
  752. map.put("endDate",endDateStr);
  753. return map;
  754. }
  755. /**
  756. * @version
  757. * @author: hxl
  758. * @Date: 2024/6/19 11:57
  759. * @Description: 通过时间类型判断
  760. */
  761. private static HashMap<String,String> getDateMapByTypeNew(String type, String startDate, String endDate) {
  762. HashMap<String,String> map =new HashMap<>();
  763. String startDateStr="";
  764. String endDateStr="";
  765. if(org.apache.commons.lang3.StringUtils.isNotBlank(startDate) && org.apache.commons.lang3.StringUtils.isNotBlank(endDate)){
  766. startDateStr= org.apache.commons.lang3.StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null;
  767. endDateStr= org.apache.commons.lang3.StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null;
  768. }else{
  769. if("1".equals(type)){
  770. // 近1天
  771. startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),0)+" 00:00:00";
  772. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  773. }else if("2".equals(type)){
  774. // 近7天
  775. startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),1)+" 00:00:00";
  776. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  777. }else if("3".equals(type)){
  778. // 近30天
  779. startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),6)+" 00:00:00";
  780. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  781. }
  782. }
  783. map.put("startDate",startDateStr);
  784. map.put("endDate",endDateStr);
  785. return map;
  786. }
  787. /**
  788. * @description: 任控制台-业务数据-代理人-合计
  789. * @author: whp
  790. * @date: 2024/09/09
  791. **/
  792. @Override
  793. public BusinessAgentData getBusinessAgentDataTotal(TaskStatisticsVo taskStatisticsVo) {
  794. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  795. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  796. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  797. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  798. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) || "3".equals(taskStatisticsVo.getManagementSource())){
  799. if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
  800. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  801. if(!userIds.isEmpty() && userIds.get(0)!=null){
  802. taskStatisticsVo.setUserIds(userIds);
  803. }else {
  804. taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
  805. }
  806. }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) &&"1".equals(taskStatisticsVo.getTreeType())){
  807. taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
  808. taskStatisticsVo.setTreeUserId(null);
  809. taskStatisticsVo.setUserIds(new ArrayList<>());
  810. }
  811. }
  812. if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()))) {
  813. return new BusinessAgentData();
  814. }
  815. String deptId = BaseController.getDeptId();
  816. BusinessAgentData result = this.taskStatisticsMapper.getBusinessAgentDataTotalAdd(taskStatisticsVo);
  817. Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
  818. result.setTotalNumber(total.toString());
  819. BigDecimal sumPremium = result.getSumPremium();
  820. BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
  821. if(ObjectUtils.isNotEmpty(sumPremium)){
  822. BigDecimal sumPremium1 = allsumPremium.getSumPremium();
  823. if(sumPremium.compareTo(BigDecimal.ZERO) ==1){
  824. BigDecimal multiply = sumPremium.divide(sumPremium1, 4, BigDecimal.ROUND_DOWN);
  825. result.setSumPremiumProportion(multiply);
  826. }
  827. }else {
  828. result.setSumPremiumProportion(BigDecimal.ZERO);
  829. }
  830. BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO;
  831. BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
  832. BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
  833. result.setDistributionAmount(subtract); //毛利润
  834. if(subtract.compareTo(BigDecimal.ZERO)>0){
  835. BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能
  836. result.setDistributionAmountRate(resultDivided);
  837. }else {
  838. result.setDistributionAmountRate(BigDecimal.ZERO);
  839. }
  840. return result;
  841. }
  842. /**
  843. * @description: 任务统计-代理人导出
  844. * @author: whp
  845. * @date: 2024/9/9
  846. **/
  847. @Override
  848. public HttpResult agentExcel(TaskStatisticsVo taskStatisticsVo) {
  849. taskStatisticsVo.setManagementSource("2");
  850. return getHttpResult(taskStatisticsVo);
  851. }
  852. /**
  853. * @description: 任务统计-电销导出
  854. * @author: whp
  855. * @date: 2024/10/29
  856. **/
  857. @Override
  858. public HttpResult electricExcel(TaskStatisticsVo taskStatisticsVo) {
  859. taskStatisticsVo.setManagementSource("3");
  860. return getHttpResult(taskStatisticsVo);
  861. }
  862. /**
  863. * @description: 任务统计-保险公司-导出
  864. * @author: whp
  865. * @date: 2024/9/9
  866. **/
  867. @Override
  868. public HttpResult insuranceCompanyExcel(TaskStatisticsVo taskStatisticsVo) {
  869. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getProvinceId())){
  870. String provinceId = this.removeTrailingZeros(taskStatisticsVo.getProvinceId());
  871. taskStatisticsVo.setProvinceId(provinceId);
  872. }
  873. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCityId())){
  874. String cityId = this.removeTrailingZeros(taskStatisticsVo.getCityId());
  875. taskStatisticsVo.setCityId(cityId);
  876. }
  877. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCountyId())){
  878. String countyId = this.removeTrailingZeros(taskStatisticsVo.getCountyId());
  879. taskStatisticsVo.setCountyId(countyId);
  880. }
  881. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  882. if("7".equals(taskStatisticsVo.getDays())){
  883. taskStatisticsVo.setDays("2");
  884. } else if ("30".equals(taskStatisticsVo.getDays())) {
  885. taskStatisticsVo.setDays("3");
  886. }
  887. }
  888. List<InsuranceCompanyExcel> list = this.insAreaCompanyMapper.insuranceCompanyExcel(taskStatisticsVo);
  889. String uploadPath = this.uploadPath + "/excel/";
  890. Path path = Paths.get(uploadPath);
  891. if (!Files.exists(path)) {
  892. try {
  893. Files.createDirectories(path);
  894. } catch (IOException e) {
  895. e.printStackTrace();
  896. }
  897. }
  898. String fileName = EasyExcelUtils.downExcel(uploadPath, "保险公司导出", InsuranceCompanyExcel.class, list);
  899. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  900. }
  901. /**
  902. * @description: 任控制台-业务数据-代理人-详情
  903. * @author: whp
  904. * @date: 2024/09/10
  905. **/
  906. @Override
  907. public IPage<BusinessAgentData> getBusinessAgentDataDetails(TaskStatisticsVo taskStatisticsVo) {
  908. HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  909. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  910. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  911. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  912. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  913. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  914. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  915. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  916. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  917. IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataDetails(page, taskStatisticsVo);
  918. Long total = this.taskStatisticsMapper.getBusinessAgentDataDetailsAdd(taskStatisticsVo);
  919. list.setTotal(total);
  920. return list;
  921. }
  922. /**
  923. *
  924. * @param taskStatisticsVo
  925. * @return 控制台任务统计 渠道代理人详情
  926. */
  927. @Override
  928. public IPage<TaskStatisticsDto> channelAgentDetails(TaskStatisticsVo taskStatisticsVo) {
  929. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  930. if("7".equals(taskStatisticsVo.getDays())){
  931. taskStatisticsVo.setDays("2");
  932. } else if ("30".equals(taskStatisticsVo.getDays())) {
  933. taskStatisticsVo.setDays("3");
  934. }
  935. }
  936. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
  937. taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
  938. taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
  939. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  940. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  941. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  942. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  943. IPage<TaskStatisticsDto> list = this.taskStatisticsMapper.channelAgentDetails(page,taskStatisticsVo);
  944. return list;
  945. }
  946. /**
  947. * @description: 财务中心-费用校验-合计
  948. * @author: whp
  949. * @date: 2024/9/28
  950. **/
  951. @Override
  952. public HashMap<String, Object> costCenterTotal(TaskStatisticsVo taskStatisticsVo) {
  953. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  954. if("7".equals(taskStatisticsVo.getDays())){
  955. taskStatisticsVo.setDays("2");
  956. } else if ("30".equals(taskStatisticsVo.getDays())) {
  957. taskStatisticsVo.setDays("3");
  958. }
  959. }
  960. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  961. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  962. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  963. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  964. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  965. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  966. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  967. HashMap<String,Object> list = this.insAreaCompanyMapper.costCenterTotal(taskStatisticsVo);
  968. return list;
  969. }
  970. private void appendName(BusinessAgentData user) {
  971. StringBuilder stringBuilder = new StringBuilder();
  972. String deptId = user.getDeptId();
  973. if (com.ydtech.utils.StringUtils.isNotEmpty(deptId)) {
  974. int length = deptId.length();
  975. if (length > 0) {
  976. if (length <= 5) {
  977. String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1");
  978. SysDept cityName = sysDeptMapper.selectById(dept);
  979. String name = cityName.getName();
  980. stringBuilder.append("(").append(name).append(")");
  981. } else if (length > 5) {
  982. String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1");
  983. if (dept.length() < 5) {
  984. SysDept dept1 = sysDeptMapper.selectById(dept);
  985. SysDept cityName = sysDeptMapper.selectById(deptId);
  986. stringBuilder.append(dept1.getName()).append(cityName.getName());
  987. } else {
  988. String deptIdTwo = dept.substring(0, 4);
  989. SysDept dept1 = sysDeptMapper.selectById(deptIdTwo);
  990. SysDept dept2 = sysDeptMapper.selectById(dept);
  991. stringBuilder.append(dept1.getName()).append(dept2.getName());
  992. }
  993. }
  994. user.setDeptName(stringBuilder.toString());
  995. }
  996. }
  997. }
  998. /**
  999. * @description: 任控制台-业务数据-渠道-详情
  1000. * @author: hh
  1001. * @date: 2024/11/19
  1002. **/
  1003. @Override
  1004. public PageInfo<BusinessOrderData> getBusinessOrderDataDetails(TaskStatisticsVo taskStatisticsVo) {
  1005. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1006. PageHelper.startPage(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  1007. List<BusinessOrderData> businessOrderList = this.taskStatisticsMapper.getBusinessOrderDataDetails(taskStatisticsVo);
  1008. if (!com.ydtech.utils.StringUtils.isNullOrEmpty(businessOrderList) && !businessOrderList.isEmpty()) {
  1009. for (BusinessOrderData businessOrderData : businessOrderList) {
  1010. BigDecimal entranceAllFee = businessOrderData.getEntranceAllFee() != null ?
  1011. businessOrderData.getEntranceAllFee().setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO;
  1012. BigDecimal exportAllFee = businessOrderData.getExportAllFee() != null ? businessOrderData.getExportAllFee() : BigDecimal.ZERO;
  1013. BigDecimal distributionAmount = entranceAllFee.subtract(exportAllFee);
  1014. businessOrderData.setDistributionAmount(distributionAmount); //毛利润
  1015. businessOrderData.setEntranceAllFee(entranceAllFee);
  1016. if(distributionAmount.compareTo(BigDecimal.ZERO) > 0
  1017. && businessOrderData.getSumPremium().compareTo(BigDecimal.ZERO) > 0){
  1018. BigDecimal resultDivided = distributionAmount.divide(businessOrderData.getSumPremium(), 4, RoundingMode.HALF_UP); //人均产能
  1019. businessOrderData.setDistributionAmountRate(resultDivided);
  1020. }else {
  1021. businessOrderData.setDistributionAmountRate(new BigDecimal("0.0000"));
  1022. }
  1023. }
  1024. }
  1025. return new PageInfo<>(businessOrderList);
  1026. }
  1027. /**
  1028. * @description: 任控制台-业务数据-渠道-合计
  1029. * @author: hh
  1030. * @date: 2024/11/19
  1031. **/
  1032. @Override
  1033. public BusinessOrderData getBusinessOrderDataTotal(TaskStatisticsVo taskStatisticsVo) {
  1034. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1035. BusinessOrderData result = this.taskStatisticsMapper.getBusinessOrderDataTotal(taskStatisticsVo);
  1036. if (com.ydtech.utils.StringUtils.isNullOrEmpty(result)) {
  1037. return null;
  1038. }
  1039. BigDecimal sumPremium = result.getSumPremium();
  1040. BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
  1041. if (ObjectUtils.isNotEmpty(sumPremium)) {
  1042. BigDecimal allSumPremium = allsumPremium.getSumPremium();
  1043. if (sumPremium.compareTo(BigDecimal.ZERO) == 1 && allSumPremium.compareTo(BigDecimal.ZERO) > 0) {
  1044. BigDecimal multiply = sumPremium.divide(allSumPremium, 4, BigDecimal.ROUND_DOWN);
  1045. result.setSumPremiumProportion(multiply);
  1046. }
  1047. } else {
  1048. result.setSumPremiumProportion(BigDecimal.ZERO);
  1049. }
  1050. BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO;
  1051. BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
  1052. BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
  1053. result.setDistributionAmount(subtract); //毛利润
  1054. if(subtract.compareTo(BigDecimal.ZERO) > 0 && sumPremium.compareTo(BigDecimal.ZERO) > 0){
  1055. BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能
  1056. result.setDistributionAmountRate(resultDivided);
  1057. }else {
  1058. result.setDistributionAmountRate(new BigDecimal("0.0000"));
  1059. }
  1060. return result;
  1061. }
  1062. /**
  1063. * 任控制台-业务数据-渠道"
  1064. * @param taskStatisticsVo
  1065. * @return
  1066. */
  1067. @Override
  1068. public IPage<BusinessAgentData> getBusinessElectricData(TaskStatisticsVo taskStatisticsVo) {
  1069. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  1070. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  1071. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  1072. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  1073. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  1074. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId())){
  1075. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  1076. taskStatisticsVo.setUserIds(userIds);
  1077. }
  1078. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()) ) ){
  1079. return new Page<>(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageNum());
  1080. }
  1081. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1082. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1083. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1084. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1085. IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
  1086. List<BusinessAgentData> records = list.getRecords();
  1087. for (BusinessAgentData record : records) {
  1088. this.appendName(record);
  1089. if (record.getDistributionAmountRate() == null) {
  1090. record.setDistributionAmountRate(new BigDecimal("0.0000"));
  1091. }
  1092. }
  1093. Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
  1094. list.setTotal(total);
  1095. return list;
  1096. }
  1097. /**
  1098. * 任控制台-业务数据-电销-合计
  1099. * @param taskStatisticsVo
  1100. * @return
  1101. */
  1102. @Override
  1103. public BusinessAgentData getBusinessElectricDataTotal(TaskStatisticsVo taskStatisticsVo) {
  1104. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId())){
  1105. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  1106. taskStatisticsVo.setUserIds(userIds);
  1107. }
  1108. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1109. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1110. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1111. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1112. if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()))) {
  1113. return new BusinessAgentData();
  1114. }
  1115. String deptId = BaseController.getDeptId();
  1116. BusinessAgentData result = this.taskStatisticsMapper.getBusinessAgentDataTotalAdd(taskStatisticsVo);
  1117. Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
  1118. result.setTotalNumber(total.toString());
  1119. BigDecimal sumPremium = result.getSumPremium();
  1120. BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
  1121. if(ObjectUtils.isNotEmpty(sumPremium)){
  1122. BigDecimal sumPremium1 = allsumPremium.getSumPremium();
  1123. if(sumPremium.compareTo(BigDecimal.ZERO) ==1){
  1124. BigDecimal multiply = sumPremium.divide(sumPremium1, 4, BigDecimal.ROUND_DOWN);
  1125. result.setSumPremiumProportion(multiply);
  1126. }
  1127. }else {
  1128. result.setSumPremiumProportion(BigDecimal.ZERO);
  1129. }
  1130. BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO;
  1131. BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
  1132. BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
  1133. result.setDistributionAmount(subtract); //毛利润
  1134. if(subtract.compareTo(BigDecimal.ZERO)>0){
  1135. BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能
  1136. result.setDistributionAmountRate(resultDivided);
  1137. }else {
  1138. result.setDistributionAmountRate(BigDecimal.ZERO);
  1139. }
  1140. return result;
  1141. }
  1142. @Override
  1143. public HttpResult getBusinessDataExcel(TaskStatisticsVo taskStatisticsVo) {
  1144. if (StringUtils.isNotEmpty(taskStatisticsVo.getDays())) {
  1145. if ("7".equals(taskStatisticsVo.getDays())) {
  1146. taskStatisticsVo.setDateType("2");
  1147. } else if ("30".equals(taskStatisticsVo.getDays())) {
  1148. taskStatisticsVo.setDateType("3");
  1149. } else if ("1".equals(taskStatisticsVo.getDays())) {
  1150. taskStatisticsVo.setDateType("1");
  1151. }
  1152. }
  1153. if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterProvinceId())) {
  1154. String provinceId = this.removeTrailingZeros(taskStatisticsVo.getParterProvinceId());
  1155. taskStatisticsVo.setParterProvinceId(provinceId);
  1156. }
  1157. if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCityId())) {
  1158. String cityId = this.removeTrailingZeros(taskStatisticsVo.getParterCityId());
  1159. taskStatisticsVo.setParterCityId(cityId);
  1160. }
  1161. if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCountyId())) {
  1162. String countyId = this.removeTrailingZeros(taskStatisticsVo.getParterCountyId());
  1163. taskStatisticsVo.setParterCountyId(countyId);
  1164. }
  1165. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1166. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1167. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1168. List<TaskStatisticsDto> list = this.insAreaCompanyMapper.getBusinessDataList(taskStatisticsVo);
  1169. List<BusinessCompanyExcel> sysUserPartners = BeanUtil.copyToList(list, BusinessCompanyExcel.class);
  1170. String uploadPath = this.uploadPath + "/excel/";
  1171. Path path = Paths.get(uploadPath);
  1172. if (!Files.exists(path)) {
  1173. try {
  1174. Files.createDirectories(path);
  1175. } catch (IOException e) {
  1176. e.printStackTrace();
  1177. }
  1178. }
  1179. String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据保险公司导出", BusinessCompanyExcel.class, sysUserPartners);
  1180. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  1181. }
  1182. /**
  1183. * @description: 控制台 - 业务数据 - 代理人导出
  1184. * @author: whp
  1185. * @date: 2024/12/13
  1186. **/
  1187. @Override
  1188. public HttpResult getBusinessAgentExcel(TaskStatisticsVo taskStatisticsVo) {
  1189. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
  1190. if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
  1191. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  1192. if(!userIds.isEmpty() && userIds.get(0)!=null){
  1193. taskStatisticsVo.setUserIds(userIds);
  1194. }else {
  1195. taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
  1196. }
  1197. }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){
  1198. taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
  1199. taskStatisticsVo.setTreeUserId(null);
  1200. taskStatisticsVo.setUserIds(new ArrayList<>());
  1201. }
  1202. }
  1203. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1204. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1205. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1206. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1207. List<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataExcel(taskStatisticsVo);
  1208. for (BusinessAgentData record : list) {
  1209. this.appendName(record);
  1210. if (record.getDistributionAmountRate() == null) {
  1211. record.setDistributionAmountRate(new BigDecimal("0.0000"));
  1212. }
  1213. if(record.getManagementSource().equals("2")){
  1214. record.setManagementSource("代理人");
  1215. }
  1216. }
  1217. List<BusinessAgentExcel> sysUserPartners = BeanUtil.copyToList(list, BusinessAgentExcel.class);
  1218. String uploadPath = this.uploadPath + "/excel/";
  1219. Path path = Paths.get(uploadPath);
  1220. if (!Files.exists(path)) {
  1221. try {
  1222. Files.createDirectories(path);
  1223. } catch (IOException e) {
  1224. e.printStackTrace();
  1225. }
  1226. }
  1227. String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据代理人导出", BusinessAgentExcel.class, sysUserPartners);
  1228. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  1229. }
  1230. /**
  1231. * @description: 控制台 - 业务数据 -渠道导出
  1232. * @author: whp
  1233. * @date: 2024/12/13
  1234. **/
  1235. @Override
  1236. public HttpResult getChannelExcel(TaskStatisticsVo taskStatisticsVo) {
  1237. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
  1238. if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
  1239. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  1240. if(!userIds.isEmpty() && userIds.get(0)!=null){
  1241. taskStatisticsVo.setUserIds(userIds);
  1242. }else {
  1243. taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
  1244. }
  1245. }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){
  1246. taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
  1247. taskStatisticsVo.setTreeUserId(null);
  1248. taskStatisticsVo.setUserIds(new ArrayList<>());
  1249. }
  1250. }
  1251. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1252. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1253. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1254. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1255. List<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataExcel(taskStatisticsVo);
  1256. for (BusinessAgentData record : list) {
  1257. this.appendName(record);
  1258. if (record.getDistributionAmountRate() == null) {
  1259. record.setDistributionAmountRate(new BigDecimal("0.0000"));
  1260. }
  1261. if(record.getManagementSource().equals("1")){
  1262. record.setManagementSource("渠道");
  1263. }
  1264. }
  1265. List<GetChannelExcel> sysUserPartners = BeanUtil.copyToList(list, GetChannelExcel.class);
  1266. String uploadPath = this.uploadPath + "/excel/";
  1267. Path path = Paths.get(uploadPath);
  1268. if (!Files.exists(path)) {
  1269. try {
  1270. Files.createDirectories(path);
  1271. } catch (IOException e) {
  1272. e.printStackTrace();
  1273. }
  1274. }
  1275. String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据渠道导出", GetChannelExcel.class, sysUserPartners);
  1276. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  1277. }
  1278. /**
  1279. * @version
  1280. * @author: hh
  1281. * @Date: 2024/11/19
  1282. * @Description: 通过时间类型判断
  1283. */
  1284. private static void getDateByType(String type, TaskStatisticsVo taskStatisticsVo) {
  1285. String startDateStr = new String();
  1286. String endDateStr = new String();
  1287. if (StringUtils.isNotEmpty(type)) {
  1288. switch (type) {
  1289. case "1" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 00:00:00";
  1290. endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
  1291. break;
  1292. case "2" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),1) + " 00:00:00";
  1293. endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
  1294. break;
  1295. case "3" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),6) + " 00:00:00";
  1296. endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
  1297. break;
  1298. }
  1299. if (StringUtils.isNotEmpty(taskStatisticsVo.getTimeType())) {
  1300. switch (taskStatisticsVo.getTimeType()) {
  1301. case "1" : taskStatisticsVo.setEnterTimeStart(startDateStr);
  1302. taskStatisticsVo.setEnterTimeEnd(endDateStr);
  1303. break;
  1304. case "2" : taskStatisticsVo.setSigningTimeStart(startDateStr);
  1305. taskStatisticsVo.setSigningTimeEnd(endDateStr);
  1306. break;
  1307. }
  1308. }
  1309. }
  1310. }
  1311. }