ReportProjectService.java 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.ClientDTO;
  3. import cn.cslg.pas.common.dto.business.PatentProjectDTO;
  4. import cn.cslg.pas.common.dto.business.ProjectEventDTO;
  5. import cn.cslg.pas.common.dto.business.ReportProjectDTO;
  6. import cn.cslg.pas.common.dto.business.UpdateReportProjectDTO;
  7. import cn.cslg.pas.common.dto.invalidDTO.UpdateIfSecondInvalidDTO;
  8. import cn.cslg.pas.common.model.cronModel.*;
  9. import cn.cslg.pas.common.model.request.GroupRequest;
  10. import cn.cslg.pas.common.model.request.QueryRequest;
  11. import cn.cslg.pas.common.model.request.StringRequest;
  12. import cn.cslg.pas.common.utils.CacheUtils;
  13. import cn.cslg.pas.common.utils.LoginUtils;
  14. import cn.cslg.pas.common.vo.DepartmentVO;
  15. import cn.cslg.pas.common.vo.PatentWithIdVO;
  16. import cn.cslg.pas.common.vo.QueryCasePhaseVO;
  17. import cn.cslg.pas.common.vo.QueryReportAffairConclusionVO;
  18. import cn.cslg.pas.common.vo.business.*;
  19. import cn.cslg.pas.domain.business.*;
  20. import cn.cslg.pas.domain.es.Patent;
  21. import cn.cslg.pas.domain.es.PatentPerson;
  22. import cn.cslg.pas.exception.UnLoginException;
  23. import cn.cslg.pas.exception.XiaoShiException;
  24. import cn.cslg.pas.factorys.businessFactory.Business;
  25. import cn.cslg.pas.factorys.reGroupFactory.QueryGroupFactory;
  26. import cn.cslg.pas.factorys.reGroupFactory.QueryGroupImp;
  27. import cn.cslg.pas.mapper.*;
  28. import cn.cslg.pas.service.business.es.EsPatentService;
  29. import cn.cslg.pas.service.business.es.EsService;
  30. import cn.cslg.pas.service.common.FileManagerService;
  31. import cn.cslg.pas.service.permissions.PermissionService;
  32. import cn.cslg.pas.service.query.FormatQueryService;
  33. import com.alibaba.fastjson.JSON;
  34. import com.alibaba.fastjson.JSONObject;
  35. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  36. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  37. import jakarta.validation.constraints.AssertFalse;
  38. import lombok.extern.slf4j.Slf4j;
  39. import org.apache.commons.lang3.StringUtils;
  40. import org.springframework.beans.BeanUtils;
  41. import org.springframework.beans.factory.annotation.Autowired;
  42. import org.springframework.context.annotation.Lazy;
  43. import org.springframework.stereotype.Service;
  44. import org.springframework.transaction.annotation.Transactional;
  45. import org.springframework.util.CollectionUtils;
  46. import org.springframework.web.multipart.MultipartFile;
  47. import java.io.IOException;
  48. import java.util.ArrayList;
  49. import java.util.Arrays;
  50. import java.util.List;
  51. import java.util.stream.Collectors;
  52. @Slf4j
  53. @Service
  54. public class ReportProjectService extends ServiceImpl<ReportProjectMapper, ReportProject> implements Business {
  55. @Autowired
  56. private ReportProjectMapper reportProjectMapper;
  57. @Autowired
  58. private FormatQueryService formatQueryService;
  59. @Autowired
  60. private FileManagerService fileManagerService;
  61. @Autowired
  62. private QueryGroupFactory queryGroupFactory;
  63. @Autowired
  64. private PermissionService permissionService;
  65. @Autowired
  66. private AssoProjectEventService assoProjectEventService;
  67. @Autowired
  68. private AssoProjectFileService assoProjectFileService;
  69. @Autowired
  70. private AssoReportCronService assoReportCronService;
  71. @Autowired
  72. private AssoProjectPersonService assoProjectPersonService;
  73. @Autowired
  74. private CacheUtils cacheUtils;
  75. @Autowired
  76. private LoginUtils loginUtils;
  77. @Autowired
  78. private FollowUpService followUpService;
  79. @Autowired
  80. private EventService eventService;
  81. @Autowired
  82. private ProjectService projectService;
  83. @Autowired
  84. private AssoProjectService assoProjectService;
  85. @Autowired
  86. private SystemDictService systemDictService;
  87. @Autowired
  88. private MatterService matterService;
  89. @Autowired
  90. private ScenarioService scenarioService;
  91. @Autowired
  92. private EsService esService;
  93. @Autowired
  94. private EsPatentService esPatentService;
  95. @Autowired
  96. private CustomFieldService customFieldService;
  97. @Autowired
  98. @Lazy
  99. private CompareLiteratureService compareLiteratureService;
  100. @Autowired
  101. private ReportAffairMapper reportAffairMapper;
  102. @Override
  103. @Transactional(rollbackFor = Exception.class)
  104. public Object queryMessage(QueryRequest queryRequest) throws Exception {
  105. String tableName = "reportProject";
  106. Boolean ifInvalidReport = queryRequest.getIfInvalidReport();
  107. if (ifInvalidReport != null && ifInvalidReport) {
  108. tableName = "invalidReportProject";
  109. }
  110. List<String> sqls = formatQueryService.reSqls(queryRequest, tableName);
  111. sqls = this.loadSearchSql(sqls);
  112. //根据sql查询事件信息
  113. List<ReportProjectVO> reportProject = reportProjectMapper.getReportProject(this.getSelectMessage(), sqls.get(0), sqls.get(1), sqls.get(2));
  114. this.loadReportProjectVO(reportProject, ifInvalidReport);
  115. //查询总数
  116. Long total = reportProjectMapper.getReportProjectCount(this.getSelectMessage(), sqls.get(0));
  117. //装载事件信息
  118. Records records = new Records();
  119. records.setCurrent(queryRequest.getCurrent());
  120. records.setSize(queryRequest.getSize());
  121. records.setData(reportProject);
  122. records.setTotal(total);
  123. return records;
  124. }
  125. @Override
  126. @Transactional(rollbackFor = Exception.class)
  127. public Integer addMessage(Object object, List<MultipartFile> files) {
  128. return null;
  129. }
  130. @Override
  131. @Transactional(rollbackFor = Exception.class)
  132. public Object deleteMessage(List<Integer> ids) throws IOException {
  133. //后续事项
  134. LambdaQueryWrapper<FollowUp> followUpWrapper = new LambdaQueryWrapper<>();
  135. followUpWrapper.in(FollowUp::getProjectId, ids);
  136. followUpService.remove(followUpWrapper);
  137. //事件
  138. LambdaQueryWrapper<AssoProjectEvent> eventWrapper = new LambdaQueryWrapper<>();
  139. eventWrapper.in(AssoProjectEvent::getProjectId, ids);
  140. assoProjectEventService.remove(eventWrapper);
  141. //附件
  142. LambdaQueryWrapper<AssoProjectFile> fileWrapper = new LambdaQueryWrapper<>();
  143. fileWrapper.in(AssoProjectFile::getProjectId, ids);
  144. assoProjectFileService.remove(fileWrapper);
  145. //核心结论
  146. LambdaQueryWrapper<AssoReportCron> reportCronWrapper = new LambdaQueryWrapper<>();
  147. reportCronWrapper.in(AssoReportCron::getProjectId, ids);
  148. assoReportCronService.remove(reportCronWrapper);
  149. //和报告关联
  150. LambdaQueryWrapper<AssoProject> assoReportWrapper = new LambdaQueryWrapper<>();
  151. assoReportWrapper.in(AssoProject::getProjectId, ids);
  152. assoReportWrapper.eq(AssoProject::getProjectType, 2);
  153. assoReportWrapper.eq(AssoProject::getAssoProjectType, 2);
  154. assoProjectService.remove(assoReportWrapper);
  155. //report
  156. LambdaQueryWrapper<ReportProject> reportProjectWrapper = new LambdaQueryWrapper<>();
  157. reportProjectWrapper.in(ReportProject::getProjectId, ids);
  158. this.remove(reportProjectWrapper);
  159. //project
  160. projectService.removeBatchByIds(ids);
  161. return ids;
  162. }
  163. /**
  164. * 更新事件接口
  165. *
  166. * @param object
  167. * @param files
  168. * @return
  169. */
  170. @Override
  171. @Transactional(rollbackFor = Exception.class)
  172. public Object updateMessage(Object object, List<MultipartFile> files) {
  173. return null;
  174. }
  175. /**
  176. * 查询事件分组信息
  177. *
  178. * @param groupRequest
  179. * @return
  180. * @throws Exception
  181. */
  182. @Transactional(rollbackFor = Exception.class)
  183. public Object getGroup(GroupRequest groupRequest, String tableName) throws Exception {
  184. StringRequest stringRequest = new StringRequest();
  185. BeanUtils.copyProperties(groupRequest, stringRequest);
  186. List<String> sqls = formatQueryService.reSqls(stringRequest, tableName);
  187. sqls = this.loadSearchSql(sqls);
  188. //格式化 分组
  189. GroupConfig groupConfig = null;
  190. if (groupRequest.getGroupBy() != null) {
  191. String json = CommonService.readJsonFile(tableName + ".json");
  192. List<GroupConfig> groupConfigs = JSON.parseArray(json, GroupConfig.class);
  193. groupConfig = groupConfigs.stream().filter(item -> groupRequest.getGroupBy().equals(item.getField())).findFirst().orElse(null);
  194. if (groupConfig == null) {
  195. throw new XiaoShiException("未找到配置");
  196. }
  197. }
  198. tableName = "(" + getSelectMessage() + ") as t";
  199. //返回分组数据
  200. QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
  201. String countFiled = "distinct t.id";
  202. ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(), countFiled);
  203. //装载数据
  204. GroupVO groupVO = new GroupVO();
  205. groupVO.setField(groupRequest.getGroupBy());
  206. groupVO.setValues(reGroupDataVO.getValues());
  207. Records records = new Records();
  208. records.setCurrent(groupRequest.getCurrent());
  209. records.setSize(groupRequest.getSize());
  210. records.setData(groupVO);
  211. records.setTotal(reGroupDataVO.getTotal());
  212. return records;
  213. }
  214. @Override
  215. @Transactional(rollbackFor = Exception.class)
  216. public Object addMessage(Object object) {
  217. //TODO 校验参数
  218. //object to reportProjectDTO
  219. ReportProjectDTO reportProjectDTO = (ReportProjectDTO) object;
  220. /**
  221. * 校验必传参数是否上传
  222. */
  223. //负责人id
  224. if (reportProjectDTO.getHeadId() == null) {
  225. throw new XiaoShiException("负责人id不能为空");
  226. }
  227. //报告类型
  228. if (reportProjectDTO.getReportType().equals(null)) {
  229. throw new XiaoShiException("报告类型不能为空");
  230. }
  231. //获取登陆人信息 用于设置创建人
  232. PersonnelVO personnelVO = new PersonnelVO();
  233. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  234. String userId = personnelVO.getId();
  235. /**
  236. * 装载project
  237. */
  238. Project project = new Project();
  239. BeanUtils.copyProperties(reportProjectDTO, project);
  240. project.setCreateId(personnelVO.getId());
  241. project.setTenantId(personnelVO.getTenantId());
  242. //TODO 当委托方id或者委托方名称不为空时,
  243. if (reportProjectDTO.getEntrustId() != null || reportProjectDTO.getEntrustName() != null) {
  244. //根据创建人的租户类型设置project的委托类型
  245. if (personnelVO.getTenantType().equals("1")) {
  246. project.setEntrustType(1);
  247. //当委托方id不为空时
  248. if (StringUtils.isNotEmpty(reportProjectDTO.getEntrustId()) && !StringUtils.equals(reportProjectDTO.getEntrustId(), "-1")) {
  249. project.setEntrustId(reportProjectDTO.getEntrustId());
  250. }
  251. //若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
  252. else {
  253. if (reportProjectDTO.getEntrustName() != null && reportProjectDTO.getEntrustName().trim() != "") {
  254. ClientDTO clientDTO = new ClientDTO();
  255. clientDTO.setName(reportProjectDTO.getEntrustName());
  256. clientDTO.setTenantId(personnelVO.getTenantId());
  257. try {
  258. String res = permissionService.addClient(clientDTO);
  259. JSONObject jsonObject = JSONObject.parseObject(res);
  260. Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
  261. project.setEntrustId(clientId.toString());
  262. project.setEntrustType(1);
  263. } catch (Exception e) {
  264. throw new XiaoShiException("网络异常");
  265. }
  266. }
  267. }
  268. } else {
  269. if (reportProjectDTO.getEntrustId() != null) {
  270. project.setEntrustType(0);
  271. project.setEntrustId(reportProjectDTO.getEntrustId());
  272. }
  273. }
  274. }
  275. project.insert();
  276. /**
  277. * 装载和报告关联
  278. */
  279. if (reportProjectDTO.getAssoReportId() != null) {
  280. AssoProject assoProject = new AssoProject();
  281. assoProject.setAssoProjectId(project.getId());
  282. assoProject.setAssoProjectType(2);
  283. assoProject.setProjectId(reportProjectDTO.getAssoReportId());
  284. assoProject.setProjectType(2);
  285. assoProject.insert();
  286. }
  287. /**
  288. * 装载reportProject
  289. */
  290. ReportProject reportProject = new ReportProject();
  291. BeanUtils.copyProperties(reportProjectDTO, reportProject);
  292. if (reportProject.getSignPatentNo() != null) {
  293. try {
  294. PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(reportProject.getSignPatentNo());
  295. if (patentWithIdVO != null && patentWithIdVO.getPatent() != null) {
  296. if (patentWithIdVO.getPatent().getPatentType() != null) {
  297. reportProject.setPatentType(Integer.parseInt(patentWithIdVO.getPatent().getPatentType()));
  298. }
  299. }
  300. Patent patent = patentWithIdVO.getPatent();
  301. if (patent.getRightHolder() != null && patent.getRightHolder().size() > 0) {
  302. List<String> rightHolders = patent.getRightHolder().stream().map(PatentPerson::getName).collect(Collectors.toList());
  303. String holderString = StringUtils.join(rightHolders, ",");
  304. reportProject.setRightHolder(holderString);
  305. }
  306. } catch (Exception e) {
  307. throw new XiaoShiException("未查询到标的专利");
  308. }
  309. //根据专利号查询专利
  310. }
  311. reportProject.setProjectId(project.getId());
  312. //根据是否直接完成设置报告的状态
  313. if (reportProjectDTO.getIfFinish() == null || !reportProjectDTO.getIfFinish()) {
  314. reportProject.setStatus(2);
  315. } else if (reportProjectDTO.getIfFinish()) {
  316. reportProject.setStatus(3);
  317. }
  318. reportProject.insert();
  319. /**
  320. * 装载后续事项和project关联
  321. */
  322. if (reportProjectDTO.getFollowUps() != null && reportProjectDTO.getFollowUps().size() != 0) {
  323. List<FollowUp> followUps = new ArrayList<>();
  324. reportProjectDTO.getFollowUps().forEach(item -> {
  325. FollowUp followUp = new FollowUp();
  326. BeanUtils.copyProperties(item, followUp);
  327. followUp.setProjectId(project.getId());
  328. followUp.setCreateId(userId);
  329. followUps.add(followUp);
  330. });
  331. followUpService.saveBatch(followUps);
  332. }
  333. /**
  334. * 装载事件与project关联
  335. */
  336. List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
  337. List<ProjectEventDTO> events = reportProjectDTO.getEvents();
  338. if (events != null && events.size() != 0) {
  339. assoProjectEventService.addAssoEventProject(events, project.getId(), 1);
  340. }
  341. /**
  342. * 装载和附件关联
  343. */
  344. List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
  345. List<String> fileGuids = reportProjectDTO.getFileGuids();
  346. if (fileGuids != null && fileGuids.size() != 0) {
  347. for (String fileGuid : fileGuids) {
  348. AssoProjectFile assoProjectFile = new AssoProjectFile();
  349. assoProjectFile.setProjectId(project.getId());
  350. assoProjectFile.setFileGuid(fileGuid);
  351. assoProjectFile.setCreateId(personnelVO.getId());
  352. assoProjectFiles.add(assoProjectFile);
  353. }
  354. if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
  355. assoProjectFileService.saveBatch(assoProjectFiles);
  356. }
  357. }
  358. /**
  359. * 装载核心结论
  360. */
  361. List<Integer> cronIds = reportProjectDTO.getCronIds();
  362. List<AssoReportCron> assoReportCrons = new ArrayList<>();
  363. if (cronIds != null && cronIds.size() != 0) {
  364. cronIds.forEach(item -> {
  365. AssoReportCron assoReportCron = new AssoReportCron();
  366. assoReportCron.setProjectId(project.getId());
  367. assoReportCron.setCronId(item);
  368. assoReportCrons.add(assoReportCron);
  369. });
  370. assoReportCronService.saveBatch(assoReportCrons);
  371. }
  372. List<String> involvedPersonIds = reportProjectDTO.getInvolvedPersonIds();
  373. //添加项目的参与人
  374. assoProjectPersonService.addProjectPeople(1, project.getId(), involvedPersonIds);
  375. /**
  376. * 复制信息
  377. */
  378. Boolean track = reportProjectDTO.getTrack();
  379. if (track != null && track.equals(true)) {
  380. List<Integer> copyIds = reportProjectDTO.getCopyIds();
  381. //复制对比文献
  382. if (copyIds != null && copyIds.contains(0)) {
  383. Integer oldProjectId = reportProjectDTO.getAssociateReportId();
  384. compareLiteratureService.copyCompareLiterature(oldProjectId, project.getId());
  385. }
  386. //复制标引信息
  387. if (copyIds != null && copyIds.contains(1)) {
  388. Integer oldProjectId = reportProjectDTO.getAssociateReportId();
  389. customFieldService.copyCustomField(oldProjectId, project.getId());
  390. }
  391. }
  392. //返回id
  393. return project.getId();
  394. }
  395. @Override
  396. public Object updateMessage(Object object) {
  397. //TODO 校验参数
  398. //object to reportProjectDTO
  399. UpdateReportProjectDTO updateReportProjectDTO = (UpdateReportProjectDTO) object;
  400. /**
  401. * 校验必传参数是否上传
  402. */
  403. //负责人id
  404. if (updateReportProjectDTO.getHeadId() == null) {
  405. throw new XiaoShiException("负责人id不能为空");
  406. }
  407. //报告类型
  408. if (updateReportProjectDTO.getReportType().equals(null)) {
  409. throw new XiaoShiException("报告类型不能为空");
  410. }
  411. //获取登陆人信息 用于设置创建人
  412. PersonnelVO personnelVO = new PersonnelVO();
  413. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  414. String userId = personnelVO.getId();
  415. /**
  416. * 装载project
  417. */
  418. Project project = projectService.getById(updateReportProjectDTO.getId());
  419. BeanUtils.copyProperties(updateReportProjectDTO, project);
  420. //TODO 当委托方id或者委托方名称不为空时,
  421. if (updateReportProjectDTO.getEntrustId() != null || updateReportProjectDTO.getEntrustName() != null) {
  422. //根据创建人的租户类型设置project的委托类型
  423. if (personnelVO.getTenantType().equals("1")) {
  424. project.setEntrustType(1);
  425. //当委托方id不为空时
  426. if (StringUtils.isNotEmpty(updateReportProjectDTO.getEntrustId()) && !StringUtils.equals(updateReportProjectDTO.getEntrustId(), "-1")) {
  427. project.setEntrustId(updateReportProjectDTO.getEntrustId());
  428. }
  429. //若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
  430. else {
  431. if (updateReportProjectDTO.getEntrustName() != null && updateReportProjectDTO.getEntrustName().trim() != "") {
  432. ClientDTO clientDTO = new ClientDTO();
  433. clientDTO.setName(updateReportProjectDTO.getEntrustName());
  434. clientDTO.setTenantId(personnelVO.getTenantId());
  435. try {
  436. String res = permissionService.addClient(clientDTO);
  437. JSONObject jsonObject = JSONObject.parseObject(res);
  438. Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
  439. project.setEntrustId(clientId.toString());
  440. project.setEntrustType(1);
  441. } catch (Exception e) {
  442. throw new XiaoShiException("网络异常");
  443. }
  444. }
  445. }
  446. } else {
  447. if (updateReportProjectDTO.getEntrustId() != null) {
  448. project.setEntrustType(0);
  449. project.setEntrustId(updateReportProjectDTO.getEntrustId());
  450. }
  451. }
  452. }
  453. project.updateById();
  454. /**
  455. * 装载和报告关联
  456. */
  457. if (updateReportProjectDTO.getAssoReportId() != null) {
  458. LambdaQueryWrapper<AssoProject> deleteReportWrapper = new LambdaQueryWrapper<>();
  459. deleteReportWrapper.eq(AssoProject::getProjectId, project.getId());
  460. assoProjectService.remove(deleteReportWrapper);
  461. AssoProject assoProject = new AssoProject();
  462. assoProject.setAssoProjectId(project.getId());
  463. assoProject.setAssoProjectType(2);
  464. assoProject.setProjectId(updateReportProjectDTO.getAssoReportId());
  465. assoProject.setProjectType(2);
  466. assoProject.insert();
  467. }
  468. /**
  469. * 装载reportProject
  470. */
  471. LambdaQueryWrapper<ReportProject> reportProjectWrapper = new LambdaQueryWrapper<>();
  472. reportProjectWrapper.eq(ReportProject::getProjectId, project.getId());
  473. ReportProject reportProject = this.getOne(reportProjectWrapper);
  474. Integer reportId = reportProject.getId();
  475. if (reportProject.getSignPatentNo() != null && reportProject.getSignPatentNo() != updateReportProjectDTO.getSignPatentNo()) {
  476. try {
  477. String patentNo =updateReportProjectDTO.getSignPatentNo();
  478. PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patentNo);
  479. if(patentWithIdVO==null){
  480. reportProject.setRightHolder("");
  481. }else {
  482. Patent patent = patentWithIdVO.getPatent();
  483. if (patent.getRightHolder() != null && patent.getRightHolder().size() > 0) {
  484. List<String> rightHolders = patent.getRightHolder().stream().map(PatentPerson::getName).collect(Collectors.toList());
  485. String holderString = StringUtils.join(rightHolders, ",");
  486. reportProject.setRightHolder(holderString);
  487. }
  488. else {
  489. reportProject.setRightHolder("");
  490. }
  491. }
  492. } catch (Exception e) {
  493. e.printStackTrace();
  494. }
  495. }
  496. updateReportProjectDTO.setEvidenceRiskResponse(reportProject.getEvidenceRiskResponse());
  497. updateReportProjectDTO.setOralPanelMembers(reportProject.getOralPanelMembers());
  498. updateReportProjectDTO.setOfficialDeadline(reportProject.getOfficialDeadline());
  499. BeanUtils.copyProperties(updateReportProjectDTO, reportProject);
  500. reportProject.setId(reportId);
  501. reportProject.updateById();
  502. /**
  503. * 装载后续事项和project关联
  504. */
  505. LambdaQueryWrapper<FollowUp> followUpWrapper = new LambdaQueryWrapper<>();
  506. followUpWrapper.eq(FollowUp::getProjectId, project.getId());
  507. followUpService.remove(followUpWrapper);
  508. if (updateReportProjectDTO.getFollowUps() != null && updateReportProjectDTO.getFollowUps().size() != 0) {
  509. List<FollowUp> followUps = new ArrayList<>();
  510. updateReportProjectDTO.getFollowUps().forEach(item -> {
  511. FollowUp followUp = new FollowUp();
  512. BeanUtils.copyProperties(item, followUp);
  513. followUp.setCreateId(userId);
  514. followUp.setProjectId(project.getId());
  515. followUps.add(followUp);
  516. });
  517. followUpService.saveBatch(followUps);
  518. }
  519. /**
  520. * 装载事件与project关联
  521. */
  522. List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
  523. LambdaQueryWrapper<AssoProjectEvent> deleteEventWrapper = new LambdaQueryWrapper<>();
  524. deleteEventWrapper.eq(AssoProjectEvent::getProjectId, project.getId());
  525. assoProjectEventService.remove(deleteEventWrapper);
  526. List<ProjectEventDTO> events = updateReportProjectDTO.getEvents();
  527. if (events != null && events.size() != 0) {
  528. if (events != null && events.size() != 0) {
  529. assoProjectEventService.addAssoEventProject(events, project.getId(), 1);
  530. }
  531. }
  532. /**
  533. * 装载和附件关联
  534. */
  535. List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
  536. LambdaQueryWrapper<AssoProjectFile> deleteFileWrapper = new LambdaQueryWrapper<>();
  537. deleteFileWrapper.eq(AssoProjectFile::getProjectId, project.getId());
  538. assoProjectFileService.remove(deleteFileWrapper);
  539. List<String> fileGuids = updateReportProjectDTO.getFileGuids();
  540. if (fileGuids != null && fileGuids.size() != 0) {
  541. for (String fileGuid : fileGuids) {
  542. AssoProjectFile assoProjectFile = new AssoProjectFile();
  543. assoProjectFile.setProjectId(project.getId());
  544. assoProjectFile.setFileGuid(fileGuid);
  545. assoProjectFile.setCreateId(personnelVO.getId());
  546. assoProjectFiles.add(assoProjectFile);
  547. }
  548. if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
  549. assoProjectFileService.saveBatch(assoProjectFiles);
  550. }
  551. }
  552. /**
  553. * 装载核心结论
  554. */
  555. List<Integer> cronIds = updateReportProjectDTO.getCronIds();
  556. LambdaQueryWrapper<AssoReportCron> reportCronWrapper = new LambdaQueryWrapper<>();
  557. reportCronWrapper.eq(AssoReportCron::getProjectId, project.getId());
  558. assoReportCronService.remove(reportCronWrapper);
  559. List<AssoReportCron> assoReportCrons = new ArrayList<>();
  560. if (cronIds != null && cronIds.size() != 0) {
  561. cronIds.forEach(item -> {
  562. AssoReportCron assoReportCron = new AssoReportCron();
  563. assoReportCron.setProjectId(project.getId());
  564. assoReportCron.setCronId(item);
  565. assoReportCrons.add(assoReportCron);
  566. });
  567. assoReportCronService.saveBatch(assoReportCrons);
  568. }
  569. /**
  570. *装载参与人
  571. */
  572. List<String> involvedPersonIds = updateReportProjectDTO.getInvolvedPersonIds();
  573. assoProjectPersonService.updateProjectPeople(1, project.getId(), involvedPersonIds);
  574. //返回id
  575. return project.getId();
  576. }
  577. /**
  578. * 装载报告返回类
  579. *
  580. * @param reportProjectVOs
  581. */
  582. private void loadReportProjectVO(List<ReportProjectVO> reportProjectVOs, Boolean ifInvalidReport) throws IOException {
  583. List<String> createIds = new ArrayList<>();
  584. List<String> departmentIds = new ArrayList<>();
  585. List<DepartmentVO> departmentVOS = new ArrayList<>();
  586. List<Integer> clientIds = new ArrayList<>();
  587. List<Integer> ids = new ArrayList<>();
  588. List<Client> clients = new ArrayList<>();
  589. List<Event> events = new ArrayList<>();
  590. List<AssoReportCron> assoReportCrons = new ArrayList<>();
  591. List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
  592. List<SystemDict> systemDictList = new ArrayList<>();
  593. List<SystemDict> reportTypeList = new ArrayList<>();
  594. List<Scenario> scenarios = new ArrayList<>();
  595. List<Matter> matters = new ArrayList<>();
  596. List<AssoProject> assoProjects = new ArrayList<>();
  597. List<String> patentNos = new ArrayList<>();
  598. List<Patent> patentList = new ArrayList<>();
  599. List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
  600. reportProjectVOs.forEach(
  601. item -> {
  602. if (item.getCreateId() != null) {
  603. createIds.add(item.getCreateId());
  604. }
  605. if (item.getHeadId() != null) {
  606. createIds.add(item.getHeadId());
  607. }
  608. if (item.getId() != null) {
  609. ids.add(item.getId());
  610. }
  611. if (item.getDepartmentId() != null) {
  612. departmentIds.add(item.getDepartmentId());
  613. }
  614. if (item.getEntrustType() != null && item.getEntrustType().equals(2)) {
  615. departmentIds.add(item.getEntrustId());
  616. }
  617. if (item.getEntrustType() != null && item.getEntrustType().equals(1)) {
  618. clientIds.add(Integer.parseInt(item.getEntrustId()));
  619. }
  620. if (ifInvalidReport != null && ifInvalidReport && item.getSignPatentNo() != null) {
  621. patentNos.add(item.getSignPatentNo());
  622. }
  623. }
  624. );
  625. List<Personnel> personnels = new ArrayList<>();
  626. List<String> guids = new ArrayList<>();
  627. List<SystemFile> systemFiles = new ArrayList<>();
  628. List<AssoProjectFile> assoEventFiles = new ArrayList<>();
  629. List<QueryCasePhaseVO> casePhaseVOS = new ArrayList<>();
  630. List<QueryReportAffairConclusionVO> conclusionVOS = new ArrayList<>();
  631. //查询部门名称
  632. if (departmentIds.size() != 0) {
  633. String json = permissionService.getDepartmentByIdsFromPCS(departmentIds);
  634. departmentVOS = JSON.parseArray(json, DepartmentVO.class);
  635. }
  636. //查询标的专利信息
  637. if (ifInvalidReport != null && ifInvalidReport && patentNos.size() > 0) {
  638. try {
  639. patentList = esPatentService.getPatentsByNo(patentNos, true, null, null);
  640. } catch (Exception e) {
  641. }
  642. }
  643. if (ids.size() != 0) {
  644. //根据事件id获得专利数据库文件关联表
  645. LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
  646. queryWrapper.in(AssoProjectFile::getProjectId, ids);
  647. assoEventFiles = assoProjectFileService.list(queryWrapper);
  648. guids = assoEventFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
  649. //查询核心结论
  650. LambdaQueryWrapper<AssoReportCron> reportCronLambdaQueryWrapper = new LambdaQueryWrapper<>();
  651. reportCronLambdaQueryWrapper.in(AssoReportCron::getProjectId, ids);
  652. assoReportCrons = assoReportCronService.list(reportCronLambdaQueryWrapper);
  653. if (assoReportCrons != null && assoReportCrons.size() != 0) {
  654. LambdaQueryWrapper<SystemDict> systemDictLambdaQueryWrapper = new LambdaQueryWrapper<>();
  655. systemDictLambdaQueryWrapper.eq(SystemDict::getGroupType, "ASSESS");
  656. systemDictList = systemDictService.list(systemDictLambdaQueryWrapper);
  657. }
  658. LambdaQueryWrapper<SystemDict> systemDictLambdaQueryWrapper = new LambdaQueryWrapper<>();
  659. systemDictLambdaQueryWrapper.eq(SystemDict::getType, "REPORT_TYPE").or().eq(SystemDict::getType, "REPORT_STATE");
  660. reportTypeList = systemDictService.list(systemDictLambdaQueryWrapper);
  661. LambdaQueryWrapper<AssoProject> queryWrapper1 = new LambdaQueryWrapper<>();
  662. queryWrapper1.in(AssoProject::getAssoProjectId, ids);
  663. assoProjects = assoProjectService.list(queryWrapper1);
  664. //查询和参与人关联
  665. LambdaQueryWrapper<AssoProjectPerson> projectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
  666. projectPersonLambdaQueryWrapper.in(AssoProjectPerson::getProjectId, ids)
  667. .eq(AssoProjectPerson::getRole, 1);
  668. assoProjectPersonList = assoProjectPersonService.list(projectPersonLambdaQueryWrapper);
  669. List<String> personIds = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
  670. createIds.addAll(personIds);
  671. casePhaseVOS = reportAffairMapper.queryCasePhase(ids);
  672. conclusionVOS = reportAffairMapper.queryReportAffairConclusion(ids);
  673. }
  674. //查询创建人名称
  675. if (createIds.size() != 0) {
  676. String res = permissionService.getPersonnelByIdsFromPCS(createIds);
  677. JSONObject jsonObject = JSONObject.parseObject(res);
  678. personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
  679. }
  680. //查询文件
  681. if (guids.size() != 0) {
  682. try {
  683. String res = fileManagerService.getSystemFileFromFMS(guids);
  684. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  685. } catch (Exception e) {
  686. }
  687. }
  688. //查询客户名称
  689. if (clientIds.size() != 0) {
  690. String res = permissionService.getClientByIdsFromPCS(clientIds);
  691. JSONObject jsonObject = JSONObject.parseObject(res);
  692. clients = JSONObject.parseArray(jsonObject.getString("data"), Client.class);
  693. }
  694. //查询应用场景、调查类型、事件和专题库的关联
  695. if (ids != null && ids.size() > 0) {
  696. LambdaQueryWrapper<AssoProjectEvent> assoProjectEventQueryWrapper = new LambdaQueryWrapper<>();
  697. assoProjectEventQueryWrapper.in(AssoProjectEvent::getProjectId, ids);
  698. assoProjectEvents = assoProjectEventService.list(assoProjectEventQueryWrapper);
  699. //查询事件
  700. if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
  701. scenarios = scenarioService.list();
  702. matters = matterService.list();
  703. List<Integer> eventIds = assoProjectEvents.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
  704. if (eventIds.size() != 0) {
  705. LambdaQueryWrapper<Event> eventQueryWrapper = new LambdaQueryWrapper<>();
  706. eventQueryWrapper.in(Event::getId, eventIds);
  707. events = eventService.list(eventQueryWrapper);
  708. }
  709. }
  710. }
  711. //装载信息
  712. for (ReportProjectVO reportProjectVO : reportProjectVOs) {
  713. //装载人员信息
  714. Personnel personnel = personnels.stream().filter(item -> item.getId().equals(reportProjectVO.getCreateId())).findFirst().orElse(null);
  715. if (personnel != null) {
  716. reportProjectVO.setCreateName(personnel.getPersonnelName());
  717. }
  718. if (reportProjectVO.getHeadId() != null) {
  719. Personnel headPersonnel = personnels.stream().filter(item -> item.getId().equals(reportProjectVO.getHeadId())).findFirst().orElse(null);
  720. if (headPersonnel != null) {
  721. reportProjectVO.setHeadName(headPersonnel.getPersonnelName());
  722. }
  723. }
  724. //装载文件信息
  725. List<AssoProjectFile> assoProjectFileTemp = assoEventFiles.stream().filter(item -> item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
  726. if (assoProjectFileTemp.size() != 0) {
  727. List<String> guidTemp = assoProjectFileTemp.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
  728. if (guidTemp.size() != 0) {
  729. if (systemFiles != null) {
  730. List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
  731. if (systemFileTemp.size() != 0) {
  732. reportProjectVO.setSystemFileList(systemFileTemp);
  733. }
  734. }
  735. }
  736. }
  737. //装载参与人
  738. List<SimplePersonVO> simplePersonVOS = new ArrayList<>();
  739. List<AssoProjectPerson> assoProjectPersonTmps = assoProjectPersonList.stream().filter(item -> item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
  740. List<String> personIds = assoProjectPersonTmps.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
  741. if (!CollectionUtils.isEmpty(personIds)) {
  742. List<Personnel> personneltmps = personnels.stream().filter(item -> personIds.contains(item.getId())).collect(Collectors.toList());
  743. personneltmps.forEach(item -> {
  744. SimplePersonVO simplePersonVO = new SimplePersonVO();
  745. simplePersonVO.setPersonId(item.getId());
  746. simplePersonVO.setPersonName(item.getPersonnelName());
  747. simplePersonVOS.add(simplePersonVO);
  748. });
  749. }
  750. reportProjectVO.setInvolvedPersons(simplePersonVOS);
  751. //装载部门
  752. if (reportProjectVO.getDepartmentId() != null) {
  753. DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(reportProjectVO.getDepartmentId())).findFirst().orElse(null);
  754. if (departmentVO != null) {
  755. reportProjectVO.setDepartmentName(departmentVO.getDepartName());
  756. }
  757. }
  758. //裝載委托方
  759. if (reportProjectVO.getEntrustType() != null) {
  760. //当委托方为客户时
  761. if (reportProjectVO.getEntrustType().equals(1)) {
  762. Client client = clients.stream().filter(item -> item.getId().equals(Integer.parseInt(reportProjectVO.getEntrustId()))).findFirst().orElse(null);
  763. if (client != null) {
  764. reportProjectVO.setEntrustName(client.getName());
  765. }
  766. } else if (reportProjectVO.getEntrustType().equals(2)) {
  767. DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(reportProjectVO.getEntrustId())).findFirst().orElse(null);
  768. if (departmentVO != null) {
  769. reportProjectVO.setEntrustName(departmentVO.getDepartName());
  770. }
  771. }
  772. }
  773. //装载事件
  774. //装载事件 应用场景,处理事项
  775. List<Integer> eventIds = new ArrayList<>();
  776. List<Integer> matterIds = new ArrayList<>();
  777. List<Integer> scenarioIds = new ArrayList<>();
  778. List<String> eventTmpNames = new ArrayList<>();
  779. List<String> matterTmpNames = new ArrayList<>();
  780. List<String> scenarioTmpNames = new ArrayList<>();
  781. if (assoProjectEvents != null) {
  782. List<AssoProjectEvent> assoProjectEventTmps = assoProjectEvents.stream().filter(item -> item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
  783. if (assoProjectEventTmps.size() != 0) {
  784. //过滤出事件
  785. eventIds = assoProjectEventTmps.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
  786. matterIds = assoProjectEventTmps.stream().filter(item -> item.getMatterId() != null).map(AssoProjectEvent::getMatterId).collect(Collectors.toList());
  787. scenarioIds = assoProjectEventTmps.stream().filter(item -> item.getScenarioId() != null).map(AssoProjectEvent::getScenarioId).collect(Collectors.toList());
  788. List<Integer> eventIdsFilter = eventIds;
  789. List<Integer> matterIdsFilter = matterIds;
  790. List<Integer> scenarioIdsFilter = scenarioIds;
  791. List<Event> eventTmps = events.stream().filter(item -> eventIdsFilter.contains(item.getId())).collect(Collectors.toList());
  792. List<Matter> matterTmps = matters.stream().filter(item -> matterIdsFilter.contains(item.getId())).collect(Collectors.toList());
  793. List<Scenario> scenarioTmps = scenarios.stream().filter(item -> scenarioIdsFilter.contains(item.getId())).collect(Collectors.toList());
  794. eventTmpNames = eventTmps.stream().map(Event::getName).collect(Collectors.toList());
  795. eventIds = eventTmps.stream().map(Event::getId).collect(Collectors.toList());
  796. matterTmpNames = matterTmps.stream().map(Matter::getName).collect(Collectors.toList());
  797. matterIds = matterTmps.stream().map(Matter::getId).collect(Collectors.toList());
  798. scenarioTmpNames = scenarioTmps.stream().map(Scenario::getName).collect(Collectors.toList());
  799. scenarioIds = scenarioTmps.stream().map(Scenario::getId).collect(Collectors.toList());
  800. }
  801. }
  802. reportProjectVO.setScenarioIds(scenarioIds);
  803. reportProjectVO.setMatterIds(matterIds);
  804. reportProjectVO.setEventIds(eventIds);
  805. reportProjectVO.setScenarioNames(scenarioTmpNames);
  806. reportProjectVO.setMatterNames(matterTmpNames);
  807. reportProjectVO.setEventNames(eventTmpNames);
  808. List<Integer> reCronIds = new ArrayList<>();
  809. List<String> reCronNames = new ArrayList<>();
  810. //装载核心结论
  811. if (assoReportCrons != null && assoReportCrons.size() != 0) {
  812. List<AssoReportCron> assoReportCronTmps = assoReportCrons.stream().filter(item -> item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
  813. if (assoReportCronTmps.size() != 0) {
  814. //过滤出事件
  815. List<Integer> cronIds = assoReportCronTmps.stream().map(AssoReportCron::getCronId).collect(Collectors.toList());
  816. List<SystemDict> systemDicts = systemDictList.stream().filter(item -> cronIds.contains(Integer.parseInt(item.getValue()))).collect(Collectors.toList());
  817. systemDicts.forEach(item -> {
  818. CronVO cronVO = new CronVO();
  819. reCronIds.add(Integer.parseInt(item.getValue()));
  820. reCronNames.add(item.getLabel());
  821. });
  822. }
  823. }
  824. reportProjectVO.setCronIds(reCronIds);
  825. reportProjectVO.setCronNames(reCronNames);
  826. //装载案件阶段与案件子阶段
  827. if (!CollectionUtils.isEmpty(casePhaseVOS)) {
  828. QueryCasePhaseVO casePhaseVO = casePhaseVOS.stream().filter(i -> i.getProjectId().equals(reportProjectVO.getId())).findFirst().orElse(null);
  829. if (casePhaseVO != null) {
  830. reportProjectVO.setCasePhase(casePhaseVO.getCasePhase());
  831. reportProjectVO.setCaseChildPhase(casePhaseVO.getCaseChildPhase());
  832. }
  833. }
  834. //装载行诉结果
  835. if (!CollectionUtils.isEmpty(conclusionVOS)) {
  836. QueryReportAffairConclusionVO conclusionVO = conclusionVOS.stream().filter(i -> i.getProjectId().equals(reportProjectVO.getId())).findFirst().orElse(null);
  837. if (conclusionVO != null) {
  838. reportProjectVO.setConclusion(conclusionVO.getConclusion());
  839. }
  840. }
  841. //装载报告类型
  842. SystemDict systemDict = reportTypeList.stream().filter(item -> reportProjectVO.getReportType().equals(Integer.parseInt(item.getValue())) && item.getType().equals("REPORT_TYPE")).findFirst().orElse(null);
  843. if (systemDict != null) {
  844. reportProjectVO.setReportTypeName(systemDict.getLabel());
  845. }
  846. //装载报告状态
  847. SystemDict systemDictStatus = reportTypeList.stream().filter(item -> reportProjectVO.getStatus().equals(Integer.parseInt(item.getValue())) && item.getType().equals("REPORT_STATE")).findFirst().orElse(null);
  848. if (systemDict != null) {
  849. if (systemDictStatus != null) {
  850. reportProjectVO.setStatusName(systemDictStatus.getLabel());
  851. }
  852. }
  853. //装载关联报告id
  854. AssoProject assoProject = assoProjects.stream().filter(item -> item.getAssoProjectId().equals(reportProjectVO.getId())).findFirst().orElse(null);
  855. if (assoProject != null) {
  856. reportProjectVO.setAssoReportId(assoProject.getProjectId());
  857. }
  858. //装载专利权人
  859. if (ifInvalidReport != null && ifInvalidReport && reportProjectVO.getSignPatentNo() != null && patentList.size() > 0) {
  860. String rightHolderStr = reportProjectVO.getRightHolderStr();
  861. if (rightHolderStr != null) {
  862. List<String> rightHolders = Arrays.asList(rightHolderStr.split(","));
  863. reportProjectVO.setRightHolder(rightHolders);
  864. }
  865. }
  866. }
  867. }
  868. //更新是否有第二次更新
  869. public Boolean updateIfSecondInvalid(UpdateIfSecondInvalidDTO dto) {
  870. Integer projectId = dto.getProjectId();
  871. Boolean ifSecondInvalid = dto.getIfSecondInvalid();
  872. if (ifSecondInvalid == null) {
  873. throw new XiaoShiException("");
  874. }
  875. //根据 项目id查询报告
  876. LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
  877. queryWrapper.eq(ReportProject::getProjectId, projectId);
  878. ReportProject reportProject = this.getOne(queryWrapper);
  879. if (reportProject == null) {
  880. throw new XiaoShiException("不存在报告");
  881. }
  882. reportProject.setIfSecondInvalid(dto.getIfSecondInvalid());
  883. reportProject.updateById();
  884. return true;
  885. }
  886. //装载查询语句
  887. private List<String> loadSearchSql(List<String> sqls) {
  888. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  889. String id = personnelVO.getId();
  890. Integer tenantId = personnelVO.getTenantId();
  891. Integer roleType = personnelVO.getRoleType();
  892. String rootSql = "";
  893. if (roleType == null || roleType.equals(0)) {
  894. rootSql = "(t.createId =" + id + " or t.headId=" + id + " or t.id in (select project_id from asso_project_person where person_id =" + id + "))";
  895. } else if (roleType.equals(2)) {
  896. rootSql = "t.tenantId=" + tenantId;
  897. }
  898. if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
  899. sqls.set(0, rootSql + " and " + "(" + sqls.get(0) + ")");
  900. } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
  901. sqls.set(0, rootSql);
  902. }
  903. return sqls;
  904. }
  905. public String getSelectMessage() {
  906. String tableName = "";
  907. tableName = "select p.id as id,p.name as name ,rp.sign_patent_no as signPatentNo,p.contract_no as\n" +
  908. " contract_no,p.volume_number as volumeNumber,p.commission_case_day as commissionCaseDay,\n" +
  909. " p.description as description,p.create_id as createId,p.create_time as createTime, rp.report_type as reportType ,\n" +
  910. " p.head_id as headId,p.department_id as departmentId, p.tenant_id as tenantId,\n" +
  911. " p.entrust_type as entrustType,p.entrust_id as entrustId,rp.product_or_tech as productOrTech,rp.cron_description\n" +
  912. " as cronDescription ,rp.status as status,rp.if_second_invalid as ifSecondInvalid,rp.case_number as caseNumber ,rp.issue_number as issueNumber ,rp.invalid_application as\n" +
  913. " invalidApplication ,rp.act_type as actType ,rp.patent_type as patentType ,rp.current_application as\n" +
  914. " currentApplication, rp.invention_name as inventionName,p.contract_no as contractNo,rp.carding_opinion,\n" +
  915. " rp.accept_year as acceptYear,rp.applicant_agency as applicantAgency,rp.right_holder_agency as rightHolderAgency,rp.case_stage as caseStage,\n" +
  916. " aspe.event_id as eventId,arc.cron_id as cronId,aspm.matter_id as matterId,asps.scenario_id as scenarioId,rp.actual_person as actualPerson,rp.litigation_party as litigationParty,rp.right_holder as rightHolderStr from report as rp left join project as p on rp.project_id =p.id ";
  917. tableName += "left join asso_report_cron arc on p.id =arc.project_id " +
  918. "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
  919. "left join (select * from asso_project_event where event_id is not null ) as aspe on p.id = aspe.project_id " +
  920. "left join (select * from asso_project_event where matter_id is not null ) as aspm on p.id = aspm.project_id ";
  921. return tableName;
  922. }
  923. }