PatentDigProjectService.java 35 KB

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