SysAgencyLeaderServiceImpl.java 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108
  1. package com.ydtech.modules.admin.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollectionUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  7. import com.baomidou.mybatisplus.core.metadata.IPage;
  8. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  9. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10. import com.ydtech.aop.exception.DescribeException;
  11. import com.ydtech.core.page.HttpResult;
  12. import com.ydtech.modules.admin.dao.*;
  13. import com.ydtech.modules.admin.model.*;
  14. import com.ydtech.modules.admin.model.dto.*;
  15. import com.ydtech.modules.admin.model.vo.*;
  16. import com.ydtech.modules.admin.service.SysAgencyLeaderService;
  17. import com.ydtech.modules.admin.service.SysDeptService;
  18. import com.ydtech.modules.admin.service.SysPartnerService;
  19. import com.ydtech.modules.admin.service.SysUserService;
  20. import com.ydtech.modules.base.controller.BaseController;
  21. import com.ydtech.modules.inv.utils.EasyExcelUtils;
  22. import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
  23. import com.ydtech.modules.order.dao.InsOrdersMapper;
  24. import com.ydtech.modules.order.entity.BasePageResult;
  25. import com.ydtech.modules.order.entity.InsAreaCompany;
  26. import com.ydtech.modules.order.entity.InsOrders;
  27. import com.ydtech.utils.StringUtils;
  28. import lombok.extern.slf4j.Slf4j;
  29. import org.springframework.beans.factory.annotation.Value;
  30. import org.springframework.stereotype.Service;
  31. import org.springframework.transaction.annotation.Transactional;
  32. import javax.annotation.Resource;
  33. import java.io.IOException;
  34. import java.math.BigDecimal;
  35. import java.math.RoundingMode;
  36. import java.nio.file.Files;
  37. import java.nio.file.Path;
  38. import java.nio.file.Paths;
  39. import java.text.SimpleDateFormat;
  40. import java.util.*;
  41. import java.util.stream.Collectors;
  42. @Slf4j
  43. @Service("sysAgencyLeaderService")
  44. public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMapper, SysAgencyLeader> implements SysAgencyLeaderService {
  45. @Resource
  46. private SysAgencyLeaderMapper sysAgencyLeaderMapper;
  47. @Resource
  48. private SysDeptMapper sysDeptMapper;
  49. @Resource
  50. private SysDeptService sysDeptService;
  51. @Resource
  52. private SysUserMapper sysUserMapper;
  53. @Resource
  54. private SysUserService sysUserService;
  55. @Resource
  56. private InsOrdersMapper insOrdersMapper;
  57. @Resource
  58. private InsAreaCompanyMapper insAreaCompanyMapper;
  59. @Resource
  60. private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
  61. @Resource
  62. private SysRelationPersonMapper sysRelationPersonMapper;
  63. @Resource
  64. private SysPartnerService sysPartnerService;
  65. @Resource
  66. private SysPartnerMapper sysPartnerMapper;
  67. @Resource
  68. private SysPartnerTimeMapper sysPartnerTimeMapper;
  69. @Resource
  70. private SysPartnerAccountMapper sysPartnerAccountMapper;
  71. @Resource
  72. private SysPremiumDetailsMapper sysPremiumDetailsMapper;
  73. @Value("${upload.file.path}")
  74. private String uploadPath;
  75. @Value("${upload.file.url}")
  76. private String uploadUrl;
  77. @Override
  78. @Transactional(rollbackFor = Exception.class)
  79. public boolean insert(SysAgencyLeaderDto sysAgencyLeaderDto) {
  80. //校验一个用户只能是一个机构的负责人,每个机构只有一个负责人
  81. List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda()
  82. .eq(SysAgencyLeader::getDelFlag, 1));
  83. if (sysAgencyLeaders.size() > 0) {
  84. //校验用户是否已经机构负责人
  85. List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
  86. if (userIdList.contains(sysAgencyLeaderDto.getUserId())) {
  87. throw new DescribeException(sysAgencyLeaderDto.getUserName() + "已是机构负责人,不可重复配置");
  88. }
  89. List<String> deptIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getDeptId).collect(Collectors.toList());
  90. if (deptIdList.contains(sysAgencyLeaderDto.getDeptId())) {
  91. throw new DescribeException(sysAgencyLeaderDto.getDeptName() + "机构已配置负责人,不可重复配置");
  92. }
  93. }
  94. SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDto, SysAgencyLeader.class);
  95. sysAgencyLeader.setCreateTime(new Date());
  96. SysUser user = BaseController.getUser();
  97. sysAgencyLeader.setCreateBy(user.getId());
  98. boolean b = sysAgencyLeaderMapper.insert(sysAgencyLeader) > 0;
  99. if (!StringUtils.isNullOrEmpty(sysAgencyLeaderDto.getSuggestId())) {
  100. //sysRelationPerson1为空是无上级
  101. SysRelationPerson sysRelationPerson = new SysRelationPerson();
  102. sysRelationPerson.setAgencyLeaderId(sysAgencyLeader.getUserId());
  103. sysRelationPerson.setCreateBy(user.getId());
  104. sysRelationPerson.setCreateTime(new Date());
  105. sysRelationPerson.setSuggestLevel(sysAgencyLeaderDto.getSuggestLevel());
  106. sysRelationPerson.setSuggestId(sysAgencyLeaderDto.getSuggestId());
  107. sysRelationPerson.setSource(0);
  108. sysRelationPerson.setType(1);
  109. b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
  110. //查询推荐人是否有上级 :满足合伙人有多层关系
  111. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  112. .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeaderDto.getSuggestId())
  113. .eq(SysRelationPerson::getType, 0));
  114. if (sysRelationPersonList.size() > 0) {
  115. for (SysRelationPerson sysRelation : sysRelationPersonList) {
  116. SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
  117. SysPartner sysPartner2 = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  118. .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysRelation.getSuggestId()));
  119. sysRelationPerson1.setAgencyLeaderId(sysAgencyLeader.getUserId());
  120. sysRelationPerson1.setCreateBy(user.getId());
  121. sysRelationPerson1.setCreateTime(new Date());
  122. sysRelationPerson1.setSuggestId(sysRelation.getSuggestId());
  123. sysRelationPerson1.setSuggestLevel(sysPartner2.getType());
  124. sysRelationPerson1.setSource(1);
  125. sysRelationPerson1.setType(1);
  126. b = sysRelationPersonMapper.insert(sysRelationPerson1) > 0;
  127. }
  128. }
  129. }
  130. return b;
  131. }
  132. @Override
  133. public List<SysUser> getLevelUser(String id) {
  134. SysDept sysDept = sysDeptMapper.selectById(id);
  135. List<SysUser> sysUserList = null;
  136. if (sysDept.getComlevel().equals("5")) {
  137. sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  138. .ne(SysUser::getStatus, 0)
  139. .likeRight(SysUser::getId, sysDept.getParentId())
  140. .notLike(SysUser::getId, "M")
  141. .orderByDesc(SysUser::getCreateTime));
  142. } else {
  143. sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  144. .ne(SysUser::getStatus, 0)
  145. .likeRight(SysUser::getId, id)
  146. .notLike(SysUser::getId, "M")
  147. .orderByDesc(SysUser::getCreateTime));
  148. }
  149. //工作室管理员: 已是管理员不能再成为管理员,已是合伙人的也不能设置为管理员
  150. List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
  151. if (sysPartnerList.size() > 0) {
  152. List<String> stringList = sysPartnerList.stream().map(SysPartner::getUserId).collect(Collectors.toList());
  153. sysUserList = sysUserList.stream().filter(SysUser -> !stringList.contains(SysUser.getId())).collect(Collectors.toList());
  154. }
  155. List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getDelFlag, 1));
  156. if (sysAgencyLeaders.size() > 0) {
  157. List<String> stringList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
  158. sysUserList = sysUserList.stream().filter(SysUser -> !stringList.contains(SysUser.getId())).collect(Collectors.toList());
  159. }
  160. return sysUserList;
  161. }
  162. @Override
  163. public List<SysAgencyLeader> getByUserIdList(List<String> collect) {
  164. return baseMapper.getByUserIdList(collect);
  165. }
  166. @Override
  167. @Transactional(rollbackFor = Exception.class)
  168. public boolean edit(SysAgencyLeaderDto sysAgencyLeaderDto) {
  169. //判断本月是否已修改比例
  170. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  171. String format = simpleDateFormat.format(new Date());
  172. List<SysPartnerTime> sysPartnerTimes = sysPartnerTimeMapper.selectList(new LambdaQueryWrapper<SysPartnerTime>()
  173. .eq(SysPartnerTime::getCreateTime,format).eq(SysPartnerTime::getUserId,sysAgencyLeaderDto.getUserId()));
  174. if (sysPartnerTimes.size() > 0) {
  175. throw new DescribeException(format+"已设置过抽成比例,每月只能修改一次");
  176. }
  177. //不修改负责人userId传null
  178. String userId = sysAgencyLeaderDto.getUserId();
  179. String loginId = BaseController.getUserId();
  180. boolean b = false;
  181. SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(sysAgencyLeaderDto.getId());
  182. if (!sysAgencyLeader1.getUserId().equals(userId)) {
  183. //修改管理员
  184. List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
  185. List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
  186. if (userIdList.contains(sysAgencyLeaderDto.getUserId())) {
  187. throw new DescribeException(sysAgencyLeaderDto.getUserName() + "已是机构负责人,不可重复配置");
  188. }
  189. List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
  190. if (sysPartners.size() > 0) {
  191. List<String> list = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
  192. if (list.contains(sysAgencyLeaderDto.getUserId())) {
  193. throw new DescribeException(sysAgencyLeaderDto.getUserName() + "已是合伙人,不可设置为机构负责人");
  194. }
  195. }
  196. //修改负责人时解除合伙人或者推荐人与机构负责人的关系
  197. List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  198. .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader1.getUserId())
  199. .eq(SysRelationPerson::getDelFlag, 1)
  200. .eq(SysRelationPerson::getType, 1));
  201. if (sysRelationPeople.size() > 0) {
  202. throw new DescribeException(sysAgencyLeader1.getUserName() + "有推荐关系,不允许修改");
  203. }
  204. SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDto, SysAgencyLeader.class);
  205. sysAgencyLeader.setUpdateTime(new Date());
  206. sysAgencyLeader.setUpdateBy(loginId);
  207. sysAgencyLeaderMapper.updateById(sysAgencyLeader);
  208. if (!sysAgencyLeaderDto.getSuggestId().isEmpty()) {
  209. //sysRelationPerson1为空是无上级
  210. SysRelationPerson sysRelationPerson = new SysRelationPerson();
  211. sysRelationPerson.setAgencyLeaderId(sysAgencyLeader.getUserId());
  212. sysRelationPerson.setCreateBy(loginId);
  213. sysRelationPerson.setCreateTime(new Date());
  214. sysRelationPerson.setSuggestId(sysAgencyLeaderDto.getSuggestId());
  215. sysRelationPerson.setSource(0);
  216. sysRelationPerson.setType(1);
  217. b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
  218. //查询推荐人是否有上级 :满足合伙人有多层关系
  219. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  220. .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeaderDto.getSuggestId())
  221. .eq(SysRelationPerson::getType, 0));
  222. if (sysRelationPersonList.size() > 0) {
  223. for (SysRelationPerson sysRelation : sysRelationPersonList) {
  224. SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
  225. sysRelationPerson1.setAgencyLeaderId(sysAgencyLeader.getUserId());
  226. sysRelationPerson1.setCreateBy(loginId);
  227. sysRelationPerson1.setCreateTime(new Date());
  228. sysRelationPerson1.setSuggestId(sysRelation.getSuggestId());
  229. sysRelationPerson1.setSource(1);
  230. sysRelationPerson1.setType(1);
  231. b = sysRelationPersonMapper.insert(sysRelationPerson1) > 0;
  232. }
  233. }
  234. }
  235. } else {
  236. if (StringUtils.isNullOrEmpty(sysAgencyLeader1.getSuggestId()) && !sysAgencyLeaderDto.getSuggestId().isEmpty()) {
  237. //之前推荐人为空。可以修改
  238. SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDto, SysAgencyLeader.class);
  239. sysAgencyLeader.setUpdateBy(loginId);
  240. b = sysAgencyLeaderMapper.updateById(sysAgencyLeader) > 0;
  241. //sysRelationPerson1为空是无上级
  242. SysRelationPerson sysRelationPerson = new SysRelationPerson();
  243. sysRelationPerson.setAgencyLeaderId(sysAgencyLeader.getUserId());
  244. sysRelationPerson.setCreateBy(loginId);
  245. sysRelationPerson.setCreateTime(new Date());
  246. sysRelationPerson.setSuggestId(sysAgencyLeaderDto.getSuggestId());
  247. sysRelationPerson.setSource(0);
  248. sysRelationPerson.setType(1);
  249. b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
  250. //查询推荐人是否有上级 :满足合伙人有多层关系
  251. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  252. .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeaderDto.getSuggestId())
  253. .eq(SysRelationPerson::getType, 0));
  254. if (sysRelationPersonList.size() > 0) {
  255. for (SysRelationPerson sysRelation : sysRelationPersonList) {
  256. SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
  257. sysRelationPerson1.setAgencyLeaderId(sysAgencyLeader.getUserId());
  258. sysRelationPerson1.setCreateBy(loginId);
  259. sysRelationPerson1.setCreateTime(new Date());
  260. sysRelationPerson1.setSuggestId(sysRelation.getSuggestId());
  261. sysRelationPerson1.setSource(1);
  262. sysRelationPerson1.setType(1);
  263. b = sysRelationPersonMapper.insert(sysRelationPerson1) > 0;
  264. }
  265. }
  266. } else {
  267. SysAgencyLeader sysAgencyLeader = new SysAgencyLeader();
  268. sysAgencyLeader.setId(sysAgencyLeaderDto.getId());
  269. sysAgencyLeader.setProportional(sysAgencyLeaderDto.getProportional());
  270. sysAgencyLeader.setUpdateBy(loginId);
  271. b = sysAgencyLeaderMapper.updateById(sysAgencyLeader) > 0;
  272. }
  273. }
  274. //修改抽成比例记录改变过程
  275. SysPartnerTime sysPartnerTime = new SysPartnerTime();
  276. sysPartnerTime.setType(2);
  277. sysPartnerTime.setCreateTime(format);
  278. sysPartnerTime.setUserId(sysAgencyLeaderDto.getUserId());
  279. sysPartnerTime.setUserName(sysAgencyLeaderDto.getUserName());
  280. sysPartnerTime.setNewProportional(sysAgencyLeaderDto.getProportional());
  281. sysPartnerTime.setOldProportional(sysAgencyLeader1.getProportional());
  282. sysPartnerTimeMapper.insert(sysPartnerTime);
  283. return b;
  284. }
  285. @Override
  286. @Transactional(rollbackFor = Exception.class)
  287. public void editInfo(SysAgencyLeaderDeptDto sysAgencyLeaderDeptDto) {
  288. SysDept sysDept = sysAgencyLeaderDeptDto.getSysDept();
  289. SysDept byId = sysDeptService.getById(sysDept.getId());
  290. if (sysDept.getManagementSource() != null){
  291. if (!sysDept.getManagementSource().equals(byId.getManagementSource())) {
  292. throw new DescribeException("机构已被设置来源无法修改");
  293. }
  294. }
  295. sysDeptService.updateDept(sysDept);
  296. //不修改负责人userId传null
  297. // String userId = sysAgencyLeaderDeptDto.getSysAgencyLeader().getUserId();
  298. // String loginId = BaseController.getUserId();
  299. // SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(sysAgencyLeaderDeptDto.getSysAgencyLeader().getId());
  300. // //修改管理员
  301. // List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
  302. // List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
  303. // if (userIdList.contains(userId)) {
  304. // throw new DescribeException(sysAgencyLeaderDeptDto.getSysAgencyLeader().getUserName() + "已是工作室管理员,不可重复配置");
  305. // }
  306. // List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
  307. // if (sysPartners.size() > 0) {
  308. // List<String> list = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
  309. // if (list.contains(sysAgencyLeaderDeptDto.getSysAgencyLeader().getUserId())) {
  310. // throw new DescribeException(sysAgencyLeaderDeptDto.getSysAgencyLeader().getUserName() + "已是合伙人,不可设置为机构负责人");
  311. // }
  312. // }
  313. //
  314. // //修改负责人时解除合伙人或者推荐人与机构负责人的关系
  315. // List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  316. // .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader1.getUserId())
  317. // .eq(SysRelationPerson::getDelFlag, 1)
  318. // .eq(SysRelationPerson::getType, 1));
  319. // if (sysRelationPeople.size() > 0) {
  320. // throw new DescribeException(sysAgencyLeader1.getUserName() + "有推荐关系,不允许修改");
  321. // }
  322. //
  323. // SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDeptDto.getSysAgencyLeader(), SysAgencyLeader.class);
  324. // sysAgencyLeader.setUpdateTime(new Date());
  325. // sysAgencyLeader.setUpdateBy(loginId);
  326. // sysAgencyLeaderMapper.updateById(sysAgencyLeader);
  327. }
  328. @Override
  329. @Transactional(rollbackFor = Exception.class)
  330. public boolean delById(Integer id) {
  331. SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(id);
  332. List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new UpdateWrapper<SysRelationPerson>().lambda()
  333. .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader1.getUserId())
  334. .eq(SysRelationPerson::getDelFlag, 1)
  335. .eq(SysRelationPerson::getType, 1));
  336. if (sysRelationPeople.size() > 0) {
  337. if (sysRelationPeople.get(0).getSuggestId() != null) {
  338. throw new DescribeException(sysAgencyLeader1.getUserName() + "有推荐人,不允许删除");
  339. }
  340. }
  341. SysAgencyLeader sysAgencyLeader = new SysAgencyLeader();
  342. sysAgencyLeader.setId(id);
  343. sysAgencyLeader.setDelFlag(0);
  344. return sysAgencyLeaderMapper.updateById(sysAgencyLeader) > 0;
  345. }
  346. @Override
  347. public List<SysAgencyLeaderVo> queryInfo(String id) {
  348. List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  349. .eq(SysAgencyLeader::getDelFlag, 1).likeRight(StringUtils.isNotEmpty(id), SysAgencyLeader::getDeptId, id));
  350. return BeanUtil.copyToList(sysAgencyLeaders, SysAgencyLeaderVo.class);
  351. }
  352. @Override
  353. public BasePageResult<SysAgencyLeaderVo> queryPage(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
  354. Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
  355. LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
  356. wrapper.eq(SysAgencyLeader::getDelFlag, 1);
  357. wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserId()),SysAgencyLeader::getUserId,sysAgencyLeaderPageDto.getUserId());
  358. wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserName()),SysAgencyLeader::getUserName,sysAgencyLeaderPageDto.getUserName());
  359. wrapper.likeRight(!StringUtils.isNullOrEmpty(sysAgencyLeaderPageDto.getDeptId()), SysAgencyLeader::getDeptId, sysAgencyLeaderPageDto.getDeptId());
  360. wrapper.orderByDesc(SysAgencyLeader::getId);
  361. Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
  362. List<SysAgencyLeader> records = insOrdersPage.getRecords();
  363. List<SysAgencyLeaderVo> sysAgencyLeaderVos = BeanUtil.copyToList(records, SysAgencyLeaderVo.class);
  364. if (sysAgencyLeaderVos.size() > 0) {
  365. for (SysAgencyLeaderVo sysAgencyLeaderVo : sysAgencyLeaderVos) {
  366. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getId, sysAgencyLeaderVo.getDeptId()).eq(SysDept::getDelFlag, 0));
  367. if (sysDept != null) {
  368. sysAgencyLeaderVo.setParentId(sysDept.getParentId());
  369. sysAgencyLeaderVo.setDeptName(sysDept.getName());
  370. }
  371. SysUser sysUser = sysUserMapper.selectById(sysAgencyLeaderVo.getUserId());
  372. sysAgencyLeaderVo.setUserName(sysUser.getName());
  373. }
  374. }
  375. return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  376. sysAgencyLeaderVos);
  377. }
  378. @Override
  379. public SysAgencyLeaderVo queryById(Integer id) {
  380. SysAgencyLeader sysAgencyLeader = new SysAgencyLeader();
  381. sysAgencyLeader.setId(id);
  382. SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(sysAgencyLeader);
  383. SysAgencyLeaderVo sysAgencyLeaderVo = BeanUtil.copyProperties(sysAgencyLeader1, SysAgencyLeaderVo.class);
  384. SysUser sysUser = sysUserMapper.selectById(sysAgencyLeaderVo.getUserId());
  385. sysAgencyLeaderVo.setUserName(sysUser.getName());
  386. SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeaderVo.getSuggestId());
  387. if (sysUser1 != null) {
  388. sysAgencyLeaderVo.setSuggestName(sysUser1.getName());
  389. }
  390. return sysAgencyLeaderVo;
  391. }
  392. @Override
  393. public boolean checkUserId(String userId) {
  394. List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
  395. if (sysAgencyLeaders.size() > 0) {
  396. //校验用户是否已经配置机构负责人
  397. List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
  398. return userIdList.contains(userId);
  399. }
  400. return false;
  401. }
  402. @Override
  403. public AgencyExtractFee queryExtractFee(String userId) {
  404. AgencyExtractFee agencyExtractFee = new AgencyExtractFee();
  405. //判断当前登录用户是合伙人还是机构负责人
  406. boolean b1 = sysPartnerService.checkPartner(userId);
  407. if (b1) {
  408. //总保费
  409. BigDecimal bigDecimal = new BigDecimal("0.00");
  410. //已提现抽成费用
  411. BigDecimal historyFee = new BigDecimal("0.00");
  412. //合伙人信息
  413. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  414. .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
  415. //填充查询人的姓名和机构
  416. agencyExtractFee.setUserId(sysPartner.getUserId());
  417. agencyExtractFee.setUserName(sysPartner.getUserName());
  418. SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
  419. .eq(SysUser::getId, sysPartner.getUserId())
  420. .ne(SysUser::getStatus, 0));
  421. agencyExtractFee.setUserName(sysUser.getName());
  422. agencyExtractFee.setDeptId(sysUser.getDeptId());
  423. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
  424. .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
  425. agencyExtractFee.setDeptName(sysDept.getName());
  426. //查询所有推荐的机构负责人核算总保费
  427. List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  428. .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 1));
  429. if (sysRelationPeople.size() > 0) {
  430. List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  431. for (String agencyLeaderId : agencyLeaderIds) {
  432. SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getUserId, agencyLeaderId)
  433. .eq(SysAgencyLeader::getDelFlag, 1));
  434. if (sysAgencyLeaders != null) {
  435. agencyExtractFee.setProportional(sysPartner.getProportional());
  436. //筛选订单,选择时间
  437. Date updateTime = sysAgencyLeaders.getUpdateTime();
  438. Date createTime = sysAgencyLeaders.getCreateTime();
  439. String dateStr = "";
  440. if (updateTime != null) {
  441. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
  442. agencyExtractFee.setStartTime(updateTime);
  443. } else {
  444. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
  445. agencyExtractFee.setStartTime(createTime);
  446. }
  447. HashMap<String, BigDecimal> map = baseMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr,null,null);
  448. if (CollectionUtil.isNotEmpty(map)) {
  449. bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
  450. }
  451. }
  452. }
  453. agencyExtractFee.setSumpremium(bigDecimal);
  454. //总保费*比例/100 保留两位小数
  455. BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional())
  456. .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
  457. agencyExtractFee.setExtractFee(multiply);
  458. // 填充 已提现抽成费用和可提现抽成费用
  459. List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
  460. .eq(SysAgencyFeeApproval::getUserId, userId)
  461. .eq(SysAgencyFeeApproval::getStatus, 1));
  462. if (sysAgencyFeeApprovals.size() > 0) {
  463. for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
  464. historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
  465. }
  466. }
  467. if (!bigDecimal.equals(new BigDecimal("0.00"))) {
  468. //已提现
  469. agencyExtractFee.setHistoryFee(historyFee);
  470. //可提现 = 总抽成-已提现
  471. agencyExtractFee.setCashFee(multiply.subtract(historyFee));
  472. } else {
  473. agencyExtractFee.setHistoryFee(new BigDecimal("0.00"));
  474. agencyExtractFee.setCashFee(multiply.subtract(new BigDecimal("0.00")));
  475. }
  476. }
  477. return agencyExtractFee;
  478. }
  479. //校验是否为机构负责人
  480. boolean b = this.checkUserId(userId);
  481. if (b) {
  482. SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
  483. .eq(SysAgencyLeader::getUserId, userId).eq(SysAgencyLeader::getDelFlag, 1));
  484. if (sysAgencyLeaders != null) {
  485. //填充查询人的姓名和机构
  486. agencyExtractFee.setUserId(sysAgencyLeaders.getUserId());
  487. agencyExtractFee.setUserName(sysAgencyLeaders.getUserName());
  488. SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
  489. .eq(SysUser::getId, sysAgencyLeaders.getUserId())
  490. .ne(SysUser::getStatus, 0));
  491. agencyExtractFee.setUserName(sysUser.getName());
  492. agencyExtractFee.setDeptId(sysUser.getDeptId());
  493. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
  494. .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
  495. agencyExtractFee.setDeptName(sysDept.getName());
  496. //总保费
  497. BigDecimal bigDecimal = new BigDecimal("0.00");
  498. //已提现抽成费用
  499. BigDecimal historyFee = new BigDecimal("0.00");
  500. agencyExtractFee.setProportional(sysAgencyLeaders.getProportional());
  501. //筛选订单,选择时间
  502. Date updateTime = sysAgencyLeaders.getUpdateTime();
  503. Date createTime = sysAgencyLeaders.getCreateTime();
  504. String dateStr = "";
  505. if (updateTime != null) {
  506. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
  507. agencyExtractFee.setStartTime(updateTime);
  508. } else {
  509. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
  510. agencyExtractFee.setStartTime(createTime);
  511. }
  512. HashMap<String, BigDecimal> map = baseMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr,null,null);
  513. if (CollectionUtil.isNotEmpty(map)) {
  514. bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
  515. }
  516. agencyExtractFee.setSumpremium(bigDecimal);
  517. BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional())
  518. .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
  519. agencyExtractFee.setExtractFee(multiply);
  520. // 填充 已提现抽成费用和可提现抽成费用
  521. List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
  522. .eq(SysAgencyFeeApproval::getUserId, userId)
  523. .eq(SysAgencyFeeApproval::getStatus, 1));
  524. if (sysAgencyFeeApprovals.size() > 0) {
  525. for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
  526. historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
  527. }
  528. }
  529. if (!bigDecimal.equals(new BigDecimal("0.00"))) {
  530. //已提现
  531. agencyExtractFee.setHistoryFee(historyFee);
  532. //可提现 = 总抽成-已提现
  533. agencyExtractFee.setCashFee(multiply.subtract(historyFee));
  534. } else {
  535. agencyExtractFee.setHistoryFee(new BigDecimal("0.00"));
  536. agencyExtractFee.setCashFee(multiply.subtract(new BigDecimal("0.00")));
  537. }
  538. }
  539. return agencyExtractFee;
  540. }
  541. return agencyExtractFee;
  542. }
  543. @Override
  544. public BasePageResult<AgencyExtractFeeVo> queryExtractFeeList(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
  545. List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
  546. Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
  547. LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
  548. wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserId()), SysAgencyLeader::getUserId, sysAgencyLeaderPageDto.getUserId());
  549. wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserName()), SysAgencyLeader::getUserName, sysAgencyLeaderPageDto.getUserName());
  550. wrapper.eq(SysAgencyLeader::getDelFlag, 1);
  551. wrapper.orderByDesc(SysAgencyLeader::getId);
  552. Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
  553. List<SysAgencyLeader> records = insOrdersPage.getRecords();
  554. if (records.size() > 0) {
  555. for (SysAgencyLeader sysAgencyLeaders : records) {
  556. AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
  557. //总保费
  558. BigDecimal bigDecimal = BigDecimal.ZERO;
  559. //已提现抽成费用
  560. BigDecimal historyFee = BigDecimal.ZERO;
  561. SysUser sysUser = sysUserMapper.selectById(sysAgencyLeaders.getUserId());
  562. SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeaders.getDeptId());
  563. agencyExtractFee.setUserId(sysAgencyLeaders.getUserId());
  564. agencyExtractFee.setUserName(sysUser.getName());
  565. agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId());
  566. agencyExtractFee.setDeptName(sysDept.getName());
  567. agencyExtractFee.setProportional(sysAgencyLeaders.getProportional());
  568. //筛选订单,选择时间
  569. Date updateTime = sysAgencyLeaders.getUpdateTime();
  570. Date createTime = sysAgencyLeaders.getCreateTime();
  571. String dateStr = "";
  572. if (updateTime != null) {
  573. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
  574. agencyExtractFee.setStartTime(updateTime);
  575. } else {
  576. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
  577. agencyExtractFee.setStartTime(createTime);
  578. }
  579. HashMap<String, BigDecimal> map = baseMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr,null,null);
  580. if (CollectionUtil.isNotEmpty(map)) {
  581. bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
  582. }
  583. agencyExtractFee.setSumpremium(bigDecimal);
  584. BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional())
  585. .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
  586. agencyExtractFee.setExtractFee(multiply);
  587. // 填充 已提现抽成费用和可提现抽成费用
  588. List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
  589. .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
  590. .eq(SysAgencyFeeApproval::getStatus, 1));
  591. if (sysAgencyFeeApprovals.size() > 0) {
  592. for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
  593. historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
  594. }
  595. }
  596. if (!bigDecimal.equals(BigDecimal.ZERO)) {
  597. //已提现
  598. agencyExtractFee.setHistoryFee(historyFee);
  599. //可提现 = 总抽成-已提现
  600. agencyExtractFee.setCashFee(multiply.subtract(historyFee));
  601. } else {
  602. agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
  603. agencyExtractFee.setCashFee(multiply.subtract(BigDecimal.ZERO));
  604. }
  605. agencyExtractFeeList.add(agencyExtractFee);
  606. }
  607. }
  608. return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  609. agencyExtractFeeList);
  610. }
  611. @Override
  612. public BasePageResult<AgencyExtractFeeVo> queryExtractFeeAlls(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
  613. List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
  614. Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
  615. LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
  616. wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserId()), SysAgencyLeader::getUserId, sysAgencyLeaderPageDto.getUserId());
  617. wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserName()), SysAgencyLeader::getUserName, sysAgencyLeaderPageDto.getUserName());
  618. wrapper.eq(SysAgencyLeader::getDelFlag, 1);
  619. wrapper.orderByDesc(SysAgencyLeader::getId);
  620. Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
  621. List<SysAgencyLeader> records = insOrdersPage.getRecords();
  622. if (records.size() > 0) {
  623. for (SysAgencyLeader sysAgencyLeaders : records) {
  624. AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
  625. String userId = sysAgencyLeaders.getUserId();
  626. //已提现抽成费用
  627. BigDecimal historyFee = BigDecimal.ZERO;
  628. SysUser sysUser = sysUserMapper.selectById(userId);
  629. SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeaders.getDeptId());
  630. agencyExtractFee.setUserId(userId);
  631. agencyExtractFee.setUserName(sysUser.getName());
  632. agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId());
  633. agencyExtractFee.setDeptName(sysDept.getName());
  634. SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>().eq(SysPartnerAccount::getUserId, userId));
  635. if (sysPartnerAccount != null) {
  636. BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
  637. BigDecimal extractFee = sysPartnerAccount.getExtractFee();
  638. agencyExtractFee.setSumpremium(sumPremium);
  639. agencyExtractFee.setExtractFee(extractFee);
  640. // 填充 已提现抽成费用和可提现抽成费用
  641. List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
  642. .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
  643. .eq(SysAgencyFeeApproval::getStatus, 1));
  644. if (sysAgencyFeeApprovals.size() > 0) {
  645. for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
  646. historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
  647. }
  648. }
  649. if (!extractFee.equals(BigDecimal.ZERO)) {
  650. //已提现
  651. agencyExtractFee.setHistoryFee(historyFee);
  652. //可提现 = 总抽成-已提现
  653. agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
  654. } else {
  655. agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
  656. agencyExtractFee.setCashFee(extractFee.subtract(BigDecimal.ZERO));
  657. }
  658. }
  659. agencyExtractFeeList.add(agencyExtractFee);
  660. }
  661. }
  662. return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  663. agencyExtractFeeList);
  664. }
  665. @Override
  666. public BasePageResult<TeamInformation> queryTeamInfoPage(TeamInformationDto teamInformationDto) {
  667. String userId = BaseController.getUserId();
  668. List<TeamInformation> informationList = new ArrayList<>();
  669. //机构负责人查询机构下的团队
  670. SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getUserId, userId)
  671. .eq(SysAgencyLeader::getDelFlag, 1));
  672. if (sysAgencyLeaders == null) return null;
  673. Page<SysDept> page = new Page<>(teamInformationDto.getPageNum(), teamInformationDto.getPageSize());
  674. LambdaQueryWrapper<SysDept> wrapper = new LambdaQueryWrapper<>();
  675. wrapper.likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
  676. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  677. .eq(SysDept::getManagementSource, sysAgencyLeaders.getSource())
  678. .like(StringUtils.isNotEmpty(teamInformationDto.getDeptName()), SysDept::getName, teamInformationDto.getDeptName())
  679. .orderByDesc(SysDept::getCreateTime);
  680. Page<SysDept> insOrdersPage = sysDeptService.page(page, wrapper);
  681. List<SysDept> sysDeptList = insOrdersPage.getRecords();
  682. if (sysDeptList.size() > 0) {
  683. //总保费
  684. BigDecimal bigDecimal = new BigDecimal("0.00");
  685. for (SysDept sysDept : sysDeptList) {
  686. TeamInformation teamInformation = new TeamInformation();
  687. SysUser sysUser = sysUserMapper.selectById(sysAgencyLeaders.getUserId());
  688. teamInformation.setUserName(sysUser.getName());
  689. teamInformation.setDeptId(sysDept.getId());
  690. teamInformation.setDeptName(sysDept.getName());
  691. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  692. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  693. teamInformation.setDeptManNum(sysUsers.size());
  694. List<InsOrders> insOrderList;
  695. //筛选订单,选择时间
  696. Date updateTime = sysAgencyLeaders.getUpdateTime();
  697. if (updateTime == null) {
  698. //机构下所有订单
  699. insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
  700. .likeRight(InsOrders::getDeptid, sysDept.getId())
  701. .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime())
  702. .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()), InsOrders::getCreatetime, teamInformationDto.getBeginTime())
  703. .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()), InsOrders::getCreatetime, teamInformationDto.getEndTime()));
  704. teamInformation.setStartTime(sysAgencyLeaders.getCreateTime());
  705. } else {
  706. insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
  707. .likeRight(InsOrders::getDeptid, sysDept.getId())
  708. .ge(InsOrders::getCreatetime, updateTime)
  709. .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()), InsOrders::getCreatetime, teamInformationDto.getBeginTime())
  710. .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()), InsOrders::getCreatetime, teamInformationDto.getEndTime()));
  711. teamInformation.setStartTime(updateTime);
  712. }
  713. if (insOrderList.size() > 0) {
  714. List<String> collect = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
  715. //查询订单下的所有子订单 保费和
  716. HashMap<String, Object> map = sysAgencyLeaderMapper.getAreaCompanyByUserId(collect);
  717. if (CollectionUtil.isNotEmpty(map)) {
  718. bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : (BigDecimal)map.get("bigDecimal"));
  719. }
  720. }
  721. teamInformation.setSumpremium(bigDecimal);
  722. int num = 0;
  723. // 查团队有几人出单 :订单表中userid相等同时在 子订单表中状态为3已承保才为出单
  724. List<String> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
  725. for (String s : userIdList) {
  726. List<InsOrders> collect = insOrderList.stream().filter(InsOrders -> InsOrders.getUserid().equals(s)).collect(Collectors.toList());
  727. if (collect.size() > 0) {
  728. List<String> insOrders = collect.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
  729. List<InsAreaCompany> insAreaCompanies1 = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
  730. .in(InsAreaCompany::getOrderno, insOrders)
  731. .eq(InsAreaCompany::getOrderstatus, 3));
  732. if (insAreaCompanies1.size() > 0) {
  733. num++;
  734. }
  735. }
  736. }
  737. teamInformation.setOrderManNum(num);
  738. informationList.add(teamInformation);
  739. }
  740. }
  741. return new BasePageResult<>(teamInformationDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  742. informationList);
  743. }
  744. @Override
  745. public BasePageResult<AgencyTeamVo> queryWorkroomPage(AgencyTeamDto agencyTeamDto) {
  746. List<AgencyTeamVo> agencyTeamVoList = new ArrayList<>();
  747. String userId = BaseController.getUserId();
  748. int source = agencyTeamDto.getSource();
  749. List<SysRelationPerson> sysRelationPersonList = null;
  750. //判断是0:直接推荐;1:间接推荐
  751. if (source == 0) {
  752. sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  753. .eq(SysRelationPerson::getSuggestId, userId)
  754. .eq(SysRelationPerson::getDelFlag, 1)
  755. .eq(SysRelationPerson::getSource, 0)
  756. .eq(SysRelationPerson::getType, 1));
  757. } else {
  758. sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  759. .eq(SysRelationPerson::getSuggestId, userId)
  760. .eq(SysRelationPerson::getDelFlag, 1)
  761. .eq(SysRelationPerson::getSource, 1)
  762. .eq(SysRelationPerson::getType, 1));
  763. }
  764. List<String> ids = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  765. if (CollectionUtil.isNotEmpty(ids)) {
  766. //分页查询推荐的机构信息
  767. Page<SysAgencyLeader> page = new Page<>(agencyTeamDto.getPageNum(), agencyTeamDto.getPageSize());
  768. LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
  769. wrapper.like(StringUtils.isNotEmpty(agencyTeamDto.getDeptName()), SysAgencyLeader::getDeptName, agencyTeamDto.getDeptName());
  770. wrapper.in(SysAgencyLeader::getUserId, ids);
  771. wrapper.eq(SysAgencyLeader::getDelFlag, 1);
  772. wrapper.orderByDesc(SysAgencyLeader::getId);
  773. Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
  774. List<SysAgencyLeader> leaderList = insOrdersPage.getRecords();
  775. if (leaderList.size() > 0) {
  776. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  777. //总保费
  778. BigDecimal bigDecimal = new BigDecimal("0.00");
  779. int deptManNum = 0;
  780. AgencyTeamVo agencyTeamVo = new AgencyTeamVo();
  781. agencyTeamVo.setDeptId(sysAgencyLeader.getDeptId());
  782. agencyTeamVo.setDeptName(sysAgencyLeader.getDeptName());
  783. //获取机构下的团队
  784. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  785. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  786. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  787. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  788. agencyTeamVo.setDeptNum(sysDeptList.size());
  789. if (sysDeptList.size() > 0) {
  790. for (SysDept sysDept : sysDeptList) {
  791. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  792. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  793. deptManNum = deptManNum + sysUsers.size();
  794. Date updateTime = sysAgencyLeader.getUpdateTime();
  795. Date createTime = sysAgencyLeader.getCreateTime();
  796. String dateStr = "";
  797. if (updateTime != null) {
  798. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
  799. agencyTeamVo.setStartTime(updateTime);
  800. } else {
  801. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
  802. agencyTeamVo.setStartTime(createTime);
  803. }
  804. HashMap<String, BigDecimal> map = baseMapper.getBigDecimalNum(sysDept.getId(), dateStr,null,null);
  805. if (CollectionUtil.isNotEmpty(map)) {
  806. bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
  807. }
  808. }
  809. }
  810. agencyTeamVo.setDeptManNum(deptManNum);
  811. agencyTeamVo.setSumpremium(bigDecimal);
  812. if (!bigDecimal.equals(new BigDecimal("0.00"))) {
  813. BigDecimal multiply = bigDecimal.multiply(new BigDecimal(sysAgencyLeader.getProportional())
  814. .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
  815. agencyTeamVo.setExtractFee(multiply);
  816. } else {
  817. agencyTeamVo.setExtractFee(new BigDecimal("0.00"));
  818. }
  819. agencyTeamVoList.add(agencyTeamVo);
  820. }
  821. }
  822. return new BasePageResult<>(agencyTeamDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  823. agencyTeamVoList);
  824. }
  825. return new BasePageResult<>(agencyTeamDto.getPageNum(), agencyTeamDto.getPageSize(), 0L, 0L,
  826. agencyTeamVoList);
  827. }
  828. @Override
  829. public List<SysAgencyLeaderVo> queryAgencyLeader(String userId) {
  830. List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  831. .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 1));
  832. if (sysRelationPeople.size() > 0) {
  833. //获取所有推荐的机构负责人id
  834. List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  835. //获取机构负责人信息
  836. List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  837. .in(SysAgencyLeader::getUserId, agencyLeaderIds)
  838. .eq(SysAgencyLeader::getDelFlag, 1)
  839. .orderByDesc(SysAgencyLeader::getId));
  840. return BeanUtil.copyToList(sysAgencyLeaders, SysAgencyLeaderVo.class);
  841. }
  842. return null;
  843. }
  844. @Override
  845. public BasePageResult<TeamUserInfoVo> queryTeamUser(TeamUserInfoDto teamUserInfoDto) {
  846. List<TeamUserInfoVo> teamUserInfoVoList = new ArrayList<>();
  847. Page<SysUser> page = new Page<>(teamUserInfoDto.getPageNum(), teamUserInfoDto.getPageSize());
  848. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  849. wrapper.likeRight(SysUser::getId, teamUserInfoDto.getDeptId());
  850. wrapper.eq(SysUser::getStatus, 1);
  851. wrapper.orderByDesc(SysUser::getCreateTime);
  852. Page<SysUser> insOrdersPage = sysUserService.page(page, wrapper);
  853. List<SysUser> sysUsers = insOrdersPage.getRecords();
  854. //总保费
  855. for (SysUser sysUser : sysUsers) {
  856. List<InsOrders> insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
  857. .ge(InsOrders::getCreatetime, teamUserInfoDto.getStartTime())
  858. .ge(StringUtils.isNotEmpty(teamUserInfoDto.getBeginTime()), InsOrders::getCreatetime, teamUserInfoDto.getBeginTime())
  859. .le(StringUtils.isNotEmpty(teamUserInfoDto.getEndTime()), InsOrders::getCreatetime, teamUserInfoDto.getEndTime())
  860. .eq(InsOrders::getUserid, sysUser.getId()));
  861. //总保费
  862. BigDecimal bigDecimal = new BigDecimal("0.00");
  863. TeamUserInfoVo teamUserInfoVo = new TeamUserInfoVo();
  864. teamUserInfoVo.setUserId(sysUser.getId());
  865. teamUserInfoVo.setUserName(sysUser.getName());
  866. if (insOrderList.size() > 0) {
  867. List<String> orderNoList = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
  868. //单个人员查询订单下的所有子订单总保费 '订单状态(0 报价 1 待核保 2 已核保待缴费 3 核保退回 4 核保不通过)',
  869. HashMap<String, Object> map = sysAgencyLeaderMapper.getAreaCompanyByUserId(orderNoList);
  870. if (CollectionUtil.isNotEmpty(map)) {
  871. bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : (BigDecimal)map.get("bigDecimal"));
  872. Long issueNum = (Long)map.get("issueNum");
  873. teamUserInfoVo.setIssueNum(issueNum.intValue());
  874. }
  875. // //出单笔数
  876. teamUserInfoVo.setSumpremium(bigDecimal);
  877. //报价笔数
  878. Long quoteNum = insAreaCompanyMapper.selectCount(new LambdaQueryWrapper<InsAreaCompany>()
  879. .in(InsAreaCompany::getOrderno, orderNoList));
  880. teamUserInfoVo.setQuoteNum(quoteNum);
  881. //核保笔数 订单状态(0 报价中 1 待核保 2 已核保待缴费 3已承保 4 核保退回)
  882. List<Integer> integers = Arrays.asList(2, 3, 4);
  883. Long underwriteNum = insAreaCompanyMapper.selectCount(new LambdaQueryWrapper<InsAreaCompany>()
  884. .in(InsAreaCompany::getOrderno, orderNoList)
  885. .in(InsAreaCompany::getOrderstatus, integers));
  886. teamUserInfoVo.setUnderwriteNum(underwriteNum);
  887. teamUserInfoVoList.add(teamUserInfoVo);
  888. } else {
  889. teamUserInfoVo.setIssueNum(0);
  890. teamUserInfoVo.setSumpremium(bigDecimal);
  891. teamUserInfoVo.setQuoteNum(Long.valueOf("0"));
  892. teamUserInfoVo.setUnderwriteNum(Long.valueOf("0"));
  893. teamUserInfoVoList.add(teamUserInfoVo);
  894. }
  895. }
  896. return new BasePageResult<>(teamUserInfoDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  897. teamUserInfoVoList);
  898. }
  899. @Override
  900. public List<SysUser> queryAgencyUser(String deptId) {
  901. return sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  902. .ne(SysUser::getStatus, 0)
  903. .likeRight(StringUtils.isNotEmpty(deptId), SysUser::getId, deptId));
  904. }
  905. @Override
  906. public IPage<AgencyUserInsAreaVo> queryAgencyUserInsAreaPage(AgencyUserInsAreaDto agencyUserInsAreaDto) {
  907. Page page = new Page(agencyUserInsAreaDto.getPageNum(), agencyUserInsAreaDto.getPageSize());
  908. IPage<AgencyUserInsAreaVo> agencyUserInsAreaVoIPage = insAreaCompanyMapper.queryAgencyUserInsAreaPage(page, agencyUserInsAreaDto);
  909. List<AgencyUserInsAreaVo> records = agencyUserInsAreaVoIPage.getRecords();
  910. if (records.size() > 0) {
  911. for (AgencyUserInsAreaVo record : records) {
  912. record.setSumpremium(record.getJqpremium().add(record.getJypremium()).add(record.getSypremium()));
  913. }
  914. }
  915. return agencyUserInsAreaVoIPage;
  916. }
  917. @Override
  918. public IPage<AgencyUserInsAreaVo> queryInsAreaPageById(AgencyUserInsAreaDto agencyUserInsAreaDto) {
  919. Page page = new Page(agencyUserInsAreaDto.getPageNum(), agencyUserInsAreaDto.getPageSize());
  920. IPage<AgencyUserInsAreaVo> agencyUserInsAreaVoIPage = sysPremiumDetailsMapper.queryInsAreaPageById(page, agencyUserInsAreaDto);
  921. return agencyUserInsAreaVoIPage;
  922. }
  923. @Override
  924. public HttpResult queryUserInsAreaExcel(AgencyUserInsAreaDto agencyUserInsAreaDto) {
  925. List<AgencyUserInsAreaVo> agencyUserInsAreaVos = baseMapper.queryUserInsAreaExcel(agencyUserInsAreaDto);
  926. if (agencyUserInsAreaVos.size()>0) {
  927. for (AgencyUserInsAreaVo agencyUserInsAreaVo : agencyUserInsAreaVos) {
  928. agencyUserInsAreaVo.setSumpremium(agencyUserInsAreaVo.getJqpremium().add(agencyUserInsAreaVo.getJypremium())
  929. .add(agencyUserInsAreaVo.getSypremium()));
  930. agencyUserInsAreaVo.setOrderstatus("已承保");
  931. }
  932. }
  933. String uploadPath = this.uploadPath + "/excel/";
  934. Path path = Paths.get(uploadPath);
  935. if (!Files.exists(path)) {
  936. try {
  937. Files.createDirectories(path);
  938. } catch (IOException e) {
  939. e.printStackTrace();
  940. }
  941. }
  942. String fileName = EasyExcelUtils.downExcel(uploadPath, "人员保费明细导出", AgencyUserInsAreaVo.class, agencyUserInsAreaVos);
  943. return HttpResult.ok("导出成功", uploadUrl + "excel/" + fileName);
  944. }
  945. @Override
  946. public boolean editAll(SysAgencyLeaderListDto sysAgencyLeaderDto) {
  947. String loginId = BaseController.getUserId();
  948. if (sysAgencyLeaderDto ==null) {
  949. throw new DescribeException( "批量修改参数不能为空");
  950. }
  951. return sysAgencyLeaderMapper.updateByIds(sysAgencyLeaderDto)>0;
  952. }
  953. @Override
  954. public SysAgencyLeaderDeptVo queryInfoById(Integer id) {
  955. SysAgencyLeaderDeptVo sysAgencyLeaderDeptVo = new SysAgencyLeaderDeptVo();
  956. SysAgencyLeader sysAgencyLeader = baseMapper.selectById(id);
  957. SysUser sysUser = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
  958. sysAgencyLeader.setSuggestName(sysUser.getName());
  959. sysAgencyLeaderDeptVo.setSysAgencyLeader(sysAgencyLeader);
  960. SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeader.getDeptId());
  961. sysAgencyLeaderDeptVo.setSysDept(sysDept);
  962. return sysAgencyLeaderDeptVo;
  963. }
  964. }