PatentDigProjectService.java 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.ClientDTO;
  3. import cn.cslg.pas.common.dto.business.PatentDigProjectDTO;
  4. import cn.cslg.pas.common.dto.business.PatentDigProjectUpdateDTO;
  5. import cn.cslg.pas.common.dto.business.ProjectEventDTO;
  6. import cn.cslg.pas.common.model.cronModel.*;
  7. import cn.cslg.pas.common.model.request.GroupRequest;
  8. import cn.cslg.pas.common.model.request.QueryRequest;
  9. import cn.cslg.pas.common.model.request.StringGroupRequest;
  10. import cn.cslg.pas.common.model.request.StringRequest;
  11. import cn.cslg.pas.common.utils.CacheUtils;
  12. import cn.cslg.pas.common.utils.LoginUtils;
  13. import cn.cslg.pas.common.vo.DepartmentVO;
  14. import cn.cslg.pas.common.vo.RdProjectVO;
  15. import cn.cslg.pas.common.vo.business.PatentDigProjectVO;
  16. import cn.cslg.pas.common.vo.business.PatentProjectVO;
  17. import cn.cslg.pas.common.vo.business.SimplePersonVO;
  18. import cn.cslg.pas.domain.business.*;
  19. import cn.cslg.pas.exception.UnLoginException;
  20. import cn.cslg.pas.exception.XiaoShiException;
  21. import cn.cslg.pas.factorys.businessFactory.Business;
  22. import cn.cslg.pas.factorys.reGroupFactory.QueryGroupFactory;
  23. import cn.cslg.pas.factorys.reGroupFactory.QueryGroupImp;
  24. import cn.cslg.pas.mapper.PatentDigProjectMapper;
  25. import cn.cslg.pas.service.common.FileManagerService;
  26. import cn.cslg.pas.service.permissions.PermissionService;
  27. import cn.cslg.pas.service.query.FormatQueryService;
  28. import com.alibaba.fastjson.JSON;
  29. import com.alibaba.fastjson.JSONObject;
  30. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  31. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  32. import org.springframework.beans.BeanUtils;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.stereotype.Service;
  35. import org.springframework.transaction.annotation.Transactional;
  36. import org.springframework.web.bind.annotation.RequestBody;
  37. import org.springframework.web.multipart.MultipartFile;
  38. import java.io.IOException;
  39. import java.util.ArrayList;
  40. import java.util.List;
  41. import java.util.stream.Collectors;
  42. @Service
  43. public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper, PatentDigProject> implements Business {
  44. @Autowired
  45. private RdProjectService rdProjectService;
  46. @Autowired
  47. private AssoProjectFileService assoProjectFileService;
  48. @Autowired
  49. private ProjectService projectService;
  50. @Autowired
  51. private FormatQueryService formatQueryService;
  52. @Autowired
  53. private PatentDigProjectMapper patentDigProjectMapper;
  54. @Autowired
  55. private FileManagerService fileManagerService;
  56. @Autowired
  57. private PermissionService permissionService;
  58. @Autowired
  59. private CacheUtils cacheUtils;
  60. @Autowired
  61. private LoginUtils loginUtils;
  62. @Autowired
  63. private AssoProjectEventService assoProjectEventService;
  64. @Autowired
  65. private EventService eventService;
  66. @Autowired
  67. private AssoProjectPersonService assoProjectPersonService;
  68. @Autowired
  69. private MatterService matterService;
  70. @Autowired
  71. private ScenarioService scenarioService;
  72. @Autowired
  73. private QueryGroupFactory queryGroupFactory;
  74. @Autowired
  75. private SystemDictService systemDictService;
  76. @Override
  77. public Object queryMessage(QueryRequest queryRequest) throws Exception {
  78. List<String> sqls = formatQueryService.reSqls(queryRequest, "patentDigProject");
  79. //根据sql查询专题库信息
  80. sqls = this.loadSearchSql(sqls);
  81. List<PatentDigProjectVO> patentProjectVOS = patentDigProjectMapper.getPatentDigProject(sqls.get(0), sqls.get(1), sqls.get(2));
  82. Long total = patentDigProjectMapper.getPatentDigCount(sqls.get(0));
  83. //装载专利数据库信息
  84. this.loadPatentDigProject(patentProjectVOS);
  85. Records records = new Records();
  86. records.setCurrent(queryRequest.getCurrent());
  87. records.setSize(queryRequest.getSize());
  88. records.setData(patentProjectVOS);
  89. records.setTotal(total);
  90. return records;
  91. }
  92. @Override
  93. public Object addMessage(Object object, List<MultipartFile> files) {
  94. return null;
  95. }
  96. @Override
  97. public Object deleteMessage(List<Integer> ids) throws IOException {
  98. if (ids == null || ids.size() == 0) {
  99. throw new XiaoShiException("ids不能为空");
  100. }
  101. //根据projectId 删除专利挖掘项目
  102. LambdaQueryWrapper<PatentDigProject> digProjectQueryWrapper = new LambdaQueryWrapper<>();
  103. digProjectQueryWrapper.in(PatentDigProject::getProjectId, ids);
  104. this.remove(digProjectQueryWrapper);
  105. //根据projectId 删除相关文件
  106. LambdaQueryWrapper<AssoProjectFile> deleteFileWrapper = new LambdaQueryWrapper<>();
  107. deleteFileWrapper.in(AssoProjectFile::getProjectId, ids);
  108. assoProjectFileService.remove(deleteFileWrapper);
  109. //TODO 删除流程文件
  110. //根据专利挖掘项目删除项目
  111. projectService.removeBatchByIds(ids);
  112. return ids;
  113. }
  114. @Override
  115. public Object updateMessage(Object object, List<MultipartFile> files) {
  116. return null;
  117. }
  118. @Override
  119. public Object getGroup(GroupRequest groupRequest, String tableName) throws Exception {
  120. StringRequest stringRequest = new StringRequest();
  121. BeanUtils.copyProperties(groupRequest, stringRequest);
  122. List<String> sqls = formatQueryService.reSqls(stringRequest, tableName);
  123. //格式化 分组
  124. GroupConfig groupConfig = null;
  125. if (groupRequest.getGroupBy() != null) {
  126. String json = CommonService.readJsonFile(tableName + ".json");
  127. List<GroupConfig> groupConfigs = JSON.parseArray(json, GroupConfig.class);
  128. groupConfig = groupConfigs.stream().filter(item -> groupRequest.getGroupBy().equals(item.getField())).findFirst().orElse(null);
  129. if (groupConfig == null) {
  130. throw new XiaoShiException("未找到配置");
  131. }
  132. }
  133. tableName = "patent_dig_project as dp left join project as p on dp.project_id =p.id left join rd_project rp on dp.rd_project_id =rp.id ";
  134. tableName+= "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
  135. "left join (select * from asso_project_event where event_id is not null ) as aspe on p.id = aspe.project_id " +
  136. "left join (select * from asso_project_event where matter_id is not null ) as aspm on p.id = aspm.project_id";
  137. //返回分组数据
  138. QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
  139. String countFiled="distinct p.id";
  140. ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(),countFiled);
  141. //装载数据
  142. GroupVO groupVO = new GroupVO();
  143. groupVO.setField(groupRequest.getGroupBy());
  144. groupVO.setValues(reGroupDataVO.getValues());
  145. Records records = new Records();
  146. records.setCurrent(groupRequest.getCurrent());
  147. records.setSize(groupRequest.getSize());
  148. records.setData(groupVO);
  149. records.setTotal(reGroupDataVO.getTotal());
  150. return records;
  151. }
  152. @Override
  153. @Transactional(rollbackFor = Exception.class)
  154. public Object addMessage(Object object) {
  155. //获取登陆人信息 用于设置创建人
  156. PersonnelVO personnelVO = new PersonnelVO();
  157. try {
  158. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  159. } catch (Exception e) {
  160. throw new UnLoginException("未登录");
  161. }
  162. String userId = personnelVO.getId();
  163. PatentDigProjectDTO patentDigProjectDTO = (PatentDigProjectDTO) object;
  164. PatentDigProject patentDigProject = new PatentDigProject();
  165. BeanUtils.copyProperties(patentDigProjectDTO, patentDigProject);
  166. Project project = new Project();
  167. project.setTenantId(personnelVO.getTenantId());
  168. project.setType(3);
  169. project.setHeadId(patentDigProjectDTO.getHeadId());
  170. project.setCreateId(personnelVO.getId());
  171. project.setDescription(patentDigProjectDTO.getDescription());
  172. //TODO 当委托方id或者委托方名称不为空时,
  173. if (patentDigProjectDTO.getEntrustId() != null || patentDigProjectDTO.getEntrustName() != null) {
  174. //根据创建人的租户类型设置project的委托类型
  175. if (personnelVO.getTenantType().equals("1")) {
  176. project.setEntrustType(1);
  177. //当委托方id不为空时
  178. if (patentDigProjectDTO.getEntrustId() != null) {
  179. project.setEntrustId(patentDigProjectDTO.getEntrustId());
  180. }
  181. //若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
  182. else {
  183. if (patentDigProjectDTO.getEntrustName() != null && patentDigProjectDTO.getEntrustName().trim() != "") {
  184. ClientDTO clientDTO = new ClientDTO();
  185. clientDTO.setName(patentDigProjectDTO.getEntrustName());
  186. clientDTO.setTenantId(personnelVO.getTenantId());
  187. try {
  188. String res = permissionService.addClient(clientDTO);
  189. JSONObject jsonObject = JSONObject.parseObject(res);
  190. Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
  191. project.setEntrustId(clientId.toString());
  192. project.setEntrustType(1);
  193. } catch (Exception e) {
  194. throw new XiaoShiException("网络异常");
  195. }
  196. }
  197. }
  198. } else {
  199. if (patentDigProjectDTO.getEntrustId() != null) {
  200. project.setEntrustType(0);
  201. project.setEntrustId(patentDigProjectDTO.getEntrustId());
  202. }
  203. }
  204. }
  205. project.insert();
  206. patentDigProject.setProjectId(project.getId());
  207. RdProject rdProject = new RdProject();
  208. List<RdProject> rdProjects = new ArrayList<>();
  209. if (patentDigProjectDTO.getRdnumber() != null) {
  210. //根据研发项目编号查询研发项目
  211. LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
  212. queryWrapper.eq(RdProject::getNumber, patentDigProjectDTO.getRdnumber());
  213. rdProjects = rdProjectService.list(queryWrapper);
  214. }
  215. else if (patentDigProjectDTO.getRdName() != null && rdProjects.size() == 0) {
  216. //根据研发项目编号查询研发项目
  217. LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
  218. queryWrapper.eq(RdProject::getName, patentDigProjectDTO.getRdName());
  219. rdProjects = rdProjectService.list(queryWrapper);
  220. }
  221. if (rdProjects.size() != 0) {
  222. rdProject = rdProjects.get(0);
  223. rdProject.setProductPhase(patentDigProjectDTO.getProductPhase());
  224. rdProject.setProduct(patentDigProjectDTO.getProduct());
  225. rdProject.updateById();
  226. } else {
  227. if (patentDigProjectDTO.getRdName() != null || patentDigProjectDTO.getRdnumber() != null || patentDigProjectDTO.getProduct() != null || patentDigProjectDTO.getProductPhase() != null) {
  228. rdProject.setName(patentDigProjectDTO.getRdName());
  229. rdProject.setCreateId(userId);
  230. rdProject.setTenantId(personnelVO.getTenantId());
  231. rdProject.setNumber(patentDigProjectDTO.getRdnumber());
  232. rdProject.setProductPhase(patentDigProjectDTO.getProductPhase());
  233. rdProject.setProduct(patentDigProjectDTO.getProduct());
  234. rdProject.insert();
  235. }
  236. }
  237. if (rdProject.getId()!=null) {
  238. patentDigProject.setRdProjectId(rdProject.getId());
  239. }
  240. patentDigProject.setState(2);
  241. patentDigProject.setProcess("0");
  242. patentDigProject.setTenantId(personnelVO.getTenantId());
  243. patentDigProject.insert();
  244. /**
  245. * 装载和附件关联
  246. */
  247. List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
  248. List<String> fileGuids = patentDigProjectDTO.getFileGuids();
  249. if (fileGuids != null && fileGuids.size() != 0) {
  250. for (String fileGuid : fileGuids) {
  251. AssoProjectFile assoProjectFile = new AssoProjectFile();
  252. assoProjectFile.setProjectId(project.getId());
  253. assoProjectFile.setFileGuid(fileGuid);
  254. assoProjectFile.setCreateId(personnelVO.getId());
  255. assoProjectFiles.add(assoProjectFile);
  256. }
  257. if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
  258. assoProjectFileService.saveBatch(assoProjectFiles);
  259. }
  260. }
  261. /**
  262. * 装载事件与project关联
  263. */
  264. List<ProjectEventDTO> events = patentDigProjectDTO.getEvents();
  265. if (events != null && events.size() != 0) {
  266. //遍历传入的事件集合
  267. if (events != null && events.size() != 0) {
  268. assoProjectEventService.addAssoEventProject(events,project.getId(),2);
  269. }
  270. }
  271. /**
  272. *装载参与人
  273. */
  274. if (patentDigProjectDTO.getInvolvedPersonIds() != null && patentDigProjectDTO.getInvolvedPersonIds().size() != 0) {
  275. List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
  276. patentDigProjectDTO.getInvolvedPersonIds().forEach(item -> {
  277. AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
  278. assoProjectPerson.setPersonId(item);
  279. assoProjectPerson.setRole(1);
  280. assoProjectPerson.setProjectId(project.getId());
  281. assoProjectPerson.setCreateId(userId);
  282. assoProjectPersonList.add(assoProjectPerson);
  283. });
  284. assoProjectPersonService.saveBatch(assoProjectPersonList);
  285. }
  286. return patentDigProject.getProjectId();
  287. }
  288. @Override
  289. @Transactional(rollbackFor = Exception.class)
  290. public Object updateMessage(Object object) {
  291. //获取登陆人信息 用于设置创建人
  292. PersonnelVO personnelVO = new PersonnelVO();
  293. try {
  294. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  295. } catch (Exception e) {
  296. throw new UnLoginException("未登录");
  297. }
  298. String userId = personnelVO.getId();
  299. PatentDigProjectUpdateDTO projectUpdateDTO = (PatentDigProjectUpdateDTO) object;
  300. PatentDigProject patentDigProject = new PatentDigProject();
  301. Project project = projectService.getById(projectUpdateDTO.getId());
  302. project.setHeadId(projectUpdateDTO.getHeadId());
  303. project.setDescription(projectUpdateDTO.getDescription());
  304. //当委托方id不为空时
  305. if (projectUpdateDTO.getEntrustId() != null) {
  306. project.setEntrustId(projectUpdateDTO.getEntrustId());
  307. }
  308. else {//若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
  309. if (projectUpdateDTO.getEntrustName() != null && projectUpdateDTO.getEntrustName().trim() != "") {
  310. ClientDTO clientDTO = new ClientDTO();
  311. clientDTO.setName(projectUpdateDTO.getEntrustName());
  312. clientDTO.setTenantId(personnelVO.getTenantId());
  313. try {
  314. String res = permissionService.addClient(clientDTO);
  315. JSONObject jsonObject = JSONObject.parseObject(res);
  316. Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
  317. project.setEntrustId(clientId.toString());
  318. } catch (Exception e) {
  319. throw new XiaoShiException("网络异常");
  320. }
  321. }
  322. }
  323. project.updateById();
  324. //根据projectId查询专利挖掘项目
  325. LambdaQueryWrapper<PatentDigProject> queryWrapper = new LambdaQueryWrapper<>();
  326. queryWrapper.eq(PatentDigProject::getProjectId, project.getId());
  327. List<PatentDigProject> patentDigProjects = this.list(queryWrapper);
  328. if (patentDigProjects.size() != 0) {
  329. //装载专利挖掘项目基本信息
  330. patentDigProject = patentDigProjects.get(0);
  331. patentDigProject.setName(projectUpdateDTO.getName());
  332. patentDigProject.setIfSearch(projectUpdateDTO.getIfSearch());
  333. patentDigProject.setOutput(projectUpdateDTO.getOutput());
  334. patentDigProject.setTechnicalDirection(projectUpdateDTO.getTechnicalDirection());
  335. patentDigProject.setRelatedCompetitors(projectUpdateDTO.getRelatedCompetitors());
  336. patentDigProject.setTechnicalKeyword(projectUpdateDTO.getTechnicalKeyword());
  337. if (projectUpdateDTO.getProcess() != null) {
  338. patentDigProject.setProcess(projectUpdateDTO.getProcess());
  339. }
  340. }
  341. RdProject rdProject = new RdProject();
  342. List<RdProject> rdProjects = new ArrayList<>();
  343. if (projectUpdateDTO.getRdnumber() != null) {
  344. //根据研发项目编号查询研发项目
  345. LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
  346. queryWrappera.eq(RdProject::getNumber, projectUpdateDTO.getRdnumber());
  347. rdProjects = rdProjectService.list(queryWrappera);
  348. } else if (projectUpdateDTO.getRdName() != null && rdProjects.size() == 0) {
  349. //根据研发项目编号查询研发项目
  350. LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
  351. queryWrappera.eq(RdProject::getName, projectUpdateDTO.getRdName());
  352. rdProjects = rdProjectService.list(queryWrappera);
  353. }
  354. if (rdProjects.size() != 0) {
  355. rdProject = rdProjects.get(0);
  356. rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
  357. rdProject.setProduct(projectUpdateDTO.getProduct());
  358. rdProject.updateById();
  359. } else {
  360. if (projectUpdateDTO.getRdName() != null || projectUpdateDTO.getRdnumber() != null || projectUpdateDTO.getProduct() != null || projectUpdateDTO.getProductPhase() != null) {
  361. rdProject.setName(projectUpdateDTO.getRdName());
  362. rdProject.setCreateId(userId);
  363. rdProject.setTenantId(personnelVO.getTenantId());
  364. rdProject.setNumber(projectUpdateDTO.getRdnumber());
  365. rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
  366. rdProject.setProduct(projectUpdateDTO.getProduct());
  367. rdProject.insert();
  368. }
  369. }
  370. if (rdProject.getId() != null) {
  371. patentDigProject.setRdProjectId(rdProject.getId());
  372. }
  373. //更新专利挖掘项目
  374. patentDigProject.updateById();
  375. //移除和附件关联
  376. LambdaQueryWrapper<AssoProjectFile> assoQueryWrapper = new LambdaQueryWrapper<>();
  377. assoQueryWrapper.eq(AssoProjectFile::getProjectId, projectUpdateDTO.getId());
  378. assoProjectFileService.remove(assoQueryWrapper);
  379. /**
  380. * 装载和附件关联
  381. */
  382. List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
  383. List<String> fileGuids = projectUpdateDTO.getFileGuids();
  384. if (fileGuids != null && fileGuids.size() != 0) {
  385. for (String fileGuid : fileGuids) {
  386. AssoProjectFile assoProjectFile = new AssoProjectFile();
  387. assoProjectFile.setProjectId(project.getId());
  388. assoProjectFile.setFileGuid(fileGuid);
  389. assoProjectFile.setCreateId(personnelVO.getId());
  390. assoProjectFiles.add(assoProjectFile);
  391. }
  392. if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
  393. assoProjectFileService.saveBatch(assoProjectFiles);
  394. }
  395. }
  396. //删除和事件关联
  397. LambdaQueryWrapper<AssoProjectEvent> assoEventQueryWrapper = new LambdaQueryWrapper<>();
  398. assoEventQueryWrapper.eq(AssoProjectEvent::getProjectId, projectUpdateDTO.getId());
  399. assoProjectEventService.remove(assoEventQueryWrapper);
  400. /**
  401. * 装载事件与project关联
  402. */
  403. List<ProjectEventDTO> events = projectUpdateDTO.getEvents();
  404. if (events != null && events.size() != 0) {
  405. assoProjectEventService.addAssoEventProject(events,project.getId(),2);
  406. }
  407. LambdaQueryWrapper<AssoProjectPerson> assoProjectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
  408. assoProjectPersonLambdaQueryWrapper.eq(AssoProjectPerson::getProjectId, projectUpdateDTO.getId());
  409. assoProjectPersonService.remove(assoProjectPersonLambdaQueryWrapper);
  410. /**
  411. *装载参与人
  412. */
  413. if (projectUpdateDTO.getInvolvedPersonIds() != null && projectUpdateDTO.getInvolvedPersonIds().size() != 0) {
  414. List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
  415. projectUpdateDTO.getInvolvedPersonIds().forEach(item -> {
  416. AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
  417. assoProjectPerson.setPersonId(item);
  418. assoProjectPerson.setRole(1);
  419. assoProjectPerson.setProjectId(project.getId());
  420. assoProjectPerson.setCreateId(userId);
  421. assoProjectPersonList.add(assoProjectPerson);
  422. });
  423. assoProjectPersonService.saveBatch(assoProjectPersonList);
  424. }
  425. return projectUpdateDTO.getId();
  426. }
  427. public Records getRdProjectByNumber(@RequestBody StringRequest stringRequest ) {
  428. List<String> sqls = formatQueryService.reSqls(stringRequest, "rdProject");
  429. //根据sql查询专题库信息
  430. List<RdProject> patentProjectVOS = patentDigProjectMapper.getRdProject(sqls.get(0), sqls.get(1), sqls.get(2));
  431. Long total = patentDigProjectMapper.getRdProjectCount(sqls.get(0));
  432. //装载专利数据库信息
  433. Records records = new Records();
  434. records.setCurrent(stringRequest.getCurrent());
  435. records.setSize(stringRequest.getSize());
  436. records.setData(patentProjectVOS);
  437. records.setTotal(total);
  438. return records;
  439. }
  440. public void loadPatentDigProject(List<PatentDigProjectVO> patentDigProjectVOS) throws IOException {
  441. List<String> createIds = new ArrayList<>();
  442. List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
  443. List<Integer> ids = new ArrayList<>();
  444. List<String> guids = new ArrayList<>();
  445. List<SystemFile> systemFiles = new ArrayList<>();
  446. List<Personnel> personnels = new ArrayList<>();
  447. List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
  448. List<Event> events = new ArrayList<>();
  449. List<Scenario> scenarios = new ArrayList<>();
  450. List<Matter> matters = new ArrayList<>();
  451. List<Client> clients = new ArrayList<>();
  452. List<String> departmentIds = new ArrayList<>();
  453. List<Integer> clientIds = new ArrayList<>();
  454. List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
  455. List<DepartmentVO> departmentVOS = new ArrayList<>();
  456. List<SystemDict> systemDictList = new ArrayList<>();
  457. //获得创建人id集合
  458. patentDigProjectVOS.forEach(
  459. item -> {
  460. if (item.getCreateId() != null) {
  461. createIds.add(item.getCreateId());
  462. }
  463. if (item.getHeadId() != null) {
  464. createIds.add(item.getHeadId());
  465. }
  466. if (item.getId() != null) {
  467. ids.add(item.getId());
  468. }
  469. if (item.getEntrustType() != null && item.getEntrustType().equals(2)) {
  470. departmentIds.add(item.getEntrustId());
  471. }
  472. if (item.getEntrustType() != null && item.getEntrustType().equals(1)) {
  473. clientIds.add(Integer.parseInt(item.getEntrustId()));
  474. }
  475. }
  476. );
  477. if (ids.size() != 0) {
  478. //根据事件id获得专利数据库文件关联表
  479. LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
  480. queryWrapper.in(AssoProjectFile::getProjectId, ids);
  481. assoProjectFiles = assoProjectFileService.list(queryWrapper);
  482. guids = assoProjectFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
  483. //
  484. LambdaQueryWrapper<SystemDict> systemDictLambdaQueryWrapper = new LambdaQueryWrapper<>();
  485. systemDictLambdaQueryWrapper.eq(SystemDict::getType, "REPORT_STATE");
  486. systemDictList = systemDictService.list(systemDictLambdaQueryWrapper);
  487. }
  488. //查询文件
  489. if (guids.size() != 0) {
  490. String res = fileManagerService.getSystemFileFromFMS(guids);
  491. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  492. }
  493. //查询应用场景、调查类型、事件和专题库的关联
  494. if (ids != null && ids.size() > 0) {
  495. LambdaQueryWrapper<AssoProjectEvent> assoProjectEventQueryWrapper = new LambdaQueryWrapper<>();
  496. assoProjectEventQueryWrapper.in(AssoProjectEvent::getProjectId, ids);
  497. assoProjectEvents = assoProjectEventService.list(assoProjectEventQueryWrapper);
  498. //查询事件
  499. if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
  500. scenarios = scenarioService.list();
  501. matters = matterService.list();
  502. List<Integer> eventIds = assoProjectEvents.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
  503. if (eventIds.size() != 0) {
  504. LambdaQueryWrapper<Event> eventQueryWrapper = new LambdaQueryWrapper<>();
  505. eventQueryWrapper.in(Event::getId, eventIds);
  506. events = eventService.list(eventQueryWrapper);
  507. }
  508. }
  509. //查询部门名称
  510. if (departmentIds.size() != 0) {
  511. String json = permissionService.getDepartmentByIdsFromPCS(departmentIds);
  512. departmentVOS = JSON.parseArray(json, DepartmentVO.class);
  513. }
  514. //查询和参与人关联
  515. LambdaQueryWrapper<AssoProjectPerson> projectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
  516. projectPersonLambdaQueryWrapper.in(AssoProjectPerson::getProjectId, ids);
  517. assoProjectPersonList = assoProjectPersonService.list(projectPersonLambdaQueryWrapper);
  518. List<String> personIds = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
  519. createIds.addAll(personIds);
  520. }
  521. //查询创建人名称
  522. if (createIds.size() != 0) {
  523. String res = permissionService.getPersonnelByIdsFromPCS(createIds);
  524. JSONObject jsonObject = JSONObject.parseObject(res);
  525. personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
  526. }
  527. //查询客户名称
  528. if (clientIds.size() != 0) {
  529. String res = permissionService.getClientByIdsFromPCS(clientIds);
  530. JSONObject jsonObject = JSONObject.parseObject(res);
  531. clients = JSONObject.parseArray(jsonObject.getString("data"), Client.class);
  532. }
  533. //装载信息
  534. for (PatentDigProjectVO patentDigProjectVO : patentDigProjectVOS) {
  535. //装载人员信息
  536. Personnel personnel = personnels.stream().filter(item -> item.getId().equals(patentDigProjectVO.getCreateId())).findFirst().orElse(null);
  537. if (personnel != null) {
  538. patentDigProjectVO.setCreateName(personnel.getPersonnelName());
  539. }
  540. if (patentDigProjectVO.getHeadId() != null) {
  541. Personnel headPersonnel = personnels.stream().filter(item -> item.getId().equals(patentDigProjectVO.getHeadId())).findFirst().orElse(null);
  542. if (headPersonnel != null) {
  543. patentDigProjectVO.setHeadName(headPersonnel.getPersonnelName());
  544. }
  545. }
  546. //装载参与人
  547. List<SimplePersonVO> simplePersonVOS = new ArrayList<>();
  548. List<AssoProjectPerson> assoProjectPersonTmps = assoProjectPersonList.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
  549. List<String> personIds = assoProjectPersonTmps.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
  550. if (personIds.size() != 0) {
  551. List<Personnel> personneltmps = personnels.stream().filter(item -> personIds.contains(item.getId())).collect(Collectors.toList());
  552. personneltmps.forEach(item -> {
  553. SimplePersonVO simplePersonVO = new SimplePersonVO();
  554. simplePersonVO.setPersonId(item.getId());
  555. simplePersonVO.setPersonName(item.getPersonnelName());
  556. simplePersonVOS.add(simplePersonVO);
  557. });
  558. }
  559. patentDigProjectVO.setInvolvedPersons(simplePersonVOS);
  560. //装载文件信息
  561. List<AssoProjectFile> assoProjectFileTemp = assoProjectFiles.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
  562. if (assoProjectFileTemp.size() != 0) {
  563. List<String> guidTemp = assoProjectFileTemp.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
  564. if (guidTemp.size() != 0) {
  565. List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
  566. if (systemFileTemp.size() != 0) {
  567. patentDigProjectVO.setSystemFileList(systemFileTemp);
  568. }
  569. }
  570. }
  571. //装载事件 应用场景,处理事项
  572. List<Integer> eventIds = new ArrayList<>();
  573. List<Integer> matterIds = new ArrayList<>();
  574. List<Integer> scenarioIds = new ArrayList<>();
  575. List<String> eventTmpNames = new ArrayList<>();
  576. List<String> matterTmpNames = new ArrayList<>();
  577. List<String> scenarioTmpNames = new ArrayList<>();
  578. if (assoProjectEvents != null) {
  579. List<AssoProjectEvent> assoProjectEventTmps = assoProjectEvents.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
  580. if (assoProjectEventTmps.size() != 0) {
  581. //过滤出事件
  582. eventIds = assoProjectEventTmps.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
  583. matterIds = assoProjectEventTmps.stream().filter(item -> item.getMatterId() != null).map(AssoProjectEvent::getMatterId).collect(Collectors.toList());
  584. scenarioIds = assoProjectEventTmps.stream().filter(item -> item.getScenarioId() != null).map(AssoProjectEvent::getScenarioId).collect(Collectors.toList());
  585. List<Integer> eventIdsFilter = eventIds;
  586. List<Integer> matterIdsFilter = matterIds;
  587. List<Integer> scenarioIdsFilter = scenarioIds;
  588. List<Event> eventTmps = events.stream().filter(item -> eventIdsFilter.contains(item.getId())).collect(Collectors.toList());
  589. List<Matter> matterTmps = matters.stream().filter(item -> matterIdsFilter.contains(item.getId())).collect(Collectors.toList());
  590. List<Scenario> scenarioTmps = scenarios.stream().filter(item -> scenarioIdsFilter.contains(item.getId())).collect(Collectors.toList());
  591. eventTmpNames = eventTmps.stream().map(Event::getName).collect(Collectors.toList());
  592. eventIds = eventTmps.stream().map(Event::getId).collect(Collectors.toList());
  593. matterTmpNames = matterTmps.stream().map(Matter::getName).collect(Collectors.toList());
  594. matterIds = matterTmps.stream().map(Matter::getId).collect(Collectors.toList());
  595. scenarioTmpNames = scenarioTmps.stream().map(Scenario::getName).collect(Collectors.toList());
  596. scenarioIds = scenarioTmps.stream().map(Scenario::getId).collect(Collectors.toList());
  597. }
  598. }
  599. patentDigProjectVO.setScenarioIds(scenarioIds);
  600. patentDigProjectVO.setMatterIds(matterIds);
  601. patentDigProjectVO.setEventIds(eventIds);
  602. patentDigProjectVO.setScenarioNames(scenarioTmpNames);
  603. patentDigProjectVO.setMatterNames(matterTmpNames);
  604. patentDigProjectVO.setEventNames(eventTmpNames);
  605. //裝載委托方
  606. if (patentDigProjectVO.getEntrustType() != null) {
  607. //当委托方为客户时
  608. if (patentDigProjectVO.getEntrustType().equals(1)) {
  609. Client client = clients.stream().filter(item -> item.getId().equals(Integer.parseInt(patentDigProjectVO.getEntrustId()))).findFirst().orElse(null);
  610. if (client != null) {
  611. patentDigProjectVO.setEntrustName(client.getName());
  612. }
  613. } else if (patentDigProjectVO.getEntrustType().equals(2)) {
  614. DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(patentDigProjectVO.getEntrustId())).findFirst().orElse(null);
  615. if (departmentVO != null) {
  616. patentDigProjectVO.setEntrustName(departmentVO.getDepartName());
  617. }
  618. }
  619. }
  620. //装载报告状态
  621. SystemDict systemDictStatus = systemDictList.stream().filter(item -> patentDigProjectVO.getState().equals(Integer.parseInt(item.getValue()))&&item.getType().equals("REPORT_STATE")).findFirst().orElse(null);
  622. if (systemDictStatus != null) {
  623. patentDigProjectVO.setStateName(systemDictStatus.getLabel());
  624. }
  625. }
  626. }
  627. //装载查询语句
  628. private List<String> loadSearchSql(List<String> sqls){
  629. PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
  630. String id =personnelVO.getId();
  631. Integer tenantId= personnelVO.getTenantId();
  632. Integer roleType = personnelVO.getRoleType();
  633. String rootSql = "";
  634. if (roleType == null || roleType.equals(0)) {
  635. rootSql ="(p.create_id ="+id+" or p.head_id="+id+" or p.id in (select project_id from asso_project_person where person_id ="+id+"))";
  636. }
  637. else if(roleType.equals(2))
  638. {
  639. rootSql="p.tenant_id="+tenantId;
  640. }
  641. if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
  642. sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
  643. } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
  644. sqls.set(0, rootSql);
  645. }
  646. return sqls;
  647. }
  648. }