TaskStatisticsServiceImpl.java 66 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409
  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. List<TaskStatisticsDto> result = new ArrayList<>();
  545. //0 报价中 1 待核保 2 已核保代缴费 3 已承保 4 核保退回
  546. for (int i = 0; i < 5; i++) {
  547. taskStatisticsVo.setQuotationStatus(i+"");
  548. TaskStatisticsDto taskStatisticsDtoItem = insAreaCompanyMapper.getDistribution(taskStatisticsVo);
  549. if(ObjectUtils.isNotEmpty(taskStatisticsDtoItem)){
  550. taskStatisticsDtoItem.setQuotationStatus(i+"");
  551. result.add(taskStatisticsDtoItem);
  552. }
  553. }
  554. return result;
  555. }
  556. /**
  557. * @description: 任务统计-渠道导出
  558. * @author: whp
  559. * @date: 2024/09/09
  560. **/
  561. @Override
  562. public HttpResult channelExcel(TaskStatisticsVo taskStatisticsVo) {
  563. taskStatisticsVo.setManagementSource("1");
  564. return getHttpResult(taskStatisticsVo);
  565. }
  566. private HttpResult getHttpResult(TaskStatisticsVo taskStatisticsVo) {
  567. List<TaskStatisticsExcel> list = this.insAreaCompanyMapper.channelExcel(taskStatisticsVo);
  568. if (list != null && !list.isEmpty()) {
  569. for (TaskStatisticsExcel record : list) {
  570. String deptId = record.getDeptId();
  571. if (StringUtils.isNotEmpty(deptId)) {
  572. int length = deptId.length();
  573. if (length > 0) {
  574. if (length > 0) {
  575. if (length > 10) {
  576. String substring = deptId.substring(0, 6);
  577. String substring1 = deptId.substring(0, 8);
  578. String province = deptId.substring(0, 4);
  579. SysDept cityName = sysDeptService.getById(substring);
  580. SysDept districtName = sysDeptService.getById(substring1);
  581. SysDept provinceName = sysDeptService.getById(province);
  582. record.setCityName(cityName.getName());
  583. record.setDistrictName(districtName.getName());
  584. record.setProvinceName(provinceName.getName());
  585. }
  586. }
  587. }
  588. }
  589. }
  590. }
  591. String uploadPath = this.uploadPath + "/excel/";
  592. Path path = Paths.get(uploadPath);
  593. if (!Files.exists(path)) {
  594. try {
  595. Files.createDirectories(path);
  596. } catch (IOException e) {
  597. e.printStackTrace();
  598. }
  599. }
  600. String name ="";
  601. if(taskStatisticsVo.getManagementSource().equals("1")){
  602. name="渠道导出";
  603. } else if (taskStatisticsVo.getManagementSource().equals("2")) {
  604. name="代理人导出";
  605. }else {
  606. name="电销导出";
  607. }
  608. String fileName = EasyExcelUtils.downExcel(uploadPath, name, TaskStatisticsExcel.class, list);
  609. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  610. }
  611. /**
  612. * @description: 任控制台-业务数据-代理人
  613. * @author: whp
  614. * @date: 2024/09/09
  615. **/
  616. @Override
  617. public IPage<BusinessAgentData> getBusinessAgentData(TaskStatisticsVo taskStatisticsVo) {
  618. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
  619. if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
  620. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  621. if(!userIds.isEmpty() && userIds.get(0)!=null){
  622. taskStatisticsVo.setUserIds(userIds);
  623. }else {
  624. taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
  625. }
  626. }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){
  627. taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
  628. taskStatisticsVo.setTreeUserId(null);
  629. taskStatisticsVo.setUserIds(new ArrayList<>());
  630. }
  631. }
  632. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  633. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  634. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  635. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  636. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  637. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()) ) ){
  638. return new Page<>(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageNum());
  639. }
  640. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  641. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  642. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  643. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  644. IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
  645. List<BusinessAgentData> records = list.getRecords();
  646. for (BusinessAgentData record : records) {
  647. this.appendName(record);
  648. if (record.getDistributionAmountRate() == null) {
  649. record.setDistributionAmountRate(new BigDecimal("0.0000"));
  650. }
  651. }
  652. Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
  653. list.setTotal(total);
  654. return list;
  655. }
  656. /**
  657. *
  658. * @param userId
  659. * @return 获取该用户下级所有用户id
  660. */
  661. private List<String> getNextLevel(String userId) {
  662. // 获取系统中的所有用户
  663. LambdaQueryWrapper<SysUser> queryWrapperUser = new LambdaQueryWrapper<>();
  664. queryWrapperUser.eq(SysUser :: getStatus,"1");
  665. queryWrapperUser.notLike(SysUser::getId,"M");
  666. List<SysUser> users = this.sysUserMapper.selectList(queryWrapperUser);
  667. // 创建查询包装器,用于查询指定用户ID的用
  668. LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
  669. queryWrapper.eq(SysUser::getId, userId);
  670. // 查询指定用户ID的用户,即第一级下属
  671. List<SysUser> usersLevel1 = this.sysUserMapper.selectList(queryWrapper);
  672. // 用于存储所有下属的ID
  673. List<String> strIds = new ArrayList<>();
  674. // 递归获取第一级下属及其所有下属的ID
  675. findChildren(usersLevel1, users, strIds);
  676. if(!strIds.contains(userId)){
  677. strIds.add(userId);
  678. }
  679. return strIds;
  680. }
  681. /**
  682. *
  683. * @param usersLevel1 即第一级下属
  684. * @param users 所有用户
  685. * @param strIds 用于存储所有下属的ID
  686. */
  687. private void findChildren(List<SysUser> SysUsers, List<SysUser> users, List<String> strIds) {
  688. for (SysUser sysUser : SysUsers) {
  689. List<SysUser> children = new ArrayList<>();
  690. for (SysUser user : users) {
  691. if (sysUser.getId() != null && sysUser.getId().equals(user.getLeaderId())) {
  692. if (!exists(children, user)) {
  693. children.add(user);
  694. strIds.add(user.getId());
  695. }
  696. }
  697. }
  698. sysUser.setChildren(children);
  699. findChildren(children, users, strIds);
  700. }
  701. }
  702. private boolean exists(List<SysUser> sysUsers, SysUser sysUser) {
  703. boolean exist = false;
  704. for (SysUser user : sysUsers) {
  705. if (user.getId().equals(sysUser.getId())) {
  706. exist = true;
  707. }
  708. }
  709. return exist;
  710. }
  711. /**
  712. * @version
  713. * @author: hxl
  714. * @Date: 2024/6/19 11:57
  715. * @Description: 通过时间类型判断
  716. */
  717. private static HashMap<String,String> getDateMapByType(String type, String startDate, String endDate) {
  718. HashMap<String,String> map =new HashMap<>();
  719. String startDateStr="";
  720. String endDateStr="";
  721. if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)){
  722. startDateStr= StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null;
  723. endDateStr= StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null;
  724. }else{
  725. if("1".equals(type)){
  726. // 一月内
  727. startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),2)+" 00:00:00";
  728. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  729. }else if("2".equals(type)){
  730. // 三月内
  731. startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),3)+" 00:00:00";
  732. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  733. }else if("3".equals(type)){
  734. // 近半年
  735. startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),4)+" 00:00:00";
  736. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  737. }
  738. }
  739. map.put("startDate",startDateStr);
  740. map.put("endDate",endDateStr);
  741. return map;
  742. }
  743. /**
  744. * @version
  745. * @author: hxl
  746. * @Date: 2024/6/19 11:57
  747. * @Description: 通过时间类型判断
  748. */
  749. private static HashMap<String,String> getDateMapByTypeNew(String type, String startDate, String endDate) {
  750. HashMap<String,String> map =new HashMap<>();
  751. String startDateStr="";
  752. String endDateStr="";
  753. if(org.apache.commons.lang3.StringUtils.isNotBlank(startDate) && org.apache.commons.lang3.StringUtils.isNotBlank(endDate)){
  754. startDateStr= org.apache.commons.lang3.StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null;
  755. endDateStr= org.apache.commons.lang3.StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null;
  756. }else{
  757. if("1".equals(type)){
  758. // 近1天
  759. startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),0)+" 00:00:00";
  760. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  761. }else if("2".equals(type)){
  762. // 近7天
  763. startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),1)+" 00:00:00";
  764. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  765. }else if("3".equals(type)){
  766. // 近30天
  767. startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),6)+" 00:00:00";
  768. endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
  769. }
  770. }
  771. map.put("startDate",startDateStr);
  772. map.put("endDate",endDateStr);
  773. return map;
  774. }
  775. /**
  776. * @description: 任控制台-业务数据-代理人-合计
  777. * @author: whp
  778. * @date: 2024/09/09
  779. **/
  780. @Override
  781. public BusinessAgentData getBusinessAgentDataTotal(TaskStatisticsVo taskStatisticsVo) {
  782. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  783. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  784. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  785. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  786. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) || "3".equals(taskStatisticsVo.getManagementSource())){
  787. if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
  788. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  789. if(!userIds.isEmpty() && userIds.get(0)!=null){
  790. taskStatisticsVo.setUserIds(userIds);
  791. }else {
  792. taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
  793. }
  794. }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) &&"1".equals(taskStatisticsVo.getTreeType())){
  795. taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
  796. taskStatisticsVo.setTreeUserId(null);
  797. taskStatisticsVo.setUserIds(new ArrayList<>());
  798. }
  799. }
  800. if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()))) {
  801. return new BusinessAgentData();
  802. }
  803. String deptId = BaseController.getDeptId();
  804. BusinessAgentData result = this.taskStatisticsMapper.getBusinessAgentDataTotalAdd(taskStatisticsVo);
  805. Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
  806. result.setTotalNumber(total.toString());
  807. BigDecimal sumPremium = result.getSumPremium();
  808. BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
  809. if(ObjectUtils.isNotEmpty(sumPremium)){
  810. BigDecimal sumPremium1 = allsumPremium.getSumPremium();
  811. if(sumPremium.compareTo(BigDecimal.ZERO) ==1){
  812. BigDecimal multiply = sumPremium.divide(sumPremium1, 4, BigDecimal.ROUND_DOWN);
  813. result.setSumPremiumProportion(multiply);
  814. }
  815. }else {
  816. result.setSumPremiumProportion(BigDecimal.ZERO);
  817. }
  818. BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO;
  819. BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
  820. BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
  821. result.setDistributionAmount(subtract); //毛利润
  822. if(subtract.compareTo(BigDecimal.ZERO)>0){
  823. BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能
  824. result.setDistributionAmountRate(resultDivided);
  825. }else {
  826. result.setDistributionAmountRate(BigDecimal.ZERO);
  827. }
  828. return result;
  829. }
  830. /**
  831. * @description: 任务统计-代理人导出
  832. * @author: whp
  833. * @date: 2024/9/9
  834. **/
  835. @Override
  836. public HttpResult agentExcel(TaskStatisticsVo taskStatisticsVo) {
  837. taskStatisticsVo.setManagementSource("2");
  838. return getHttpResult(taskStatisticsVo);
  839. }
  840. /**
  841. * @description: 任务统计-电销导出
  842. * @author: whp
  843. * @date: 2024/10/29
  844. **/
  845. @Override
  846. public HttpResult electricExcel(TaskStatisticsVo taskStatisticsVo) {
  847. taskStatisticsVo.setManagementSource("3");
  848. return getHttpResult(taskStatisticsVo);
  849. }
  850. /**
  851. * @description: 任务统计-保险公司-导出
  852. * @author: whp
  853. * @date: 2024/9/9
  854. **/
  855. @Override
  856. public HttpResult insuranceCompanyExcel(TaskStatisticsVo taskStatisticsVo) {
  857. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getProvinceId())){
  858. String provinceId = this.removeTrailingZeros(taskStatisticsVo.getProvinceId());
  859. taskStatisticsVo.setProvinceId(provinceId);
  860. }
  861. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCityId())){
  862. String cityId = this.removeTrailingZeros(taskStatisticsVo.getCityId());
  863. taskStatisticsVo.setCityId(cityId);
  864. }
  865. if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCountyId())){
  866. String countyId = this.removeTrailingZeros(taskStatisticsVo.getCountyId());
  867. taskStatisticsVo.setCountyId(countyId);
  868. }
  869. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  870. if("7".equals(taskStatisticsVo.getDays())){
  871. taskStatisticsVo.setDays("2");
  872. } else if ("30".equals(taskStatisticsVo.getDays())) {
  873. taskStatisticsVo.setDays("3");
  874. }
  875. }
  876. List<InsuranceCompanyExcel> list = this.insAreaCompanyMapper.insuranceCompanyExcel(taskStatisticsVo);
  877. String uploadPath = this.uploadPath + "/excel/";
  878. Path path = Paths.get(uploadPath);
  879. if (!Files.exists(path)) {
  880. try {
  881. Files.createDirectories(path);
  882. } catch (IOException e) {
  883. e.printStackTrace();
  884. }
  885. }
  886. String fileName = EasyExcelUtils.downExcel(uploadPath, "保险公司导出", InsuranceCompanyExcel.class, list);
  887. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  888. }
  889. /**
  890. * @description: 任控制台-业务数据-代理人-详情
  891. * @author: whp
  892. * @date: 2024/09/10
  893. **/
  894. @Override
  895. public IPage<BusinessAgentData> getBusinessAgentDataDetails(TaskStatisticsVo taskStatisticsVo) {
  896. HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  897. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  898. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  899. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  900. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  901. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  902. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  903. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  904. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  905. IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataDetails(page, taskStatisticsVo);
  906. Long total = this.taskStatisticsMapper.getBusinessAgentDataDetailsAdd(taskStatisticsVo);
  907. list.setTotal(total);
  908. return list;
  909. }
  910. /**
  911. *
  912. * @param taskStatisticsVo
  913. * @return 控制台任务统计 渠道代理人详情
  914. */
  915. @Override
  916. public IPage<TaskStatisticsDto> channelAgentDetails(TaskStatisticsVo taskStatisticsVo) {
  917. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  918. if("7".equals(taskStatisticsVo.getDays())){
  919. taskStatisticsVo.setDays("2");
  920. } else if ("30".equals(taskStatisticsVo.getDays())) {
  921. taskStatisticsVo.setDays("3");
  922. }
  923. }
  924. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getBeginDate(), taskStatisticsVo.getEndDate());
  925. taskStatisticsVo.setBeginDate(dateMapByType.get("startDate"));
  926. taskStatisticsVo.setEndDate(dateMapByType.get("endDate"));
  927. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  928. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  929. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  930. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  931. IPage<TaskStatisticsDto> list = this.taskStatisticsMapper.channelAgentDetails(page,taskStatisticsVo);
  932. return list;
  933. }
  934. /**
  935. * @description: 财务中心-费用校验-合计
  936. * @author: whp
  937. * @date: 2024/9/28
  938. **/
  939. @Override
  940. public HashMap<String, Object> costCenterTotal(TaskStatisticsVo taskStatisticsVo) {
  941. if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
  942. if("7".equals(taskStatisticsVo.getDays())){
  943. taskStatisticsVo.setDays("2");
  944. } else if ("30".equals(taskStatisticsVo.getDays())) {
  945. taskStatisticsVo.setDays("3");
  946. }
  947. }
  948. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  949. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  950. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  951. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  952. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  953. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  954. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  955. HashMap<String,Object> list = this.insAreaCompanyMapper.costCenterTotal(taskStatisticsVo);
  956. return list;
  957. }
  958. private void appendName(BusinessAgentData user) {
  959. StringBuilder stringBuilder = new StringBuilder();
  960. String deptId = user.getDeptId();
  961. if (com.ydtech.utils.StringUtils.isNotEmpty(deptId)) {
  962. int length = deptId.length();
  963. if (length > 0) {
  964. if (length <= 5) {
  965. String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1");
  966. SysDept cityName = sysDeptMapper.selectById(dept);
  967. String name = cityName.getName();
  968. stringBuilder.append("(").append(name).append(")");
  969. } else if (length > 5) {
  970. String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1");
  971. if (dept.length() < 5) {
  972. SysDept dept1 = sysDeptMapper.selectById(dept);
  973. SysDept cityName = sysDeptMapper.selectById(deptId);
  974. stringBuilder.append(dept1.getName()).append(cityName.getName());
  975. } else {
  976. String deptIdTwo = dept.substring(0, 4);
  977. SysDept dept1 = sysDeptMapper.selectById(deptIdTwo);
  978. SysDept dept2 = sysDeptMapper.selectById(dept);
  979. stringBuilder.append(dept1.getName()).append(dept2.getName());
  980. }
  981. }
  982. user.setDeptName(stringBuilder.toString());
  983. }
  984. }
  985. }
  986. /**
  987. * @description: 任控制台-业务数据-渠道-详情
  988. * @author: hh
  989. * @date: 2024/11/19
  990. **/
  991. @Override
  992. public PageInfo<BusinessOrderData> getBusinessOrderDataDetails(TaskStatisticsVo taskStatisticsVo) {
  993. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  994. PageHelper.startPage(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  995. List<BusinessOrderData> businessOrderList = this.taskStatisticsMapper.getBusinessOrderDataDetails(taskStatisticsVo);
  996. if (!com.ydtech.utils.StringUtils.isNullOrEmpty(businessOrderList) && !businessOrderList.isEmpty()) {
  997. for (BusinessOrderData businessOrderData : businessOrderList) {
  998. BigDecimal entranceAllFee = businessOrderData.getEntranceAllFee() != null ?
  999. businessOrderData.getEntranceAllFee().setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO;
  1000. BigDecimal exportAllFee = businessOrderData.getExportAllFee() != null ? businessOrderData.getExportAllFee() : BigDecimal.ZERO;
  1001. BigDecimal distributionAmount = entranceAllFee.subtract(exportAllFee);
  1002. businessOrderData.setDistributionAmount(distributionAmount); //毛利润
  1003. businessOrderData.setEntranceAllFee(entranceAllFee);
  1004. if(distributionAmount.compareTo(BigDecimal.ZERO) > 0
  1005. && businessOrderData.getSumPremium().compareTo(BigDecimal.ZERO) > 0){
  1006. BigDecimal resultDivided = distributionAmount.divide(businessOrderData.getSumPremium(), 4, RoundingMode.HALF_UP); //人均产能
  1007. businessOrderData.setDistributionAmountRate(resultDivided);
  1008. }else {
  1009. businessOrderData.setDistributionAmountRate(new BigDecimal("0.0000"));
  1010. }
  1011. }
  1012. }
  1013. return new PageInfo<>(businessOrderList);
  1014. }
  1015. /**
  1016. * @description: 任控制台-业务数据-渠道-合计
  1017. * @author: hh
  1018. * @date: 2024/11/19
  1019. **/
  1020. @Override
  1021. public BusinessOrderData getBusinessOrderDataTotal(TaskStatisticsVo taskStatisticsVo) {
  1022. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1023. BusinessOrderData result = this.taskStatisticsMapper.getBusinessOrderDataTotal(taskStatisticsVo);
  1024. if (com.ydtech.utils.StringUtils.isNullOrEmpty(result)) {
  1025. return null;
  1026. }
  1027. BigDecimal sumPremium = result.getSumPremium();
  1028. BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
  1029. if (ObjectUtils.isNotEmpty(sumPremium)) {
  1030. BigDecimal allSumPremium = allsumPremium.getSumPremium();
  1031. if (sumPremium.compareTo(BigDecimal.ZERO) == 1 && allSumPremium.compareTo(BigDecimal.ZERO) > 0) {
  1032. BigDecimal multiply = sumPremium.divide(allSumPremium, 4, BigDecimal.ROUND_DOWN);
  1033. result.setSumPremiumProportion(multiply);
  1034. }
  1035. } else {
  1036. result.setSumPremiumProportion(BigDecimal.ZERO);
  1037. }
  1038. BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO;
  1039. BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
  1040. BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
  1041. result.setDistributionAmount(subtract); //毛利润
  1042. if(subtract.compareTo(BigDecimal.ZERO) > 0 && sumPremium.compareTo(BigDecimal.ZERO) > 0){
  1043. BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能
  1044. result.setDistributionAmountRate(resultDivided);
  1045. }else {
  1046. result.setDistributionAmountRate(new BigDecimal("0.0000"));
  1047. }
  1048. return result;
  1049. }
  1050. /**
  1051. * 任控制台-业务数据-渠道"
  1052. * @param taskStatisticsVo
  1053. * @return
  1054. */
  1055. @Override
  1056. public IPage<BusinessAgentData> getBusinessElectricData(TaskStatisticsVo taskStatisticsVo) {
  1057. PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
  1058. Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
  1059. page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
  1060. pageVo.setPageNum(taskStatisticsVo.getPageNum());
  1061. pageVo.setPageSize(taskStatisticsVo.getPageSize());
  1062. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId())){
  1063. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  1064. taskStatisticsVo.setUserIds(userIds);
  1065. }
  1066. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()) ) ){
  1067. return new Page<>(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageNum());
  1068. }
  1069. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1070. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1071. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1072. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1073. IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
  1074. List<BusinessAgentData> records = list.getRecords();
  1075. for (BusinessAgentData record : records) {
  1076. this.appendName(record);
  1077. if (record.getDistributionAmountRate() == null) {
  1078. record.setDistributionAmountRate(new BigDecimal("0.0000"));
  1079. }
  1080. }
  1081. Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
  1082. list.setTotal(total);
  1083. return list;
  1084. }
  1085. /**
  1086. * 任控制台-业务数据-电销-合计
  1087. * @param taskStatisticsVo
  1088. * @return
  1089. */
  1090. @Override
  1091. public BusinessAgentData getBusinessElectricDataTotal(TaskStatisticsVo taskStatisticsVo) {
  1092. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId())){
  1093. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  1094. taskStatisticsVo.setUserIds(userIds);
  1095. }
  1096. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1097. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1098. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1099. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1100. if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) && (StringUtils.isEmpty(taskStatisticsVo.getTreeUserId()) && StringUtils.isEmpty(taskStatisticsVo.getDeptId()))) {
  1101. return new BusinessAgentData();
  1102. }
  1103. String deptId = BaseController.getDeptId();
  1104. BusinessAgentData result = this.taskStatisticsMapper.getBusinessAgentDataTotalAdd(taskStatisticsVo);
  1105. Long total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
  1106. result.setTotalNumber(total.toString());
  1107. BigDecimal sumPremium = result.getSumPremium();
  1108. BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
  1109. if(ObjectUtils.isNotEmpty(sumPremium)){
  1110. BigDecimal sumPremium1 = allsumPremium.getSumPremium();
  1111. if(sumPremium.compareTo(BigDecimal.ZERO) ==1){
  1112. BigDecimal multiply = sumPremium.divide(sumPremium1, 4, BigDecimal.ROUND_DOWN);
  1113. result.setSumPremiumProportion(multiply);
  1114. }
  1115. }else {
  1116. result.setSumPremiumProportion(BigDecimal.ZERO);
  1117. }
  1118. BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO;
  1119. BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
  1120. BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
  1121. result.setDistributionAmount(subtract); //毛利润
  1122. if(subtract.compareTo(BigDecimal.ZERO)>0){
  1123. BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能
  1124. result.setDistributionAmountRate(resultDivided);
  1125. }else {
  1126. result.setDistributionAmountRate(BigDecimal.ZERO);
  1127. }
  1128. return result;
  1129. }
  1130. @Override
  1131. public HttpResult getBusinessDataExcel(TaskStatisticsVo taskStatisticsVo) {
  1132. if (StringUtils.isNotEmpty(taskStatisticsVo.getDays())) {
  1133. if ("7".equals(taskStatisticsVo.getDays())) {
  1134. taskStatisticsVo.setDateType("2");
  1135. } else if ("30".equals(taskStatisticsVo.getDays())) {
  1136. taskStatisticsVo.setDateType("3");
  1137. } else if ("1".equals(taskStatisticsVo.getDays())) {
  1138. taskStatisticsVo.setDateType("1");
  1139. }
  1140. }
  1141. if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterProvinceId())) {
  1142. String provinceId = this.removeTrailingZeros(taskStatisticsVo.getParterProvinceId());
  1143. taskStatisticsVo.setParterProvinceId(provinceId);
  1144. }
  1145. if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCityId())) {
  1146. String cityId = this.removeTrailingZeros(taskStatisticsVo.getParterCityId());
  1147. taskStatisticsVo.setParterCityId(cityId);
  1148. }
  1149. if (com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getParterCountyId())) {
  1150. String countyId = this.removeTrailingZeros(taskStatisticsVo.getParterCountyId());
  1151. taskStatisticsVo.setParterCountyId(countyId);
  1152. }
  1153. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1154. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1155. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1156. List<TaskStatisticsDto> list = this.insAreaCompanyMapper.getBusinessDataList(taskStatisticsVo);
  1157. List<BusinessCompanyExcel> sysUserPartners = BeanUtil.copyToList(list, BusinessCompanyExcel.class);
  1158. String uploadPath = this.uploadPath + "/excel/";
  1159. Path path = Paths.get(uploadPath);
  1160. if (!Files.exists(path)) {
  1161. try {
  1162. Files.createDirectories(path);
  1163. } catch (IOException e) {
  1164. e.printStackTrace();
  1165. }
  1166. }
  1167. String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据保险公司导出", BusinessCompanyExcel.class, sysUserPartners);
  1168. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  1169. }
  1170. /**
  1171. * @description: 控制台 - 业务数据 - 代理人导出
  1172. * @author: whp
  1173. * @date: 2024/12/13
  1174. **/
  1175. @Override
  1176. public HttpResult getBusinessAgentExcel(TaskStatisticsVo taskStatisticsVo) {
  1177. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
  1178. if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
  1179. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  1180. if(!userIds.isEmpty() && userIds.get(0)!=null){
  1181. taskStatisticsVo.setUserIds(userIds);
  1182. }else {
  1183. taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
  1184. }
  1185. }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){
  1186. taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
  1187. taskStatisticsVo.setTreeUserId(null);
  1188. taskStatisticsVo.setUserIds(new ArrayList<>());
  1189. }
  1190. }
  1191. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1192. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1193. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1194. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1195. List<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataExcel(taskStatisticsVo);
  1196. for (BusinessAgentData record : list) {
  1197. this.appendName(record);
  1198. if (record.getDistributionAmountRate() == null) {
  1199. record.setDistributionAmountRate(new BigDecimal("0.0000"));
  1200. }
  1201. if(record.getManagementSource().equals("2")){
  1202. record.setManagementSource("代理人");
  1203. }
  1204. }
  1205. List<BusinessAgentExcel> sysUserPartners = BeanUtil.copyToList(list, BusinessAgentExcel.class);
  1206. String uploadPath = this.uploadPath + "/excel/";
  1207. Path path = Paths.get(uploadPath);
  1208. if (!Files.exists(path)) {
  1209. try {
  1210. Files.createDirectories(path);
  1211. } catch (IOException e) {
  1212. e.printStackTrace();
  1213. }
  1214. }
  1215. String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据代理人导出", BusinessAgentExcel.class, sysUserPartners);
  1216. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  1217. }
  1218. /**
  1219. * @description: 控制台 - 业务数据 -渠道导出
  1220. * @author: whp
  1221. * @date: 2024/12/13
  1222. **/
  1223. @Override
  1224. public HttpResult getChannelExcel(TaskStatisticsVo taskStatisticsVo) {
  1225. if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) ){
  1226. if((StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "2".equals(taskStatisticsVo.getTreeType()))){
  1227. List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
  1228. if(!userIds.isEmpty() && userIds.get(0)!=null){
  1229. taskStatisticsVo.setUserIds(userIds);
  1230. }else {
  1231. taskStatisticsVo.setUserId(taskStatisticsVo.getTreeUserId());
  1232. }
  1233. }else if (StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId()) && "1".equals(taskStatisticsVo.getTreeType())){
  1234. taskStatisticsVo.setDeptId(taskStatisticsVo.getTreeUserId());
  1235. taskStatisticsVo.setTreeUserId(null);
  1236. taskStatisticsVo.setUserIds(new ArrayList<>());
  1237. }
  1238. }
  1239. HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
  1240. taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
  1241. taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
  1242. getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
  1243. List<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataExcel(taskStatisticsVo);
  1244. for (BusinessAgentData record : list) {
  1245. this.appendName(record);
  1246. if (record.getDistributionAmountRate() == null) {
  1247. record.setDistributionAmountRate(new BigDecimal("0.0000"));
  1248. }
  1249. if(record.getManagementSource().equals("1")){
  1250. record.setManagementSource("渠道");
  1251. }
  1252. }
  1253. List<GetChannelExcel> sysUserPartners = BeanUtil.copyToList(list, GetChannelExcel.class);
  1254. String uploadPath = this.uploadPath + "/excel/";
  1255. Path path = Paths.get(uploadPath);
  1256. if (!Files.exists(path)) {
  1257. try {
  1258. Files.createDirectories(path);
  1259. } catch (IOException e) {
  1260. e.printStackTrace();
  1261. }
  1262. }
  1263. String fileName = EasyExcelUtils.downExcel(uploadPath, "业务数据渠道导出", GetChannelExcel.class, sysUserPartners);
  1264. return HttpResult.ok("", uploadUrl + "excel/" + fileName);
  1265. }
  1266. /**
  1267. * @version
  1268. * @author: hh
  1269. * @Date: 2024/11/19
  1270. * @Description: 通过时间类型判断
  1271. */
  1272. private static void getDateByType(String type, TaskStatisticsVo taskStatisticsVo) {
  1273. String startDateStr = new String();
  1274. String endDateStr = new String();
  1275. if (StringUtils.isNotEmpty(type)) {
  1276. switch (type) {
  1277. case "1" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 00:00:00";
  1278. endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
  1279. break;
  1280. case "2" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),1) + " 00:00:00";
  1281. endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
  1282. break;
  1283. case "3" : startDateStr = SliceUpDateUtil.getBeforeDay(new Date(),6) + " 00:00:00";
  1284. endDateStr = SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
  1285. break;
  1286. }
  1287. if (StringUtils.isNotEmpty(taskStatisticsVo.getTimeType())) {
  1288. switch (taskStatisticsVo.getTimeType()) {
  1289. case "1" : taskStatisticsVo.setEnterTimeStart(startDateStr);
  1290. taskStatisticsVo.setEnterTimeEnd(endDateStr);
  1291. break;
  1292. case "2" : taskStatisticsVo.setSigningTimeStart(startDateStr);
  1293. taskStatisticsVo.setSigningTimeEnd(endDateStr);
  1294. break;
  1295. }
  1296. }
  1297. }
  1298. }
  1299. }