PatentDigProjectFilesService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.business.PatentDigProjectFilesDTO;
  3. import cn.cslg.pas.common.model.cronModel.Personnel;
  4. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  5. import cn.cslg.pas.common.model.cronModel.Records;
  6. import cn.cslg.pas.common.model.cronModel.SystemFile;
  7. import cn.cslg.pas.common.model.request.GroupRequest;
  8. import cn.cslg.pas.common.model.request.QueryRequest;
  9. import cn.cslg.pas.common.utils.CacheUtils;
  10. import cn.cslg.pas.common.utils.LoginUtils;
  11. import cn.cslg.pas.common.vo.business.PatentDigProjectFilesVO;
  12. import cn.cslg.pas.domain.business.PatentDigProjectFiles;
  13. import cn.cslg.pas.domain.business.ProjectTask;
  14. import cn.cslg.pas.exception.UnLoginException;
  15. import cn.cslg.pas.exception.XiaoShiException;
  16. import cn.cslg.pas.factorys.businessFactory.Business;
  17. import cn.cslg.pas.mapper.PatentDigProjectFilesMapper;
  18. import cn.cslg.pas.service.common.FileManagerService;
  19. import cn.cslg.pas.service.permissions.PermissionService;
  20. import cn.cslg.pas.service.query.FormatQueryService;
  21. import com.alibaba.fastjson.JSONObject;
  22. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  23. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  24. import org.springframework.beans.BeanUtils;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.context.annotation.Lazy;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.web.multipart.MultipartFile;
  29. import java.io.IOException;
  30. import java.util.ArrayList;
  31. import java.util.HashMap;
  32. import java.util.List;
  33. import java.util.Map;
  34. /**
  35. * 专利挖掘项目文件Service层
  36. * @Author xiexiang
  37. * @Date 2023/11/8
  38. */
  39. @Service
  40. public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFilesMapper, PatentDigProjectFiles> implements Business {
  41. @Autowired
  42. private CacheUtils cacheUtils;
  43. @Autowired
  44. private LoginUtils loginUtils;
  45. @Autowired
  46. private FormatQueryService formatQueryService;
  47. @Autowired
  48. private PatentDigProjectFilesMapper patentDigProjectFilesMapper;
  49. @Autowired
  50. private PermissionService permissionService;
  51. @Autowired
  52. private FileManagerService fileManagerService;
  53. @Autowired
  54. @Lazy
  55. private ProjectTaskService projectTaskService;
  56. @Override
  57. public Object queryMessage(QueryRequest queryRequest) throws Exception {
  58. //根据专题库/报告id查询自定义栏位
  59. List<String> sqls = formatQueryService.reSqls(queryRequest,"patentDigProjectFiles");
  60. //根据sql查询自定义栏位信息
  61. List<PatentDigProjectFilesVO> patentDigProjectFilesVOS = patentDigProjectFilesMapper.getPatentDigProjectFiles(sqls.get(0), sqls.get(1), sqls.get(2));
  62. //查询总数
  63. Long total = patentDigProjectFilesMapper.getPatentDigProjectFilesCount(sqls.get(0));
  64. //装载自定义栏位信息
  65. this.loadPatentDigProjectFiles(patentDigProjectFilesVOS);
  66. //装载返回信息
  67. Records records = new Records();
  68. records.setCurrent(queryRequest.getCurrent());
  69. records.setSize(queryRequest.getSize());
  70. records.setData(patentDigProjectFilesVOS);
  71. records.setTotal(total);
  72. return records;
  73. }
  74. @Override
  75. public Object addMessage(Object object, List<MultipartFile> files) {
  76. return null;
  77. }
  78. @Override
  79. public Object deleteMessage(List<Integer> ids) throws IOException {
  80. if (!ids.isEmpty()) {
  81. this.removeBatchByIds(ids);
  82. }
  83. return ids;
  84. }
  85. @Override
  86. public Object updateMessage(Object object, List<MultipartFile> files) {
  87. return null;
  88. }
  89. @Override
  90. public Object getGroup(GroupRequest groupRequest, String tableName) throws Exception {
  91. return null;
  92. }
  93. /**
  94. * 新增专利挖掘项目文件
  95. * @param object
  96. * @return
  97. */
  98. @Override
  99. public Object addMessage(Object object) {
  100. //object to patentDigProjectFilesDTO
  101. PatentDigProjectFilesDTO patentDigProjectFilesDTO = (PatentDigProjectFilesDTO) object;
  102. //判断projectId是否为空
  103. if (patentDigProjectFilesDTO.getProjectId() == null) {
  104. throw new XiaoShiException("projectId不能为空");
  105. }
  106. //判断processId是否为空
  107. if (patentDigProjectFilesDTO.getProcessId() == null) {
  108. throw new XiaoShiException("processId不能为空");
  109. }
  110. //获取登陆人信息 用于设置创建人
  111. PersonnelVO personnelVO = new PersonnelVO();
  112. try {
  113. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  114. } catch (Exception e) {
  115. throw new UnLoginException("未登录");
  116. }
  117. List<Integer> ids = new ArrayList<>();
  118. if (patentDigProjectFilesDTO.getFileGuids() != null && !patentDigProjectFilesDTO.getFileGuids().isEmpty()){
  119. List<String> fileGuids = patentDigProjectFilesDTO.getFileGuids();
  120. List<SystemFile> systemFiles = new ArrayList<>();
  121. List<PatentDigProjectFiles> patentDigProjectFilesS = new ArrayList<>();
  122. //调用文件系统查询文件信息接口
  123. if (fileGuids.size() != 0) {
  124. try {
  125. String res = fileManagerService.getSystemFileFromFMS(fileGuids);
  126. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  127. if (systemFiles.size() != 0) {
  128. for (String item : fileGuids) {
  129. SystemFile systemFile = systemFiles.stream().filter(item1 -> item1.getGuid().equals(item)).findFirst().orElse(null);
  130. PatentDigProjectFiles patentDigProjectFiles = new PatentDigProjectFiles();
  131. BeanUtils.copyProperties(patentDigProjectFilesDTO, patentDigProjectFiles);
  132. patentDigProjectFiles.setFileGuid(item);
  133. patentDigProjectFiles.setName(systemFile.getOriginalName());
  134. patentDigProjectFiles.setCreateId(personnelVO.getId());
  135. patentDigProjectFilesS.add(patentDigProjectFiles);
  136. }
  137. this.saveBatch(patentDigProjectFilesS);
  138. }
  139. } catch (Exception e) {
  140. throw new XiaoShiException("查询文件信息错误");
  141. }
  142. }
  143. patentDigProjectFilesS.forEach(item -> {
  144. ids.add(item.getId());
  145. });
  146. }
  147. return ids;
  148. }
  149. @Override
  150. public Object updateMessage(Object object) {
  151. return null;
  152. }
  153. /**
  154. * 装载专利挖掘文件列表信息
  155. * @param patentDigProjectFilesVOS
  156. */
  157. private void loadPatentDigProjectFiles(List<PatentDigProjectFilesVO> patentDigProjectFilesVOS) throws IOException {
  158. List<String> createIds = new ArrayList<>();
  159. patentDigProjectFilesVOS.forEach(
  160. item -> {
  161. if (item.getCreateId() != null) {
  162. createIds.add(item.getCreateId());
  163. }
  164. }
  165. );
  166. List<Personnel> personnels = new ArrayList<>();
  167. //查询创建人名称
  168. if (createIds.size() != 0) {
  169. String res = permissionService.getPersonnelByIdsFromPCS(createIds);
  170. JSONObject jsonObject = JSONObject.parseObject(res);
  171. personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
  172. }
  173. for (PatentDigProjectFilesVO patentDigProjectFilesVO : patentDigProjectFilesVOS) {
  174. //装载人员信息
  175. Personnel personnel = personnels.stream().filter(item -> item.getId().equals(patentDigProjectFilesVO.getCreateId())).findFirst().orElse(null);
  176. if (personnel != null) {
  177. patentDigProjectFilesVO.setCreateName(personnel.getPersonnelName());
  178. } else {
  179. throw new XiaoShiException("未获取到当前登陆人信息");
  180. }
  181. //调用查询流程名称方法
  182. String name = this.getProcessName(patentDigProjectFilesVO.getProcessId());
  183. patentDigProjectFilesVO.setProcessName(name);
  184. }
  185. }
  186. /**
  187. * 装载流程名
  188. * @param processId
  189. * @return
  190. */
  191. public String getProcessName(Integer processId){
  192. String name = null;
  193. Map<Integer, String> processMap = new HashMap<>();
  194. processMap.put(1, "创新点梳理");
  195. processMap.put(2, "查新检索");
  196. processMap.put(3, "保护主题规划");
  197. processMap.put(4, "独权撰写");
  198. processMap.put(5, "从权撰写");
  199. processMap.put(6, "申请文件定稿");
  200. processMap.put(7, "说明书规划撰写");
  201. name = processMap.get(processId);
  202. return name;
  203. }
  204. /**
  205. * 上传专利挖掘项目文件后提交审核,新增专利挖掘文件审核记录
  206. * @param patentDigProjectFilesDTO
  207. * @return
  208. */
  209. public Integer addPDProjectFilesTask(PatentDigProjectFilesDTO patentDigProjectFilesDTO){
  210. //首先调用新增文件接口
  211. List<Integer> ids = (List<Integer>) this.addMessage(patentDigProjectFilesDTO);
  212. //其次调用新增任务接口
  213. patentDigProjectFilesDTO.getProjectTaskDTO().setProjectId(patentDigProjectFilesDTO.getProjectId());
  214. patentDigProjectFilesDTO.getProjectTaskDTO().setProcessId(patentDigProjectFilesDTO.getProcessId());
  215. Integer taskType = 7;
  216. patentDigProjectFilesDTO.getProjectTaskDTO().setType(taskType);
  217. Integer taskId = projectTaskService.addTask(patentDigProjectFilesDTO.getProjectTaskDTO());
  218. if (!ids.isEmpty()) {
  219. LambdaQueryWrapper<PatentDigProjectFiles> queryWrapper = new LambdaQueryWrapper<>();
  220. queryWrapper.in(PatentDigProjectFiles::getId, ids);
  221. List<PatentDigProjectFiles> patentDigProjectFiles = this.list(queryWrapper);
  222. if (!patentDigProjectFiles.isEmpty()) {
  223. patentDigProjectFiles.forEach(item -> {
  224. item.setTaskId(taskId);
  225. });
  226. this.updateBatchById(patentDigProjectFiles);
  227. }
  228. }
  229. return taskId;
  230. }
  231. public Map<Integer, Map<String, Integer>> getProcessInfo(Integer projectId){
  232. Map<Integer, Map<String, Integer>> processInfo = new HashMap<>();
  233. for (int i = 1; i < 8; i++) {
  234. LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
  235. queryWrapper.eq(ProjectTask::getProcessId, i).eq(ProjectTask::getProjectId, projectId);
  236. Integer taskCount = (int) projectTaskService.count(queryWrapper);
  237. LambdaQueryWrapper<PatentDigProjectFiles> queryWrapper1 = new LambdaQueryWrapper<>();
  238. queryWrapper1.eq(PatentDigProjectFiles::getProcessId, i).eq(PatentDigProjectFiles::getProjectId, projectId);
  239. Integer fileCount = (int) this.count(queryWrapper1);
  240. Map<String, Integer> countMap = new HashMap<>();
  241. countMap.put("taskCount", taskCount);
  242. countMap.put("fileCount", fileCount);
  243. processInfo.put(i, countMap);
  244. }
  245. return processInfo;
  246. }
  247. }