AttendanceMessageSetServiceImpl.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package com.xjrsoft.module.attendance.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.github.yulichang.base.MPJBaseServiceImpl;
  5. import com.xjrsoft.module.attendance.dto.UpdateAttendanceMessageSetDto;
  6. import com.xjrsoft.module.attendance.entity.AttendanceMessageSet;
  7. import com.xjrsoft.module.attendance.entity.AttendanceMessageUserRelation;
  8. import com.xjrsoft.module.attendance.mapper.AttendanceMessageSetMapper;
  9. import com.xjrsoft.module.attendance.mapper.AttendanceMessageUserRelationMapper;
  10. import com.xjrsoft.module.attendance.service.IAttendanceMessageSetService;
  11. import lombok.AllArgsConstructor;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.util.List;
  15. import java.util.Objects;
  16. import java.util.stream.Collectors;
  17. /**
  18. * @title: 考勤消息设置
  19. * @Author dzx
  20. * @Date: 2024-05-21
  21. * @Version 1.0
  22. */
  23. @Service
  24. @AllArgsConstructor
  25. public class AttendanceMessageSetServiceImpl extends MPJBaseServiceImpl<AttendanceMessageSetMapper, AttendanceMessageSet> implements IAttendanceMessageSetService {
  26. private final AttendanceMessageSetMapper attendanceMessageSetAttendanceMessageSetMapper;
  27. private final AttendanceMessageUserRelationMapper attendanceMessageSetAttendanceMessageUserRelationMapper;
  28. @Override
  29. @Transactional(rollbackFor = Exception.class)
  30. public Boolean add(AttendanceMessageSet attendanceMessageSet) {
  31. attendanceMessageSetAttendanceMessageSetMapper.insert(attendanceMessageSet);
  32. for (AttendanceMessageUserRelation attendanceMessageUserRelation : attendanceMessageSet.getAttendanceMessageUserRelationList()) {
  33. attendanceMessageUserRelation.setAttendanceMessageSetId(attendanceMessageSet.getId());
  34. attendanceMessageSetAttendanceMessageUserRelationMapper.insert(attendanceMessageUserRelation);
  35. }
  36. return true;
  37. }
  38. @Override
  39. @Transactional(rollbackFor = Exception.class)
  40. public Boolean update(AttendanceMessageSet attendanceMessageSet) {
  41. attendanceMessageSetAttendanceMessageSetMapper.updateById(attendanceMessageSet);
  42. //********************************* AttendanceMessageUserRelation 增删改 开始 *******************************************/
  43. {
  44. // 查出所有子级的id
  45. List<AttendanceMessageUserRelation> attendanceMessageUserRelationList = attendanceMessageSetAttendanceMessageUserRelationMapper.selectList(Wrappers.lambdaQuery(AttendanceMessageUserRelation.class).eq(AttendanceMessageUserRelation::getAttendanceMessageSetId, attendanceMessageSet.getId()).select(AttendanceMessageUserRelation::getId));
  46. List<Long> attendanceMessageUserRelationIds = attendanceMessageUserRelationList.stream().map(AttendanceMessageUserRelation::getId).collect(Collectors.toList());
  47. //原有子表单 没有被删除的主键
  48. List<Long> attendanceMessageUserRelationOldIds = attendanceMessageSet.getAttendanceMessageUserRelationList().stream().map(AttendanceMessageUserRelation::getId).filter(Objects::nonNull).collect(Collectors.toList());
  49. //找到需要删除的id
  50. List<Long> attendanceMessageUserRelationRemoveIds = attendanceMessageUserRelationIds.stream().filter(item -> !attendanceMessageUserRelationOldIds.contains(item)).collect(Collectors.toList());
  51. for (AttendanceMessageUserRelation attendanceMessageUserRelation : attendanceMessageSet.getAttendanceMessageUserRelationList()) {
  52. //如果不等于空则修改
  53. if (attendanceMessageUserRelation.getId() != null) {
  54. attendanceMessageSetAttendanceMessageUserRelationMapper.updateById(attendanceMessageUserRelation);
  55. }
  56. //如果等于空 则新增
  57. else {
  58. //已经不存在的id 删除
  59. attendanceMessageUserRelation.setAttendanceMessageSetId(attendanceMessageSet.getId());
  60. attendanceMessageSetAttendanceMessageUserRelationMapper.insert(attendanceMessageUserRelation);
  61. }
  62. }
  63. //已经不存在的id 删除
  64. if(attendanceMessageUserRelationRemoveIds.size() > 0){
  65. attendanceMessageSetAttendanceMessageUserRelationMapper.deleteBatchIds(attendanceMessageUserRelationRemoveIds);
  66. }
  67. }
  68. //********************************* AttendanceMessageUserRelation 增删改 结束 *******************************************/
  69. return true;
  70. }
  71. @Override
  72. @Transactional(rollbackFor = Exception.class)
  73. public Boolean edit(List<UpdateAttendanceMessageSetDto> attendanceMessageSetDtos) {
  74. for (UpdateAttendanceMessageSetDto attendanceMessageSetDto : attendanceMessageSetDtos) {
  75. // 先删除 再添加
  76. AttendanceMessageSet attendanceMessageSetDel = attendanceMessageSetAttendanceMessageSetMapper.selectOne(Wrappers.lambdaQuery(AttendanceMessageSet.class)
  77. .eq(AttendanceMessageSet::getRoleType, attendanceMessageSetDto.getRoleType())
  78. .eq(AttendanceMessageSet::getMessageCategory, attendanceMessageSetDto.getMessageCategory()));
  79. if (attendanceMessageSetDel != null) {
  80. attendanceMessageSetAttendanceMessageSetMapper.deleteById(attendanceMessageSetDel.getId());
  81. attendanceMessageSetAttendanceMessageUserRelationMapper.delete(Wrappers.lambdaQuery(AttendanceMessageUserRelation.class).eq(AttendanceMessageUserRelation::getAttendanceMessageSetId, attendanceMessageSetDel.getId()));
  82. }
  83. if (attendanceMessageSetDto.getDeleteMark() != 1) {
  84. AttendanceMessageSet attendanceMessageSet = BeanUtil.toBean(attendanceMessageSetDto, AttendanceMessageSet.class);
  85. add(attendanceMessageSet);
  86. }
  87. }
  88. return true;
  89. }
  90. @Override
  91. @Transactional(rollbackFor = Exception.class)
  92. public Boolean delete(List<Long> ids) {
  93. attendanceMessageSetAttendanceMessageSetMapper.deleteBatchIds(ids);
  94. attendanceMessageSetAttendanceMessageUserRelationMapper.delete(Wrappers.lambdaQuery(AttendanceMessageUserRelation.class).in(AttendanceMessageUserRelation::getAttendanceMessageSetId, ids));
  95. return true;
  96. }
  97. }