MaterialTaskServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package com.xjrsoft.module.material.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.material.dto.AddMaterialTaskAppendixDto;
  6. import com.xjrsoft.module.material.dto.AddMaterialTaskDto;
  7. import com.xjrsoft.module.material.dto.MaterialAssignUserDto;
  8. import com.xjrsoft.module.material.dto.MaterialTaskAssignAppendixDto;
  9. import com.xjrsoft.module.material.entity.MaterialTask;
  10. import com.xjrsoft.module.material.entity.MaterialTaskAppendix;
  11. import com.xjrsoft.module.material.entity.MaterialTaskAssign;
  12. import com.xjrsoft.module.material.mapper.MaterialTaskAppendixMapper;
  13. import com.xjrsoft.module.material.mapper.MaterialTaskAssignMapper;
  14. import com.xjrsoft.module.material.mapper.MaterialTaskMapper;
  15. import com.xjrsoft.module.material.service.IMaterialTaskService;
  16. import lombok.AllArgsConstructor;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.util.List;
  20. import java.util.Objects;
  21. import java.util.stream.Collectors;
  22. /**
  23. * @title: 材料提交任务
  24. * @Author baicai
  25. * @Date: 2023-10-31
  26. * @Version 1.0
  27. */
  28. @Service
  29. @AllArgsConstructor
  30. public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapper, MaterialTask> implements IMaterialTaskService {
  31. private final MaterialTaskMapper materialTaskMaterialTaskMapper;
  32. private final MaterialTaskAssignMapper materialTaskMaterialTaskAssignMapper;
  33. private final MaterialTaskAppendixMapper materialTaskMaterialTaskAppendixMapper;
  34. @Override
  35. @Transactional(rollbackFor = Exception.class)
  36. public Long add(AddMaterialTaskDto dto) {
  37. MaterialTask materialTask = BeanUtil.toBean(dto, MaterialTask.class);
  38. materialTask.setStatus(2);
  39. if(dto.getUserList() == null && !dto.getUserList().isEmpty()){
  40. materialTask.setSubmitedPerson(dto.getUserList().size());
  41. }
  42. materialTaskMaterialTaskMapper.insert(materialTask);
  43. for (MaterialAssignUserDto materialAssignUserDto : dto.getUserList()){
  44. materialTaskMaterialTaskAssignMapper.insert(new MaterialTaskAssign(){{
  45. setMaterialTaskId(materialTask.getId());
  46. setUserId(materialAssignUserDto.getUserId());
  47. setUserType(materialAssignUserDto.getUserType());
  48. setUserNumber(materialAssignUserDto.getUserNumber());
  49. setStatus(1);
  50. setExecutiveStatus(1);
  51. setSendMessage(dto.getSendMessageStatus());
  52. }});
  53. }
  54. // materialTaskMaterialTaskMapper.insert(materialTask);
  55. // if (materialTask.getMaterialTaskAssignList() != null && materialTask.getMaterialTaskAssignList().size() > 0) {
  56. // for (MaterialTaskAssign materialTaskAssign : materialTask.getMaterialTaskAssignList()) {
  57. // materialTaskAssign.setMaterialTaskId(materialTask.getId());
  58. // materialTaskMaterialTaskAssignMapper.insert(materialTaskAssign);
  59. // }
  60. // }
  61. // for (MaterialTaskAppendix materialTaskAppendix : materialTask.getMaterialTaskAppendixList()) {
  62. // materialTaskAppendix.setMaterialTaskId(materialTask.getId());
  63. // materialTaskMaterialTaskAppendixMapper.insert(materialTaskAppendix);
  64. // }
  65. return materialTask.getId();
  66. }
  67. @Override
  68. @Transactional(rollbackFor = Exception.class)
  69. public Boolean update(MaterialTask materialTask) {
  70. materialTaskMaterialTaskMapper.updateById(materialTask);
  71. //********************************* MaterialTaskAssign 增删改 开始 *******************************************/
  72. {
  73. if (materialTask.getMaterialTaskAssignList() != null && materialTask.getMaterialTaskAssignList().size() > 0) {
  74. // 查出所有子级的id
  75. List<MaterialTaskAssign> materialTaskAssignList = materialTaskMaterialTaskAssignMapper.selectList(Wrappers.lambdaQuery(MaterialTaskAssign.class).eq(MaterialTaskAssign::getMaterialTaskId, materialTask.getId()).select(MaterialTaskAssign::getId));
  76. List<Long> materialTaskAssignIds = materialTaskAssignList.stream().map(MaterialTaskAssign::getId).collect(Collectors.toList());
  77. //原有子表单 没有被删除的主键
  78. List<Long> materialTaskAssignOldIds = materialTask.getMaterialTaskAssignList().stream().map(MaterialTaskAssign::getId).filter(Objects::nonNull).collect(Collectors.toList());
  79. //找到需要删除的id
  80. List<Long> materialTaskAssignRemoveIds = materialTaskAssignIds.stream().filter(item -> !materialTaskAssignOldIds.contains(item)).collect(Collectors.toList());
  81. for (MaterialTaskAssign materialTaskAssign : materialTask.getMaterialTaskAssignList()) {
  82. //如果不等于空则修改
  83. if (materialTaskAssign.getId() != null) {
  84. materialTaskMaterialTaskAssignMapper.updateById(materialTaskAssign);
  85. }
  86. //如果等于空 则新增
  87. else {
  88. //已经不存在的id 删除
  89. materialTaskAssign.setMaterialTaskId(materialTask.getId());
  90. materialTaskMaterialTaskAssignMapper.insert(materialTaskAssign);
  91. }
  92. }
  93. //已经不存在的id 删除
  94. if (materialTaskAssignRemoveIds.size() > 0) {
  95. materialTaskMaterialTaskAssignMapper.deleteBatchIds(materialTaskAssignRemoveIds);
  96. }
  97. }
  98. }
  99. //********************************* MaterialTaskAssign 增删改 结束 *******************************************/
  100. //********************************* MaterialTaskAppendix 增删改 开始 *******************************************/
  101. {
  102. // 查出所有子级的id
  103. List<MaterialTaskAppendix> materialTaskAppendixList = materialTaskMaterialTaskAppendixMapper.selectList(Wrappers.lambdaQuery(MaterialTaskAppendix.class).eq(MaterialTaskAppendix::getMaterialTaskId, materialTask.getId()).select(MaterialTaskAppendix::getId));
  104. List<Long> materialTaskAppendixIds = materialTaskAppendixList.stream().map(MaterialTaskAppendix::getId).collect(Collectors.toList());
  105. //原有子表单 没有被删除的主键
  106. List<Long> materialTaskAppendixOldIds = materialTask.getMaterialTaskAppendixList().stream().map(MaterialTaskAppendix::getId).filter(Objects::nonNull).collect(Collectors.toList());
  107. //找到需要删除的id
  108. List<Long> materialTaskAppendixRemoveIds = materialTaskAppendixIds.stream().filter(item -> !materialTaskAppendixOldIds.contains(item)).collect(Collectors.toList());
  109. for (MaterialTaskAppendix materialTaskAppendix : materialTask.getMaterialTaskAppendixList()) {
  110. //如果不等于空则修改
  111. if (materialTaskAppendix.getId() != null) {
  112. materialTaskMaterialTaskAppendixMapper.updateById(materialTaskAppendix);
  113. }
  114. //如果等于空 则新增
  115. else {
  116. //已经不存在的id 删除
  117. materialTaskAppendix.setMaterialTaskId(materialTask.getId());
  118. materialTaskMaterialTaskAppendixMapper.insert(materialTaskAppendix);
  119. }
  120. }
  121. //已经不存在的id 删除
  122. if (materialTaskAppendixRemoveIds.size() > 0) {
  123. materialTaskMaterialTaskAppendixMapper.deleteBatchIds(materialTaskAppendixRemoveIds);
  124. }
  125. }
  126. //********************************* MaterialTaskAppendix 增删改 结束 *******************************************/
  127. return true;
  128. }
  129. @Override
  130. @Transactional(rollbackFor = Exception.class)
  131. public Boolean delete(List<Long> ids) {
  132. materialTaskMaterialTaskMapper.deleteBatchIds(ids);
  133. materialTaskMaterialTaskAssignMapper.delete(Wrappers.lambdaQuery(MaterialTaskAssign.class).in(MaterialTaskAssign::getMaterialTaskId, ids));
  134. materialTaskMaterialTaskAppendixMapper.delete(Wrappers.lambdaQuery(MaterialTaskAppendix.class).in(MaterialTaskAppendix::getMaterialTaskId, ids));
  135. return true;
  136. }
  137. @Override
  138. @Transactional(rollbackFor = Exception.class)
  139. public Boolean submited(MaterialTaskAssignAppendixDto materialTaskAssignAppendixDto) {
  140. if (materialTaskAssignAppendixDto.getMaterialTaskAppendixList() != null && materialTaskAssignAppendixDto.getMaterialTaskAppendixList().size() > 0) {
  141. MaterialTaskAssign materialTaskAssign = materialTaskMaterialTaskAssignMapper.selectByIdDeep(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
  142. Integer oldStatus = materialTaskAssign.getStatus();
  143. materialTaskAssign.setStatus(2);
  144. if (oldStatus == 1) {
  145. MaterialTask materialTask = materialTaskMaterialTaskMapper.selectByIdDeep(materialTaskAssign.getMaterialTaskId());
  146. materialTask.setSubmitedPerson(materialTask.getSubmitedPerson() + 1);
  147. materialTaskMaterialTaskMapper.updateById(materialTask);
  148. }
  149. materialTaskMaterialTaskAssignMapper.updateById(materialTaskAssign);
  150. if (oldStatus == 4) { // 重做删除原来的
  151. materialTaskMaterialTaskAppendixMapper.delete(Wrappers.lambdaQuery(MaterialTaskAppendix.class).eq(MaterialTaskAppendix::getMaterialTaskId, materialTaskAssignAppendixDto.getMaterialTaskAssignId()));
  152. }
  153. for (AddMaterialTaskAppendixDto materialTaskAppendixDto : materialTaskAssignAppendixDto.getMaterialTaskAppendixList()) {
  154. MaterialTaskAppendix materialTaskAppendix = new MaterialTaskAppendix();
  155. materialTaskAppendix.setMaterialTaskId(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
  156. materialTaskAppendix.setFileId(materialTaskAppendixDto.getFileId());
  157. materialTaskMaterialTaskAppendixMapper.insert(materialTaskAppendix);
  158. }
  159. }
  160. return true;
  161. }
  162. }