TeacherbaseManagerServiceImpl.java 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825
  1. package com.xjrsoft.module.teacher.service.impl;
  2. import cn.dev33.satoken.secure.BCrypt;
  3. import cn.dev33.satoken.stp.StpUtil;
  4. import cn.hutool.core.bean.BeanUtil;
  5. import cn.hutool.core.collection.CollectionUtil;
  6. import cn.hutool.core.convert.Convert;
  7. import cn.hutool.core.util.StrUtil;
  8. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  9. import com.baomidou.mybatisplus.core.toolkit.StringPool;
  10. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  11. import com.github.yulichang.base.MPJBaseServiceImpl;
  12. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  13. import com.xjrsoft.common.constant.GlobalConstant;
  14. import com.xjrsoft.common.enums.DeleteMark;
  15. import com.xjrsoft.common.enums.GenderDictionaryEnum;
  16. import com.xjrsoft.common.enums.JobStateEnum;
  17. import com.xjrsoft.common.enums.RoleEnum;
  18. import com.xjrsoft.common.enums.TeaChangeTypeEnum;
  19. import com.xjrsoft.common.exception.MyException;
  20. import com.xjrsoft.common.utils.RedisUtil;
  21. import com.xjrsoft.common.utils.VoToColumnUtil;
  22. import com.xjrsoft.config.CommonPropertiesConfig;
  23. import com.xjrsoft.module.liteflow.node.WfTeacherDepartNode;
  24. import com.xjrsoft.module.organization.entity.*;
  25. import com.xjrsoft.module.organization.mapper.UserDeptRelationMapper;
  26. import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
  27. import com.xjrsoft.module.organization.service.*;
  28. import com.xjrsoft.module.system.entity.DictionaryDetail;
  29. import com.xjrsoft.module.system.entity.DictionaryItem;
  30. import com.xjrsoft.module.system.service.IDictionarydetailService;
  31. import com.xjrsoft.module.teacher.dto.AddXjrUserDto;
  32. import com.xjrsoft.module.teacher.dto.UpdateXjrUserDto;
  33. import com.xjrsoft.module.teacher.entity.*;
  34. import com.xjrsoft.module.teacher.mapper.*;
  35. import com.xjrsoft.module.teacher.service.IBaseTeacherChangeRecordService;
  36. import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
  37. import com.xjrsoft.module.textbook.entity.WfTextbookRecede;
  38. import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
  39. import com.xjrsoft.module.workflow.mapper.WorkflowFormRelationMapper;
  40. import lombok.AllArgsConstructor;
  41. import org.apache.commons.collections.CollectionUtils;
  42. import org.apache.commons.lang3.ObjectUtils;
  43. import org.apache.commons.lang3.StringUtils;
  44. import org.camunda.bpm.engine.history.HistoricProcessInstance;
  45. import org.springframework.stereotype.Service;
  46. import org.springframework.transaction.annotation.Transactional;
  47. import java.time.LocalDateTime;
  48. import java.util.*;
  49. import java.util.stream.Collectors;
  50. /**
  51. * @title: service
  52. * @Author 管理员
  53. * @Date: 2023-08-08
  54. * @Version 1.0
  55. */
  56. @Service
  57. @AllArgsConstructor
  58. public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMapper, XjrUser> implements ITeacherbaseManagerService {
  59. private final XjrUserMapper teacherbaseManagerXjrUserMapper;
  60. private final BaseTeacherMapper teacherbaseManagerBaseTeacherMapper;
  61. private final BaseTeacherContactMapper teacherbaseManagerBaseTeacherContactMapper;
  62. private final BaseTeacherEducationMapper teacherbaseManagerBaseTeacherEducationMapper;
  63. private final BaseTeacherEmployMapper teacherbaseManagerBaseTeacherEmployMapper;
  64. private final BaseTeacherFamilyMapper teacherbaseManagerBaseTeacherFamilyMapper;
  65. private final BaseTeacherFamilyMemberMapper teacherbaseManagerBaseTeacherFamilyMemberMapper;
  66. private final BaseTeacherRegularMapper teacherbaseManagerBaseTeacherRegularMapper;
  67. private final UserRoleRelationMapper userRoleRelationMapper;
  68. private final IUserDeptRelationService userDeptRelationService;
  69. private final RedisUtil redisUtil;
  70. private final UserDeptRelationMapper userDeptRelationMapper;
  71. private final IUserService userService;
  72. private final CommonPropertiesConfig propertiesConfig;
  73. private final IUserPostRelationService userPostRelationService;
  74. private final IDictionarydetailService dictionaryService;
  75. private final IDepartmentService departmentService;
  76. private final IPostService postService;
  77. private final BaseTeacherMapper baseTeacherMapper;
  78. private IDictionarydetailService dictionarydetailService;
  79. private WfTeacherDepartMapper wfTeacherDepartMapper;
  80. private BaseTeacherChangeRecordMapper baseTeacherChangeRecordMapper;
  81. private WorkflowFormRelationMapper workflowFormRelationMapper;
  82. @Override
  83. @Transactional(rollbackFor = Exception.class)
  84. public Boolean add(AddXjrUserDto dto) {
  85. XjrUser xjrUser = BeanUtil.toBean(dto, XjrUser.class);
  86. xjrUser.setCode(dto.getUserName());
  87. // 使用系统配置的默认密码
  88. xjrUser.setPassword(BCrypt.hashpw(propertiesConfig.getDefaultPassword(), BCrypt.gensalt()));
  89. teacherbaseManagerXjrUserMapper.insert(xjrUser);
  90. for (BaseTeacher baseTeacher : xjrUser.getBaseTeacherList()) {
  91. baseTeacher.setUserId(xjrUser.getId());
  92. if (!StrUtil.isNotBlank(baseTeacher.getJobState())) {
  93. baseTeacher.setIsNormal(1);
  94. } else {
  95. DictionaryDetail dictionaryDetail = dictionarydetailService.getOne(Wrappers.<DictionaryDetail>query()
  96. .lambda()
  97. .eq(DictionaryDetail::getCode, baseTeacher.getJobState())
  98. .inSql(DictionaryDetail::getItemId, "SELECT id from xjr_dictionary_item where code='job_state'")
  99. );
  100. if (dictionaryDetail != null) {
  101. if ("0".equals(dictionaryDetail.getExtendField1())) {
  102. baseTeacher.setIsNormal(0);
  103. } else {
  104. baseTeacher.setIsNormal(1);
  105. }
  106. }
  107. }
  108. teacherbaseManagerBaseTeacherMapper.insert(baseTeacher);
  109. }
  110. for (BaseTeacherContact baseTeacherContact : xjrUser.getBaseTeacherContactList()) {
  111. baseTeacherContact.setUserId(xjrUser.getId());
  112. teacherbaseManagerBaseTeacherContactMapper.insert(baseTeacherContact);
  113. }
  114. for (BaseTeacherEducation baseTeacherEducation : xjrUser.getBaseTeacherEducationList()) {
  115. baseTeacherEducation.setUserId(xjrUser.getId());
  116. teacherbaseManagerBaseTeacherEducationMapper.insert(baseTeacherEducation);
  117. }
  118. for (BaseTeacherEmploy baseTeacherEmploy : xjrUser.getBaseTeacherEmployList()) {
  119. baseTeacherEmploy.setUserId(xjrUser.getId());
  120. teacherbaseManagerBaseTeacherEmployMapper.insert(baseTeacherEmploy);
  121. }
  122. for (BaseTeacherFamily baseTeacherFamily : xjrUser.getBaseTeacherFamilyList()) {
  123. baseTeacherFamily.setUserId(xjrUser.getId());
  124. teacherbaseManagerBaseTeacherFamilyMapper.insert(baseTeacherFamily);
  125. }
  126. for (BaseTeacherFamilyMember baseTeacherFamilyMember : xjrUser.getBaseTeacherFamilyMemberList()) {
  127. baseTeacherFamilyMember.setUserId(xjrUser.getId());
  128. teacherbaseManagerBaseTeacherFamilyMemberMapper.insert(baseTeacherFamilyMember);
  129. }
  130. for (BaseTeacherRegular baseTeacherRegular : xjrUser.getBaseTeacherRegularList()) {
  131. baseTeacherRegular.setUserId(xjrUser.getId());
  132. teacherbaseManagerBaseTeacherRegularMapper.insert(baseTeacherRegular);
  133. }
  134. List<UserDeptRelation> userDeptRelationList = new ArrayList<>();
  135. if (StrUtil.isNotBlank(dto.getDepartmentIds())) {
  136. String allDeptIdStr = StrUtil.join(StringPool.COMMA, dto.getDepartmentIds());
  137. List<Long> departmentIds = Arrays.stream(allDeptIdStr.split(StringPool.COMMA)).map(Convert::toLong).collect(Collectors.toList());
  138. if (CollectionUtil.isNotEmpty(departmentIds)) {
  139. for (Long deptId : departmentIds) {
  140. //将用户所选部门保存到关联表中
  141. UserDeptRelation userDeptRelation = new UserDeptRelation();
  142. userDeptRelation.setUserId(xjrUser.getId());
  143. userDeptRelation.setDeptId(deptId);
  144. userDeptRelationList.add(userDeptRelation);
  145. }
  146. }
  147. userDeptRelationService.saveBatch(userDeptRelationList);
  148. }
  149. List<UserPostRelation> userPostRelationList = new ArrayList<>();
  150. if (StrUtil.isNotBlank(dto.getPostIds())) {
  151. String allPostIdStr = StrUtil.join(StringPool.COMMA, dto.getPostIds());
  152. List<Long> postIds = Arrays.stream(allPostIdStr.split(StringPool.COMMA)).map(Convert::toLong).collect(Collectors.toList());
  153. if (CollectionUtil.isNotEmpty(postIds)) {
  154. for (Long postId : postIds) {
  155. //将用户所选岗位保存到关联表中
  156. UserPostRelation userPostRelation = new UserPostRelation();
  157. userPostRelation.setUserId(xjrUser.getId());
  158. userPostRelation.setPostId(postId);
  159. userPostRelationList.add(userPostRelation);
  160. }
  161. }
  162. userPostRelationService.saveBatch(userPostRelationList);
  163. }
  164. // 添加角色
  165. UserRoleRelation userRoleRelation = new UserRoleRelation();
  166. userRoleRelation.setUserId(xjrUser.getId());
  167. userRoleRelation.setRoleId(RoleEnum.TEACHER.getCode());
  168. userRoleRelationMapper.insert(userRoleRelation);
  169. List<User> list = userService.list();
  170. list.add(BeanUtil.toBean(xjrUser, User.class));
  171. redisUtil.set(GlobalConstant.USER_CACHE_KEY, list);
  172. List<UserDeptRelation> deptRelationList = userDeptRelationMapper.selectList(Wrappers.lambdaQuery(UserDeptRelation.class));
  173. redisUtil.set(GlobalConstant.USER_DEPT_RELATION_CACHE_KEY, deptRelationList);
  174. List<UserRoleRelation> userRoleRelationList = userRoleRelationMapper.selectList(Wrappers.lambdaQuery(UserRoleRelation.class));
  175. redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
  176. return true;
  177. }
  178. @Override
  179. @Transactional(rollbackFor = Exception.class)
  180. public Boolean update(UpdateXjrUserDto dto) {
  181. XjrUser old = this.getByIdDeep(dto.getId());
  182. if(ObjectUtils.isEmpty(old)){
  183. throw new MyException("教职工信息不存在");
  184. }
  185. // 处理在职状态
  186. // 获取字典值
  187. List<DictionaryDetail> detailList = dictionarydetailService.list(
  188. new MPJLambdaWrapper<DictionaryDetail>()
  189. .select(DictionaryDetail::getId)
  190. .select(DictionaryDetail.class, x -> VoToColumnUtil.fieldsToColumns(DictionaryDetail.class).contains(x.getProperty()))
  191. .leftJoin(DictionaryItem.class, DictionaryItem::getId, DictionaryDetail::getItemId)
  192. .eq(DictionaryItem::getCode, "job_state")
  193. );
  194. Map<String, String> dictionaryDetailMap = detailList.stream()
  195. .collect(Collectors.toMap(DictionaryDetail::getCode, DictionaryDetail::getName));
  196. // 定义常量
  197. final String NO_JOB_STATE = "无在职状态";
  198. // 获取新旧在职状态
  199. String oldJobState = null;
  200. String newJobState = null;
  201. if (CollectionUtils.isNotEmpty(old.getBaseTeacherList()) && StringUtils.isNotEmpty(old.getBaseTeacherList().get(0).getJobState())) {
  202. oldJobState = old.getBaseTeacherList().get(0).getJobState();
  203. }
  204. if (CollectionUtils.isNotEmpty(dto.getBaseTeacherList()) && StringUtils.isNotEmpty(dto.getBaseTeacherList().get(0).getJobState())) {
  205. newJobState = dto.getBaseTeacherList().get(0).getJobState();
  206. }
  207. // 只有在职状态被修改时,才触发 insert
  208. if (!Objects.equals(oldJobState, newJobState)) {
  209. BaseTeacherChangeRecord insetBaseTeacherChangeRecord = new BaseTeacherChangeRecord();
  210. insetBaseTeacherChangeRecord.setCreateUserId(StpUtil.getLoginIdAsLong());
  211. insetBaseTeacherChangeRecord.setCreateDate(new Date());
  212. insetBaseTeacherChangeRecord.setUserId(dto.getId());
  213. insetBaseTeacherChangeRecord.setChangeType(TeaChangeTypeEnum.TCT0001.getCode());
  214. // 设置旧状态
  215. if (StringUtils.isNotEmpty(oldJobState)) {
  216. insetBaseTeacherChangeRecord.setOldJobState(dictionaryDetailMap.getOrDefault(oldJobState, oldJobState));
  217. } else {
  218. insetBaseTeacherChangeRecord.setOldJobState(NO_JOB_STATE);
  219. }
  220. // 设置新状态
  221. if (StringUtils.isNotEmpty(newJobState)) {
  222. insetBaseTeacherChangeRecord.setNewJobState(dictionaryDetailMap.getOrDefault(newJobState, newJobState));
  223. } else {
  224. insetBaseTeacherChangeRecord.setNewJobState(NO_JOB_STATE);
  225. }
  226. // 插入变更记录
  227. baseTeacherChangeRecordMapper.insert(insetBaseTeacherChangeRecord);
  228. //如果在职状态改为了非在职,禁用账号,并清空海康相关信息
  229. if(!JobStateEnum.isBeOnTheJobByCode(oldJobState)){
  230. disabledUser(dto.getId());
  231. }
  232. }
  233. XjrUser xjrUser = BeanUtil.toBean(dto, XjrUser.class);
  234. teacherbaseManagerXjrUserMapper.updateById(xjrUser);
  235. //先删除再新增
  236. userDeptRelationService.remove(Wrappers.<UserDeptRelation>query().lambda().eq(UserDeptRelation::getUserId, xjrUser.getId()));
  237. List<UserDeptRelation> userDeptRelationList = new ArrayList<>();
  238. if (StrUtil.isNotBlank(dto.getDepartmentIds())) {
  239. String allDeptIdStr = StrUtil.join(StringPool.COMMA, dto.getDepartmentIds());
  240. List<Long> departmentIds = Arrays.stream(allDeptIdStr.split(StringPool.COMMA)).map(Convert::toLong).collect(Collectors.toList());
  241. if (CollectionUtil.isNotEmpty(departmentIds)) {
  242. for (Long deptId : departmentIds) {
  243. //将用户所选部门保存到关联表中
  244. UserDeptRelation userDeptRelation = new UserDeptRelation();
  245. userDeptRelation.setUserId(xjrUser.getId());
  246. userDeptRelation.setDeptId(deptId);
  247. userDeptRelationList.add(userDeptRelation);
  248. }
  249. }
  250. userDeptRelationService.saveBatch(userDeptRelationList);
  251. }
  252. userPostRelationService.remove(Wrappers.<UserPostRelation>query().lambda().eq(UserPostRelation::getUserId, xjrUser.getId()));
  253. List<UserPostRelation> userPostRelationList = new ArrayList<>();
  254. if (StrUtil.isNotBlank(dto.getPostIds())) {
  255. String allPostIdStr = StrUtil.join(StringPool.COMMA, dto.getPostIds());
  256. List<Long> postIds = Arrays.stream(allPostIdStr.split(StringPool.COMMA)).map(Convert::toLong).collect(Collectors.toList());
  257. if (CollectionUtil.isNotEmpty(postIds)) {
  258. for (Long postId : postIds) {
  259. //将用户所选岗位保存到关联表中
  260. UserPostRelation userPostRelation = new UserPostRelation();
  261. userPostRelation.setUserId(xjrUser.getId());
  262. userPostRelation.setPostId(postId);
  263. userPostRelationList.add(userPostRelation);
  264. }
  265. }
  266. userPostRelationService.saveBatch(userPostRelationList);
  267. }
  268. //********************************* BaseTeacher 增删改 开始 *******************************************/
  269. {
  270. // 查出所有子级的id
  271. List<BaseTeacher> baseTeacherList = teacherbaseManagerBaseTeacherMapper.selectList(Wrappers.lambdaQuery(BaseTeacher.class).eq(BaseTeacher::getUserId, xjrUser.getId()).select(BaseTeacher::getId));
  272. List<Long> baseTeacherIds = baseTeacherList.stream().map(BaseTeacher::getId).collect(Collectors.toList());
  273. //原有子表单 没有被删除的主键
  274. List<Long> baseTeacherOldIds = xjrUser.getBaseTeacherList().stream().map(BaseTeacher::getId).filter(Objects::nonNull).collect(Collectors.toList());
  275. //找到需要删除的id
  276. List<Long> baseTeacherRemoveIds = baseTeacherIds.stream().filter(item -> !baseTeacherOldIds.contains(item)).collect(Collectors.toList());
  277. for (BaseTeacher baseTeacher : xjrUser.getBaseTeacherList()) {
  278. if (!StrUtil.isNotBlank(baseTeacher.getJobState())) {
  279. baseTeacher.setIsNormal(1);
  280. } else {
  281. DictionaryDetail dictionaryDetail = dictionarydetailService.getOne(Wrappers.<DictionaryDetail>query()
  282. .lambda()
  283. .eq(DictionaryDetail::getCode, baseTeacher.getJobState())
  284. .inSql(DictionaryDetail::getItemId, "SELECT id from xjr_dictionary_item where code='job_state'")
  285. );
  286. if (dictionaryDetail != null) {
  287. if ("0".equals(dictionaryDetail.getExtendField1())) {
  288. baseTeacher.setIsNormal(0);
  289. } else {
  290. baseTeacher.setIsNormal(1);
  291. }
  292. }
  293. }
  294. //如果不等于空则修改
  295. if (baseTeacher.getId() != null) {
  296. teacherbaseManagerBaseTeacherMapper.updateById(baseTeacher);
  297. }
  298. //如果等于空 则新增
  299. else {
  300. //已经不存在的id 删除
  301. baseTeacher.setUserId(xjrUser.getId());
  302. teacherbaseManagerBaseTeacherMapper.insert(baseTeacher);
  303. }
  304. }
  305. //已经不存在的id 删除
  306. if (baseTeacherRemoveIds.size() > 0) {
  307. teacherbaseManagerBaseTeacherMapper.deleteBatchIds(baseTeacherRemoveIds);
  308. }
  309. }
  310. //********************************* BaseTeacher 增删改 结束 *******************************************/
  311. //********************************* BaseTeacherContact 增删改 开始 *******************************************/
  312. {
  313. // 查出所有子级的id
  314. List<BaseTeacherContact> baseTeacherContactList = teacherbaseManagerBaseTeacherContactMapper.selectList(Wrappers.lambdaQuery(BaseTeacherContact.class).eq(BaseTeacherContact::getUserId, xjrUser.getId()).select(BaseTeacherContact::getId));
  315. List<Long> baseTeacherContactIds = baseTeacherContactList.stream().map(BaseTeacherContact::getId).collect(Collectors.toList());
  316. //原有子表单 没有被删除的主键
  317. List<Long> baseTeacherContactOldIds = xjrUser.getBaseTeacherContactList().stream().map(BaseTeacherContact::getId).filter(Objects::nonNull).collect(Collectors.toList());
  318. //找到需要删除的id
  319. List<Long> baseTeacherContactRemoveIds = baseTeacherContactIds.stream().filter(item -> !baseTeacherContactOldIds.contains(item)).collect(Collectors.toList());
  320. for (BaseTeacherContact baseTeacherContact : xjrUser.getBaseTeacherContactList()) {
  321. //如果不等于空则修改
  322. if (baseTeacherContact.getId() != null) {
  323. teacherbaseManagerBaseTeacherContactMapper.updateById(baseTeacherContact);
  324. }
  325. //如果等于空 则新增
  326. else {
  327. //已经不存在的id 删除
  328. baseTeacherContact.setUserId(xjrUser.getId());
  329. teacherbaseManagerBaseTeacherContactMapper.insert(baseTeacherContact);
  330. }
  331. }
  332. //已经不存在的id 删除
  333. if (baseTeacherContactRemoveIds.size() > 0) {
  334. teacherbaseManagerBaseTeacherContactMapper.deleteBatchIds(baseTeacherContactRemoveIds);
  335. }
  336. }
  337. //********************************* BaseTeacherContact 增删改 结束 *******************************************/
  338. //********************************* BaseTeacherEducation 增删改 开始 *******************************************/
  339. {
  340. // 查出所有子级的id
  341. List<BaseTeacherEducation> baseTeacherEducationList = teacherbaseManagerBaseTeacherEducationMapper.selectList(Wrappers.lambdaQuery(BaseTeacherEducation.class).eq(BaseTeacherEducation::getUserId, xjrUser.getId()).select(BaseTeacherEducation::getId));
  342. List<Long> baseTeacherEducationIds = baseTeacherEducationList.stream().map(BaseTeacherEducation::getId).collect(Collectors.toList());
  343. //原有子表单 没有被删除的主键
  344. List<Long> baseTeacherEducationOldIds = xjrUser.getBaseTeacherEducationList().stream().map(BaseTeacherEducation::getId).filter(Objects::nonNull).collect(Collectors.toList());
  345. //找到需要删除的id
  346. List<Long> baseTeacherEducationRemoveIds = baseTeacherEducationIds.stream().filter(item -> !baseTeacherEducationOldIds.contains(item)).collect(Collectors.toList());
  347. for (BaseTeacherEducation baseTeacherEducation : xjrUser.getBaseTeacherEducationList()) {
  348. //如果不等于空则修改
  349. if (baseTeacherEducation.getId() != null) {
  350. teacherbaseManagerBaseTeacherEducationMapper.updateById(baseTeacherEducation);
  351. }
  352. //如果等于空 则新增
  353. else {
  354. //已经不存在的id 删除
  355. baseTeacherEducation.setUserId(xjrUser.getId());
  356. teacherbaseManagerBaseTeacherEducationMapper.insert(baseTeacherEducation);
  357. }
  358. }
  359. //已经不存在的id 删除
  360. if (baseTeacherEducationRemoveIds.size() > 0) {
  361. teacherbaseManagerBaseTeacherEducationMapper.deleteBatchIds(baseTeacherEducationRemoveIds);
  362. }
  363. }
  364. //********************************* BaseTeacherEducation 增删改 结束 *******************************************/
  365. //********************************* BaseTeacherEmploy 增删改 开始 *******************************************/
  366. {
  367. // 查出所有子级的id
  368. List<BaseTeacherEmploy> baseTeacherEmployList = teacherbaseManagerBaseTeacherEmployMapper.selectList(Wrappers.lambdaQuery(BaseTeacherEmploy.class).eq(BaseTeacherEmploy::getUserId, xjrUser.getId()).select(BaseTeacherEmploy::getId));
  369. List<Long> baseTeacherEmployIds = baseTeacherEmployList.stream().map(BaseTeacherEmploy::getId).collect(Collectors.toList());
  370. //原有子表单 没有被删除的主键
  371. List<Long> baseTeacherEmployOldIds = xjrUser.getBaseTeacherEmployList().stream().map(BaseTeacherEmploy::getId).filter(Objects::nonNull).collect(Collectors.toList());
  372. //找到需要删除的id
  373. List<Long> baseTeacherEmployRemoveIds = baseTeacherEmployIds.stream().filter(item -> !baseTeacherEmployOldIds.contains(item)).collect(Collectors.toList());
  374. for (BaseTeacherEmploy baseTeacherEmploy : xjrUser.getBaseTeacherEmployList()) {
  375. //如果不等于空则修改
  376. if (baseTeacherEmploy.getId() != null) {
  377. teacherbaseManagerBaseTeacherEmployMapper.updateById(baseTeacherEmploy);
  378. }
  379. //如果等于空 则新增
  380. else {
  381. //已经不存在的id 删除
  382. baseTeacherEmploy.setUserId(xjrUser.getId());
  383. teacherbaseManagerBaseTeacherEmployMapper.insert(baseTeacherEmploy);
  384. }
  385. }
  386. //已经不存在的id 删除
  387. if (baseTeacherEmployRemoveIds.size() > 0) {
  388. teacherbaseManagerBaseTeacherEmployMapper.deleteBatchIds(baseTeacherEmployRemoveIds);
  389. }
  390. }
  391. //********************************* BaseTeacherEmploy 增删改 结束 *******************************************/
  392. //********************************* BaseTeacherFamily 增删改 开始 *******************************************/
  393. {
  394. // 查出所有子级的id
  395. List<BaseTeacherFamily> baseTeacherFamilyList = teacherbaseManagerBaseTeacherFamilyMapper.selectList(Wrappers.lambdaQuery(BaseTeacherFamily.class).eq(BaseTeacherFamily::getUserId, xjrUser.getId()).select(BaseTeacherFamily::getId));
  396. List<Long> baseTeacherFamilyIds = baseTeacherFamilyList.stream().map(BaseTeacherFamily::getId).collect(Collectors.toList());
  397. //原有子表单 没有被删除的主键
  398. List<Long> baseTeacherFamilyOldIds = xjrUser.getBaseTeacherFamilyList().stream().map(BaseTeacherFamily::getId).filter(Objects::nonNull).collect(Collectors.toList());
  399. //找到需要删除的id
  400. List<Long> baseTeacherFamilyRemoveIds = baseTeacherFamilyIds.stream().filter(item -> !baseTeacherFamilyOldIds.contains(item)).collect(Collectors.toList());
  401. for (BaseTeacherFamily baseTeacherFamily : xjrUser.getBaseTeacherFamilyList()) {
  402. //如果不等于空则修改
  403. if (baseTeacherFamily.getId() != null) {
  404. teacherbaseManagerBaseTeacherFamilyMapper.updateById(baseTeacherFamily);
  405. }
  406. //如果等于空 则新增
  407. else {
  408. //已经不存在的id 删除
  409. baseTeacherFamily.setUserId(xjrUser.getId());
  410. teacherbaseManagerBaseTeacherFamilyMapper.insert(baseTeacherFamily);
  411. }
  412. }
  413. //已经不存在的id 删除
  414. if (baseTeacherFamilyRemoveIds.size() > 0) {
  415. teacherbaseManagerBaseTeacherFamilyMapper.deleteBatchIds(baseTeacherFamilyRemoveIds);
  416. }
  417. }
  418. //********************************* BaseTeacherFamily 增删改 结束 *******************************************/
  419. //********************************* BaseTeacherFamilyMember 增删改 开始 *******************************************/
  420. {
  421. // 查出所有子级的id
  422. List<BaseTeacherFamilyMember> baseTeacherFamilyMemberList = teacherbaseManagerBaseTeacherFamilyMemberMapper.selectList(Wrappers.lambdaQuery(BaseTeacherFamilyMember.class).eq(BaseTeacherFamilyMember::getUserId, xjrUser.getId()).select(BaseTeacherFamilyMember::getId));
  423. List<Long> baseTeacherFamilyMemberIds = baseTeacherFamilyMemberList.stream().map(BaseTeacherFamilyMember::getId).collect(Collectors.toList());
  424. //原有子表单 没有被删除的主键
  425. List<Long> baseTeacherFamilyMemberOldIds = xjrUser.getBaseTeacherFamilyMemberList().stream().map(BaseTeacherFamilyMember::getId).filter(Objects::nonNull).collect(Collectors.toList());
  426. //找到需要删除的id
  427. List<Long> baseTeacherFamilyMemberRemoveIds = baseTeacherFamilyMemberIds.stream().filter(item -> !baseTeacherFamilyMemberOldIds.contains(item)).collect(Collectors.toList());
  428. for (BaseTeacherFamilyMember baseTeacherFamilyMember : xjrUser.getBaseTeacherFamilyMemberList()) {
  429. //如果不等于空则修改
  430. if (baseTeacherFamilyMember.getId() != null) {
  431. teacherbaseManagerBaseTeacherFamilyMemberMapper.updateById(baseTeacherFamilyMember);
  432. }
  433. //如果等于空 则新增
  434. else {
  435. //已经不存在的id 删除
  436. baseTeacherFamilyMember.setUserId(xjrUser.getId());
  437. teacherbaseManagerBaseTeacherFamilyMemberMapper.insert(baseTeacherFamilyMember);
  438. }
  439. }
  440. //已经不存在的id 删除
  441. if (baseTeacherFamilyMemberRemoveIds.size() > 0) {
  442. teacherbaseManagerBaseTeacherFamilyMemberMapper.deleteBatchIds(baseTeacherFamilyMemberRemoveIds);
  443. }
  444. }
  445. //********************************* BaseTeacherFamilyMember 增删改 结束 *******************************************/
  446. //********************************* BaseTeacherRegular 增删改 开始 *******************************************/
  447. {
  448. // 查出所有子级的id
  449. List<BaseTeacherRegular> baseTeacherRegularList = teacherbaseManagerBaseTeacherRegularMapper.selectList(Wrappers.lambdaQuery(BaseTeacherRegular.class).eq(BaseTeacherRegular::getUserId, xjrUser.getId()).select(BaseTeacherRegular::getId));
  450. List<Long> baseTeacherRegularIds = baseTeacherRegularList.stream().map(BaseTeacherRegular::getId).collect(Collectors.toList());
  451. //原有子表单 没有被删除的主键
  452. List<Long> baseTeacherRegularOldIds = xjrUser.getBaseTeacherRegularList().stream().map(BaseTeacherRegular::getId).filter(Objects::nonNull).collect(Collectors.toList());
  453. //找到需要删除的id
  454. List<Long> baseTeacherRegularRemoveIds = baseTeacherRegularIds.stream().filter(item -> !baseTeacherRegularOldIds.contains(item)).collect(Collectors.toList());
  455. for (BaseTeacherRegular baseTeacherRegular : xjrUser.getBaseTeacherRegularList()) {
  456. //如果不等于空则修改
  457. if (baseTeacherRegular.getId() != null) {
  458. teacherbaseManagerBaseTeacherRegularMapper.updateById(baseTeacherRegular);
  459. }
  460. //如果等于空 则新增
  461. else {
  462. //已经不存在的id 删除
  463. baseTeacherRegular.setUserId(xjrUser.getId());
  464. teacherbaseManagerBaseTeacherRegularMapper.insert(baseTeacherRegular);
  465. }
  466. }
  467. //已经不存在的id 删除
  468. if (baseTeacherRegularRemoveIds.size() > 0) {
  469. teacherbaseManagerBaseTeacherRegularMapper.deleteBatchIds(baseTeacherRegularRemoveIds);
  470. }
  471. }
  472. //********************************* BaseTeacherRegular 增删改 结束 *******************************************/
  473. return true;
  474. }
  475. @Override
  476. @Transactional(rollbackFor = Exception.class)
  477. public Boolean delete(List<Long> ids) {
  478. teacherbaseManagerXjrUserMapper.deleteBatchIds(ids);
  479. teacherbaseManagerBaseTeacherMapper.delete(Wrappers.lambdaQuery(BaseTeacher.class).in(BaseTeacher::getUserId, ids));
  480. teacherbaseManagerBaseTeacherContactMapper.delete(Wrappers.lambdaQuery(BaseTeacherContact.class).in(BaseTeacherContact::getUserId, ids));
  481. teacherbaseManagerBaseTeacherEducationMapper.delete(Wrappers.lambdaQuery(BaseTeacherEducation.class).in(BaseTeacherEducation::getUserId, ids));
  482. teacherbaseManagerBaseTeacherEmployMapper.delete(Wrappers.lambdaQuery(BaseTeacherEmploy.class).in(BaseTeacherEmploy::getUserId, ids));
  483. teacherbaseManagerBaseTeacherFamilyMapper.delete(Wrappers.lambdaQuery(BaseTeacherFamily.class).in(BaseTeacherFamily::getUserId, ids));
  484. teacherbaseManagerBaseTeacherFamilyMemberMapper.delete(Wrappers.lambdaQuery(BaseTeacherFamilyMember.class).in(BaseTeacherFamilyMember::getUserId, ids));
  485. teacherbaseManagerBaseTeacherRegularMapper.delete(Wrappers.lambdaQuery(BaseTeacherRegular.class).in(BaseTeacherRegular::getUserId, ids));
  486. return true;
  487. }
  488. /**
  489. * 导入,根据第一个工号查询是否有相关信息
  490. * 1、批量新增或者修改xjr_user、base_teacher、xjr_user_dept_relation、xjr_user_post_relation
  491. * 2、更新redis里面的缓存
  492. *
  493. * @param excelDataList 导入的数据
  494. * @return 成功
  495. */
  496. @Override
  497. @Transactional(rollbackFor = Exception.class)
  498. public Boolean importData(List<Map<Integer, Object>> excelDataList) {
  499. List<User> userList = userService.list(
  500. new MPJLambdaWrapper<User>()
  501. .select(User::getId)
  502. .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
  503. .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
  504. );
  505. Map<String, User> userMap = userList.stream().collect(Collectors.toMap(User::getUserName, x -> x));
  506. List<BaseTeacher> teacherList = teacherbaseManagerBaseTeacherMapper.selectJoinList(BaseTeacher.class,
  507. new MPJLambdaWrapper<BaseTeacher>()
  508. .select(BaseTeacher::getId)
  509. .select(BaseTeacher.class, x -> VoToColumnUtil.fieldsToColumns(BaseTeacher.class).contains(x.getProperty()))
  510. .innerJoin(User.class, User::getId, BaseTeacher::getUserId)
  511. );
  512. Map<Long, BaseTeacher> teacherMap = teacherList.stream().collect(Collectors.toMap(BaseTeacher::getUserId, x -> x));
  513. List<Long> itemList = new ArrayList<>();
  514. itemList.add(2023000000000000016L);
  515. itemList.add(2023000000000000006L);
  516. List<DictionaryDetail> dictionaryList = dictionaryService.list(
  517. new QueryWrapper<DictionaryDetail>().lambda()
  518. .in(DictionaryDetail::getItemId, itemList)
  519. .eq(DictionaryDetail::getDeleteMark, DeleteMark.NODELETE.getCode())
  520. );
  521. Map<String, String> dictionaryMap = dictionaryList.stream().collect(Collectors.toMap(DictionaryDetail::getName, DictionaryDetail::getCode));
  522. List<Department> departmentList = departmentService.list(
  523. new QueryWrapper<Department>().lambda()
  524. .eq(Department::getDeleteMark, DeleteMark.NODELETE.getCode())
  525. );
  526. Map<String, Long> departmentMap = departmentList.stream().collect(Collectors.toMap(Department::getName, Department::getId));
  527. List<Post> postList = postService.list(
  528. new QueryWrapper<Post>().lambda()
  529. .eq(Post::getDeleteMark, DeleteMark.NODELETE.getCode())
  530. );
  531. Map<String, Long> postMap = postList.stream().collect(Collectors.toMap(Post::getName, Post::getId));
  532. List<UserPostRelation> postRelations = userPostRelationService.list(
  533. new MPJLambdaWrapper<UserPostRelation>()
  534. .select(UserPostRelation::getId)
  535. .select(UserPostRelation.class, x -> VoToColumnUtil.fieldsToColumns(UserPostRelation.class).contains(x.getProperty()))
  536. .innerJoin(User.class, User::getId, UserPostRelation::getUserId)
  537. .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
  538. );
  539. Map<Long, List<Long>> userPostMap = postRelations.stream()
  540. .collect(Collectors.groupingBy(UserPostRelation::getUserId, Collectors.mapping(UserPostRelation::getPostId, Collectors.toList())));
  541. List<UserDeptRelation> deptRelations = userDeptRelationMapper.selectList(
  542. new MPJLambdaWrapper<UserDeptRelation>()
  543. .select(UserDeptRelation::getId)
  544. .select(UserDeptRelation.class, x -> VoToColumnUtil.fieldsToColumns(UserDeptRelation.class).contains(x.getProperty()))
  545. .innerJoin(User.class, User::getId, UserDeptRelation::getUserId)
  546. .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
  547. );
  548. Map<Long, List<Long>> userDeptMap = postRelations.stream()
  549. .collect(Collectors.groupingBy(UserPostRelation::getUserId, Collectors.mapping(UserPostRelation::getPostId, Collectors.toList())));
  550. List<User> updateUserList = new ArrayList<>();
  551. List<BaseTeacher> updateTeacherList = new ArrayList<>();
  552. List<UserDeptRelation> updateDeptList = new ArrayList<>();
  553. List<UserPostRelation> updatePostList = new ArrayList<>();
  554. for (Map<Integer, Object> rowData : excelDataList) {
  555. String jobCode = rowData.get(0).toString();
  556. if (userMap.containsKey(jobCode)) {
  557. User user = userMap.get(jobCode);
  558. user.setName(rowData.get(1).toString());
  559. user.setGender(GenderDictionaryEnum.getCode(rowData.get(2).toString()));
  560. user.setCredentialType(dictionaryMap.get(rowData.get(3).toString()));
  561. user.setCredentialNumber(rowData.get(4).toString());
  562. user.setMobile(rowData.get(5).toString());
  563. updateUserList.add(user);
  564. BaseTeacher teacher = teacherMap.get(user.getId());
  565. teacher.setEmployType(dictionaryMap.get(rowData.get(6).toString()));
  566. updateTeacherList.add(teacher);
  567. List<Long> deptIds = userDeptMap.get(user.getId());
  568. if (deptIds == null || !deptIds.contains(departmentMap.get(rowData.get(7).toString()))) {
  569. UserDeptRelation userDeptRelation = new UserDeptRelation();
  570. userDeptRelation.setDeptId(departmentMap.get(rowData.get(7).toString()));
  571. userDeptRelation.setUserId(user.getId());
  572. updateDeptList.add(userDeptRelation);
  573. }
  574. List<Long> postIds = userPostMap.get(user.getId());
  575. if (postIds == null || !postIds.contains(postMap.get(rowData.get(8).toString()))) {
  576. UserPostRelation postRelation = new UserPostRelation();
  577. postRelation.setPostId(postMap.get(rowData.get(8).toString()));
  578. postRelation.setUserId(user.getId());
  579. updatePostList.add(postRelation);
  580. }
  581. continue;
  582. }
  583. User user = new User();
  584. user.setUserName(rowData.get(0).toString());
  585. user.setPassword(BCrypt.hashpw(propertiesConfig.getDefaultPassword(), BCrypt.gensalt()));
  586. user.setIsChangePassword(1);
  587. user.setName(rowData.get(1).toString());
  588. user.setGender(GenderDictionaryEnum.getCode(rowData.get(2).toString()));
  589. user.setCredentialType(dictionaryMap.get(rowData.get(3).toString()));
  590. user.setCredentialNumber(rowData.get(4).toString());
  591. user.setMobile(rowData.get(5).toString());
  592. user.setCreateDate(LocalDateTime.now());
  593. userService.save(user);
  594. BaseTeacher teacher = new BaseTeacher();
  595. teacher.setEmployType(dictionaryMap.get(rowData.get(6).toString()));
  596. teacher.setUserId(user.getId());
  597. teacher.setCreateDate(LocalDateTime.now());
  598. teacherbaseManagerBaseTeacherMapper.insert(teacher);
  599. UserDeptRelation userDeptRelation = new UserDeptRelation();
  600. userDeptRelation.setDeptId(departmentMap.get(rowData.get(7).toString()));
  601. userDeptRelation.setUserId(user.getId());
  602. userDeptRelationMapper.insert(userDeptRelation);
  603. UserPostRelation postRelation = new UserPostRelation();
  604. postRelation.setPostId(postMap.get(rowData.get(8).toString()));
  605. postRelation.setUserId(user.getId());
  606. userPostRelationService.save(postRelation);
  607. UserRoleRelation roleRelation = new UserRoleRelation();
  608. roleRelation.setUserId(user.getId());
  609. roleRelation.setRoleId(RoleEnum.TEACHER.getCode());
  610. userRoleRelationMapper.insert(roleRelation);
  611. }
  612. if (!updateUserList.isEmpty()) {
  613. userService.updateBatchById(updateUserList);
  614. }
  615. if (!updateDeptList.isEmpty()) {
  616. for (UserDeptRelation relation : updateDeptList) {
  617. userDeptRelationMapper.insert(relation);
  618. }
  619. }
  620. if (!updatePostList.isEmpty()) {
  621. userPostRelationService.saveBatch(updatePostList);
  622. }
  623. if (!updateTeacherList.isEmpty()) {
  624. for (BaseTeacher teacher : updateTeacherList) {
  625. teacherbaseManagerBaseTeacherMapper.updateById(teacher);
  626. }
  627. }
  628. List<User> list = userService.list();
  629. redisUtil.set(GlobalConstant.USER_CACHE_KEY, list);
  630. List<UserDeptRelation> deptRelationList = userDeptRelationMapper.selectList(Wrappers.lambdaQuery(UserDeptRelation.class));
  631. redisUtil.set(GlobalConstant.USER_DEPT_RELATION_CACHE_KEY, deptRelationList);
  632. List<UserRoleRelation> userRoleRelationList = userRoleRelationMapper.selectList(Wrappers.lambdaQuery(UserRoleRelation.class));
  633. redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
  634. List<UserPostRelation> postRelationList = userPostRelationService.list(Wrappers.lambdaQuery(UserPostRelation.class));
  635. redisUtil.set(GlobalConstant.USER_POST_RELATION_CACHE_KEY, postRelationList);
  636. return true;
  637. }
  638. @Override
  639. @Transactional(rollbackFor = Exception.class)
  640. public void changeIsNormal(String jobState, Integer isNormal) {
  641. List<BaseTeacher> baseTeacherList = teacherbaseManagerBaseTeacherMapper.selectList(Wrappers.lambdaQuery(BaseTeacher.class)
  642. .eq(BaseTeacher::getJobState, jobState));
  643. for (BaseTeacher baseTeacher : baseTeacherList) {
  644. baseTeacher.setIsNormal(isNormal);
  645. teacherbaseManagerBaseTeacherMapper.updateById(baseTeacher);
  646. }
  647. }
  648. @Override
  649. @Transactional(rollbackFor = Exception.class)
  650. public void teacherDepartDataHandle(Long formId) {
  651. WfTeacherDepart wfTextbookRecede = wfTeacherDepartMapper.selectById(formId);
  652. Date nowDate = new Date();
  653. // 根据数据id找到所在流程得状态
  654. WorkflowFormRelation workflowFormRelation = workflowFormRelationMapper.selectOne(
  655. Wrappers.lambdaQuery(WorkflowFormRelation.class)
  656. .eq(WorkflowFormRelation::getFormKeyValue, formId)
  657. );
  658. if (ObjectUtils.isNotEmpty(wfTextbookRecede)
  659. && ObjectUtils.isNotEmpty(workflowFormRelation)
  660. && HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
  661. ) {
  662. XjrUser old = this.getByIdDeep(wfTextbookRecede.getApplicantUserId());
  663. if(ObjectUtils.isEmpty(old)){
  664. throw new MyException("教职工信息不存在");
  665. }
  666. // 处理在职状态
  667. // 更新教职工在职状态
  668. List<BaseTeacher> baseTeacherList = old.getBaseTeacherList();
  669. BaseTeacher updateBaseTeacher;
  670. for (BaseTeacher baseTeacher : baseTeacherList){
  671. updateBaseTeacher = new BaseTeacher();
  672. updateBaseTeacher.setId(baseTeacher.getId());
  673. updateBaseTeacher.setJobState("JOB_LZ");
  674. baseTeacherMapper.updateById(updateBaseTeacher);
  675. }
  676. // 处理变更记录
  677. // 获取字典值
  678. List<DictionaryDetail> detailList = dictionarydetailService.list(
  679. new MPJLambdaWrapper<DictionaryDetail>()
  680. .select(DictionaryDetail::getId)
  681. .select(DictionaryDetail.class, x -> VoToColumnUtil.fieldsToColumns(DictionaryDetail.class).contains(x.getProperty()))
  682. .leftJoin(DictionaryItem.class, DictionaryItem::getId, DictionaryDetail::getItemId)
  683. .eq(DictionaryItem::getCode, "job_state")
  684. );
  685. Map<String, String> dictionaryDetailMap = detailList.stream()
  686. .collect(Collectors.toMap(DictionaryDetail::getCode, DictionaryDetail::getName));
  687. // 定义常量
  688. final String NO_JOB_STATE = "无在职状态";
  689. // 获取新旧在职状态
  690. String oldJobState = null;
  691. String newJobState = null;
  692. if (CollectionUtils.isNotEmpty(old.getBaseTeacherList()) && StringUtils.isNotEmpty(old.getBaseTeacherList().get(0).getJobState())) {
  693. oldJobState = old.getBaseTeacherList().get(0).getJobState();
  694. }
  695. newJobState = "JOB_LZ";
  696. // 只有在职状态被修改时,才触发 insert
  697. if (!Objects.equals(oldJobState, newJobState)) {
  698. BaseTeacherChangeRecord insetBaseTeacherChangeRecord = new BaseTeacherChangeRecord();
  699. insetBaseTeacherChangeRecord.setCreateUserId(StpUtil.getLoginIdAsLong());
  700. insetBaseTeacherChangeRecord.setCreateDate(new Date());
  701. insetBaseTeacherChangeRecord.setUserId(wfTextbookRecede.getApplicantUserId());
  702. insetBaseTeacherChangeRecord.setChangeType(TeaChangeTypeEnum.TCT0001.getCode());
  703. // 设置旧状态
  704. if (StringUtils.isNotEmpty(oldJobState)) {
  705. insetBaseTeacherChangeRecord.setOldJobState(dictionaryDetailMap.getOrDefault(oldJobState, oldJobState));
  706. } else {
  707. insetBaseTeacherChangeRecord.setOldJobState(NO_JOB_STATE);
  708. }
  709. // 设置新状态
  710. if (StringUtils.isNotEmpty(newJobState)) {
  711. insetBaseTeacherChangeRecord.setNewJobState(dictionaryDetailMap.getOrDefault(newJobState, newJobState));
  712. } else {
  713. insetBaseTeacherChangeRecord.setNewJobState(NO_JOB_STATE);
  714. }
  715. // 插入变更记录
  716. baseTeacherChangeRecordMapper.insert(insetBaseTeacherChangeRecord);
  717. }
  718. }
  719. }
  720. @Override
  721. @Transactional(rollbackFor = Exception.class)
  722. public void disabledUser(Long userId) {
  723. }
  724. }