SysDeptServiceImpl.java 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036
  1. package com.ydtech.modules.admin.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.ydtech.core.page.HttpResult;
  9. import com.ydtech.core.page.PageRequest;
  10. import com.ydtech.core.page.PageResult;
  11. import com.ydtech.exception.SystemException;
  12. import com.ydtech.modules.admin.dao.SysAreaMapper;
  13. import com.ydtech.modules.admin.dao.SysDeptMapper;
  14. import com.ydtech.modules.admin.dao.SysUserDeptRelationshipMapper;
  15. import com.ydtech.modules.admin.dao.SysUserMapper;
  16. import com.ydtech.modules.admin.model.SysArea;
  17. import com.ydtech.modules.admin.model.SysDept;
  18. import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
  19. import com.ydtech.modules.admin.model.po.SysUserDeptRelationship;
  20. import com.ydtech.modules.admin.model.report.financialReceivables.FinancialReceivablesMonthVo;
  21. import com.ydtech.modules.admin.model.vo.*;
  22. import com.ydtech.modules.admin.model.SysUser;
  23. import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
  24. import com.ydtech.modules.admin.service.SysAreaService;
  25. import com.ydtech.modules.admin.service.SysDeptService;
  26. import com.ydtech.modules.admin.service.SysUserTreeShowLevelService;
  27. import com.ydtech.modules.base.controller.BaseController;
  28. import com.ydtech.modules.protocol.utils.AssertionUtils;
  29. import com.ydtech.utils.StringUtils;
  30. import io.lettuce.core.ScriptOutputType;
  31. import lombok.extern.slf4j.Slf4j;
  32. import org.springframework.beans.BeanUtils;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.stereotype.Service;
  35. import org.springframework.transaction.annotation.Transactional;
  36. import org.springframework.util.ObjectUtils;
  37. import java.util.*;
  38. import java.util.function.Function;
  39. import java.util.stream.Collectors;
  40. @Service
  41. @Slf4j
  42. public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
  43. implements SysDeptService {
  44. @Autowired
  45. private SysDeptMapper sysDeptMapper;
  46. @Autowired
  47. private SysAreaService sysAreaService;
  48. @Autowired
  49. private SysAreaMapper sysAreaMapper;
  50. @Autowired
  51. private SysUserTreeShowLevelService sysUserTreeShowLevelService;
  52. @Autowired
  53. private SysUserMapper sysUserMapper;
  54. @Autowired
  55. private SysUserDeptRelationshipMapper sysUserDeptRelationshipMapper;
  56. /**
  57. * 根据用户权限和指定部门ID,查询并构建部门树。
  58. *
  59. * @param deptId 部门ID,用于查询特定部门及其子部门,如果为空或特定值,则查询用户所在部门及其子部门。
  60. * @param managementSource 管理范围来源标识,用于不同场景下的部门树构建。
  61. * @return 返回符合用户权限和管理范围的部门树列表。
  62. */
  63. @Override
  64. public List<SysDept> findTree(String deptId, String managementSource) {
  65. // 获取当前操作用户
  66. SysUser user = BaseController.getUser();
  67. String userId = user.getId();
  68. // 根据用户ID查询用户的部门树展示级别
  69. LambdaQueryWrapper<SysUserTreeShowLevel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  70. lambdaQueryWrapper.eq(SysUserTreeShowLevel::getUserId, userId);
  71. SysUserTreeShowLevel treeShowLevel = sysUserTreeShowLevelService.getOne(lambdaQueryWrapper);
  72. List<SysDept> treeByShowLevel = new ArrayList<>();
  73. //如果当前用户未配置树展示等级,则默认为查询全部
  74. if (Objects.isNull(treeShowLevel)) {
  75. treeShowLevel = new SysUserTreeShowLevel();
  76. treeShowLevel.setShowLevel("subordinate");
  77. }
  78. // 如果指定的部门ID为空或特定值,则使用当前用户所在部门ID
  79. if (null == deptId || "".equals(deptId) || "undefined".equals(deptId)) {
  80. if (!treeShowLevel.getShowLevel().equals("all")) {
  81. deptId = user.getDeptId();
  82. } else {
  83. deptId = "9";
  84. }
  85. }
  86. // 根据用户的部门树展示级别查询相应的部门树
  87. switch (treeShowLevel.getShowLevel()) {
  88. case "all":
  89. treeByShowLevel = findTreeByShowLevel(deptId, managementSource, "all");
  90. break;
  91. case "same":
  92. treeByShowLevel = findTreeByShowLevel(deptId, managementSource, "same");
  93. break;
  94. case "subordinate":
  95. treeByShowLevel = findTreeByShowLevel(deptId, managementSource, "subordinate");
  96. break;
  97. }
  98. return treeByShowLevel;
  99. }
  100. private List<SysDept> findTreeByShowLevel(String deptId, String managementSource, String showLevel) {
  101. SysDept sysDept = getById(deptId);
  102. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  103. lqw.eq(SysDept::getDelFlag, 0);
  104. lqw.likeRight(SysDept::getId, deptId);
  105. lqw.orderByAsc(SysDept::getOrderNum);
  106. List<SysDept> sysDeptList = list(lqw);
  107. //判断机构来源条件 进行遍历
  108. if (null != managementSource && !"undefined".equals(managementSource) && !"".equals(managementSource)) {
  109. lqw.eq(SysDept::getManagementSource, managementSource);
  110. //条件
  111. List<SysDept> conditionList = list(lqw);
  112. Map<String, List<SysDept>> conditionMap = conditionList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
  113. Map<String, List<SysDept>> map = conditionList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
  114. //先查第6层
  115. conditionList.forEach(i ->
  116. i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()))
  117. );
  118. List<SysDept> result = new ArrayList<>();
  119. //再查前4层
  120. int level = 5;
  121. while (level > 0) {
  122. List<SysDept> resultTmp = recursion(sysDeptList, conditionMap);
  123. if (resultTmp.size() == 0) {
  124. break;
  125. } else {
  126. int finalLevel = level;
  127. resultTmp = resultTmp.stream().filter(x -> x.getComlevel().equals(String.valueOf(finalLevel))).collect(Collectors.toList());
  128. result.clear();
  129. result.addAll(resultTmp);
  130. }
  131. conditionMap = result.stream().collect(Collectors.groupingBy(SysDept::getParentId));
  132. level--;
  133. }
  134. sysDeptList = result;
  135. } else {
  136. Map<String, List<SysDept>> map = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
  137. sysDeptList.forEach(i -> {
  138. i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
  139. i.setDeptCount(i.getChildren().size());
  140. });
  141. sysDeptList = map.get(sysDept.getParentId());
  142. }
  143. if (showLevel.equals("same")) {
  144. if (null != managementSource && !"undefined".equals(managementSource) && !"".equals(managementSource)) {
  145. if (sysDept.getManagementSource().equals(managementSource)) {
  146. sysDeptList.clear();
  147. sysDeptList.add(sysDept);
  148. } else {
  149. return new ArrayList<>();
  150. }
  151. } else {
  152. sysDeptList.clear();
  153. sysDeptList.add(sysDept);
  154. }
  155. }
  156. return sysDeptList;
  157. }
  158. private List<SysDept> recursion(List<SysDept> sysDeptList, Map<String, List<SysDept>> conditionMap) {
  159. List<SysDept> result = new ArrayList<>();
  160. sysDeptList.forEach(i ->
  161. conditionMap.forEach((key, value) -> {
  162. if (i.getId().equals(key)) {
  163. if (i.getChildren() == null) {
  164. i.setChildren(new ArrayList<>());
  165. }
  166. i.getChildren().addAll(value);
  167. //处理总部的排序为空造成的空指针报错处理 add by hxl
  168. i.setOrderNum(i.getOrderNum() == null ? 0 : i.getOrderNum());
  169. result.add(i);
  170. }
  171. })
  172. );
  173. result.sort(Comparator.comparing(SysDept::getOrderNum));
  174. return result;
  175. }
  176. @Override
  177. public List<SysDept> getUserList(String deptId) {
  178. SysDept sysDept = getById(deptId);
  179. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  180. lqw.eq(SysDept::getDelFlag, 0);
  181. lqw.likeRight(SysDept::getId, deptId);
  182. List<SysDept> sysDeptList = list(lqw);
  183. Map<String, List<SysDept>> map = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
  184. return map.get(sysDept.getParentId());
  185. }
  186. @Override
  187. @Transactional(rollbackFor = Exception.class)
  188. public SysDeptVo addDept(SysDeptVo sysDeptVo) {
  189. SysDept sysDept = new SysDept();
  190. BeanUtils.copyProperties(sysDeptVo, sysDept);
  191. String comlevel = ObjectUtils.isEmpty(sysDept.getComlevel()) ? "" : sysDept.getComlevel();
  192. String parentId = sysDept.getParentId();
  193. String number;
  194. if (comlevel.equals("2")) {
  195. AssertionUtils.isStringEmpty(sysDept.getProvince(), "二级机构份必填");
  196. number = sysDept.getProvince().substring(0, 2);
  197. } else if (comlevel.equals("3")) {
  198. AssertionUtils.isStringEmpty(sysDept.getCity(), "三级机构市必填");
  199. number = sysDept.getCity().substring(0, 4);
  200. String maxId = baseMapper.getMaxId(parentId, sysDeptVo.getDeptType(), comlevel);
  201. if (!maxId.equals("0")) {
  202. String substring = maxId.substring(sysDept.getParentId().length() + 1);
  203. int i = Integer.parseInt("1" + substring) + 1;
  204. number = String.valueOf(i);
  205. } else {
  206. number = "101";
  207. }
  208. } else if (comlevel.equals("4")) {
  209. AssertionUtils.isStringEmpty(sysDept.getArea(), "四级机构区必填");
  210. number = sysDept.getArea().substring(0, 6);
  211. String maxId = baseMapper.getMaxId(parentId, sysDeptVo.getDeptType(), comlevel);
  212. if (!maxId.equals("0")) {
  213. String substring = maxId.substring(sysDept.getParentId().length() + 1);
  214. int i = Integer.parseInt("1" + substring) + 1;
  215. number = String.valueOf(i);
  216. } else {
  217. number = "101";
  218. }
  219. } else {
  220. String deptType = sysDeptVo.getDeptType();
  221. if ("C".equals(sysDept.getDeptType()) && comlevel.equals("5")) {
  222. sysDeptVo.setDeptType("M");
  223. } else if ("D".equals(sysDept.getDeptType())) {
  224. sysDeptVo.setDeptType("D");
  225. deptType = "M";
  226. }
  227. String maxId = baseMapper.getMaxId(parentId, deptType, comlevel);
  228. if (!maxId.equals("0")) {
  229. String substring = maxId.substring(sysDept.getParentId().length() + 1);
  230. int i = Integer.parseInt("1" + substring) + 1;
  231. number = String.valueOf(i);
  232. } else {
  233. number = "101";
  234. }
  235. }
  236. String substring = number.substring(number.length() - 2);
  237. String serialNumber;
  238. if ("M,D".contains(sysDeptVo.getDeptType())) {
  239. serialNumber = parentId + sysDeptVo.getDeptType() + substring;
  240. } else {
  241. serialNumber = parentId + substring;
  242. }
  243. sysDept.setId(serialNumber);
  244. SysDept dept = getById(sysDept.getId());
  245. if (!ObjectUtils.isEmpty(dept)) {
  246. throw new SystemException("机构编号为:" + dept.getId() + " " + dept.getName() + "已被占用");
  247. }
  248. SysDept parentDept = baseMapper.selectById(sysDept.getParentId());
  249. if (parentDept.getComlevel().equals("5")) {
  250. sysDept.setManagementSource(parentDept.getManagementSource());
  251. }
  252. // 查询当前部门序号是否存在
  253. LambdaQueryWrapper<SysDept> qw = new LambdaQueryWrapper<>();
  254. qw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
  255. qw.eq(SysDept::getParentId, sysDept.getParentId()); // 父级部门ID相同
  256. qw.eq(SysDept::getOrderNum, sysDept.getOrderNum()); // 排序号相同
  257. boolean exists = baseMapper.exists(qw);
  258. if (exists) {
  259. // 如果存在,查询该父级部门下排序号大于当前部门的部门列表
  260. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  261. lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
  262. lqw.eq(SysDept::getParentId, sysDept.getParentId()); // 父级部门ID相同
  263. lqw.ge(SysDept::getOrderNum, sysDept.getOrderNum()); // 排序号大于等于当前部门
  264. List<SysDept> sysDeptList = list(lqw);
  265. // 更新这些部门的排序号
  266. sysDeptList.forEach(i -> {
  267. i.setOrderNum(i.getOrderNum() + 1);
  268. updateById(i);
  269. });
  270. }
  271. boolean b = save(sysDept);
  272. log.info("------------------添加部门成功-----------------------");
  273. AssertionUtils.isSucceed(b, "删除失败");
  274. sysDeptVo.setId(sysDept.getId());
  275. return sysDeptVo;
  276. }
  277. @Override
  278. @Transactional
  279. public HttpResult updateDept(SysDept record) {
  280. // 查询修改的序号是否存在
  281. LambdaQueryWrapper<SysDept> qw = new LambdaQueryWrapper<>();
  282. qw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
  283. qw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
  284. qw.eq(SysDept::getOrderNum, record.getOrderNum()); // 排序号相同
  285. boolean exists = baseMapper.exists(qw);
  286. //不存在则直接修改
  287. if (!exists) {
  288. baseMapper.updateById(record);
  289. return HttpResult.ok();
  290. }
  291. //查询机构
  292. SysDept sysDept = getById(record.getId());
  293. //原本的序号
  294. Integer orderNum = sysDept.getOrderNum();
  295. //本次修改的序号
  296. Integer newOrderNum = record.getOrderNum();
  297. // 向上换位
  298. if (newOrderNum < orderNum) {
  299. // 查询该父级部门下排序号大于当前部门的部门列表
  300. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  301. lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
  302. lqw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
  303. lqw.ge(SysDept::getOrderNum, record.getOrderNum()); // 排序号大于等于当前部门
  304. List<SysDept> sysDeptList = list(lqw);
  305. sysDeptList.sort(Comparator.comparing(SysDept::getOrderNum));
  306. for (SysDept dept : sysDeptList) {
  307. dept.setOrderNum(dept.getOrderNum() + 1);
  308. updateById(dept);
  309. if (dept.getOrderNum().equals(orderNum)) {
  310. break;
  311. }
  312. }
  313. baseMapper.updateById(record);
  314. }
  315. //向下换位
  316. if (newOrderNum > orderNum) {
  317. // 查询该父级部门下排序号小于当前部门的部门列表
  318. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  319. lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
  320. lqw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
  321. lqw.le(SysDept::getOrderNum, record.getOrderNum()); // 排序号大于等于当前部门
  322. List<SysDept> sysDeptList = list(lqw);
  323. sysDeptList.sort(Comparator.comparing(SysDept::getOrderNum).reversed());
  324. for (SysDept dept : sysDeptList) {
  325. dept.setOrderNum(dept.getOrderNum() - 1);
  326. updateById(dept);
  327. if (dept.getOrderNum().equals(orderNum)) {
  328. break;
  329. }
  330. }
  331. baseMapper.updateById(record);
  332. }
  333. if (newOrderNum.equals(orderNum)) {
  334. baseMapper.updateById(record);
  335. }
  336. return HttpResult.ok();
  337. }
  338. @Override
  339. public void deleteDept(SysDeptRemoveVo sysDeptRemoveVo) {
  340. SysDept sysDept = getById(sysDeptRemoveVo.getDeptId());
  341. List<SysDept> list = lambdaQuery().eq(SysDept::getParentId, sysDept.getId()).list();
  342. if (list.isEmpty()) {
  343. boolean b = removeById(sysDeptRemoveVo.getDeptId());
  344. AssertionUtils.isSucceed(b, "删除失败");
  345. } else {
  346. throw new SystemException(sysDept.getName() + "下还有其他隶属机构");
  347. }
  348. }
  349. @Override
  350. public PageResult<SysDept> findSubDepts(PageRequest pageRequest) {
  351. String id = pageRequest.getColumnFilterValue(pageRequest, "id");
  352. String managementSource = pageRequest.getColumnFilterValue(pageRequest, "managementSource");
  353. Page<SysDept> p = PageRequest.buildPageRequest(pageRequest);
  354. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  355. lqw.eq(StringUtils.isNotEmpty(id), SysDept::getParentId, id);
  356. lqw.eq(StringUtils.isNotEmpty(managementSource), SysDept::getManagementSource, managementSource);
  357. IPage<SysDept> pResult = page(p, lqw);
  358. //传入查询条件
  359. return PageResult.buildPageResult(pResult);
  360. }
  361. public String findMaxDeptId(String deptId) {
  362. if (deptId == null) return "";
  363. String result = "00";
  364. QueryWrapper<SysDept> qw = new QueryWrapper<>();
  365. qw.likeRight(StringUtils.isNotEmpty(deptId), "id", deptId + "D%");
  366. qw.select("IFNULL(MAX(id),0) maxid");
  367. Map<String, Object> m = getMap(qw);
  368. String maxId = m.get("maxid").toString();
  369. if (!maxId.equalsIgnoreCase("0") && !maxId.equalsIgnoreCase(deptId)) {
  370. result = maxId.substring(deptId.length() + 1);
  371. }
  372. return result;
  373. }
  374. public String findMaxHouseId(String deptId) {
  375. if (deptId == null) {
  376. return "";
  377. }
  378. String result = "00";
  379. QueryWrapper<SysDept> qw = new QueryWrapper<>();
  380. qw.like(StringUtils.isNotEmpty(deptId), "id", deptId + "M%");
  381. qw.select("IFNULL(MAX(id),0) maxid");
  382. Map<String, Object> m = getMap(qw);
  383. String maxId = m.get("maxid").toString();
  384. if (!maxId.equalsIgnoreCase("0") && !maxId.equalsIgnoreCase(deptId)) {
  385. result = maxId.substring(deptId.length() + 1);
  386. }
  387. return result;
  388. }
  389. //
  390. @Override
  391. public List<TreeSysDeptVO> selectListWhere(String where, Object[] paramValues) {
  392. String sql = "select t1.id, t1.name, t1.parent_id, t1.dept_code, t1.province, t1.city, t1.area, t1.comlevel from sys_dept t1 " +
  393. "where del_flag='0' " + where;
  394. QueryWrapper<SysDept> qw = new QueryWrapper<>();
  395. qw.select(sql);
  396. List<SysDept> sysDeptList = list(qw);
  397. List<TreeSysDeptVO> recordList = new ArrayList<TreeSysDeptVO>();
  398. sysDeptList.forEach(a -> {
  399. TreeSysDeptVO model = new TreeSysDeptVO();
  400. model.setId(a.getId());
  401. model.setName(a.getName());
  402. model.setParentId(a.getParentId());
  403. model.setDeptCode(a.getDeptCode());
  404. model.setProvince(a.getProvince());
  405. model.setCity(a.getCity());
  406. model.setArea(a.getArea());
  407. model.setComlevel(a.getComlevel());
  408. recordList.add(model);
  409. });
  410. return recordList;
  411. }
  412. /**
  413. * 获取机构树(不包含团队 dept_type=C)
  414. */
  415. @Override
  416. public List<SysDept> findCompanyTree(String deptId) {
  417. SysDept sysDept = getById(deptId);
  418. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  419. lqw.eq(SysDept::getDelFlag, 0);
  420. lqw.likeRight(SysDept::getId, deptId);
  421. lqw.and((wrapper) -> {
  422. wrapper.eq(SysDept::getDeptType, 'C').or().eq(SysDept::getId, '9');
  423. });
  424. List<SysDept> sysDeptList = list(lqw);
  425. Map<String, List<SysDept>> map = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
  426. sysDeptList.forEach(i -> i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>())));
  427. return map.get(sysDept.getParentId());
  428. }
  429. /**
  430. * 根据传入机构,查询归属所有团队
  431. */
  432. @Override
  433. public List<SysDept> findTeamList(String deptId) {
  434. SysDept sysDept = getById(deptId);
  435. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  436. lqw.eq(SysDept::getDelFlag, 0);
  437. lqw.likeRight(SysDept::getId, deptId);
  438. lqw.eq(SysDept::getDeptType, 'D');
  439. lqw.apply(" exists (SELECT 1 FROM `sys_dept` b WHERE sys_dept.parent_id = b.`id` AND b.`comlevel`='5') ");
  440. List<SysDept> sysDeptList = list(lqw);
  441. return sysDeptList;
  442. }
  443. /**
  444. * @version
  445. * @author: hxl
  446. * @Date: 2024/4/28 10:24
  447. * @Description: 查询省、市、县 、门店的列表
  448. */
  449. @Override
  450. public List<SysDept> queryListByParentId(String level, String parentId) {
  451. return sysDeptMapper.queryListByParentId(level, parentId);
  452. }
  453. @Override
  454. public String queryBelongArea(String deptId) {
  455. //长度大于8的话 进行切割
  456. StringBuilder result = new StringBuilder();
  457. if (deptId.length() >= 8) {
  458. String area = deptId.substring(2, 8);
  459. SysArea sysArea = sysAreaMapper.selectOne(new LambdaQueryWrapper<SysArea>().eq(SysArea::getAreaCode, area));
  460. if (sysArea == null) {
  461. return "";
  462. }
  463. List<SysArea> sysAreas = sysAreaService.queryAllParent(sysArea);
  464. result.append(sysAreas.get(2).getAreaCname());
  465. result.append(sysAreas.get(1).getAreaCname());
  466. result.append(sysAreas.get(0).getAreaCname());
  467. }
  468. return result.toString();
  469. }
  470. @Override
  471. public List<SysArea> getListQueryBelongArea(String deptId) {
  472. //长度大于8的话 进行切割
  473. List<SysArea> sysAreas = new ArrayList<>();
  474. if (deptId.length() >= 8) {
  475. String area = deptId.substring(2, 8);
  476. SysArea sysArea = sysAreaMapper.selectOne(new LambdaQueryWrapper<SysArea>().eq(SysArea::getAreaCode, area));
  477. if (sysArea == null) {
  478. return null;
  479. }
  480. sysAreas = sysAreaService.queryAllParent(sysArea);
  481. }
  482. return sysAreas;
  483. }
  484. /**
  485. * @version
  486. * @author: hxl
  487. * @Date: 2024/6/28 8:43
  488. * @Description: 查询后线机构树
  489. */
  490. @Override
  491. public List<SysDept> queryHXDeptTree() {
  492. //所有的后线机构
  493. List<SysDept> sysDeptsHX = sysDeptMapper.queryHXDeptTree();
  494. //查询后线中顶级的数据
  495. List<SysDept> resultList = new ArrayList<SysDept>();
  496. List<SysDept> sysDeptTop = sysDeptsHX.stream().filter(item -> "99".equals(item.getId())).collect(Collectors.toList());
  497. for (SysDept dept : sysDeptTop) {
  498. resultList.add(buildDeptTree(dept, sysDeptsHX));
  499. }
  500. return resultList;
  501. }
  502. /**
  503. * 递归构建树形结构
  504. */
  505. private SysDept buildDeptTree(SysDept dept, List<SysDept> deptList) {
  506. for (SysDept d : deptList) {
  507. if (dept.getId().equals(d.getParentId())) {
  508. if (null == dept.getChildren()) {
  509. dept.setChildren(new ArrayList<SysDept>());
  510. }
  511. //递归调用
  512. dept.getChildren().add(buildDeptTree(d, deptList));
  513. }
  514. }
  515. return dept;
  516. }
  517. /**
  518. * @version
  519. * @author: hxl
  520. * @Date: 2024/6/28 8:42
  521. * @Description: 查询前线机构树
  522. */
  523. @Override
  524. public List<SysDept> queryQXDeptTree() {
  525. List<SysDept> sysDeptAll = sysDeptMapper.queryListByQXDept();
  526. //查询后线中顶级的数据
  527. List<SysDept> resultList = new ArrayList<SysDept>();
  528. List<SysDept> sysDeptTop = sysDeptAll.stream().filter(item -> "3".equals(item.getComlevel())).collect(Collectors.toList());
  529. for (SysDept dept : sysDeptTop) {
  530. resultList.add(buildDeptTree(dept, sysDeptAll));
  531. }
  532. return sysDeptMapper.queryListByQXDept();
  533. }
  534. @Override
  535. public List<SysDeptTreeVo> getSysDeptTree() {
  536. SysDept sysDept = getById("9");
  537. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  538. lqw.eq(SysDept::getDelFlag, 0);
  539. lqw.isNotNull(SysDept::getComlevel);
  540. lqw.likeRight(SysDept::getId, "9");
  541. lqw.orderByAsc(SysDept::getOrderNum);
  542. List<SysDept> sysDeptList = list(lqw);
  543. SysDeptTreeVo sysDeptTreeVo = BeanUtil.copyProperties(sysDept, SysDeptTreeVo.class);
  544. List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
  545. sysDeptTreeVos.add(sysDeptTreeVo);
  546. Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId)).collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
  547. sysDeptTreeVos.forEach(i -> {
  548. i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
  549. i.setDeptCount(i.getChildren().size());
  550. });
  551. sysDeptTreeVos = map.get(sysDept.getParentId());
  552. return sysDeptTreeVos;
  553. }
  554. @Override
  555. public List<SysDeptTreeVo> getPartnerDeptTree() {
  556. SysDept sysDept = getById("9");
  557. LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
  558. lqw.eq(SysDept::getDelFlag, 0);
  559. lqw.likeRight(SysDept::getId, "9");
  560. lqw.orderByAsc(SysDept::getOrderNum);
  561. List<SysDept> sysDeptList = list(lqw);
  562. List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
  563. Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId))
  564. .collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
  565. sysDeptTreeVos.forEach(i -> {
  566. i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
  567. i.setDeptCount(i.getChildren().size());
  568. });
  569. sysDeptTreeVos = map.get(sysDept.getParentId());
  570. //合伙人机构树
  571. for (SysDeptTreeVo deptTreeVo : sysDeptTreeVos) {//1
  572. List<SysDeptTreeVo> children2 = deptTreeVo.getChildren();
  573. for (SysDeptTreeVo children : children2) {//2
  574. List<SysDeptTreeVo> children3 = children.getChildren();
  575. if (children3.size()>0) {
  576. children3=children3.stream().filter(SysDeptTreeVo -> SysDeptTreeVo.getComlevel() != null).collect(Collectors.toList());
  577. children.setChildren(children3);
  578. for (SysDeptTreeVo child4 : children3) {//3
  579. List<SysDeptTreeVo> children4 = child4.getChildren();
  580. if (children4.size()>0) {
  581. children4=children4.stream().filter(SysDeptTreeVo -> SysDeptTreeVo.getComlevel() != null).collect(Collectors.toList());
  582. child4.setChildren(children4);
  583. for (SysDeptTreeVo child : children4) {//4
  584. List<SysDeptTreeVo> children5 = child.getChildren();
  585. children5 = children5.stream().filter(SysDeptTreeVo ->SysDeptTreeVo.getComlevel() != null).collect(Collectors.toList());
  586. child.setChildren(children5);
  587. if (children5.size()>0) {
  588. for (SysDeptTreeVo treeVo : children5) {
  589. List<SysDeptTreeVo> childrenEnd = treeVo.getChildren();
  590. if (childrenEnd.size()>0) {
  591. childrenEnd=childrenEnd.stream().filter(SysDeptTreeVo ->SysDeptTreeVo.getComlevel() == null).collect(Collectors.toList());
  592. treeVo.setChildren(childrenEnd);
  593. }
  594. }
  595. }
  596. }
  597. }
  598. }
  599. }
  600. }
  601. }
  602. return sysDeptTreeVos;
  603. }
  604. @Override
  605. public boolean contrastiveManagementSource(String orderNo, String managementSource) {
  606. String managementSourceDept = sysDeptMapper.getByOrderNoQueryManagementSource(orderNo);
  607. return managementSource.equals(managementSourceDept);
  608. }
  609. /**
  610. * 数据权限机构数
  611. * @return
  612. */
  613. @Override
  614. public List<SysDept> getDataDeptTree(List<String> deptIds) {
  615. String name = BaseController.getUser().getName();
  616. List<SysDept> result = new ArrayList<>();
  617. if(!deptIds.isEmpty()){
  618. List<SysDept> deptList = sysDeptMapper.getListByIdsByKzt(deptIds);
  619. // 使用一个Map来快速查找部门节点
  620. Map<String, SysDept> deptMap = new HashMap<>();
  621. for (SysDept dept : deptList) {
  622. deptMap.put(dept.getId(), dept);
  623. }
  624. // 找出顶级部门(即没有父部门的部门)
  625. for (SysDept dept : deptList) {
  626. if (dept.getParentId() == null || deptMap.get(dept.getParentId()) == null) {
  627. // 添加到结果列表并构建其子树
  628. buildDeptTree(dept, deptMap);
  629. result.add(dept);
  630. }
  631. }
  632. } else if ("admin".equals(name)) {
  633. String deptId ="9";
  634. if(deptId==null || "".equals(deptId)){
  635. deptId="9";
  636. }else{
  637. //如果是平台下判断包含D的查询上级id
  638. if(deptId.contains("D")){
  639. SysDept dept = baseMapper.selectById(deptId);
  640. deptId =dept==null?"":dept.getParentId();
  641. }
  642. }
  643. LambdaQueryWrapper<SysDept> queryWrapper = new LambdaQueryWrapper<>();
  644. queryWrapper.eq(SysDept::getDelFlag, 0);
  645. // 获取当前操作用户
  646. SysUser user = BaseController.getUser();
  647. String userId = user.getId();
  648. // 根据用户ID查询用户的部门树展示级别
  649. LambdaQueryWrapper<SysUserTreeShowLevel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  650. lambdaQueryWrapper.eq(SysUserTreeShowLevel::getUserId, userId);
  651. SysUserTreeShowLevel treeShowLevel = sysUserTreeShowLevelService.getOne(lambdaQueryWrapper);
  652. List<SysDept> treeByShowLevel = new ArrayList<>();
  653. //如果当前用户未配置树展示等级,则默认为查询全部
  654. if (Objects.isNull(treeShowLevel)) {
  655. treeShowLevel = new SysUserTreeShowLevel();
  656. treeShowLevel.setShowLevel("subordinate");
  657. }
  658. // 如果指定的部门ID为空或特定值,则使用当前用户所在部门ID
  659. if (null == deptId || "".equals(deptId) || "undefined".equals(deptId)) {
  660. if (!treeShowLevel.getShowLevel().equals("all")) {
  661. deptId = user.getDeptId();
  662. } else {
  663. deptId = "9";
  664. }
  665. }
  666. // 根据用户的部门树展示级别查询相应的部门树
  667. switch (treeShowLevel.getShowLevel()) {
  668. case "all":
  669. treeByShowLevel = findTreeByShowLevel(deptId, null, "all");
  670. break;
  671. case "same":
  672. treeByShowLevel = findTreeByShowLevel(deptId, null, "same");
  673. break;
  674. case "subordinate":
  675. treeByShowLevel = findTreeByShowLevel(deptId, null, "subordinate");
  676. break;
  677. }
  678. return treeByShowLevel;
  679. }
  680. return result;
  681. }
  682. @Override
  683. public List<SysDeptTreeVo> getFiveLevelDept(SysDeptVo sysDeptVo) {
  684. SysDept sysDept = getById("9");
  685. List<SysDept> sysDeptList = baseMapper.getFiveLevelDept(sysDeptVo);
  686. sysDeptList.add(sysDept);//添加总部 总部没有等级机构
  687. List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
  688. Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId))
  689. .collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
  690. sysDeptTreeVos.forEach(i -> {
  691. i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
  692. i.setDeptCount(i.getChildren().size());
  693. });
  694. return map.get(sysDept.getParentId());
  695. }
  696. private void buildDeptTree(SysDept dept, Map<String, SysDept> deptMap) {
  697. List<SysDept> children = new ArrayList<>();
  698. dept.setChildren(children);
  699. // 查找并添加子部门
  700. for (SysDept potentialChild : deptMap.values()) {
  701. if (potentialChild.getParentId() != null && potentialChild.getParentId().equals(dept.getId())) {
  702. children.add(potentialChild);
  703. buildDeptTree(potentialChild, deptMap); // 递归构建子部门的子树
  704. }
  705. }
  706. }
  707. /**
  708. * 前线只要机构 后线人员(按照领导人) 机构
  709. * @param sysDeptVo
  710. * @return
  711. */
  712. @Override
  713. public KztUserDeptTreeDto getUserDeptTree(SysDeptVo sysDeptVo) {
  714. String managementSource = sysDeptVo.getManagementSource();
  715. KztUserDeptTreeDto kztUserDeptTreeDto = new KztUserDeptTreeDto();
  716. String userId = BaseController.getUserId();
  717. QueryWrapper<SysDept> queryWrapper = new QueryWrapper<>();
  718. QueryWrapper<SysDept> leaderId = queryWrapper.eq("leader_id", userId);
  719. List<SysDept> sysDepts = sysDeptMapper.selectList(leaderId);
  720. if (!sysDepts.isEmpty()) {
  721. kztUserDeptTreeDto.setType("1"); //前线
  722. } else {
  723. kztUserDeptTreeDto.setType("2"); //代理
  724. }
  725. SysUser byUserId = sysUserMapper.getByUserId(userId);
  726. List<SysDeptTreeVo> resultDeptList = this.getFiveLevelDeptKzt(byUserId,managementSource);
  727. kztUserDeptTreeDto.setDeptList(resultDeptList);
  728. if (!userId.contains("M")) {
  729. List<SysUser> resultList =this.getUserTreeHx(byUserId,managementSource);
  730. kztUserDeptTreeDto.setUserList(resultList);
  731. }
  732. return kztUserDeptTreeDto;
  733. }
  734. private List<SysUser> getUserTreeHx(SysUser sysUser,String managementSource) {
  735. //获取领导字段不为空的人的ID
  736. QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
  737. queryWrapper.isNotNull("leader_id");
  738. HashMap<String, Object> params = new HashMap<>();
  739. params.put("managementSource",managementSource);
  740. List<SysUser> users = sysUserMapper.selectByParams(params);
  741. for (SysUser user : users) {
  742. this.appendName(user);
  743. }
  744. if (users == null || users.isEmpty()) {
  745. return new ArrayList<>();
  746. }
  747. List<SysUser> allList = new ArrayList<>();
  748. for (SysUser user : users) {
  749. this.addLeadUserList(user,allList);
  750. }
  751. List<SysUser> collect = allList.stream()
  752. .collect(Collectors.collectingAndThen(
  753. Collectors.toMap(SysUser::getId, u -> u, (u1, u2) -> u1), // 以id作为键来合并重复元素,保留第一个遇到的元素
  754. Map::values))
  755. .stream()
  756. .distinct() // 进一步确保去重,主要针对可能存在的相同id但不同对象引用情况(较极端情况)
  757. .collect(Collectors.toList());
  758. List<SysUser> topUsers = new ArrayList<>(); //存放1级用户,即没有直接上级的用户
  759. // 根据组织结构展示级别,筛选顶层节点并构建组织结构树
  760. if("admin".equals(sysUser.getName())){
  761. topUsers.add(sysUserMapper.selectById("99D1501"));
  762. }else {
  763. this.appendName(sysUser);
  764. topUsers.add(sysUser);
  765. }
  766. // 递归构建用户树结构
  767. buildUserTree(topUsers, collect,managementSource);
  768. return topUsers;
  769. }
  770. private void addLeadUserList(SysUser user, List<SysUser> allList) {
  771. addLeadUserList(user, allList, new HashSet<>());
  772. }
  773. private void addLeadUserList(SysUser user, List<SysUser> allList, Set<String> processedIds) {
  774. if (user == null) {
  775. return;
  776. }
  777. // 先判断当前用户ID是否已经处理过,如果处理过则直接返回,避免循环引用导致的无限递归
  778. if (processedIds.contains(user.getId())) {
  779. return;
  780. }
  781. allList.add(user);
  782. processedIds.add(user.getId());
  783. String leaderId = user.getLeaderId();
  784. if (StringUtils.isNotEmpty(leaderId)) {
  785. SysUser leaderUser = sysUserMapper.getByUserId(leaderId);
  786. addLeadUserList(leaderUser, allList, processedIds);
  787. }
  788. }
  789. /**
  790. * 拼接机构来源
  791. * @param users
  792. */
  793. private void appendName(SysUser user) {
  794. StringBuilder stringBuilder = new StringBuilder();
  795. String deptId = user.getDeptId();
  796. if (StringUtils.isNotEmpty(deptId)) {
  797. int length = deptId.length();
  798. if (length > 0) {
  799. if (length <= 5) {
  800. String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1");
  801. SysDept cityName = baseMapper.selectById(dept);
  802. String name = cityName.getName();
  803. stringBuilder.append("(").append(name).append(")");
  804. } else if (length > 5) {
  805. String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1");
  806. if (dept.length() < 5) {
  807. SysDept dept1 = baseMapper.selectById(dept);
  808. SysDept cityName = baseMapper.selectById(deptId);
  809. stringBuilder.append("(").append(dept1.getName()).append(cityName.getName()).append(")");
  810. } else {
  811. String deptIdTwo = dept.substring(0, 4);
  812. SysDept dept1 = baseMapper.selectById(deptIdTwo);
  813. SysDept dept2 = baseMapper.selectById(dept);
  814. stringBuilder.append("(").append(dept1.getName()).append(dept2.getName()).append(")");
  815. }
  816. }
  817. user.setName(user.getName()+stringBuilder.toString());
  818. }
  819. }
  820. }
  821. private List<SysDeptTreeVo> getFiveLevelDeptKzt(SysUser byUserId,String managementSource) {
  822. SysDept sysDept = getById("9");
  823. SysDeptVo sysDeptVo = new SysDeptVo();
  824. String id = byUserId.getId();
  825. List<String> deptIds = new ArrayList<>();
  826. if("admin".equals(byUserId.getId())){
  827. List<SysDept> sysDeptList = baseMapper.getFiveLevelDept(sysDeptVo);
  828. deptIds.addAll(sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList()));
  829. }else {
  830. List<SysUserDeptRelationship> relationships = sysUserDeptRelationshipMapper.selectList(new QueryWrapper<SysUserDeptRelationship>().eq("user_id", id));
  831. deptIds.addAll(relationships.stream().map(SysUserDeptRelationship::getDeptId).collect(Collectors.toList()));
  832. }
  833. if(!deptIds.isEmpty()){
  834. sysDeptVo.setDeptIds(deptIds);
  835. List<SysDept> sysDeptList = baseMapper.getFiveLevelDept(sysDeptVo);
  836. if("admin".equals(byUserId.getId())){
  837. sysDept.setComlevel("1");
  838. sysDeptList.add(sysDept);
  839. List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
  840. List<SysDeptTreeVo> filteredSysDeptTreeVos = sysDeptTreeVos.stream()
  841. .filter(dept -> !(dept.getComlevel().equals("5") &&
  842. !Objects.equals(dept.getManagementSource(), managementSource)))
  843. .collect(Collectors.toList());
  844. Map<String, List<SysDeptTreeVo>> map = filteredSysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId))
  845. .collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
  846. filteredSysDeptTreeVos.forEach(i -> {
  847. if(Integer.parseInt(i.getComlevel())<=5){
  848. i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
  849. i.setDeptCount(i.getChildren().size());
  850. }
  851. });
  852. return map.get(sysDept.getParentId());
  853. } else {
  854. List<SysDept> result = new ArrayList<>();
  855. List<SysDept> deptList = sysDeptMapper.getListByIds(deptIds);
  856. List<SysDept> filteredDeptList = deptList.stream()
  857. .filter(dept -> dept.getComlevel() != null) // 过滤条件:Comlevel 不为 null
  858. .collect(Collectors.toList());
  859. List<SysDept> filteredSysDeptTreeVos = filteredDeptList.stream()
  860. .filter(dept -> !(dept.getComlevel().equals("5") &&
  861. !Objects.equals(dept.getManagementSource(), managementSource)))
  862. .collect(Collectors.toList());
  863. // 使用一个Map来快速查找部门节点
  864. Map<String, SysDept> deptMap = new HashMap<>();
  865. for (SysDept dept : filteredSysDeptTreeVos) {
  866. deptMap.put(dept.getId(), dept);
  867. }
  868. // 找出顶级部门(即没有父部门的部门)
  869. for (SysDept dept : filteredSysDeptTreeVos) {
  870. if (dept.getParentId() == null || deptMap.get(dept.getParentId()) == null) {
  871. // 添加到结果列表并构建其子树
  872. buildDeptTreeKzt(dept, deptMap);
  873. result.add(dept);
  874. }
  875. }
  876. List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(result, SysDeptTreeVo.class);
  877. return sysDeptTreeVos;
  878. }
  879. }else {
  880. return new ArrayList<SysDeptTreeVo>();
  881. }
  882. }
  883. private void buildDeptTreeKzt(SysDept dept, Map<String, SysDept> deptMap) {
  884. List<SysDept> children = new ArrayList<>();
  885. dept.setChildren(children);
  886. // 查找并添加子部门
  887. for (SysDept potentialChild : deptMap.values()) {
  888. if (potentialChild.getParentId() != null && potentialChild.getParentId().equals(dept.getId())) {
  889. if(StringUtils.isNotEmpty(potentialChild.getComlevel()) && Integer.parseInt(potentialChild.getComlevel())<=5 ){
  890. children.add(potentialChild);
  891. buildDeptTreeKzt(potentialChild, deptMap); // 递归构建子部门的子树
  892. }
  893. }
  894. }
  895. }
  896. private void buildUserTree(List<SysUser> topUsers, List<SysUser> users, String managementSource) {
  897. for (SysUser user : topUsers) {
  898. List<SysUser> children = new ArrayList<>();
  899. for (SysUser childUser : users) {
  900. if (user.getId().equals(childUser.getLeaderId())) {
  901. children.add(childUser);
  902. // 递归查找下一级
  903. buildUserTree(children, users,managementSource);
  904. }
  905. }
  906. user.setChildren(children);
  907. }
  908. }
  909. @Override
  910. public List<SysUser> getLeadListDeptId(String deptId) {
  911. return sysUserMapper.getLeadListDeptId(deptId);
  912. }
  913. /**
  914. * @version
  915. * @author: hxl
  916. * @Date: 2024/9/26 18:31
  917. * @Description: 设置领导人
  918. */
  919. @Override
  920. public void saveLeadId(DeptLeadVo deptLeadVo) {
  921. SysDept dept = baseMapper.selectById(deptLeadVo.getDeptId());
  922. if(StringUtils.isBlank(deptLeadVo.getLeadId())){
  923. dept.setLeaderId("");
  924. dept.setLeadername("");
  925. baseMapper.updateById(dept);
  926. }else{
  927. SysUser sysUser = sysUserMapper.selectById(deptLeadVo.getLeadId());
  928. dept.setLeaderId(deptLeadVo.getLeadId());
  929. dept.setLeadername(sysUser.getName());
  930. }
  931. baseMapper.updateById(dept);
  932. }
  933. }