ReportAffairService.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.business.ReportAffairDTO;
  3. import cn.cslg.pas.common.dto.invalidDTO.QueryReportAffairDTO;
  4. import cn.cslg.pas.common.model.cronModel.Personnel;
  5. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  6. import cn.cslg.pas.common.model.cronModel.SystemFile;
  7. import cn.cslg.pas.common.utils.CacheUtils;
  8. import cn.cslg.pas.common.utils.LoginUtils;
  9. import cn.cslg.pas.common.vo.invalidVO.InvalidRequestFileVO;
  10. import cn.cslg.pas.common.vo.invalidVO.ReportAffairVO;
  11. import cn.cslg.pas.domain.business.AssoReportAffairFile;
  12. import cn.cslg.pas.domain.business.InvalidRequestFile;
  13. import cn.cslg.pas.domain.business.ReportAffair;
  14. import cn.cslg.pas.exception.XiaoShiException;
  15. import cn.cslg.pas.mapper.ReportAffairMapper;
  16. import cn.cslg.pas.service.common.FileManagerService;
  17. import cn.cslg.pas.service.permissions.PermissionService;
  18. import com.alibaba.fastjson.JSONObject;
  19. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  20. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import java.io.IOException;
  26. import java.util.ArrayList;
  27. import java.util.List;
  28. import java.util.stream.Collectors;
  29. /**
  30. * 报告事务Service层
  31. *
  32. * @Author xiexiang
  33. * @Date 2023/12/23
  34. */
  35. @Slf4j
  36. @Service
  37. public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportAffair> {
  38. @Autowired
  39. private CacheUtils cacheUtils;
  40. @Autowired
  41. private LoginUtils loginUtils;
  42. @Autowired
  43. private AssoReportAffairFileService assoReportAffairFileService;
  44. @Autowired
  45. private FileManagerService fileManagerService;
  46. @Autowired
  47. private InvalidRequestFileService invalidRequestFileService;
  48. @Autowired
  49. private PermissionService permissionService;
  50. /**
  51. * 创建报告事务
  52. *
  53. * @param reportAffairDTO
  54. */
  55. public Integer addReportAffair(ReportAffairDTO reportAffairDTO) {
  56. // PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  57. if (reportAffairDTO != null) {
  58. ReportAffair reportAffair = new ReportAffair();
  59. BeanUtils.copyProperties(reportAffairDTO, reportAffair);
  60. reportAffair.setCreateId("328");
  61. reportAffair.insert();
  62. return reportAffair.getId();
  63. } else {
  64. throw new XiaoShiException("入参为空");
  65. }
  66. }
  67. public void delete(List<Integer> ids) {
  68. for (Integer id : ids) {
  69. LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
  70. queryWrapper.eq(ReportAffair::getId, id);
  71. ReportAffair reportAffair = this.getOne(queryWrapper, false);
  72. if (reportAffair != null) {
  73. LambdaQueryWrapper<AssoReportAffairFile> queryWrapper2 = new LambdaQueryWrapper<>();
  74. queryWrapper2.eq(AssoReportAffairFile::getReportAffairId, id);
  75. assoReportAffairFileService.remove(queryWrapper2);
  76. if (reportAffair.getAffairType() == 1) {
  77. LambdaQueryWrapper<InvalidRequestFile> queryWrapper1 = new LambdaQueryWrapper<>();
  78. queryWrapper1.eq(InvalidRequestFile::getReportAffairId, id);
  79. invalidRequestFileService.remove(queryWrapper1);
  80. }
  81. this.removeById(id);
  82. }
  83. }
  84. }
  85. /**
  86. * 查询报告事务
  87. *
  88. * @param QueryReportAffairDTO
  89. */
  90. public List<ReportAffairVO> queryReportAffair(QueryReportAffairDTO queryReportAffairDTO) {
  91. Integer projectId = queryReportAffairDTO.getProjectId();
  92. List<ReportAffairVO> reportAffairVOS = new ArrayList<>();
  93. //判空
  94. if (projectId == null) {
  95. throw new XiaoShiException("projectId为空");
  96. }
  97. //根据报告id查询事务
  98. LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
  99. queryWrapper.eq(ReportAffair::getProjectId, projectId);
  100. List<ReportAffair> reportAffairs = this.list(queryWrapper);
  101. if (reportAffairs.isEmpty()) {
  102. return reportAffairVOS;
  103. }
  104. reportAffairVOS = this.loadReportAffairVOS(reportAffairs);
  105. return reportAffairVOS;
  106. }
  107. public List<ReportAffairVO> loadReportAffairVOS(List<ReportAffair> reportAffairs) {
  108. List<ReportAffairVO> reportAffairVOS = new ArrayList<>();
  109. reportAffairs.forEach(item -> {
  110. ReportAffairVO reportAffairVO = new ReportAffairVO();
  111. BeanUtils.copyProperties(item, reportAffairVO);
  112. //根据事务类型选择不同的装载方式
  113. Integer type = reportAffairVO.getAffairType();
  114. if (type == 0) {
  115. } else if (type == 1) {//无效请求书
  116. this.loadInvalidRequestFile(reportAffairVO);
  117. } else if (type == 2) {
  118. } else if (type == 3) {
  119. } else if (type == 4) {
  120. }
  121. reportAffairVOS.add(reportAffairVO);
  122. });
  123. if (!reportAffairVOS.isEmpty()) {
  124. //装载文件信息
  125. this.loadSystemFile(reportAffairVOS);
  126. //装载创建人名
  127. this.loadCreateName(reportAffairVOS);
  128. }
  129. return reportAffairVOS;
  130. }
  131. /**
  132. * 装载文件
  133. *
  134. * @param reportAffairVOS
  135. */
  136. public void loadSystemFile(List<ReportAffairVO> reportAffairVOS) {
  137. reportAffairVOS.forEach(item -> {
  138. Integer reportAffairId = item.getId();
  139. List<SystemFile> systemFiles = new ArrayList<>();
  140. LambdaQueryWrapper<AssoReportAffairFile> queryWrapper = new LambdaQueryWrapper<>();
  141. queryWrapper.eq(AssoReportAffairFile::getReportAffairId, reportAffairId);
  142. List<AssoReportAffairFile> files = assoReportAffairFileService.list(queryWrapper);
  143. if (!files.isEmpty()) {
  144. List<String> fileGuids = files.stream().map(AssoReportAffairFile::getFileGuid).collect(Collectors.toList());
  145. //根据fileGuids查询文件信息
  146. //查询文件
  147. if (fileGuids.size() != 0) {
  148. try {
  149. String res = fileManagerService.getSystemFileFromFMS(fileGuids);
  150. if (res != null && !res.trim().equals("")) {
  151. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  152. }
  153. } catch (Exception e) {
  154. throw new XiaoShiException("查询文件详情错误");
  155. }
  156. }
  157. }
  158. item.setSystemFileList(systemFiles);
  159. });
  160. }
  161. /**
  162. * 装载无效请求书
  163. *
  164. * @param reportAffairVO
  165. */
  166. public void loadInvalidRequestFile(ReportAffairVO reportAffairVO) {
  167. Integer reportAffairId = reportAffairVO.getId();
  168. InvalidRequestFileVO invalidRequestFileVO = invalidRequestFileService.getInvalidRequestFileVO(reportAffairId);
  169. reportAffairVO.setInvalidRequestFileVO(invalidRequestFileVO);
  170. }
  171. public void loadCreateName(List<ReportAffairVO> reportAffairVOS) {
  172. List<String> createIds = new ArrayList<>();
  173. reportAffairVOS.forEach(item -> {
  174. if (item.getCreateId() != null) {
  175. createIds.add(item.getCreateId());
  176. }
  177. });
  178. List<Personnel> personnels = new ArrayList<>();
  179. //查询创建人名称
  180. if (createIds.size() != 0) {
  181. try {
  182. String res = permissionService.getPersonnelByIdsFromPCS(createIds);
  183. JSONObject jsonObject = JSONObject.parseObject(res);
  184. personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
  185. } catch (Exception e) {
  186. }
  187. }
  188. for (ReportAffairVO reportAffairVO : reportAffairVOS) {
  189. Personnel personnel = personnels.stream().filter(item -> item.getId().equals(reportAffairVO.getCreateId())).findFirst().orElse(null);
  190. if (personnel != null) {
  191. reportAffairVO.setCreateName(personnel.getPersonnelName());
  192. }
  193. }
  194. }
  195. }