SysUserServiceImpl.java 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545
  1. package com.ydtech.modules.admin.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  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.conditions.update.LambdaUpdateWrapper;
  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.constants.InsuranceImageEnum;
  11. import com.ydtech.constants.SysConstants;
  12. import com.ydtech.core.page.HttpResult;
  13. import com.ydtech.core.page.PageResult;
  14. import com.ydtech.exception.SystemException;
  15. import com.ydtech.modules.admin.constants.QuMarks;
  16. import com.ydtech.modules.admin.constants.RoleConstants;
  17. import com.ydtech.modules.admin.constants.UserWorkStatus;
  18. import com.ydtech.modules.admin.dao.SysUserMapper;
  19. import com.ydtech.modules.admin.model.*;
  20. import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
  21. import com.ydtech.modules.admin.model.dto.QuUserNumDto;
  22. import com.ydtech.modules.admin.model.dto.SysUserDto;
  23. import com.ydtech.modules.admin.model.po.SysUserIsDial;
  24. import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
  25. import com.ydtech.modules.admin.model.vo.*;
  26. import com.ydtech.modules.admin.service.*;
  27. import com.ydtech.modules.base.controller.BaseController;
  28. import com.ydtech.modules.base.model.dto.PageDto;
  29. import com.ydtech.modules.base.model.vo.PageVo;
  30. import com.ydtech.modules.esm.model.EsmUserImage;
  31. import com.ydtech.modules.esm.model.EsmUserReferrer;
  32. import com.ydtech.modules.esm.model.vo.EsmUserImageVo;
  33. import com.ydtech.modules.esm.service.EsmUserImageService;
  34. import com.ydtech.modules.esm.service.EsmUserReferrerService;
  35. import com.ydtech.security.utils.PasswordUtils;
  36. import com.ydtech.utils.StringUtils;
  37. import com.ydtech.utils.idgen.IdGenerate;
  38. import org.springframework.beans.factory.annotation.Autowired;
  39. import org.springframework.stereotype.Service;
  40. import org.springframework.transaction.annotation.Transactional;
  41. import java.math.BigDecimal;
  42. import java.util.*;
  43. import java.util.stream.Collectors;
  44. @Service
  45. public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
  46. @Autowired
  47. private SysMenuService sysMenuService;
  48. @Autowired
  49. private SysRoleMenuService sysRoleMenuService;
  50. @Autowired
  51. private SysDeptService sysDeptService;
  52. @Autowired
  53. private SysUserMapper sysUserMapper;
  54. @Autowired
  55. private SysUserRoleService sysUserRoleService;
  56. @Autowired
  57. private EsmUserReferrerService esmUserReferrerService;
  58. @Autowired
  59. private SysUserInfoService sysUserInfoService;
  60. @Autowired
  61. private EsmUserImageService esmUserImageService;
  62. @Autowired
  63. private SysAreaService sysAreaService;
  64. @Autowired
  65. private SysUserTreeShowLevelService sysUserTreeShowLevelService;
  66. @Autowired
  67. private SysUserIsDialService sysUserIsDialService;
  68. @Autowired
  69. private SysUserTrackService sysUserTrackService;
  70. @Override
  71. public IPage<SysUserBaseVO> findUserList(PageDto<SysUserDto> pageDto) {
  72. PageVo<SysUserBaseVO> pageVo = new PageVo();
  73. Page page = new Page(pageDto.getPageNum(), pageDto.getPageSize());
  74. pageVo.setPageNum(pageDto.getPageNum());
  75. pageVo.setPageSize(pageDto.getPageSize());
  76. SysUserDto sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(pageDto.getDto()), SysUserDto.class);
  77. if (sysUserVO.getAgentFlag() == null) {
  78. throw new SystemException("必传标识未传递");
  79. }
  80. IPage<SysUserBaseVO> userList = sysUserMapper.findUserList(page, sysUserVO);
  81. return userList;
  82. }
  83. @Override
  84. public IPage<SysUserBaseVO> findAllUserList(PageDto<SysUserDto> pageDto) {
  85. PageVo<SysUserBaseVO> pageVo = new PageVo();
  86. Page page = new Page(pageDto.getPageNum(), pageDto.getPageSize());
  87. pageVo.setPageNum(pageDto.getPageNum());
  88. pageVo.setPageSize(pageDto.getPageSize());
  89. SysUserDto sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(pageDto.getDto()), SysUserDto.class);
  90. IPage<SysUserBaseVO> userList = sysUserMapper.findAllUserList(page, sysUserVO);
  91. return userList;
  92. }
  93. @Override
  94. public IPage<SysUserBaseVO> findBackUserList(SysUserDto sysUserDto) {
  95. PageVo<SysUserBaseVO> pageVo = new PageVo();
  96. Page page = new Page(sysUserDto.getPageNum(), sysUserDto.getPageSize());
  97. pageVo.setPageNum(sysUserDto.getPageNum());
  98. pageVo.setPageSize(sysUserDto.getPageSize());
  99. if (sysUserDto.getAgentFlag() == null) {
  100. throw new SystemException("必传标识未传递");
  101. }
  102. return sysUserMapper.findBackUserList(page, sysUserDto);
  103. }
  104. @Override
  105. public List<SysUserBaseVO> findBackUserList1(SysUserDto sysUserDto) {
  106. if (sysUserDto.getAgentFlag() == null) {
  107. throw new SystemException("必传标识未传递");
  108. }
  109. return sysUserMapper.findBackUserList1(sysUserDto);
  110. }
  111. @Override
  112. public IPage<QuTeamNum> quTeamNum(QuTeamNumDto quTeamNumDto) {
  113. if (StringUtils.isNotEmpty(quTeamNumDto.getCreateTimeStart()) && StringUtils.isNotEmpty(quTeamNumDto.getCreateTimeEnd())) {
  114. quTeamNumDto.setCreateTimeStart(quTeamNumDto.getCreateTimeStart() + " 00:00:00");
  115. quTeamNumDto.setCreateTimeEnd(quTeamNumDto.getCreateTimeEnd() + " 23:59:59");
  116. }
  117. //判断必传标识是否为空
  118. if (quTeamNumDto.getTeamOrUserFlag() == null) {
  119. throw new SystemException("必传参数未传");
  120. }
  121. //判断是要查询用户还是团队
  122. if ("1".equals(quTeamNumDto.getTeamOrUserFlag())) {
  123. List<QuTeamNum> dept = sysUserMapper.getDept(quTeamNumDto);
  124. return getQuTeamNumIPage(quTeamNumDto, dept);
  125. } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
  126. List<QuTeamNum> dept = sysUserMapper.getUser(quTeamNumDto);
  127. return getQuTeamNumIPage(quTeamNumDto, dept);
  128. }
  129. throw new SystemException("参数错误");
  130. }
  131. @Override
  132. public IPage<QuTeamNum> getQuTeamByCompany(QuTeamNumDto quTeamNumDto) {
  133. List<QuTeamNum> deptByCompany = sysUserMapper.getDeptByCompany(quTeamNumDto);
  134. IPage<QuTeamNum> page = new Page<>(quTeamNumDto.getPageNo(), quTeamNumDto.getPageSize());
  135. page.setRecords(deptByCompany);
  136. page.setTotal(deptByCompany.size());
  137. return page;
  138. }
  139. private IPage<QuTeamNum> getQuTeamNumIPage(QuTeamNumDto quTeamNumDto, List<QuTeamNum> dept) {
  140. Map<String, List<QuTeamNum>> collect = new HashMap<>();
  141. int flag;
  142. if (quTeamNumDto.getTeamOrUserFlag().equals("1")) {
  143. collect = dept.stream()
  144. .collect(Collectors.groupingBy(QuTeamNum::getDeptId));
  145. flag = 1;
  146. } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
  147. collect = dept.stream()
  148. .collect(Collectors.groupingBy(QuTeamNum::getUserId));
  149. flag = 2;
  150. } else {
  151. flag = 0;
  152. }
  153. List<QuTeamNum> quTeamNums = new ArrayList<>();
  154. collect.forEach((k, v) -> {
  155. QuTeamNum teamNum = new QuTeamNum();
  156. teamNum.setHasInsuredNum("0");
  157. teamNum.setSubmitNum("0");
  158. teamNum.setSyPremiumSum("0");
  159. teamNum.setJqPremiumSum("0");
  160. teamNum.setTaxaMountSum("0");
  161. teamNum.setTotalSumpremium("0");
  162. teamNum.setQuoteNum("0");
  163. if (!v.isEmpty()) {
  164. v.forEach(quTeamNum -> {
  165. if (quTeamNum.getOrderStatus() != null) {
  166. if (quTeamNum.getOrderStatus().equals("3")) {
  167. if (quTeamNum.getJqPremiumSum() == null) {
  168. quTeamNum.setJqPremiumSum("0");
  169. }
  170. if (quTeamNum.getSyPremiumSum() == null) {
  171. quTeamNum.setSyPremiumSum("0");
  172. }
  173. //添加总额
  174. teamNum.setTotalSumpremium(String.valueOf(new BigDecimal(teamNum.getTotalSumpremium())
  175. .add(new BigDecimal(quTeamNum.getSyPremiumSum())).add(new BigDecimal(quTeamNum.getJqPremiumSum()))));
  176. teamNum.setSyPremiumSum(String.valueOf(new BigDecimal(teamNum.getSyPremiumSum()).add(new BigDecimal(quTeamNum.getSyPremiumSum()))));
  177. teamNum.setJqPremiumSum(String.valueOf(new BigDecimal(teamNum.getJqPremiumSum()).add(new BigDecimal(quTeamNum.getJqPremiumSum()))));
  178. teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
  179. teamNum.setHasInsuredNum(String.valueOf(new BigDecimal(teamNum.getHasInsuredNum()).add(new BigDecimal(quTeamNum.getCount()))));
  180. teamNum.setTaxaMountSum(String.valueOf(new BigDecimal(quTeamNum.getTaxaMountSum())));
  181. }
  182. if (quTeamNum.getOrderStatus().equals("2")) {
  183. teamNum.setSubmitNum(String.valueOf(new BigDecimal(teamNum.getSubmitNum()).add(new BigDecimal(quTeamNum.getCount()))));
  184. teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
  185. }
  186. if (quTeamNum.getOrderStatus().equals("1")) {
  187. teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
  188. teamNum.setSubmitNum(String.valueOf(new BigDecimal(teamNum.getSubmitNum()).add(new BigDecimal(quTeamNum.getCount()))));
  189. }
  190. }
  191. });
  192. }
  193. if (flag == 1) {
  194. teamNum.setDeptId(v.get(0).getDeptId());
  195. teamNum.setDeptName(v.get(0).getDeptName());
  196. } else if (flag == 2) {
  197. teamNum.setUserId(v.get(0).getUserId());
  198. teamNum.setUserName(v.get(0).getUserName());
  199. }
  200. quTeamNums.add(teamNum);
  201. });
  202. List<QuTeamNum> collect1 =
  203. quTeamNums.stream().skip((quTeamNumDto.getPageNo() - 1) * quTeamNumDto.getPageSize()).limit(quTeamNumDto.getPageSize()).
  204. collect(Collectors.toList());
  205. IPage<QuTeamNum> page = new Page<>(quTeamNumDto.getPageNo(), quTeamNumDto.getPageSize());
  206. page.setRecords(collect1);
  207. page.setTotal(quTeamNums.size());
  208. return page;
  209. }
  210. @Override
  211. public SysUser findByUsername(String username) {
  212. SysUser sysUser = null;
  213. if (StringUtils.isNotEmpty(username)) {
  214. sysUser = getById(username);
  215. }
  216. return sysUser;
  217. }
  218. @Override
  219. public SysUser findByPhone(String phone) {
  220. SysUser sysUser = null;
  221. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  222. lqw.eq(StringUtils.isNotEmpty(phone), SysUser::getMobile, phone);
  223. List<SysUser> lst = list(lqw);
  224. if (lst.size() > 0) {
  225. sysUser = lst.get(0);
  226. }
  227. return sysUser;
  228. }
  229. @Override
  230. public Set<String> findPermissions(SysUser sysUser) {
  231. Set<String> perms = new HashSet<>();
  232. String sql = "";
  233. List<String> lsPerms = null;
  234. if (sysUser.getId().equalsIgnoreCase("admin")) {
  235. LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
  236. lqw.isNotNull(SysMenu::getPerms);
  237. lqw.select(SysMenu::getPerms);
  238. lsPerms = sysMenuService.listObjs(lqw, id -> id.toString());
  239. } else {
  240. List<SysMenu> sysMenuList = sysRoleMenuService.gainMenuIds(sysUser.getId());
  241. lsPerms =
  242. sysMenuList.stream().filter(a -> StringUtils.isNotEmpty(a.getPerms())).map(SysMenu::getPerms).collect(Collectors.toList());
  243. }
  244. if (lsPerms != null && lsPerms.size() > 0) {
  245. for (String perm : lsPerms) {
  246. if (!StringUtils.isNullOrEmpty(perm)) {
  247. perms.add(perm);
  248. }
  249. }
  250. }
  251. return perms;
  252. }
  253. // @Override
  254. // public Set<String> findPermissions(SysUser sysUser) {
  255. // Set<String> perms = new HashSet<>();
  256. // String sql = "";
  257. // JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  258. // List<String> lsPerms = null;
  259. //
  260. // if (sysUser.getId().equalsIgnoreCase("admin")) {
  261. // sql = "SELECT perms FROM sys_menu WHERE perms IS NOT NULL AND perms <> ''";
  262. //
  263. // lsPerms = jdbcTemplate.queryForList(sql, String.class);
  264. // } else {
  265. // sql = "SELECT perms FROM sys_menu sm WHERE sm.id IN ( " +
  266. // "SELECT menu_id FROM sys_role_menu srm, sys_user_role sur ,sys_user su " +
  267. // "WHERE srm.role_id=sur.role_id " +
  268. // "AND sur.user_id=su.id AND su.id=?) " +
  269. // "AND perms IS NOT NULL AND perms <> ''"
  270. // ;
  271. //
  272. // lsPerms = jdbcTemplate.queryForList(sql, String.class, sysUser.getId());
  273. // }
  274. //
  275. // if (lsPerms != null && lsPerms.size() > 0) {
  276. // for (String perm : lsPerms) {
  277. // if (!StringUtils.isNullOrEmpty(perm)) {
  278. // perms.add(perm);
  279. // }
  280. // }
  281. // }
  282. //
  283. // return perms;
  284. // }
  285. @Override
  286. public List<SysUserRole> findUserRoles(Long userId) {
  287. return null;
  288. }
  289. @Override
  290. public PageResult selectPagingCustom(int pageNumber, int pageSize, String name, String deptCode) {
  291. return null;
  292. }
  293. /**
  294. * 获取用户列表
  295. *
  296. * @param page 分页信息
  297. * @param sysUser 查询条件
  298. * @param containsSubDept 是否汉堡下级机构
  299. * @return
  300. */
  301. @Override
  302. public IPage<SysUser> selectUserPage(Page page, SysUser sysUser, String containsSubDept) {
  303. IPage<SysUser> sysUserIPage = baseMapper.selectUserPage(page, sysUser, containsSubDept);
  304. List<SysUser> records = sysUserIPage.getRecords();
  305. if (records != null && records.size() > 0) {
  306. List<String> ids = records.stream().map(SysUser::getId).collect(Collectors.toList());
  307. LambdaQueryWrapper<SysUserTreeShowLevel> wrapper = new LambdaQueryWrapper<>();
  308. wrapper.in(SysUserTreeShowLevel::getUserId, ids);
  309. List<SysUserTreeShowLevel> list = sysUserTreeShowLevelService.list(wrapper);
  310. for (SysUser record : records) {
  311. for (SysUserTreeShowLevel showLevel : list) {
  312. if (record.getId().equals(showLevel.getUserId())) {
  313. record.setShowLevel(showLevel.getShowLevel());
  314. }
  315. }
  316. }
  317. LambdaQueryWrapper<SysUserIsDial> isWrapper = new LambdaQueryWrapper<>();
  318. isWrapper.in(SysUserIsDial::getUserId, ids);
  319. List<SysUserIsDial> isDialList = sysUserIsDialService.list(isWrapper);
  320. for (SysUser record : records) {
  321. for (SysUserIsDial isDial : isDialList) {
  322. if (record.getId().equals(isDial.getUserId())) {
  323. record.setIsDial(isDial.getIsDial());
  324. record.setDialUserName(isDial.getDialUserName());
  325. record.setDialPassWord(isDial.getDialPassWord());
  326. }
  327. }
  328. }
  329. }
  330. return sysUserIPage;
  331. }
  332. @Override
  333. public void findSysUseresmUserInternalVORoles(PageResult pageResult) {
  334. }
  335. @Override
  336. public Integer deleteFlag(List<SysUser> lsSysUser) {
  337. List<String> ids = lsSysUser.stream().map(SysUser::getId).collect(Collectors.toList());
  338. LambdaUpdateWrapper<SysUser> lqw = new LambdaUpdateWrapper<>();
  339. lqw.set(SysUser::getStatus, "0");
  340. lqw.in(SysUser::getId, ids);
  341. return update(lqw) == true ? ids.size() : 0;
  342. }
  343. @Override
  344. public SysUser findById(String id) {
  345. if (!StringUtils.isNullOrEmpty(id)) {
  346. return getById(id);
  347. }
  348. return null;
  349. }
  350. @Override
  351. public SysUser findByUserId(String userId) {
  352. SysUser sysUser = null;
  353. if (!StringUtils.isNullOrEmpty(userId)) {
  354. sysUser = getById(userId);
  355. }
  356. return sysUser;
  357. }
  358. @Override
  359. public SysUserVO gainUserInternal(String userId) {
  360. return super.baseMapper.gainInternalUser(userId);
  361. }
  362. @Override
  363. public SysUserVO gainUserInternalByDeptId(String deptId) {
  364. return super.baseMapper.gainInternalUserByDeptId(deptId);
  365. }
  366. @Override
  367. public List<SysUserVO> findByReferrerId(String deptId) {
  368. return super.baseMapper.findByReferrerId(deptId);
  369. }
  370. @Override
  371. public List<SysUserVO> findListByDeptId(SysUser sysUser) {
  372. return super.baseMapper.findListByDeptId(sysUser);
  373. }
  374. @Override
  375. public PageVo gainUserPage(PageDto pageDto) {
  376. PageVo<SysUserBaseVO> pageVo = new PageVo();
  377. Page page = new Page(pageDto.getPageNum(), pageDto.getPageSize());
  378. pageVo.setPageNum(pageDto.getPageNum());
  379. pageVo.setPageSize(pageDto.getPageSize());
  380. SysUserDto sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(pageDto.getDto()), SysUserDto.class);
  381. Page<SysUserBaseVO> sysUserBaseVOIPage = super.baseMapper.gainUserBaseInfo(page, sysUserVO);
  382. pageVo.setContent(sysUserBaseVOIPage.getRecords());
  383. pageVo.setTotalPages((int) sysUserBaseVOIPage.getPages());
  384. pageVo.setTotalSize((int) sysUserBaseVOIPage.getTotal());
  385. return pageVo;
  386. }
  387. @Override
  388. public String gainNextUserId(String deptId) {
  389. int noCount = 3;//顺序号是几位的
  390. String nextPK;
  391. QueryWrapper<SysUser> lq = new QueryWrapper<>();
  392. lq.select(" MAX(id) as id ");
  393. lq.eq("dept_id", deptId);
  394. // lq.likeRight("id", deptId);
  395. SysUser userMaxId = getOne(lq);
  396. String maxId = "";
  397. if (null != userMaxId) maxId = userMaxId.getId();
  398. if (StringUtils.isNullOrEmpty(maxId)) {
  399. nextPK = deptId + "001";
  400. } else {
  401. nextPK = IdGenerate.nextCode(maxId, noCount);
  402. }
  403. return nextPK;
  404. }
  405. @Override
  406. public SysUserInternalVO gainUserSynthesisInfo(String userId) {
  407. SysUserInternalVO vo = new SysUserInternalVO();
  408. SysUser sysUser = getById(userId);
  409. // EsmUserInternal sysUserInternal = esmUserInternalService.selectByPk(userId);
  410. String pDeptId = sysUser.getDeptId();
  411. if (pDeptId.indexOf("D") > 1) {
  412. pDeptId = sysUser.getDeptId().substring(0, pDeptId.indexOf("D"));
  413. }
  414. SysDept sysDept = sysDeptService.getById(pDeptId);
  415. vo.setSysUser(sysUser);
  416. vo.setSysDept(sysDept);
  417. // vo.setSysUserInternal(sysUserInternal);
  418. return vo;
  419. }
  420. @Override
  421. public String findMaxId(String deptId) {
  422. QueryWrapper<SysUser> qw = new QueryWrapper<>();
  423. qw.select("IFNULL(MAX(id),0) maxId");
  424. qw.eq("dept_id", deptId);
  425. Map<String, Object> m = getMap(qw);
  426. String maxId = m.get("maxId").toString();
  427. return maxId;
  428. }
  429. @Override
  430. public boolean check(String userId, Integer approvalStatus, String approvalOpinion) {
  431. SysUser user = getById(userId);
  432. // user.setApprovalStatus(approvalStatus);
  433. user.setApprovalOpinion(approvalOpinion);
  434. return updateById(user);
  435. }
  436. @Override
  437. public SysUserBaseVO selectUserById(String userId) {
  438. return sysUserMapper.selectUserById(userId);
  439. }
  440. @Override
  441. @Transactional
  442. public boolean saveUser(SysUser sysUser) {
  443. // 判断用户id是否存在
  444. if (StringUtils.isNullOrEmpty(sysUser.getId())) {
  445. sysUser.setId(gainNextUserId(sysUser.getDeptId()));
  446. sysUser.setMobile(sysUser.getMobile());
  447. }
  448. // 角色信息
  449. SysUserRole sur = new SysUserRole();
  450. sur.setUserId(sysUser.getId());
  451. sur.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
  452. // 删除角色
  453. sysUserRoleService.deleteByUserId(sysUser.getId());
  454. // 删除推荐人
  455. esmUserReferrerService.deldeleteByReferrerId(sysUser.getId());
  456. // 构建推荐人信息
  457. EsmUserReferrer eur = new EsmUserReferrer();
  458. eur.setId(sysUser.getId());
  459. eur.setReferrerId(sysUser.getReferrerId());//推荐人
  460. eur.setReferrerName(sysUser.getReferrerName());
  461. // 新增或跟新用户表
  462. save(sysUser);
  463. // 保存推荐人
  464. esmUserReferrerService.save(eur);
  465. // 保存角色
  466. sysUserRoleService.save(sur);
  467. return true;
  468. }
  469. @Override
  470. @Transactional
  471. public HttpResult saveUserInfo(SysUser2Vo sysUserVo) {
  472. SysUser sysUser = sysUserVo.getSysUser();
  473. // 手机号
  474. List<SysUser> mobileList = lambdaQuery().eq(SysUser::getMobile, sysUser.getMobile()).list();
  475. if (!mobileList.isEmpty()) {
  476. throw new SystemException("手机号已经注册请更换手机号。");
  477. }
  478. // 身份证号
  479. List<SysUser> identityList = lambdaQuery().eq(SysUser::getIdentity, sysUser.getIdentity()).list();
  480. if (!identityList.isEmpty()) {
  481. throw new SystemException("身份证号已经注册请更换身份证号。");
  482. }
  483. //处理密码
  484. if (StringUtils.isNotEmpty(sysUser.getPassword())) {
  485. String salt = PasswordUtils.getSalt();
  486. String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
  487. sysUser.setPassword(pwd);
  488. sysUser.setSalt(salt);
  489. } else {
  490. return HttpResult.error("密码不能为空");
  491. }
  492. if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
  493. return checkChuDanUser(sysUser);
  494. }
  495. String userId = gainNextUserId(sysUser.getDeptId());
  496. if (RoleConstants.R22.getCode().equals(sysUser.getRoleId())) {//22 后线人员
  497. if (!SysConstants.isAdministration(userId)) {
  498. throw new SystemException("后线人员只能公司部门中");
  499. }
  500. }
  501. sysUser.setId(userId);
  502. save(sysUser);
  503. //角色配置
  504. SysUserRole userRole = new SysUserRole();
  505. userRole.setUserId(sysUser.getId());
  506. userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
  507. sysUserRoleService.save(userRole);
  508. if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
  509. //推荐人
  510. esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
  511. } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
  512. //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
  513. esmUserReferrerService.addReferrer(sysUser.getId(), userId);
  514. }
  515. // EsmUserReferrer eur = new EsmUserReferrer();
  516. // eur.setId(sysUser.getId());
  517. // eur.setReferrerName(sysUser.getReferrerName());
  518. // eur.setReferrerId(sysUser.getReferrerId());
  519. // eur.setLevel(1);
  520. //
  521. // esmUserReferrerService.save(eur);
  522. SysUserInfo userInfo = sysUserVo.getSysUserInfo();
  523. if (userInfo != null) {
  524. userInfo.setId(sysUser.getId());
  525. }
  526. // userInfo.setId(sysUser.getId());
  527. sysUserInfoService.save(userInfo);
  528. List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
  529. List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, userId)).collect(Collectors.toList());
  530. esmUserImageService.saveBatch(esmUserImages);
  531. //添加轨迹
  532. SysUserTrack sysUserTrack = new SysUserTrack();
  533. sysUserTrack.setUserId(sysUser.getId());
  534. sysUserTrack.setApproveBy(StpUtil.getLoginId().toString());
  535. sysUserTrack.setStatus(sysUser.getStatus());
  536. sysUserTrack.setApproveTime(new Date());
  537. sysUserTrackService.save(sysUserTrack);
  538. return HttpResult.ok("新增成功");
  539. }
  540. /**
  541. * 新增修改出单员
  542. *
  543. * @param sysUser
  544. * @return
  545. */
  546. HttpResult checkChuDanUser(SysUser sysUser) {
  547. if (StringUtils.isEmpty(sysUser.getReferrerId())) {
  548. return HttpResult.error("业务员工号不能为空");
  549. }
  550. //归属业务员和出单员部门必须一致
  551. SysUser user = getById(sysUser.getReferrerId());
  552. if (user == null || !user.getDeptId().equals(sysUser.getDeptId())) {
  553. return HttpResult.error("出单员机构必须和归属业务员机构一致");
  554. }
  555. sysUser.setOperatorCode(sysUser.getReferrerId());
  556. if (StringUtils.isEmpty(sysUser.getId())) {
  557. String userId = gainNextUserId(sysUser.getDeptId());
  558. sysUser.setId(userId);
  559. save(sysUser);
  560. //角色配置
  561. SysUserRole userRole = new SysUserRole();
  562. userRole.setUserId(sysUser.getId());
  563. userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
  564. sysUserRoleService.save(userRole);
  565. } else {
  566. updateById(sysUser);
  567. }
  568. return HttpResult.ok("操作成功");
  569. }
  570. @Override
  571. @Transactional
  572. public HttpResult updateUserInfo(String userId, SysUser2Vo sysUserVo) {
  573. SysUser sysUser = sysUserVo.getSysUser();
  574. int beStatus = sysUser.getStatus();
  575. //如果审核驳回则 重新修改为 审核状态
  576. if(sysUserVo.getSysUser().getStatus() == UserWorkStatus.UWS_3.getCode()){
  577. sysUserVo.getSysUser().setStatus(UserWorkStatus.UWS_2.getCode());
  578. }
  579. if(sysUserVo.getSysUser().getStatus() == UserWorkStatus.UWS_5.getCode()){
  580. sysUserVo.getSysUser().setStatus(UserWorkStatus.UWS_4.getCode());
  581. }
  582. //修改用户不能修改密码
  583. if (StringUtils.isEmpty(sysUser.getPassword())) {
  584. return HttpResult.error("密码不能为空");
  585. }
  586. //删除状态必须有离司时间
  587. if (StringUtils.isNotEmpty(sysUser.getStatus().toString())) {
  588. if (sysUser.getStatus() == 0 && sysUser.getLogoutTime() == null && !sysUser.getRoleId().equals("19")) {
  589. return HttpResult.error("删除状态,离职时间必填");
  590. }
  591. } else {
  592. return HttpResult.error("状态不能为空");
  593. }
  594. SysUser sysUser_org = findByUserId(sysUser.getId());
  595. // 修改密码数据库相同不做修改
  596. if (!sysUser_org.getPassword().equals(sysUser.getPassword())) {
  597. String salt = PasswordUtils.getSalt();
  598. String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
  599. sysUser.setPassword(pwd);
  600. sysUser.setSalt(salt);
  601. }else {
  602. sysUser.setPassword(sysUser_org.getPassword());
  603. sysUser.setSalt(sysUser_org.getSalt());
  604. }
  605. if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
  606. return checkChuDanUser(sysUser);
  607. }
  608. updateById(sysUser);
  609. //角色配置
  610. SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
  611. sysUserRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
  612. sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
  613. sysUserRole.setLastUpdateTime(new Date());
  614. sysUserRoleService.updateById(sysUserRole);
  615. if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
  616. //推荐人
  617. esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
  618. }
  619. //用户详情信息
  620. SysUserInfo sysUserInfo = sysUserVo.getSysUserInfo();
  621. sysUserInfo.setId(userId);
  622. if (null == sysUserInfo.getRemark()) {
  623. sysUserInfo.setRemark("");
  624. }
  625. sysUserInfoService.saveOrUpdate(sysUserInfo);
  626. // 影像资料
  627. LambdaQueryWrapper<EsmUserImage> wrapper = new LambdaQueryWrapper<>();
  628. wrapper.eq(EsmUserImage::getUserId, userId);
  629. esmUserImageService.remove(wrapper);
  630. List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
  631. List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, userId)).collect(Collectors.toList());
  632. esmUserImageService.saveBatch(esmUserImages);
  633. if (UserWorkStatus.UWS_5.getCode() == beStatus ||
  634. UserWorkStatus.UWS_3.getCode() == beStatus) {
  635. //添加轨迹
  636. SysUserTrack sysUserTrack = new SysUserTrack();
  637. sysUserTrack.setUserId(sysUser.getId());
  638. sysUserTrack.setApproveBy(StpUtil.getLoginId().toString());
  639. sysUserTrack.setStatus(sysUserVo.getSysUser().getStatus());
  640. sysUserTrack.setApproveTime(new Date());
  641. sysUserTrackService.save(sysUserTrack);
  642. }
  643. return HttpResult.ok("修改成功");
  644. }
  645. @Override
  646. public List<SysUser> findAllAgentRoleUser(String userId, String roleId) {
  647. return super.baseMapper.findAllAgentRoleUser(userId, roleId);
  648. }
  649. @Override
  650. public int getDeptLevel(SysUser2Vo sysUser2Vo) {
  651. //获取机构层级
  652. SysUser sysUser = sysUser2Vo.getSysUser();
  653. String deptId = sysUser.getDeptId();
  654. int level = 0;
  655. //1 2 3 4 5级 M 6级 D
  656. if (deptId.length() > 8) {
  657. String substring = deptId.substring(8);
  658. return substring.length() / 3 + 4;
  659. } else {
  660. level = deptId.length() / 2;
  661. }
  662. return level;
  663. }
  664. /**
  665. * 根据机构代码,查询所有人员
  666. *
  667. * @param deptId
  668. * @return
  669. */
  670. @Override
  671. public List<SysUser> findUserList(String deptId) {
  672. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  673. lqw.eq(SysUser::getStatus, "1");
  674. lqw.eq(SysUser::getDeptId, deptId);
  675. return list(lqw);
  676. }
  677. /**
  678. * 查找组织结构树,返回所有层级的用户列表,其中每个用户包含其直接下级用户。
  679. * 该方法首先根据当前用户获取其在组织结构展示中的级别,然后根据这个级别查询或构建相应的组织结构树。
  680. *
  681. * @return 返回组织结构树形式的用户列表,每个用户对象可能包含一个子用户列表。
  682. */
  683. @Override
  684. public List<SysUser> findTree() {
  685. // 获取当前登录用户
  686. SysUser user = BaseController.getUser();
  687. String userId = user.getId();
  688. // 根据当前用户ID查询其在组织结构展示中的级别
  689. LambdaQueryWrapper<SysUserTreeShowLevel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  690. lambdaQueryWrapper.eq(SysUserTreeShowLevel::getUserId, userId);
  691. SysUserTreeShowLevel treeShowLevel = sysUserTreeShowLevelService.getOne(lambdaQueryWrapper);
  692. //如果当前用户未配置树展示等级,则默认为查询本级及以下
  693. if (Objects.isNull(treeShowLevel)) {
  694. treeShowLevel = new SysUserTreeShowLevel();
  695. treeShowLevel.setShowLevel("subordinate");
  696. }
  697. //获取领导字段不为空的人的ID
  698. List<SysUser> users = lambdaQuery().isNotNull(SysUser::getLeaderId).list();
  699. if (users == null || users.size() == 0) {
  700. return new ArrayList<>();
  701. }
  702. List<SysUser> topUsers = new ArrayList<>(); //存放1级用户,即没有直接上级的用户
  703. // 获取可能作为顶层节点的用户ID列表
  704. List<String> topUserId = users.stream().map(SysUser::getLeaderId).collect(Collectors.toList());
  705. List<SysUser> list2 = lambdaQuery().in(SysUser::getId, topUserId).list();
  706. List<String> strings = list2.stream().map(SysUser::getId).collect(Collectors.toList());
  707. // 根据组织结构展示级别,筛选顶层节点并构建组织结构树
  708. switch (treeShowLevel.getShowLevel()) {
  709. case "all": // 展示所有级别的用户
  710. // 从查询结果中筛选出没有上级的人员,作为组织结构树的顶层节点
  711. for (SysUser sysUser : list2) {
  712. if (Objects.isNull(sysUser.getLeaderId())) {
  713. topUsers.add(sysUser);
  714. }
  715. }
  716. // 递归构建用户树结构
  717. buildUserTree(topUsers, users);
  718. break;
  719. case "same": // 只展示当前用户
  720. // for (String ids : strings) {
  721. // if (ids.equals(userId)) {
  722. topUsers.add(user);
  723. // }
  724. // }
  725. break;
  726. case "subordinate": // 只展示当前用户及下属
  727. // for (String ids : strings) {
  728. // if (ids.equals(userId)) {
  729. topUsers.add(user);
  730. // }
  731. // }
  732. // 递归构建用户树结构
  733. buildUserTree(topUsers, users);
  734. break;
  735. }
  736. return topUsers;
  737. }
  738. /**
  739. * 根据部门ID查询后台用户列表。
  740. *
  741. * @param deptId 部门ID,用于筛选指定部门的用户。
  742. * @return 返回一个SysUser类型的列表,包含指定部门的所有后台用户。
  743. */
  744. @Override
  745. public List<SysUser> findBackListByDeptId(String deptId) {
  746. return baseMapper.findBackListByDeptId(deptId);
  747. }
  748. /**
  749. * 查询用户订单数量进行区域统计信息
  750. *
  751. * @param quUserNumDto 包含查询条件和分页信息的数据传输对象
  752. * @return IPage<QuUserNum> 返回用户数量统计信息的分页对象
  753. */
  754. @Override
  755. public IPage<QuUserNum> quUserNum(QuUserNumDto quUserNumDto) {
  756. if (StringUtils.isNotEmpty(quUserNumDto.getCreateTimeStart()) && StringUtils.isNotEmpty(quUserNumDto.getCreateTimeEnd())) {
  757. quUserNumDto.setCreateTimeStart(quUserNumDto.getCreateTimeStart() + " 00:00:00");
  758. quUserNumDto.setCreateTimeEnd(quUserNumDto.getCreateTimeEnd() + " 23:59:59");
  759. }
  760. //获取所有用户
  761. List<SysUser> users = list();
  762. // 根据用户ID查询一级下屬
  763. LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
  764. queryWrapper.eq(SysUser::getId, quUserNumDto.getUserId());
  765. List<SysUser> usersLevel1 = list(queryWrapper);
  766. //递归获取1级下属下所有的下属ID
  767. List<String> strIds = new ArrayList<>();
  768. findChildren(usersLevel1, users, strIds);
  769. // 根据区域编码和级别查询符合条件的区域
  770. LambdaQueryWrapper<SysArea> wrapper = new LambdaQueryWrapper<>();
  771. if (quUserNumDto.getAreaCode() != null && !"".equals(quUserNumDto.getAreaCode())) {
  772. String area = quUserNumDto.getAreaCode();
  773. switch (quUserNumDto.getLevel()) {
  774. case "1": { // 省级查询逻辑
  775. quUserNumDto.setGrouping(4);
  776. String prefix = area.substring(0, 2);
  777. strIds.removeIf(id -> !id.contains("99" + prefix));
  778. quUserNumDto.setLevel("2");
  779. wrapper.eq(SysArea::getLevel, "2");
  780. wrapper.likeRight(SysArea::getAreaCode, prefix);
  781. break;
  782. }
  783. case "2": { // 市级查询逻辑
  784. quUserNumDto.setGrouping(6);
  785. String prefix = area.substring(0, 4);
  786. strIds.removeIf(id -> !id.contains("99" + prefix));
  787. quUserNumDto.setLevel("3");
  788. wrapper.eq(SysArea::getLevel, "3");
  789. wrapper.likeRight(SysArea::getAreaCode, prefix);
  790. break;
  791. }
  792. case "3": { // 区县级查询逻辑
  793. quUserNumDto.setGrouping(6);
  794. String prefix = area.substring(0, 6);
  795. strIds.removeIf(id -> !id.contains("99" + prefix));
  796. quUserNumDto.setLevel("3");
  797. wrapper.eq(SysArea::getLevel, "3");
  798. wrapper.likeRight(SysArea::getAreaCode, prefix);
  799. break;
  800. }
  801. }
  802. } else { // 默认查询省级区域
  803. quUserNumDto.setGrouping(2);
  804. quUserNumDto.setLevel("1");
  805. wrapper.eq(SysArea::getLevel, "1");
  806. }
  807. //遍历匹配区域名称
  808. List<SysArea> areaList = sysAreaService.list(wrapper);
  809. List<QuUserNum> quUserNums = new ArrayList<>();
  810. // 如果没有查询到用户ID,则直接返回空的分页对象
  811. if (strIds.size() != 0) {
  812. // 根据查询条件获取用户数量统计信息
  813. quUserNumDto.setUserIds(strIds);
  814. List<QuUserNum> userNums = sysUserMapper.getUserNum(quUserNumDto);
  815. // 获取地区主订单待核保订单数量
  816. List<QuUserNum> mainWaitAuditSums = sysUserMapper.getMainWaitAuditSum(quUserNumDto);
  817. // 获取地区主订单已核保待缴费订单数量
  818. List<QuUserNum> mainWaitPaySums = sysUserMapper.getMainWaitPaySum(quUserNumDto);
  819. // 获取地区主订单已承包订单数量
  820. List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getMainAcceptInsuranceSum(quUserNumDto);
  821. // 根据区域名称匹配用户数量统计信息,并构造最终返回的结果列表
  822. for (QuUserNum quUserNum : userNums) {
  823. for (SysArea sysArea : areaList) {
  824. if (!Objects.isNull(sysArea.getAreaCode())) {
  825. // 匹配区域名称
  826. String substring = sysArea.getAreaCode().substring(0, quUserNumDto.getGrouping());
  827. if (quUserNum.getAreaCode().equals(substring)) {
  828. quUserNum.setAreaName(sysArea.getAreaCname());
  829. }
  830. }
  831. }
  832. for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
  833. if (quUserNum.getAreaCode().equals(mainWaitAuditSum.getAreaCode())) {
  834. quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
  835. }
  836. }
  837. for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
  838. if (quUserNum.getAreaCode().equals(mainWaitPaySum.getAreaCode())) {
  839. quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
  840. }
  841. }
  842. for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
  843. if (quUserNum.getAreaCode().equals(mainAcceptInsuranceSum.getAreaCode())) {
  844. quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
  845. }
  846. }
  847. if (quUserNum.getAreaName() != null) {
  848. quUserNums.add(quUserNum);
  849. }
  850. // quUserNums.add(quUserNum);
  851. }
  852. }
  853. // 为每个区域生成未匹配到的统计信息
  854. for (SysArea sysArea : areaList) {
  855. if (exists(quUserNums, sysArea)) {
  856. QuUserNum userNum = new QuUserNum();
  857. // 设置未匹配到的区域的默认统计信
  858. userNum.setAreaName(sysArea.getAreaCname());
  859. quUserNums.add(userNum);
  860. }
  861. }
  862. List<QuUserNum> paginate = paginate(quUserNums, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
  863. // 构造返回的分页对象
  864. IPage<QuUserNum> recordsPage = new Page<>(quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
  865. recordsPage.setRecords(paginate);
  866. recordsPage.setTotal(quUserNums.size());
  867. return recordsPage;
  868. }
  869. /**
  870. * 查询用户订单数量进行区域统计详细信息
  871. *
  872. * @param quUserNumDto 包含查询条件和分页信息的数据传输对象
  873. * @return IPage<QuUserNum> 返回用户数量统计信息的分页对象
  874. */
  875. @Override
  876. public IPage<QuUserNum> getQuUserByCompany(QuUserNumDto quUserNumDto) {
  877. if (StringUtils.isNotEmpty(quUserNumDto.getCreateTimeStart()) && StringUtils.isNotEmpty(quUserNumDto.getCreateTimeEnd())) {
  878. quUserNumDto.setCreateTimeStart(quUserNumDto.getCreateTimeStart() + " 00:00:00");
  879. quUserNumDto.setCreateTimeEnd(quUserNumDto.getCreateTimeEnd() + " 23:59:59");
  880. }
  881. //查询单个用户的详情时不需要区域code
  882. if (!quUserNumDto.getQuMarks().equals(QuMarks.USER_COMPANY_MARK.getCode())) {
  883. // 获取系统中的所有用户
  884. List<SysUser> users = list();
  885. // 创建查询包装器,用于查询指定用户ID的用
  886. LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
  887. queryWrapper.eq(SysUser::getId, quUserNumDto.getUserId());
  888. // 查询指定用户ID的用户,即第一级下属
  889. List<SysUser> usersLevel1 = list(queryWrapper);
  890. // 用于存储所有下属的ID
  891. List<String> strIds = new ArrayList<>();
  892. // 递归获取第一级下属及其所有下属的ID
  893. findChildren(usersLevel1, users, strIds);
  894. // 如果未指定区域码,返回空分页对
  895. if (Objects.isNull(quUserNumDto.getAreaCode())) {
  896. return new Page<>();
  897. }
  898. // 根据区域码筛选有效的下属ID
  899. strIds.removeIf(id -> !id.contains("99" + quUserNumDto.getAreaCode()));
  900. // 如果筛选后没有有效的下属ID,返回空分页对象
  901. if (strIds.size() == 0) {
  902. return new Page<>();
  903. }
  904. // 设置查询条件中的用户ID列表
  905. quUserNumDto.setUserIds(strIds);
  906. } else {
  907. // 设置查询条件中的用户ID列表
  908. quUserNumDto.setUserIds(Collections.singletonList(quUserNumDto.getUserId()));
  909. }
  910. List<QuUserNum> deptByCompany = agentOrChannelByMark(quUserNumDto);
  911. List<QuUserNum> paginate = paginate(deptByCompany, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
  912. // 创建并设置分页信息
  913. IPage<QuUserNum> page = new Page<>(quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
  914. page.setRecords(paginate);
  915. page.setTotal(deptByCompany.size());
  916. return page;
  917. }
  918. /**
  919. * 手动对 QuUserNum 列表进行分页
  920. *
  921. * @param quUserNums 原始 QuUserNum 数据列表
  922. * @param pageNum 期望获取的页码(从 1 开始)
  923. * @param pageSize 每页包含的 QuUserNum 数量
  924. * @return 对应页码的 QuUserNum 子列表,若输入参数无效则返回空列表
  925. */
  926. public List<QuUserNum> paginate(List<QuUserNum> quUserNums, int pageNum, int pageSize) {
  927. if (quUserNums == null || quUserNums.isEmpty() || pageNum < 1 || pageSize < 1) {
  928. return Collections.emptyList();
  929. }
  930. int startIndex = (pageNum - 1) * pageSize;
  931. int endIndex = Math.min(startIndex + pageSize, quUserNums.size());
  932. return quUserNums.subList(startIndex, endIndex);
  933. }
  934. private void findChildren(List<SysUser> SysUsers, List<SysUser> users, List<String> strIds) {
  935. for (SysUser sysUser : SysUsers) {
  936. List<SysUser> children = new ArrayList<>();
  937. for (SysUser user : users) {
  938. if (sysUser.getId() != null && sysUser.getId().equals(user.getLeaderId())) {
  939. if (!exists(children, user)) {
  940. children.add(user);
  941. strIds.add(user.getId());
  942. }
  943. }
  944. }
  945. sysUser.setChildren(children);
  946. // children.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()));
  947. findChildren(children, users, strIds);
  948. }
  949. }
  950. private boolean exists(List<QuUserNum> quUserNums, SysArea sysArea) {
  951. boolean exist = true;
  952. for (QuUserNum quUserNum1 : quUserNums) {
  953. if (sysArea.getAreaCname().equals(quUserNum1.getAreaName())) {
  954. exist = false;
  955. break;
  956. }
  957. }
  958. return exist;
  959. }
  960. private boolean exists(List<SysUser> sysUsers, SysUser sysUser) {
  961. boolean exist = false;
  962. for (SysUser user : sysUsers) {
  963. if (user.getId().equals(sysUser.getId())) {
  964. exist = true;
  965. }
  966. }
  967. return exist;
  968. }
  969. private void buildUserTree(List<SysUser> topUsers, List<SysUser> users) {
  970. for (SysUser user : topUsers) {
  971. List<SysUser> children = new ArrayList<>();
  972. for (SysUser childUser : users) {
  973. if (user.getId().equals(childUser.getLeaderId()) && !childUser.getId().contains("M")) {
  974. children.add(childUser);
  975. // 递归查找下一级
  976. buildUserTree(children, users);
  977. }
  978. }
  979. user.setChildren(children);
  980. }
  981. }
  982. /**
  983. * @version
  984. * @author: hxl
  985. * @Date: 2024/4/16 15:51
  986. * @Description: 获取待客录入的可选业务员
  987. * 查询
  988. */
  989. @Override
  990. public List<SysUserBaseVO> getAllUsersByHospitality(SysUserVOExt sysUserVOExt) {
  991. if (StringUtils.isNotEmpty(sysUserVOExt.getUserId()) || StringUtils.isNotEmpty(sysUserVOExt.getIdentity()) ||
  992. StringUtils.isNotEmpty(sysUserVOExt.getMobile()) || StringUtils.isNotEmpty(sysUserVOExt.getName())) {
  993. return super.baseMapper.getAllUsersByHospitality(sysUserVOExt);
  994. }
  995. return new ArrayList<SysUserBaseVO>();
  996. }
  997. /**
  998. * @version
  999. * @author: hxl
  1000. * @Date: 2024/4/18 16:14
  1001. * @Description: 获取客服人员列表数据
  1002. */
  1003. @Override
  1004. public List<SysUserBaseVO> getCustomerUsers() {
  1005. return super.baseMapper.getCustomerUsers(new SysUserVOExt());
  1006. }
  1007. @Override
  1008. public IPage<QuUserNum> quAgentAreaAdmin(QuUserNumDto quUserNumDto) {
  1009. if (StringUtils.isNotEmpty(quUserNumDto.getCreateTimeStart()) && StringUtils.isNotEmpty(quUserNumDto.getCreateTimeEnd())) {
  1010. quUserNumDto.setCreateTimeStart(quUserNumDto.getCreateTimeStart() + " 00:00:00");
  1011. quUserNumDto.setCreateTimeEnd(quUserNumDto.getCreateTimeEnd() + " 23:59:59");
  1012. }
  1013. //获取所有代理人用户
  1014. List<SysUserBaseVO> agentUsers = baseMapper.getAgentUserIdsByAreaIds();
  1015. List<String> strIds = agentUsers.stream().map(SysUserBaseVO::getUserId).collect(Collectors.toList());
  1016. // 根据区域编码和级别查询符合条件的区域
  1017. LambdaQueryWrapper<SysArea> wrapper = new LambdaQueryWrapper<>();
  1018. if (strIds.size() != 0) {
  1019. if (quUserNumDto.getAreaCode() != null && !"".equals(quUserNumDto.getAreaCode())) {
  1020. String area = quUserNumDto.getAreaCode();
  1021. switch (quUserNumDto.getLevel()) {
  1022. case "1": { // 省级查询逻辑
  1023. quUserNumDto.setGrouping(4);
  1024. String prefix = area.substring(0, 2);
  1025. strIds.removeIf(id -> !id.contains("99" + prefix));
  1026. quUserNumDto.setLevel("2");
  1027. wrapper.eq(SysArea::getLevel, "2");
  1028. wrapper.likeRight(SysArea::getAreaCode, prefix);
  1029. break;
  1030. }
  1031. case "2": { // 市级查询逻辑
  1032. quUserNumDto.setGrouping(6);
  1033. String prefix = area.substring(0, 4);
  1034. strIds.removeIf(id -> !id.contains("99" + prefix));
  1035. quUserNumDto.setLevel("3");
  1036. wrapper.eq(SysArea::getLevel, "3");
  1037. wrapper.likeRight(SysArea::getAreaCode, prefix);
  1038. break;
  1039. }
  1040. case "3": { // 区县级查询逻辑
  1041. quUserNumDto.setGrouping(6);
  1042. String prefix = area.substring(0, 6);
  1043. strIds.removeIf(id -> !id.contains("99" + prefix));
  1044. quUserNumDto.setLevel("3");
  1045. wrapper.eq(SysArea::getLevel, "3");
  1046. wrapper.likeRight(SysArea::getAreaCode, prefix);
  1047. break;
  1048. }
  1049. }
  1050. } else { // 默认查询省级区域
  1051. quUserNumDto.setGrouping(2);
  1052. quUserNumDto.setLevel("1");
  1053. wrapper.eq(SysArea::getLevel, "1");
  1054. }
  1055. }
  1056. //遍历匹配区域名称
  1057. List<SysArea> areaList = sysAreaService.list(wrapper);
  1058. List<QuUserNum> quUserNums = new ArrayList<>();
  1059. // 如果没有查询到用户ID,则直接返回空的分页对象
  1060. if (strIds.size() != 0) {
  1061. // 根据查询条件获取用户数量统计信息
  1062. quUserNumDto.setUserIds(strIds);
  1063. List<QuUserNum> userNums = sysUserMapper.getUserNum(quUserNumDto);
  1064. // 获取地区主订单待核保订单数量
  1065. List<QuUserNum> mainWaitAuditSums = sysUserMapper.getMainWaitAuditSum(quUserNumDto);
  1066. // 获取地区主订单已核保待缴费订单数量
  1067. List<QuUserNum> mainWaitPaySums = sysUserMapper.getMainWaitPaySum(quUserNumDto);
  1068. // 获取地区主订单已承包订单数量
  1069. List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getMainAcceptInsuranceSum(quUserNumDto);
  1070. // 根据区域名称匹配用户数量统计信息,并构造最终返回的结果列表
  1071. for (QuUserNum quUserNum : userNums) {
  1072. for (SysArea sysArea : areaList) {
  1073. if (!Objects.isNull(sysArea.getAreaCode())) {
  1074. // 匹配区域名称
  1075. String substring = sysArea.getAreaCode().substring(0, quUserNumDto.getGrouping());
  1076. if (quUserNum.getAreaCode().equals(substring)) {
  1077. quUserNum.setAreaName(sysArea.getAreaCname());
  1078. }
  1079. }
  1080. }
  1081. for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
  1082. if (quUserNum.getAreaCode().equals(mainWaitAuditSum.getAreaCode())) {
  1083. quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
  1084. }
  1085. }
  1086. for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
  1087. if (quUserNum.getAreaCode().equals(mainWaitPaySum.getAreaCode())) {
  1088. quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
  1089. }
  1090. }
  1091. for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
  1092. if (quUserNum.getAreaCode().equals(mainAcceptInsuranceSum.getAreaCode())) {
  1093. quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
  1094. }
  1095. }
  1096. quUserNums.add(quUserNum);
  1097. }
  1098. }
  1099. // 为每个区域生成未匹配到的统计信息
  1100. for (SysArea sysArea : areaList) {
  1101. if (exists(quUserNums, sysArea)) {
  1102. QuUserNum userNum = new QuUserNum();
  1103. // 设置未匹配到的区域的默认统计信
  1104. userNum.setAreaName(sysArea.getAreaCname());
  1105. quUserNums.add(userNum);
  1106. }
  1107. }
  1108. List<QuUserNum> paginate = paginate(quUserNums, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
  1109. // 构造返回的分页对象
  1110. IPage<QuUserNum> recordsPage = new Page<>(quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
  1111. recordsPage.setRecords(paginate);
  1112. recordsPage.setTotal(quUserNums.size());
  1113. return recordsPage;
  1114. }
  1115. @Override
  1116. public IPage<QuUserNum> quAgentAreaAdminDetail(QuUserNumDto quUserNumDto) {
  1117. if (StringUtils.isNotEmpty(quUserNumDto.getCreateTimeStart()) && StringUtils.isNotEmpty(quUserNumDto.getCreateTimeEnd())) {
  1118. quUserNumDto.setCreateTimeStart(quUserNumDto.getCreateTimeStart() + " 00:00:00");
  1119. quUserNumDto.setCreateTimeEnd(quUserNumDto.getCreateTimeEnd() + " 23:59:59");
  1120. }
  1121. //查询单个用户的详情时不需要区域code
  1122. if (!quUserNumDto.getQuMarks().equals(QuMarks.USER_COMPANY_MARK.getCode())) {
  1123. //获取所有代理人用户
  1124. List<SysUserBaseVO> agentUsers = baseMapper.getAgentUserIdsByAreaIds();
  1125. List<String> strIds = agentUsers.stream().map(SysUserBaseVO::getUserId).collect(Collectors.toList());
  1126. // 如果未指定区域码,返回空分页对
  1127. if (Objects.isNull(quUserNumDto.getAreaCode())) {
  1128. return new Page<>();
  1129. }
  1130. // 根据区域码筛选有效的下属ID
  1131. strIds.removeIf(id -> !id.contains("99" + quUserNumDto.getAreaCode()));
  1132. // 如果筛选后没有有效的下属ID,返回空分页对象
  1133. if (strIds.size() == 0) {
  1134. return new Page<>();
  1135. }
  1136. // 设置查询条件中的用户ID列表
  1137. quUserNumDto.setUserIds(strIds);
  1138. } else {
  1139. // 设置查询条件中的用户ID列表
  1140. quUserNumDto.setUserIds(Collections.singletonList(quUserNumDto.getUserId()));
  1141. }
  1142. List<QuUserNum> deptByCompany = agentOrChannelByMark(quUserNumDto);
  1143. List<QuUserNum> paginate = paginate(deptByCompany, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
  1144. // 创建并设置分页信息
  1145. IPage<QuUserNum> page = new Page<>(quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
  1146. page.setRecords(paginate);
  1147. page.setTotal(deptByCompany.size());
  1148. return page;
  1149. }
  1150. public List<QuUserNum> agentOrChannelByMark(QuUserNumDto quUserNumDto) {
  1151. List<QuUserNum> deptByCompany = new ArrayList<>();
  1152. if (quUserNumDto.getQuMarks().equals(QuMarks.COMPANY_MARK.getCode())) {
  1153. // 根据公司和用户ID列表查询用户数量统计信息
  1154. deptByCompany = sysUserMapper.getUserByCompany(quUserNumDto);
  1155. // 获取公司主订单待核保订单数量
  1156. List<QuUserNum> mainWaitAuditSums = sysUserMapper.getComMainWaitAuditSum(quUserNumDto);
  1157. // 获取公司主订单已核保待缴费订单数量
  1158. List<QuUserNum> mainWaitPaySums = sysUserMapper.getComMainWaitPaySum(quUserNumDto);
  1159. // 获取公司主订单已承包订单数量
  1160. List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getComMainAcceptInsuranceSum(quUserNumDto);
  1161. for (QuUserNum quUserNum : deptByCompany) {
  1162. for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
  1163. if (quUserNum.getCompanyId().equals(mainWaitAuditSum.getCompanyId())) {
  1164. quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
  1165. }
  1166. }
  1167. for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
  1168. if (quUserNum.getCompanyId().equals(mainWaitPaySum.getCompanyId())) {
  1169. quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
  1170. }
  1171. }
  1172. for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
  1173. if (quUserNum.getCompanyId().equals(mainAcceptInsuranceSum.getCompanyId())) {
  1174. quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
  1175. }
  1176. }
  1177. }
  1178. } else if (quUserNumDto.getQuMarks().equals(QuMarks.USER_MARK.getCode())) {
  1179. // 根据公司和用户ID列表查询用户数量统计信息
  1180. deptByCompany = sysUserMapper.getUserDetail(quUserNumDto);
  1181. // 获取用户主订单待核保订单数量
  1182. List<QuUserNum> mainWaitAuditSums = sysUserMapper.getUserMainWaitAuditSum(quUserNumDto);
  1183. // 获取用户主订单已核保待缴费订单数量
  1184. List<QuUserNum> mainWaitPaySums = sysUserMapper.getUserMainWaitPaySum(quUserNumDto);
  1185. // 获取用户主订单已承包订单数量
  1186. List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getUserMainAcceptInsuranceSum(quUserNumDto);
  1187. for (QuUserNum quUserNum : deptByCompany) {
  1188. for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
  1189. if (quUserNum.getUserId().equals(mainWaitAuditSum.getUserId())) {
  1190. quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
  1191. }
  1192. }
  1193. for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
  1194. if (quUserNum.getUserId().equals(mainWaitPaySum.getUserId())) {
  1195. quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
  1196. }
  1197. }
  1198. for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
  1199. if (quUserNum.getUserId().equals(mainAcceptInsuranceSum.getUserId())) {
  1200. quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
  1201. }
  1202. }
  1203. }
  1204. } else if (quUserNumDto.getQuMarks().equals(QuMarks.USER_COMPANY_MARK.getCode())) {
  1205. // 根据公司和用户ID列表查询用户数量统计信息
  1206. deptByCompany = sysUserMapper.getUserByCompany(quUserNumDto);
  1207. // 获取公司主订单待核保订单数量
  1208. List<QuUserNum> mainWaitAuditSums = sysUserMapper.getComMainWaitAuditSum(quUserNumDto);
  1209. // 获取公司主订单已核保待缴费订单数量
  1210. List<QuUserNum> mainWaitPaySums = sysUserMapper.getComMainWaitPaySum(quUserNumDto);
  1211. // 获取公司主订单已承包订单数量
  1212. List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getComMainAcceptInsuranceSum(quUserNumDto);
  1213. for (QuUserNum quUserNum : deptByCompany) {
  1214. for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
  1215. if (quUserNum.getCompanyId().equals(mainWaitAuditSum.getCompanyId())) {
  1216. quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
  1217. }
  1218. }
  1219. for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
  1220. if (quUserNum.getCompanyId().equals(mainWaitPaySum.getCompanyId())) {
  1221. quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
  1222. }
  1223. }
  1224. for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
  1225. if (quUserNum.getCompanyId().equals(mainAcceptInsuranceSum.getCompanyId())) {
  1226. quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
  1227. }
  1228. }
  1229. }
  1230. }
  1231. return deptByCompany;
  1232. }
  1233. /**
  1234. * @version
  1235. * @author: hxl
  1236. * @Date: 2024/4/29 16:01
  1237. * @Description: 查询当前登陆人管理的渠道人 即领导人为当前登陆人的用户需要递归查询
  1238. */
  1239. public List<String> getUserIdsByLeaderId(String userId) {
  1240. // 获取系统中的所有用户
  1241. LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
  1242. queryWrapper.eq(SysUser::getStatus, 1);
  1243. List<SysUser> allUsers = this.getBaseMapper().selectList(queryWrapper);
  1244. // 查询指定用户ID管理的用户,即第一级下属
  1245. queryWrapper.eq(SysUser::getId, userId);
  1246. List<SysUser> leadUsers = this.getBaseMapper().selectList(queryWrapper);
  1247. // 用于存储所有下属的ID
  1248. List<String> strIds = new ArrayList<>();
  1249. // 递归获取第一级下属及其所有下属的ID
  1250. findChildren(leadUsers, allUsers, strIds);
  1251. return strIds;
  1252. }
  1253. /**
  1254. * @version
  1255. * @author: hxl
  1256. * @Date: 2024/5/7 10:45
  1257. * @Description: 通过部门id和角色id查询是否存在团队长
  1258. */
  1259. @Override
  1260. public int getCountByDeptAndRoleId(SysUser sysUserVo) {
  1261. return sysUserMapper.getCountByDeptAndRoleId(sysUserVo);
  1262. }
  1263. /**
  1264. * @version
  1265. * @author: hxl
  1266. * @Date: 2024/5/7 11:44
  1267. * @Description: 查询该部门的团队长
  1268. */
  1269. @Override
  1270. public String findTDZUserIdByDeptId(String deptId) {
  1271. return sysUserMapper.findTDZUserIdByDeptId(deptId);
  1272. }
  1273. /**
  1274. * 获取多条用户数据
  1275. *
  1276. * @param userIds 用户idList
  1277. * @return
  1278. */
  1279. @Override
  1280. public List<SysUser> getByIds(List<String> userIds) {
  1281. LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
  1282. sysUserLambdaQueryWrapper.in(SysUser::getId, userIds);
  1283. return sysUserMapper.selectList(sysUserLambdaQueryWrapper);
  1284. }
  1285. /**
  1286. * @version
  1287. * @author: hxl
  1288. * @Date: 2024/7/11 16:08
  1289. * @Description: 查询所有的后线人员
  1290. */
  1291. @Override
  1292. public List<SysUser> findHxUserList() {
  1293. return sysUserMapper.findHxUserList();
  1294. }
  1295. /**
  1296. * 离职申请
  1297. * @param sysUserVO
  1298. * @return
  1299. */
  1300. @Override
  1301. @Transactional
  1302. public boolean departApply(SysUser2Vo sysUserVO) {
  1303. if(Objects.isNull(sysUserVO.getSysUser().getLogoutTime())){
  1304. throw new SystemException("请填写离职时间");
  1305. }
  1306. if(Objects.isNull(sysUserVO.getEsmUserImageVo()) && sysUserVO.getEsmUserImageVo().isEmpty()){
  1307. throw new SystemException("请上传离职证明");
  1308. }
  1309. SysUser byId = this.getById(sysUserVO.getSysUser().getId());
  1310. byId.setLogoutTime(sysUserVO.getSysUser().getLogoutTime());
  1311. byId.setStatus(UserWorkStatus.UWS_4.getCode());
  1312. this.updateById(byId);
  1313. //添加离职证明
  1314. EsmUserImageVo esmUserImageVo = sysUserVO.getEsmUserImageVo().get(0);
  1315. esmUserImageVo.setType(InsuranceImageEnum.LZ_01.getCode());
  1316. EsmUserImage esmUserImage = new EsmUserImage(esmUserImageVo,sysUserVO.getSysUser().getId());
  1317. esmUserImageService.save(esmUserImage);
  1318. //添加轨迹
  1319. SysUserTrack sysUserTrack = new SysUserTrack();
  1320. sysUserTrack.setUserId(byId.getId());
  1321. sysUserTrack.setApproveBy(StpUtil.getLoginId().toString());
  1322. sysUserTrack.setStatus(byId.getStatus());
  1323. sysUserTrack.setApproveTime(new Date());
  1324. sysUserTrackService.save(sysUserTrack);
  1325. return true;
  1326. }
  1327. @Override
  1328. public List<String> getUserIds() {
  1329. return baseMapper.getUserIds();
  1330. }
  1331. }