EsmUserReferrerServiceImpl.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. package com.ydtech.modules.esm.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.github.pagehelper.PageHelper;
  7. import com.ydtech.constants.enums.dict.organization.OrganizationSource;
  8. import com.ydtech.core.page.HttpResult;
  9. import com.ydtech.core.page.PageResult;
  10. import com.ydtech.exception.SystemException;
  11. import com.ydtech.modules.admin.constants.UserWorkStatus;
  12. import com.ydtech.modules.admin.model.SysDept;
  13. import com.ydtech.modules.admin.model.SysUser;
  14. import com.ydtech.modules.admin.model.dto.SysUserDto;
  15. import com.ydtech.modules.admin.model.dto.SysUserTeamDto;
  16. import com.ydtech.modules.admin.model.dto.SysUserTeamStaticDto;
  17. import com.ydtech.modules.admin.model.vo.AppCustomerManagementQueryVo;
  18. import com.ydtech.modules.admin.model.vo.SysReferrerVo;
  19. import com.ydtech.modules.admin.service.SysDeptService;
  20. import com.ydtech.modules.admin.service.SysUserService;
  21. import com.ydtech.modules.base.controller.BaseController;
  22. import com.ydtech.modules.base.model.dto.PageDto;
  23. import com.ydtech.modules.base.model.vo.PageVo;
  24. import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
  25. import com.ydtech.modules.esm.model.EsmUserReferrer;
  26. import com.ydtech.modules.esm.model.QueryChannel;
  27. import com.ydtech.modules.esm.model.vo.*;
  28. import com.ydtech.modules.esm.service.EsmUserReferrerService;
  29. import com.ydtech.modules.order.entity.BasePageResult;
  30. import com.ydtech.utils.StringUtils;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.jdbc.core.JdbcTemplate;
  33. import org.springframework.jdbc.core.RowCallbackHandler;
  34. import org.springframework.stereotype.Service;
  35. import javax.sql.DataSource;
  36. import java.sql.ResultSet;
  37. import java.sql.SQLException;
  38. import java.util.*;
  39. import java.util.stream.Collectors;
  40. import java.util.stream.Stream;
  41. @Service
  42. public class EsmUserReferrerServiceImpl extends ServiceImpl<EsmUserReferrerMapper, EsmUserReferrer>
  43. implements EsmUserReferrerService {
  44. @Autowired
  45. public DataSource dataSource;
  46. @Autowired
  47. private SysUserService sysUserService;
  48. @Autowired
  49. private SysDeptService sysDeptService;
  50. @Autowired
  51. private EsmUserReferrerService esmUserReferrerService;
  52. // 递归查找节点的所有父级节点
  53. public List<EsmUserReferrer> findParents(String userId) {
  54. List<EsmUserReferrer> referrers = new ArrayList<>();
  55. EsmUserReferrer esmUserReferrer = esmUserReferrerService.getById(userId);
  56. //找不到用户的推荐关系
  57. if (esmUserReferrer == null) {
  58. return null;
  59. }
  60. List<EsmUserReferrer> esmUserReferrers =
  61. esmUserReferrerService.list(new LambdaQueryWrapper<EsmUserReferrer>()
  62. .eq(EsmUserReferrer::getAffiliation, esmUserReferrer.getAffiliation())
  63. .ne(EsmUserReferrer::getId, esmUserReferrer.getId()));
  64. findParentsRecursive(esmUserReferrer.getReferrerId(), esmUserReferrers, referrers);
  65. return referrers;
  66. }
  67. private static void findParentsRecursive(String userId, List<EsmUserReferrer> esmUserReferrers, List<EsmUserReferrer> referrers) {
  68. if (esmUserReferrers.isEmpty())
  69. return;
  70. EsmUserReferrer collect = esmUserReferrers.stream().filter(item -> item.getId().equals(userId)).findFirst()
  71. .orElse(null);
  72. if (collect != null) {
  73. if (collect.getId().equals(collect.getReferrerId())) {
  74. referrers.add(collect);
  75. } else {
  76. referrers.add(collect);
  77. findParentsRecursive(collect.getReferrerId(), esmUserReferrers, referrers);
  78. }
  79. }
  80. }
  81. @Override
  82. public Map buildLevelInfo(SysUser agent) {
  83. Map m = new HashMap();
  84. LambdaQueryWrapper<EsmUserReferrer> lqw = new LambdaQueryWrapper<>();
  85. lqw.eq(EsmUserReferrer::getReferrerId, agent.getId());
  86. lqw.ne(EsmUserReferrer::getId, agent.getId());
  87. List<EsmUserReferrer> listAll = esmUserReferrerService.list(lqw);
  88. List<SysUser> oneList = new ArrayList<>();
  89. List<SysUser> oneTempList = new ArrayList<>();
  90. listAll.forEach(a -> {
  91. SysUser sysUser = sysUserService.getById(a.getId());
  92. if (sysUser.getStatus() == 1) {
  93. oneList.add(sysUser);
  94. } else {
  95. oneTempList.add(sysUser);
  96. }
  97. });
  98. m.put("list1", oneList);
  99. m.put("list2", oneTempList);
  100. return m;
  101. }
  102. @Override
  103. public void buildLevelList(SysUser user, List<SysUser> oneList, List<SysUser> oneTempList) {
  104. Map<String, List<SysUser>> oneMap = buildLevelInfo(user);
  105. oneList.addAll(oneMap.get("list1"));
  106. oneTempList.addAll(oneMap.get("list2"));
  107. }
  108. @Override
  109. public void addReferrer(String referrerId, String nextPK) {
  110. //if(referrerId.equals(nextPK)) throw new SystemException("推荐人不能是自己");
  111. //推荐人信息
  112. EsmUserReferrer referrer = getById(referrerId);
  113. EsmUserReferrer eur = new EsmUserReferrer();
  114. if (null == referrer) {
  115. //推荐人是团队长的时候,先固定队长是首级
  116. eur.setId(referrerId);
  117. eur.setLevel(0);
  118. eur.setAffiliation(referrerId);
  119. SysUser user = sysUserService.getById(referrerId);
  120. eur.setReferrerId(referrerId);
  121. eur.setReferrerName(user.getName());
  122. esmUserReferrerService.save(eur);
  123. //查询团队长的id,并将团队长作为推荐人
  124. referrer = getById(referrerId);
  125. eur.setId(nextPK);
  126. eur.setReferrerName(referrer.getReferrerName());
  127. eur.setReferrerId(referrer.getReferrerId());
  128. eur.setLevel(referrer.getLevel() + 1);
  129. eur.setAffiliation(referrer.getAffiliation());
  130. esmUserReferrerService.saveOrUpdate(eur);
  131. } else {
  132. //已经级联过的代理再作为推荐人的时候,推荐人是传入的推荐人信息
  133. SysUser user = sysUserService.getById(referrerId);
  134. eur.setId(nextPK);
  135. eur.setReferrerId(referrerId);
  136. eur.setReferrerName(user.getName());
  137. eur.setLevel(referrer.getLevel() + 1);
  138. eur.setAffiliation(referrer.getAffiliation());
  139. esmUserReferrerService.saveOrUpdate(eur);
  140. }
  141. }
  142. @Override
  143. public boolean deldeleteByReferrerId(String userId) {
  144. LambdaQueryWrapper<EsmUserReferrer> queryWrapper = new LambdaQueryWrapper<>();
  145. queryWrapper.eq(EsmUserReferrer::getId, userId);
  146. return remove(queryWrapper);
  147. }
  148. @Override
  149. public List<String> getUpUser(String userId, List<String> list) {
  150. EsmUserReferrer esmUserReferrer = this.getById(userId);
  151. if (esmUserReferrer == null) {
  152. return list;
  153. }
  154. list.add(esmUserReferrer.getId());
  155. if (!esmUserReferrer.getReferrerId().equals(userId)) {
  156. getUpUser(esmUserReferrer.getReferrerId(), list);
  157. }
  158. return list;
  159. }
  160. @Override
  161. public Page<SysUser> getUserPage(Page page, SysUserDto dto) {
  162. return baseMapper.getUserPage(page, dto);
  163. }
  164. @Override
  165. public Page<QueryChannel> getQueryChannelPage(Page page, QueryChannel queryChannel) {
  166. return baseMapper.getQueryChannelPage(page, queryChannel);
  167. }
  168. @Override
  169. public HttpResult<PageVo<SysReferrerVo>> gainReferrerPage(PageDto<SysReferrerVo> pageDto) {
  170. if (StringUtils.isNotEmpty(pageDto.getDto().getAffiliation())) {
  171. EsmUserReferrer esmUserReferrer = this.getById(pageDto.getDto().getAffiliation());
  172. if (esmUserReferrer == null) {
  173. return HttpResult.error("工号有误,请重新输入");
  174. }
  175. List<String> up3list = new ArrayList<>();
  176. getUpUser(pageDto.getDto().getAffiliation(), up3list);
  177. List<String> down3list = this.baseMapper.getIdDown3(pageDto.getDto().getAffiliation());
  178. List<String> ids = new ArrayList<>();
  179. ids.addAll(up3list);
  180. ids.addAll(down3list);
  181. ids.add(pageDto.getDto().getAffiliation());
  182. pageDto.getDto().setIds(ids);
  183. pageDto.getDto().setAffiliation(null);
  184. }
  185. PageVo<SysReferrerVo> pageVo = new PageVo();
  186. //获取分页数量
  187. int total = super.baseMapper.countReferrerByAffiliation(pageDto);
  188. // pageVo.setTotalSize(total);
  189. // PageVo.buildPageInfo(pageDto,pageVo);
  190. //计算mysql分页起索引
  191. int firstIndex = pageDto.getPageNum() == 1 ? 0 : (pageDto.getPageNum() - 1) * pageDto.getPageSize();
  192. //计算mysql分页总页数
  193. int totalPages = total % pageDto.getPageSize() == 0 ? total / pageDto.getPageSize() : total / pageDto.getPageSize() + 1;
  194. //响应
  195. pageVo.setTotalSize(total);
  196. pageVo.setPageNum(pageDto.getPageNum());
  197. pageVo.setPageSize(pageDto.getPageSize());
  198. pageVo.setTotalPages(totalPages);
  199. //请求替换分页开始索引
  200. pageDto.setPageNum(firstIndex);
  201. pageVo.setContent(super.baseMapper.selectReferrerByAffiliation(pageDto));
  202. return HttpResult.ok(pageVo);
  203. }
  204. /**
  205. * 人员业绩统计
  206. *
  207. * @param whereCase
  208. * @param paramValues
  209. * @return
  210. */
  211. public List<EsmUserPolicyVO> countUserPolicy(String whereCase, Object[] paramValues) {
  212. List<EsmUserPolicyVO> recordList = new ArrayList<EsmUserPolicyVO>();
  213. String sql = "select b.teamlevel,b.name username,\n" +
  214. "sum(case when orderstatus in (1,2,3,4) then 1 else 0 end) ordernum,\n" +
  215. "sum(case when orderstatus=3 then 1 else 0 end) policynum,\n" +
  216. "sum(case when orderstatus=3 then sumpremium else 0 end) sumpremium\n" +
  217. "from v_user_referrer b \n" +
  218. "left join v_user_order a on b.id=a.id \n" +
  219. "and a.createtime between ? and ? \n" +
  220. "where b.affiliation=? \n" +
  221. "group by b.teamlevel,b.name order by b.teamlevel;";
  222. JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  223. jdbcTemplate.query(sql, paramValues,
  224. new RowCallbackHandler() {
  225. @Override
  226. public void processRow(ResultSet resultSet) throws SQLException {
  227. EsmUserPolicyVO model = new EsmUserPolicyVO();
  228. model.setTeamlevel(resultSet.getString("teamlevel"));
  229. model.setUsername(resultSet.getString("username"));
  230. model.setOrdernum(resultSet.getInt("ordernum"));
  231. model.setPolicynum(resultSet.getInt("policynum"));
  232. model.setSumpremium(resultSet.getDouble("sumpremium"));
  233. recordList.add(model);
  234. }
  235. });
  236. return recordList;
  237. }
  238. /**
  239. * 团队业绩统计
  240. *
  241. * @param whereCase
  242. * @param paramValues
  243. * @return
  244. */
  245. public List<EsmTeamPolicyVO> countTeamPolicy(String whereCase, Object[] paramValues) {
  246. List<EsmTeamPolicyVO> recordList = new ArrayList<>();
  247. String sql = "select teamlevel,sum(teamnum) teamnum, sum(sumpremium) sumpremium,sum(usernum) usernum from \n" +
  248. "(select a.`level` teamlevel,count(distinct id) teamnum, 0 sumpremium,0 usernum\n" +
  249. "from v_user_order a\n" +
  250. "where a.affiliation=?\n" +
  251. "group by a.`level`\n" +
  252. "union all \n" +
  253. "select 9 teamlevel,count(distinct a.id) teamnum, 0 sumpremium,0 usernum\n" +
  254. "from esm_user_referrer a\n" +
  255. "left join sys_user b on a.id=b.id\n" +
  256. "where a.affiliation=? and b.status=2 " +
  257. "union all \n" +
  258. "select a.`level` teamlevel,0 teamnum, sum(sumpremium) sumpremium,count(distinct id) usernum\n" +
  259. "from v_user_order a\n" +
  260. "where a.affiliation=? and a.orderstatus=3\n" +
  261. "and a.createtime between ? and ? \n" +
  262. "group by a.`level`) t group by teamlevel";
  263. JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  264. jdbcTemplate.query(sql, paramValues,
  265. new RowCallbackHandler() {
  266. @Override
  267. public void processRow(ResultSet resultSet) throws SQLException {
  268. EsmTeamPolicyVO model = new EsmTeamPolicyVO();
  269. model.setTeamlevel(resultSet.getString("teamlevel"));
  270. model.setTeamnum(resultSet.getInt("teamnum"));
  271. model.setUsernum(resultSet.getInt("usernum"));
  272. model.setSumpremium(resultSet.getDouble("sumpremium"));
  273. recordList.add(model);
  274. }
  275. });
  276. return recordList;
  277. }
  278. /**
  279. * 人员团队业绩统计--所有业务员都可查询
  280. *
  281. * @return
  282. */
  283. @Override
  284. public EsmUserCountVO queryUserCount(TeamUserQryVO record) {
  285. EsmUserCountVO esmUserCountVO = new EsmUserCountVO();
  286. List<EsmTeamPolicyVO> hzList = new ArrayList<>();
  287. List<EsmUserPolicyVO> userPolicyList = new ArrayList<>();
  288. List<EsmUserPolicyVO> userPolicyList0 = new ArrayList<>();
  289. List<EsmUserPolicyVO> userPolicyList1 = new ArrayList<>();
  290. List<EsmUserPolicyVO> userPolicyList2 = new ArrayList<>();
  291. List<EsmUserPolicyVO> userPolicyList3 = new ArrayList<>();
  292. List<EsmUserPolicyVO> userPolicyList9 = new ArrayList<>();
  293. EsmUserReferrer esmUserReferrer = getById(record.getId());
  294. if (esmUserReferrer != null) {
  295. List<String> userList1 = new ArrayList<>();
  296. List<String> userList2 = new ArrayList<>();
  297. List<String> userList3 = new ArrayList<>();
  298. //本级信息
  299. //明细数据加工
  300. List<String> userList0 = new ArrayList<>();
  301. userList0.add(esmUserReferrer.getId());
  302. userPolicyList0 = this.baseMapper.queryOrderCount(userList0, record.getStartdate(), record.getEnddate());
  303. //汇总数据加工
  304. EsmTeamPolicyVO esmTeamPolicyVO0 = this.baseMapper.queryOrderCountHz(userList0, record.getStartdate(), record.getEnddate());
  305. EsmTeamPolicyVO esmTeamPolicyVO1 = new EsmTeamPolicyVO();
  306. EsmTeamPolicyVO esmTeamPolicyVO2 = new EsmTeamPolicyVO();
  307. EsmTeamPolicyVO esmTeamPolicyVO3 = new EsmTeamPolicyVO();
  308. esmTeamPolicyVO2.setTeamlevel("二级会员");
  309. esmTeamPolicyVO3.setTeamlevel("三级会员");
  310. if (esmTeamPolicyVO0 == null) {
  311. esmTeamPolicyVO0 = new EsmTeamPolicyVO();
  312. esmTeamPolicyVO0.setSumpremium(0);
  313. esmTeamPolicyVO0.setUsernum(0);
  314. } else {
  315. esmTeamPolicyVO0.setUsernum(1);
  316. }
  317. esmTeamPolicyVO0.setTeamlevel("本人");
  318. esmTeamPolicyVO0.setTeamnum(1);
  319. // 一级团队信息
  320. userList1 = this.baseMapper.getIdDown_1(esmUserReferrer.getId());
  321. esmTeamPolicyVO1.setTeamlevel("一级会员");
  322. if (userList1 != null && !userList1.isEmpty()) {
  323. userPolicyList1 = this.baseMapper.queryOrderCount(userList1, record.getStartdate(), record.getEnddate());
  324. EsmTeamPolicyVO esmTeamPolicyVO1_t = this.baseMapper.queryOrderCountHz(userList1, record.getStartdate(),
  325. record.getEnddate());
  326. if (esmTeamPolicyVO1_t != null) {
  327. esmTeamPolicyVO1.setSumpremium(Double.parseDouble(String.format("%.2f",esmTeamPolicyVO1_t.getSumpremium())));
  328. esmTeamPolicyVO1.setUsernum(userPolicyList1.size());//出单人力
  329. }
  330. esmTeamPolicyVO1.setTeamnum(userList1.size());//团队人数
  331. // 二级团队信息
  332. userList2 = this.baseMapper.getIdDown_2(esmUserReferrer.getId());
  333. esmTeamPolicyVO2.setTeamlevel("二级会员");
  334. if (userList2 != null && !userList2.isEmpty()) {
  335. userPolicyList2 = this.baseMapper.queryOrderCount(userList2, record.getStartdate(), record.getEnddate());
  336. EsmTeamPolicyVO esmTeamPolicyVO2_t = this.baseMapper.queryOrderCountHz(userList2, record.getStartdate(),
  337. record.getEnddate());
  338. if (esmTeamPolicyVO2_t != null) {
  339. esmTeamPolicyVO2.setSumpremium(Double.parseDouble(String.format("%.2f",esmTeamPolicyVO2_t.getSumpremium())));
  340. esmTeamPolicyVO2.setUsernum(userPolicyList2.size());
  341. }
  342. esmTeamPolicyVO2.setTeamnum(userList2.size());
  343. // 三级团队信息
  344. userList3 = this.baseMapper.getIdDown_3(esmUserReferrer.getId());
  345. if (userList3 != null && !userList3.isEmpty()) {
  346. userPolicyList3 = this.baseMapper.queryOrderCount(userList3, record.getStartdate(), record.getEnddate());
  347. EsmTeamPolicyVO esmTeamPolicyVO3_t = this.baseMapper.queryOrderCountHz(userList3, record.getStartdate(), record.getEnddate());
  348. esmTeamPolicyVO3.setTeamlevel("三级会员");
  349. esmTeamPolicyVO3.setTeamnum(userList3.size());
  350. if (esmTeamPolicyVO3_t != null) {
  351. esmTeamPolicyVO3.setSumpremium(Double.parseDouble(String.format("%.2f",esmTeamPolicyVO3_t.getSumpremium())));
  352. esmTeamPolicyVO3.setUsernum(userPolicyList3.size());
  353. }
  354. }
  355. }
  356. }
  357. //临时团队
  358. List<String> registList = this.baseMapper.getIdDown3_regist(record.getId());
  359. if (registList != null && !registList.isEmpty()) {
  360. userPolicyList9 = this.baseMapper.queryOrderCount(registList, record.getStartdate(), record.getEnddate());
  361. }
  362. EsmTeamPolicyVO esmTeamPolicyVO9 = new EsmTeamPolicyVO();
  363. esmTeamPolicyVO9.setTeamlevel("临时会员");
  364. esmTeamPolicyVO9.setTeamnum(registList == null ? 0 : registList.size());
  365. //汇总
  366. List<String> userList = new ArrayList<>();
  367. userList.addAll(userList0);
  368. userList.addAll(userList1);
  369. userList.addAll(userList2);
  370. userList.addAll(userList3);
  371. userList.addAll(registList);
  372. userPolicyList = this.baseMapper.queryOrderCount(userList, record.getStartdate(), record.getEnddate());
  373. EsmTeamPolicyVO esmTeamPolicyVO = new EsmTeamPolicyVO();
  374. EsmTeamPolicyVO esmTeamPolicyVO_t = this.baseMapper.queryOrderCountHz(userList, record.getStartdate(), record.getEnddate());
  375. if (esmTeamPolicyVO_t != null) {
  376. esmTeamPolicyVO.setSumpremium(Double.parseDouble(String.format("%.2f",esmTeamPolicyVO_t.getSumpremium())));
  377. esmTeamPolicyVO.setUsernum(userPolicyList.size());
  378. }
  379. esmTeamPolicyVO.setTeamlevel("汇总");
  380. esmTeamPolicyVO.setTeamnum(userList.size());
  381. hzList.add(esmTeamPolicyVO);
  382. hzList.add(esmTeamPolicyVO0);
  383. hzList.add(esmTeamPolicyVO1);
  384. hzList.add(esmTeamPolicyVO2);
  385. hzList.add(esmTeamPolicyVO3);
  386. hzList.add(esmTeamPolicyVO9);
  387. esmUserCountVO.setHzList(hzList);
  388. userPolicyList1.forEach(x-> x.setTeamlevel("1"));
  389. userPolicyList2.forEach(x-> x.setTeamlevel("2"));
  390. userPolicyList3.forEach(x-> x.setTeamlevel("3"));
  391. Map<String, String> collect = Stream.of(userPolicyList1, userPolicyList2, userPolicyList3)
  392. .flatMap(List::stream)
  393. .collect(Collectors.toMap(EsmUserPolicyVO::getId, EsmUserPolicyVO::getTeamlevel));
  394. userPolicyList.forEach(x -> {
  395. String s = collect.get(x.getId());
  396. x.setTeamlevel(s);
  397. });
  398. EsmUserCountVO.AggregateDataList aggregateDataList = new EsmUserCountVO.AggregateDataList(userPolicyList);
  399. EsmUserCountVO.AggregateDataList aggregateDataList0 = new EsmUserCountVO.AggregateDataList(userPolicyList0);
  400. EsmUserCountVO.AggregateDataList aggregateDataList1 = new EsmUserCountVO.AggregateDataList(userPolicyList1);
  401. EsmUserCountVO.AggregateDataList aggregateDataList2 = new EsmUserCountVO.AggregateDataList(userPolicyList2);
  402. EsmUserCountVO.AggregateDataList aggregateDataList3 = new EsmUserCountVO.AggregateDataList(userPolicyList3);
  403. EsmUserCountVO.AggregateDataList aggregateDataList9 = new EsmUserCountVO.AggregateDataList(userPolicyList9);
  404. esmUserCountVO.setAggregateDataLists(aggregateDataList);
  405. esmUserCountVO.setAggregateDataLists0(aggregateDataList0);
  406. esmUserCountVO.setAggregateDataLists1(aggregateDataList1);
  407. esmUserCountVO.setAggregateDataLists2(aggregateDataList2);
  408. esmUserCountVO.setAggregateDataLists3(aggregateDataList3);
  409. esmUserCountVO.setAggregateDataLists9(aggregateDataList9);
  410. } else {
  411. throw new SystemException("内部错误");
  412. }
  413. return esmUserCountVO;
  414. }
  415. public List<EsmUserReferrer> queryList(String affiliation) {
  416. return super.baseMapper.queryList(affiliation);
  417. }
  418. @Override
  419. public BasePageResult<SysUserTeamDto> getTeamUser(AppCustomerManagementQueryVo managementQueryVo, String userId, SysDept dept) {
  420. List<EsmUserReferrer> esmUserReferrers = lambdaQuery().eq(EsmUserReferrer::getReferrerId, userId).orderByDesc(EsmUserReferrer::getLevel).list();
  421. if (esmUserReferrers.isEmpty()) {
  422. return new BasePageResult<>();
  423. }
  424. int level = esmUserReferrers.get(0).getLevel();
  425. int i = esmUserReferrers.get(0).getLevel() + 3;
  426. PageHelper.startPage(managementQueryVo.getPageNum(), managementQueryVo.getPageSize());
  427. if ("2".equals(managementQueryVo.getAuthenticationStatus())) {
  428. managementQueryVo.setAuthenticationStatus("-1");
  429. }
  430. List<SysUserTeamDto> byTeam = baseMapper.getByTeam(managementQueryVo, userId, i);
  431. // 个代特殊处理返回
  432. if (OrganizationSource.OS_2.getCode().equals(dept.getManagementSource())) {
  433. if(CollUtil.isNotEmpty(byTeam)){
  434. for (SysUserTeamDto sysUserTeamDto : byTeam) {
  435. if (UserWorkStatus.UWS_1.getCode().equals(sysUserTeamDto.getStatus())){
  436. if(sysUserTeamDto.getLevel().equals(level)){
  437. sysUserTeamDto.setLevelName("一级代理");
  438. } else if (sysUserTeamDto.getLevel().equals(level + 1)){
  439. sysUserTeamDto.setLevelName("二级代理");
  440. } else if (sysUserTeamDto.getLevel().equals(level + 2)){
  441. sysUserTeamDto.setLevelName("三级代理");
  442. }
  443. }else{
  444. sysUserTeamDto.setLevelName("临时代理");
  445. }
  446. }
  447. }
  448. }
  449. PageResult<SysUserTeamDto> sysUserPageResult = new PageResult<>(byTeam);
  450. return new BasePageResult<>(managementQueryVo.getPageNum(), managementQueryVo.getPageSize(), sysUserPageResult.getTotalSize(),
  451. sysUserPageResult.getTotalPages(), sysUserPageResult.getContent());
  452. }
  453. /**
  454. * 人员团队业绩统计--指定业务员查询
  455. *
  456. * @return
  457. */
  458. @Override
  459. public List<EsmUserPolicyForUserVO> queryUserCountForUser(TeamUserQryVO record) {
  460. return this.baseMapper.queryOrderCountForUser(record.getId(), record.getStartdate(), record.getEnddate());
  461. }
  462. @Override
  463. public List<SysUserTeamStaticDto> authStatics(String userId, String startTime, String endTime, Integer dateType) {
  464. List<EsmUserReferrer> esmUserReferrers = lambdaQuery().eq(EsmUserReferrer::getReferrerId, userId).orderByDesc(EsmUserReferrer :: getLevel).list();
  465. if (esmUserReferrers.isEmpty()) {
  466. return new ArrayList<>();
  467. }
  468. int i = esmUserReferrers.get(0).getLevel() + 3;
  469. List<SysUserTeamStaticDto> dtoList;
  470. if (dateType.equals(0)) {
  471. dtoList = baseMapper.authStatics(userId, i);
  472. } else if (dateType.equals(1)){
  473. dtoList = baseMapper.authNowStatics(userId, i,startTime,endTime);
  474. } else if(dateType.equals(2)){
  475. dtoList = baseMapper.authSevenStatics(userId, i,startTime,endTime);
  476. } else{
  477. dtoList = baseMapper.authThreeStatics(userId, i,startTime,endTime);
  478. }
  479. return dtoList;
  480. }
  481. }