TaskStatisticsServiceImpl.java 71 KB

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