ReportAffairService.java 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.business.ReportAffairDTO;
  3. import cn.cslg.pas.common.dto.invalidDTO.*;
  4. import cn.cslg.pas.common.model.cronModel.Personnel;
  5. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  6. import cn.cslg.pas.common.model.cronModel.SystemFile;
  7. import cn.cslg.pas.common.model.report.ExtraEmailDTO;
  8. import cn.cslg.pas.common.model.report.MailMessageDTO;
  9. import cn.cslg.pas.common.utils.CacheUtils;
  10. import cn.cslg.pas.common.utils.LoginUtils;
  11. import cn.cslg.pas.common.vo.business.CronVO;
  12. import cn.cslg.pas.common.vo.invalidVO.*;
  13. import cn.cslg.pas.domain.BaseEntity;
  14. import cn.cslg.pas.domain.business.*;
  15. import cn.cslg.pas.exception.XiaoShiException;
  16. import cn.cslg.pas.mapper.ReportAffairCasePhaseMapper;
  17. import cn.cslg.pas.mapper.ReportAffairMapper;
  18. import cn.cslg.pas.mapper.ReportProjectMapper;
  19. import cn.cslg.pas.service.MailSendService;
  20. import cn.cslg.pas.service.common.FileManagerService;
  21. import cn.cslg.pas.service.permissions.PermissionService;
  22. import cn.cslg.pas.service.report.SendReportMailService;
  23. import com.alibaba.fastjson.JSONObject;
  24. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  25. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  26. import lombok.extern.slf4j.Slf4j;
  27. import org.apache.commons.lang3.ObjectUtils;
  28. import org.apache.commons.lang3.StringUtils;
  29. import org.springframework.beans.BeanUtils;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.context.annotation.Lazy;
  32. import org.springframework.stereotype.Service;
  33. import org.springframework.util.CollectionUtils;
  34. import org.springframework.web.bind.annotation.RequestBody;
  35. import java.io.IOException;
  36. import java.util.ArrayList;
  37. import java.util.List;
  38. import java.util.stream.Collectors;
  39. /**
  40. * 报告事务Service层
  41. *
  42. * @Author xiexiang
  43. * @Date 2023/12/23
  44. */
  45. @Slf4j
  46. @Service
  47. public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportAffair> {
  48. @Autowired
  49. private CacheUtils cacheUtils;
  50. @Autowired
  51. private LoginUtils loginUtils;
  52. @Autowired
  53. private AssoReportAffairFileService assoReportAffairFileService;
  54. @Autowired
  55. private FileManagerService fileManagerService;
  56. @Autowired
  57. @Lazy
  58. private InvalidRequestFileService invalidRequestFileService;
  59. @Autowired
  60. private PermissionService permissionService;
  61. @Autowired
  62. @Lazy
  63. private OralTrailService oralTrailService;
  64. @Autowired
  65. @Lazy
  66. private InvalidDecisionFileService invalidDecisionFileService;
  67. @Autowired
  68. @Lazy
  69. private AdminProceedService adminProceedService;
  70. @Autowired
  71. @Lazy
  72. private OtherDocumentsService otherDocumentsService;
  73. @Autowired
  74. private CourtOrderService courtOrderService;
  75. @Autowired
  76. private SendReportMailService sendReportMailService;
  77. @Autowired
  78. private MailSendService mailSendService;
  79. @Autowired
  80. private ReportAffairCasePhaseMapper reportAffairCasePhaseMapper;
  81. @Autowired
  82. private AssoInvalidDecisionCronService assoInvalidDecisionCronService;
  83. @Autowired
  84. private SystemDictService systemDictService;
  85. @Autowired
  86. private AssoReportCronService assoReportCronService;
  87. @Autowired
  88. private ReportProjectMapper reportProjectMapper;
  89. /**
  90. * 创建报告事务
  91. *
  92. * @param reportAffairDTO
  93. */
  94. public Integer addReportAffair(ReportAffairDTO reportAffairDTO) {
  95. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  96. if (reportAffairDTO != null) {
  97. ReportAffair reportAffair = new ReportAffair();
  98. BeanUtils.copyProperties(reportAffairDTO, reportAffair);
  99. reportAffair.setCreateId(personnelVO.getId());
  100. reportAffair.insert();
  101. return reportAffair.getId();
  102. } else {
  103. throw new XiaoShiException("入参为空");
  104. }
  105. }
  106. /**
  107. * 删除报告事务
  108. * @param ids
  109. */
  110. public void delete(List<Integer> ids) {
  111. for (Integer id : ids) {
  112. LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
  113. queryWrapper.eq(ReportAffair::getId, id);
  114. ReportAffair reportAffair = this.getOne(queryWrapper, false);
  115. if (reportAffair != null) {
  116. //删除事务关联的文件
  117. LambdaQueryWrapper<AssoReportAffairFile> queryWrapper2 = new LambdaQueryWrapper<>();
  118. queryWrapper2.eq(AssoReportAffairFile::getReportAffairId, id);
  119. assoReportAffairFileService.remove(queryWrapper2);
  120. Integer assoCasePhaseId = reportAffair.getAssoCasePhaseId();
  121. ReportAffairCasePhase casePhase = reportAffairCasePhaseMapper.selectById(assoCasePhaseId);
  122. Integer flowType = casePhase.getFlowType();
  123. // 根据类型删除对应信息
  124. if (flowType.equals(1)) { //无效请求书
  125. LambdaQueryWrapper<InvalidRequestFile> queryWrapper1 = new LambdaQueryWrapper<>();
  126. queryWrapper1.eq(InvalidRequestFile::getReportAffairId, id);
  127. invalidRequestFileService.remove(queryWrapper1);
  128. } else if (flowType.equals(6) || flowType.equals(31)) {//口审记录 口审通知书
  129. LambdaQueryWrapper<OralTrail> queryWrapper1 = new LambdaQueryWrapper<>();
  130. queryWrapper1.eq(OralTrail::getReportAffairId, id);
  131. oralTrailService.remove(queryWrapper1);
  132. Integer projectId = reportAffair.getProjectId();
  133. if (assoCasePhaseId.equals(31)) {
  134. oralTrailService.updateParticipator(projectId, assoCasePhaseId);
  135. }
  136. } else if (flowType.equals(7)) {//无效决定书
  137. Integer projectId = reportAffair.getProjectId();
  138. //删除报告中的发文序号
  139. ReportProject reportProject = reportProjectMapper.selectOne(new LambdaQueryWrapper<ReportProject>()
  140. .eq(ReportProject::getProjectId, projectId));
  141. reportProject.setId(reportProject.getId());
  142. reportProject.setIssueNumber(null);
  143. reportProject.updateById();
  144. //删除报告无效结果与报告关联
  145. LambdaQueryWrapper<AssoReportCron> reportCronWrapper = new LambdaQueryWrapper<>();
  146. reportCronWrapper.eq(AssoReportCron::getProjectId, projectId);
  147. assoReportCronService.remove(reportCronWrapper);
  148. //删除无效决定书和无效结果关联
  149. InvalidDecisionFile decisionFile = invalidDecisionFileService.getOne(new LambdaQueryWrapper<InvalidDecisionFile>()
  150. .eq(InvalidDecisionFile::getReportAffairId, id));
  151. LambdaQueryWrapper<AssoInvalidDecisionCron> wrapper = new LambdaQueryWrapper<>();
  152. wrapper.eq(AssoInvalidDecisionCron::getInvalidDecisionId, decisionFile.getId());
  153. assoInvalidDecisionCronService.remove(wrapper);
  154. //无效决定书
  155. LambdaQueryWrapper<InvalidDecisionFile> queryWrapper1 = new LambdaQueryWrapper<>();
  156. queryWrapper1.eq(InvalidDecisionFile::getReportAffairId, id);
  157. invalidDecisionFileService.remove(queryWrapper1);
  158. } else if (flowType.equals(16) || flowType.equals(26)) {//行政诉讼判决书
  159. LambdaQueryWrapper<CourtOrder> queryWrapper1 = new LambdaQueryWrapper<>();
  160. queryWrapper1.eq(CourtOrder::getReportAffairId, id);
  161. courtOrderService.remove(queryWrapper1);
  162. } else if (flowType.equals(17) || flowType.equals(27) || flowType.equals(28)) {//其他文档
  163. LambdaQueryWrapper<OtherDocuments> queryWrapper1 = new LambdaQueryWrapper<>();
  164. queryWrapper1.eq(OtherDocuments::getReportAffairId, id);
  165. otherDocumentsService.remove(queryWrapper1);
  166. }
  167. this.removeById(id);
  168. //判断是否需要同步更新报告官限
  169. String deadline = casePhase.getCalOfficialDeadline();
  170. if (StringUtils.isNotEmpty(deadline) || assoCasePhaseId.equals(31)) {
  171. invalidRequestFileService.getCommonMethod(reportAffair.getProjectId());
  172. }
  173. }
  174. }
  175. }
  176. /**
  177. * 查询报告事务
  178. *
  179. * @param queryReportAffairDTO
  180. */
  181. public List<ReportAffairVO> queryReportAffair(QueryReportAffairDTO queryReportAffairDTO) {
  182. Integer projectId = queryReportAffairDTO.getProjectId();
  183. List<ReportAffairVO> reportAffairVOS = new ArrayList<>();
  184. //判空
  185. if (projectId == null) {
  186. throw new XiaoShiException("projectId为空");
  187. }
  188. //根据报告id查询事务
  189. LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
  190. queryWrapper.eq(ReportAffair::getProjectId, projectId)
  191. .orderByAsc(ReportAffair::getOccurredTime);
  192. List<ReportAffair> reportAffairs = this.list(queryWrapper);
  193. if (reportAffairs.isEmpty()) {
  194. return reportAffairVOS;
  195. }
  196. reportAffairVOS = this.loadReportAffairVOS(reportAffairs);
  197. return reportAffairVOS;
  198. }
  199. public List<ReportAffairVO> loadReportAffairVOS(List<ReportAffair> reportAffairs) {
  200. List<Integer> collect = reportAffairs.stream().map(ReportAffair::getAssoCasePhaseId).collect(Collectors.toList());
  201. List<ReportAffairCasePhase> phaseList = new ArrayList<>();
  202. if (!CollectionUtils.isEmpty(collect)) {
  203. List<ReportAffairCasePhase> phases = reportAffairCasePhaseMapper.selectList(new LambdaQueryWrapper<ReportAffairCasePhase>()
  204. .in(BaseEntity::getId, collect));
  205. phaseList.addAll(phases);
  206. }
  207. List<ReportAffairVO> reportAffairVOS = new ArrayList<>();
  208. reportAffairs.forEach(item -> {
  209. ReportAffairVO reportAffairVO = new ReportAffairVO();
  210. BeanUtils.copyProperties(item, reportAffairVO);
  211. ReportAffairCasePhase casePhase = phaseList.stream().filter(i -> i.getId().equals(item.getAssoCasePhaseId())).findFirst().orElse(null);
  212. if (ObjectUtils.isNotEmpty(casePhase)) {
  213. Integer type = casePhase.getFlowType();
  214. reportAffairVO.setFlowName(casePhase.getFlowName());
  215. reportAffairVO.setFlowType(type);
  216. reportAffairVO.setCasePhase(casePhase.getCasePhase());
  217. reportAffairVO.setCaseChildPhase(casePhase.getCaseChildPhase());
  218. reportAffairVO.setDocumentType(casePhase.getDocumentType());
  219. if (type.equals(6) || type.equals(31)) {//6 口审记录
  220. this.loadOralTrail(reportAffairVO);
  221. } else if (type.equals(1)) {//1 无效请求书
  222. this.loadInvalidRequestFile(reportAffairVO);
  223. } else if (type.equals(5)) {//5 陈述意见书
  224. this.loadStateOpinion(reportAffairVO);
  225. } else if (type.equals(7)) {//7 无效决定书
  226. this.loadInvalidDecisionFile(reportAffairVO);
  227. } else if (type.equals(8) || type.equals(18)) {//8 18 原告起诉状 上诉人上诉状
  228. this.loadAdminProceed(reportAffairVO);
  229. } else if (type.equals(16) || type.equals(26)) {//16 26 行政诉讼判决书
  230. this.loadJudgment(reportAffairVO);
  231. } else if (type.equals(2)) {//2 权要修改记录
  232. this.loadClaimHistory(reportAffairVO);
  233. } else if (type.equals(3)) {//3 补充证据及理由
  234. this.loadSupplyEvidence(reportAffairVO);
  235. } else if (type.equals(17) || type.equals(27) || type.equals(28)) {//17 27 28其他文档
  236. this.loadOtherDocuments(reportAffairVO);
  237. reportAffairVO.setCaseChildPhase(item.getCaseChildPhase());
  238. reportAffairVO.setDocumentType(item.getDocumentType());
  239. }
  240. }
  241. reportAffairVOS.add(reportAffairVO);
  242. });
  243. if (!reportAffairVOS.isEmpty()) {
  244. //装载文件信息
  245. this.loadSystemFile(reportAffairVOS);
  246. //装载创建人名
  247. this.loadCreateName(reportAffairVOS);
  248. List<ReportAffairVO> affairVOS = reportAffairVOS.stream().filter(i -> i.getFlowType().equals(7)).collect(Collectors.toList());
  249. if (!CollectionUtils.isEmpty(affairVOS)) {
  250. //装载无效决定书与无效结果关联
  251. this.loadAssoInvalidDecisionCron(affairVOS);
  252. }
  253. }
  254. return reportAffairVOS;
  255. }
  256. /**
  257. * 装载文件
  258. *
  259. * @param reportAffairVOS
  260. */
  261. public void loadSystemFile(List<ReportAffairVO> reportAffairVOS) {
  262. reportAffairVOS.forEach(item -> {
  263. Integer reportAffairId = item.getId();
  264. List<SystemFile> systemFiles = new ArrayList<>();
  265. LambdaQueryWrapper<AssoReportAffairFile> queryWrapper = new LambdaQueryWrapper<>();
  266. queryWrapper.eq(AssoReportAffairFile::getReportAffairId, reportAffairId);
  267. List<AssoReportAffairFile> files = assoReportAffairFileService.list(queryWrapper);
  268. if (!files.isEmpty()) {
  269. List<String> fileGuids = files.stream().map(AssoReportAffairFile::getFileGuid).collect(Collectors.toList());
  270. //根据fileGuids查询文件信息
  271. //查询文件
  272. if (fileGuids.size() != 0) {
  273. try {
  274. String res = fileManagerService.getSystemFileFromFMS(fileGuids);
  275. if (res != null && !res.trim().equals("")) {
  276. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  277. }
  278. } catch (Exception e) {
  279. throw new XiaoShiException("查询文件详情错误");
  280. }
  281. }
  282. }
  283. item.setSystemFileList(systemFiles);
  284. });
  285. }
  286. /**
  287. * 装载无效请求书
  288. *
  289. * @param reportAffairVO
  290. */
  291. public void loadInvalidRequestFile(ReportAffairVO reportAffairVO) {
  292. Integer reportAffairId = reportAffairVO.getId();
  293. InvalidRequestFileVO invalidRequestFileVO = invalidRequestFileService.getInvalidRequestFileVO(reportAffairId);
  294. reportAffairVO.setInvalidRequestFileVO(invalidRequestFileVO);
  295. }
  296. public void loadCreateName(List<ReportAffairVO> reportAffairVOS) {
  297. List<String> createIds = new ArrayList<>();
  298. reportAffairVOS.forEach(item -> {
  299. if (item.getCreateId() != null) {
  300. createIds.add(item.getCreateId());
  301. }
  302. });
  303. List<Personnel> personnels = new ArrayList<>();
  304. //查询创建人名称
  305. if (createIds.size() != 0) {
  306. try {
  307. String res = permissionService.getPersonnelByIdsFromPCS(createIds);
  308. JSONObject jsonObject = JSONObject.parseObject(res);
  309. personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
  310. } catch (Exception e) {
  311. }
  312. }
  313. for (ReportAffairVO reportAffairVO : reportAffairVOS) {
  314. Personnel personnel = personnels.stream().filter(item -> item.getId().equals(reportAffairVO.getCreateId())).findFirst().orElse(null);
  315. if (personnel != null) {
  316. reportAffairVO.setCreateName(personnel.getPersonnelName());
  317. }
  318. }
  319. }
  320. /**
  321. * 装载口审记录
  322. *
  323. * @param reportAffairVO
  324. */
  325. public void loadOralTrail(ReportAffairVO reportAffairVO) {
  326. Integer reportAffairId = reportAffairVO.getId();
  327. OralTrailVO oralTrailVO = oralTrailService.getOralTrailVO(reportAffairId);
  328. reportAffairVO.setOralTrailVO(oralTrailVO);
  329. }
  330. /**
  331. * 装载无效决定书
  332. *
  333. * @param reportAffairVO
  334. */
  335. public void loadInvalidDecisionFile(ReportAffairVO reportAffairVO) {
  336. Integer reportAffairId = reportAffairVO.getId();
  337. InvalidDecisionFileVO invalidDecisionFileVO = invalidDecisionFileService.getInvalidDecisionFile(reportAffairId);
  338. reportAffairVO.setInvalidDecisionFileVO(invalidDecisionFileVO);
  339. }
  340. /**
  341. * 装载无效决定书与无效结果关联
  342. * @param reportAffairVOS
  343. */
  344. public void loadAssoInvalidDecisionCron(List<ReportAffairVO> reportAffairVOS) {
  345. if (!CollectionUtils.isEmpty(reportAffairVOS)) {
  346. List<InvalidDecisionFileVO> decisionFileVOS = reportAffairVOS.stream().map(ReportAffairVO::getInvalidDecisionFileVO).collect(Collectors.toList());
  347. List<Integer> invalidDecisionIds = decisionFileVOS.stream().map(InvalidDecisionFileVO::getInvalidDecisionFileId).collect(Collectors.toList());
  348. //查询核心结论
  349. LambdaQueryWrapper<AssoInvalidDecisionCron> reportCronLambdaQueryWrapper = new LambdaQueryWrapper<>();
  350. reportCronLambdaQueryWrapper.in(AssoInvalidDecisionCron::getInvalidDecisionId, invalidDecisionIds);
  351. List<AssoInvalidDecisionCron> crons = assoInvalidDecisionCronService.list(reportCronLambdaQueryWrapper);
  352. List<SystemDict> systemDictList = new ArrayList<>();
  353. if (!CollectionUtils.isEmpty(crons)) {
  354. LambdaQueryWrapper<SystemDict> systemDictLambdaQueryWrapper = new LambdaQueryWrapper<>();
  355. systemDictLambdaQueryWrapper.eq(SystemDict::getGroupType, "ASSESS");
  356. systemDictList = systemDictService.list(systemDictLambdaQueryWrapper);
  357. }
  358. for (InvalidDecisionFileVO decisionFileVO : decisionFileVOS) {
  359. List<Integer> reCronIds = new ArrayList<>();
  360. List<String> reCronNames = new ArrayList<>();
  361. if (!CollectionUtils.isEmpty(crons)) {
  362. List<AssoInvalidDecisionCron> decisionCrons = crons.stream().filter(item -> item.getInvalidDecisionId().equals(decisionFileVO.getInvalidDecisionFileId())).collect(Collectors.toList());
  363. if (!CollectionUtils.isEmpty(decisionCrons)) {
  364. //过滤出事件
  365. List<Integer> cronIds = decisionCrons.stream().map(AssoInvalidDecisionCron::getCronId).collect(Collectors.toList());
  366. List<SystemDict> systemDicts = systemDictList.stream().filter(item -> cronIds.contains(Integer.parseInt(item.getValue()))).collect(Collectors.toList());
  367. systemDicts.forEach(item -> {
  368. reCronIds.add(Integer.parseInt(item.getValue()));
  369. reCronNames.add(item.getLabel());
  370. });
  371. }
  372. }
  373. decisionFileVO.setCronIds(reCronIds);
  374. decisionFileVO.setCronNames(reCronNames);
  375. }
  376. }
  377. }
  378. /**
  379. * 装载行政诉讼书
  380. *
  381. * @param reportAffairVO
  382. */
  383. public void loadAdminProceed(ReportAffairVO reportAffairVO) {
  384. Integer reportAffairId = reportAffairVO.getId();
  385. AdminProceedVO adminProceedVO = adminProceedService.getAdminProceed(reportAffairId);
  386. reportAffairVO.setAdminProceedVO(adminProceedVO);
  387. }
  388. /**
  389. * 上传陈述意见书
  390. * @param addStateOpinionDTO
  391. * @return
  392. */
  393. public Integer addStateOpinion(AddStateOpinionDTO addStateOpinionDTO){
  394. if (addStateOpinionDTO == null) {
  395. throw new XiaoShiException("入参为空");
  396. }
  397. Integer projectId = addStateOpinionDTO.getProjectId();
  398. if (projectId == null) {
  399. throw new XiaoShiException("报告id为空");
  400. }
  401. if (ObjectUtils.isEmpty(addStateOpinionDTO.getAssoCasePhaseId())) {
  402. throw new XiaoShiException("案件流程阶段id为空");
  403. }
  404. //1. 首先上传报告事务,拿到报告事务id
  405. ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
  406. reportAffairDTO.setProjectId(projectId);
  407. //发生时间是无效请求日
  408. reportAffairDTO.setOccurredTime(addStateOpinionDTO.getStateReplyTime());
  409. //备注
  410. reportAffairDTO.setDescription(addStateOpinionDTO.getDescription());
  411. reportAffairDTO.setAssoCasePhaseId(addStateOpinionDTO.getAssoCasePhaseId());
  412. Integer reportAffairId = this.addReportAffair(reportAffairDTO);
  413. if (reportAffairId == null) {
  414. throw new XiaoShiException("上传报告事务失败");
  415. }
  416. //3. 添加报告事务与文件关联
  417. List<String> fileGuids = addStateOpinionDTO.getFileGuids();
  418. if (fileGuids != null && !fileGuids.isEmpty()) {
  419. List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
  420. fileGuids.forEach(item -> {
  421. AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
  422. assoReportAffairFile.setReportAffairId(reportAffairId);
  423. assoReportAffairFile.setFileGuid(item);
  424. assoReportAffairFiles.add(assoReportAffairFile);
  425. });
  426. assoReportAffairFileService.saveBatch(assoReportAffairFiles);
  427. }
  428. if (addStateOpinionDTO.getIfSendEmail()) {
  429. sendReportMailService.finalSendEmail(projectId, fileGuids, addStateOpinionDTO.getExtraEmailDTOS());
  430. }
  431. return reportAffairId;
  432. }
  433. /**
  434. * 更新陈述意见
  435. * @param updateStateOpinionDTO
  436. * @return
  437. */
  438. public Integer updateStateOpinion(UpdateStateOpinionDTO updateStateOpinionDTO){
  439. if (updateStateOpinionDTO == null) {
  440. throw new XiaoShiException("入参为空");
  441. }
  442. Integer projectId = updateStateOpinionDTO.getProjectId();
  443. Integer reportAffairId = updateStateOpinionDTO.getStateOpinionId();
  444. if (reportAffairId == null) {
  445. throw new XiaoShiException("reportAffairId为空");
  446. }
  447. if (projectId == null) {
  448. throw new XiaoShiException("报告id为空");
  449. }
  450. if (ObjectUtils.isEmpty(updateStateOpinionDTO.getAssoCasePhaseId())) {
  451. throw new XiaoShiException("案件流程阶段id为空");
  452. }
  453. //2. 拿到报告事务id,获取报告事务
  454. ReportAffair reportAffair = this.getById(reportAffairId);
  455. reportAffair.setProjectId(projectId);
  456. //发生时间是无效请求日
  457. reportAffair.setOccurredTime(updateStateOpinionDTO.getStateReplyTime());
  458. //备注
  459. reportAffair.setDescription(updateStateOpinionDTO.getDescription());
  460. reportAffair.setAssoCasePhaseId(updateStateOpinionDTO.getAssoCasePhaseId());
  461. reportAffair.updateById();
  462. //3. 更新报告事务与文件关联
  463. List<String> fileGuids = updateStateOpinionDTO.getFileGuids();
  464. assoReportAffairFileService.updateAffairFile(reportAffairId, fileGuids);
  465. if (updateStateOpinionDTO.getIfSendEmail()) {
  466. sendReportMailService.finalSendEmail(projectId, fileGuids, updateStateOpinionDTO.getExtraEmailDTOS());
  467. }
  468. return reportAffairId;
  469. }
  470. /**
  471. * 装载陈述意见书
  472. *
  473. * @param reportAffairVO
  474. */
  475. public void loadStateOpinion(ReportAffairVO reportAffairVO) {
  476. Integer reportAffairId = reportAffairVO.getId();
  477. StateOpinionVO stateOpinionVO = new StateOpinionVO();
  478. ReportAffair reportAffair = this.getById(reportAffairId);
  479. stateOpinionVO.setStateOpinionId(reportAffairId);
  480. stateOpinionVO.setDescription(reportAffair.getDescription());
  481. stateOpinionVO.setStateReplyTime(reportAffair.getOccurredTime());
  482. stateOpinionVO.setProjectId(reportAffair.getProjectId());
  483. reportAffairVO.setStateOpinionVO(stateOpinionVO);
  484. }
  485. /**
  486. * 装载行政诉讼判决书
  487. *
  488. * @param reportAffairVO
  489. */
  490. public void loadJudgment(ReportAffairVO reportAffairVO) {
  491. Integer reportAffairId = reportAffairVO.getId();
  492. JudgementVO judgementVO = adminProceedService.getJudgment(reportAffairId);
  493. //获取判决书结论
  494. List<CourtOrder> courtOrders = courtOrderService.list(new LambdaQueryWrapper<CourtOrder>()
  495. .eq(CourtOrder::getReportAffairId, reportAffairId)
  496. .orderByDesc(BaseEntity::getId));
  497. if (!CollectionUtils.isEmpty(courtOrders)) {
  498. CourtOrder courtOrder = courtOrders.get(0);
  499. judgementVO.setConclusion(courtOrder.getConclusion());
  500. }
  501. reportAffairVO.setJudgementVO(judgementVO);
  502. }
  503. /**
  504. * 上传权要修改记录
  505. * @param addClaimHistoryDTO
  506. * @return
  507. */
  508. public Integer addClaimHistory(AddClaimHistoryDTO addClaimHistoryDTO){
  509. if (addClaimHistoryDTO == null) {
  510. throw new XiaoShiException("入参为空");
  511. }
  512. Integer projectId = addClaimHistoryDTO.getProjectId();
  513. if (projectId == null) {
  514. throw new XiaoShiException("报告id为空");
  515. }
  516. if (ObjectUtils.isEmpty(addClaimHistoryDTO.getAssoCasePhaseId())) {
  517. throw new XiaoShiException("案件流程阶段id为空");
  518. }
  519. //1. 首先上传报告事务,拿到报告事务id
  520. ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
  521. reportAffairDTO.setProjectId(projectId);
  522. //发生时间是无效请求日
  523. reportAffairDTO.setOccurredTime(addClaimHistoryDTO.getClaimHistoryTime());
  524. //备注
  525. reportAffairDTO.setDescription(addClaimHistoryDTO.getDescription());
  526. reportAffairDTO.setAssoCasePhaseId(addClaimHistoryDTO.getAssoCasePhaseId());
  527. Integer reportAffairId = this.addReportAffair(reportAffairDTO);
  528. if (reportAffairId == null) {
  529. throw new XiaoShiException("上传报告事务失败");
  530. }
  531. //3. 添加报告事务与文件关联
  532. List<String> fileGuids = addClaimHistoryDTO.getFileGuids();
  533. if (fileGuids != null && !fileGuids.isEmpty()) {
  534. List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
  535. fileGuids.forEach(item -> {
  536. AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
  537. assoReportAffairFile.setReportAffairId(reportAffairId);
  538. assoReportAffairFile.setFileGuid(item);
  539. assoReportAffairFiles.add(assoReportAffairFile);
  540. });
  541. assoReportAffairFileService.saveBatch(assoReportAffairFiles);
  542. }
  543. if (addClaimHistoryDTO.getIfSendEmail()) {
  544. sendReportMailService.finalSendEmail(projectId, fileGuids, addClaimHistoryDTO.getExtraEmailDTOS());
  545. }
  546. return reportAffairId;
  547. }
  548. /**
  549. * 更新权要修改历史
  550. * @param updateClaimHistoryDTO
  551. * @return
  552. */
  553. public Integer updateClaimHistory(UpdateClaimHistoryDTO updateClaimHistoryDTO){
  554. if (updateClaimHistoryDTO == null) {
  555. throw new XiaoShiException("入参为空");
  556. }
  557. Integer projectId = updateClaimHistoryDTO.getProjectId();
  558. Integer reportAffairId = updateClaimHistoryDTO.getClaimHistoryId();
  559. if (reportAffairId == null) {
  560. throw new XiaoShiException("reportAffairId为空");
  561. }
  562. if (projectId == null) {
  563. throw new XiaoShiException("报告id为空");
  564. }
  565. if (ObjectUtils.isEmpty(updateClaimHistoryDTO.getAssoCasePhaseId())) {
  566. throw new XiaoShiException("案件流程阶段id为空");
  567. }
  568. //2. 拿到报告事务id,获取报告事务
  569. ReportAffair reportAffair = this.getById(reportAffairId);
  570. reportAffair.setProjectId(projectId);
  571. //发生时间是无效请求日
  572. reportAffair.setOccurredTime(updateClaimHistoryDTO.getClaimHistoryTime());
  573. //备注
  574. reportAffair.setDescription(updateClaimHistoryDTO.getDescription());
  575. reportAffair.setAssoCasePhaseId(updateClaimHistoryDTO.getAssoCasePhaseId());
  576. reportAffair.updateById();
  577. //3. 更新报告事务与文件关联
  578. List<String> fileGuids = updateClaimHistoryDTO.getFileGuids();
  579. assoReportAffairFileService.updateAffairFile(reportAffairId, fileGuids);
  580. if (updateClaimHistoryDTO.getIfSendEmail()) {
  581. sendReportMailService.finalSendEmail(projectId, fileGuids, updateClaimHistoryDTO.getExtraEmailDTOS());
  582. }
  583. return reportAffairId;
  584. }
  585. /**
  586. * 上传补充证据及理由
  587. * @param addSupplyEvidenceDTO
  588. * @return
  589. */
  590. public Integer addSupplyEvidence(AddSupplyEvidenceDTO addSupplyEvidenceDTO){
  591. if (addSupplyEvidenceDTO == null) {
  592. throw new XiaoShiException("入参为空");
  593. }
  594. Integer projectId = addSupplyEvidenceDTO.getProjectId();
  595. if (projectId == null) {
  596. throw new XiaoShiException("报告id为空");
  597. }
  598. if (ObjectUtils.isEmpty(addSupplyEvidenceDTO.getAssoCasePhaseId())) {
  599. throw new XiaoShiException("案件流程阶段id为空");
  600. }
  601. //1. 首先上传报告事务,拿到报告事务id
  602. ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
  603. reportAffairDTO.setProjectId(projectId);
  604. //发生时间是无效请求日
  605. reportAffairDTO.setOccurredTime(addSupplyEvidenceDTO.getSupplyEvidenceTime());
  606. //备注
  607. reportAffairDTO.setDescription(addSupplyEvidenceDTO.getDescription());
  608. reportAffairDTO.setAssoCasePhaseId(addSupplyEvidenceDTO.getAssoCasePhaseId());
  609. Integer reportAffairId = this.addReportAffair(reportAffairDTO);
  610. if (reportAffairId == null) {
  611. throw new XiaoShiException("上传报告事务失败");
  612. }
  613. //3. 添加报告事务与文件关联
  614. List<String> fileGuids = addSupplyEvidenceDTO.getFileGuids();
  615. if (fileGuids != null && !fileGuids.isEmpty()) {
  616. List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
  617. fileGuids.forEach(item -> {
  618. AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
  619. assoReportAffairFile.setReportAffairId(reportAffairId);
  620. assoReportAffairFile.setFileGuid(item);
  621. assoReportAffairFiles.add(assoReportAffairFile);
  622. });
  623. assoReportAffairFileService.saveBatch(assoReportAffairFiles);
  624. }
  625. if (addSupplyEvidenceDTO.getIfSendEmail()) {
  626. sendReportMailService.finalSendEmail(projectId, fileGuids, addSupplyEvidenceDTO.getExtraEmailDTOS());
  627. }
  628. return reportAffairId;
  629. }
  630. /**
  631. * 更新补充证据及理由
  632. * @param updateSupplyEvidenceDTO
  633. * @return
  634. */
  635. public Integer updateSupplyEvidence(UpdateSupplyEvidenceDTO updateSupplyEvidenceDTO){
  636. if (updateSupplyEvidenceDTO == null) {
  637. throw new XiaoShiException("入参为空");
  638. }
  639. Integer projectId = updateSupplyEvidenceDTO.getProjectId();
  640. Integer reportAffairId = updateSupplyEvidenceDTO.getSupplyEvidenceId();
  641. if (reportAffairId == null) {
  642. throw new XiaoShiException("reportAffairId为空");
  643. }
  644. if (projectId == null) {
  645. throw new XiaoShiException("报告id为空");
  646. }
  647. if (ObjectUtils.isEmpty(updateSupplyEvidenceDTO.getAssoCasePhaseId())) {
  648. throw new XiaoShiException("案件流程阶段id为空");
  649. }
  650. //2. 拿到报告事务id,获取报告事务
  651. ReportAffair reportAffair = this.getById(reportAffairId);
  652. reportAffair.setProjectId(projectId);
  653. //发生时间是无效请求日
  654. reportAffair.setOccurredTime(updateSupplyEvidenceDTO.getSupplyEvidenceTime());
  655. //备注
  656. reportAffair.setDescription(updateSupplyEvidenceDTO.getDescription());
  657. reportAffair.setAssoCasePhaseId(updateSupplyEvidenceDTO.getAssoCasePhaseId());
  658. reportAffair.updateById();
  659. //3. 更新报告事务与文件关联
  660. List<String> fileGuids = updateSupplyEvidenceDTO.getFileGuids();
  661. assoReportAffairFileService.updateAffairFile(reportAffairId, fileGuids);
  662. if (updateSupplyEvidenceDTO.getIfSendEmail()) {
  663. sendReportMailService.finalSendEmail(projectId, fileGuids, updateSupplyEvidenceDTO.getExtraEmailDTOS());
  664. }
  665. return reportAffairId;
  666. }
  667. /**
  668. * 装载权利要求修改记录
  669. * @param reportAffairVO
  670. */
  671. public void loadClaimHistory(ReportAffairVO reportAffairVO) {
  672. Integer reportAffairId = reportAffairVO.getId();
  673. ClaimHistoryVO claimHistoryVO = new ClaimHistoryVO();
  674. ReportAffair reportAffair = this.getById(reportAffairId);
  675. claimHistoryVO.setClaimHistoryId(reportAffairId);
  676. claimHistoryVO.setDescription(reportAffair.getDescription());
  677. claimHistoryVO.setClaimHistoryTime(reportAffair.getOccurredTime());
  678. claimHistoryVO.setProjectId(reportAffair.getProjectId());
  679. reportAffairVO.setClaimHistoryVO(claimHistoryVO);
  680. }
  681. /**
  682. * 装载补充证据及理由
  683. * @param reportAffairVO
  684. */
  685. public void loadSupplyEvidence(ReportAffairVO reportAffairVO) {
  686. Integer reportAffairId = reportAffairVO.getId();
  687. SupplyEvidenceVO supplyEvidenceVO = new SupplyEvidenceVO();
  688. ReportAffair reportAffair = this.getById(reportAffairId);
  689. supplyEvidenceVO.setSupplyEvidenceId(reportAffairId);
  690. supplyEvidenceVO.setDescription(reportAffair.getDescription());
  691. supplyEvidenceVO.setSupplyEvidenceTime(reportAffair.getOccurredTime());
  692. supplyEvidenceVO.setProjectId(reportAffair.getProjectId());
  693. reportAffairVO.setSupplyEvidenceVO(supplyEvidenceVO);
  694. }
  695. /**
  696. * 装载其他文档
  697. * @param reportAffairVO
  698. */
  699. public void loadOtherDocuments(ReportAffairVO reportAffairVO) {
  700. Integer reportAffairId = reportAffairVO.getId();
  701. OtherDocumentsVO otherDocumentsVO = otherDocumentsService.getOtherDocuments(reportAffairId);
  702. reportAffairVO.setOtherDocumentsVO(otherDocumentsVO);
  703. }
  704. /**
  705. * 添加案件文档
  706. * 详情有以下流程案件添加接口:
  707. * 添加请求人意见陈述书 添加合议组无效宣告受理通知书 添加原告意见陈述书 添加原告证据 添加第三人意见陈述
  708. * 添加法院行政诉讼传票 添加法院转送文件 添加上诉人意见陈述 添加上诉人证据 添加第三人意见 添加被上诉人意见
  709. * 添加法院转送文件 添加法院行政诉讼传票
  710. * @param vo
  711. * @return
  712. */
  713. public Integer addReportAffairCase(ReportAffairCaseDTO vo){
  714. if (ObjectUtils.isEmpty(vo)) {
  715. throw new XiaoShiException("入参为空");
  716. }
  717. Integer projectId = vo.getProjectId();
  718. if (projectId == null) {
  719. throw new XiaoShiException("报告id为空");
  720. }
  721. if (ObjectUtils.isEmpty(vo.getAssoCasePhaseId())) {
  722. throw new XiaoShiException("案件流程阶段id为空");
  723. }
  724. //1. 首先上传报告事务,拿到报告事务id
  725. ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
  726. reportAffairDTO.setProjectId(projectId);
  727. //发生时间是无效请求日
  728. reportAffairDTO.setOccurredTime(vo.getOccurredTime());
  729. //备注
  730. reportAffairDTO.setDescription(vo.getDescription());
  731. reportAffairDTO.setAssoCasePhaseId(vo.getAssoCasePhaseId());
  732. Integer reportAffairId = this.addReportAffair(reportAffairDTO);
  733. if (reportAffairId == null) {
  734. throw new XiaoShiException("上传报告事务失败");
  735. }
  736. //2.同步报告官限
  737. if (vo.getAssoCasePhaseId().equals(29) || vo.getAssoCasePhaseId().equals(30)) {
  738. invalidRequestFileService.getCommonMethod(projectId);
  739. }
  740. //3. 添加报告事务与文件关联
  741. List<String> fileGuids = vo.getFileGuids();
  742. if (!CollectionUtils.isEmpty(fileGuids)) {
  743. List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
  744. fileGuids.forEach(item -> {
  745. AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
  746. assoReportAffairFile.setReportAffairId(reportAffairId);
  747. assoReportAffairFile.setFileGuid(item);
  748. assoReportAffairFiles.add(assoReportAffairFile);
  749. });
  750. assoReportAffairFileService.saveBatch(assoReportAffairFiles);
  751. }
  752. if (vo.getIfSendEmail()) {
  753. sendReportMailService.finalSendEmail(projectId, fileGuids, vo.getExtraEmailDTOS());
  754. }
  755. return reportAffairId;
  756. }
  757. /**
  758. * 修改案件文档
  759. * @param vo
  760. * @return
  761. */
  762. public Integer updateReportAffairCase(ReportAffairCaseDTO vo){
  763. if (ObjectUtils.isEmpty(vo)) {
  764. throw new XiaoShiException("入参为空");
  765. }
  766. Integer projectId = vo.getProjectId();
  767. Integer reportAffairId = vo.getId();
  768. if (reportAffairId == null) {
  769. throw new XiaoShiException("reportAffairId为空");
  770. }
  771. if (projectId == null) {
  772. throw new XiaoShiException("报告id为空");
  773. }
  774. if (ObjectUtils.isEmpty(vo.getAssoCasePhaseId())) {
  775. throw new XiaoShiException("案件流程阶段id为空");
  776. }
  777. //2. 拿到报告事务id,获取报告事务
  778. ReportAffair reportAffair = this.getById(reportAffairId);
  779. reportAffair.setProjectId(projectId);
  780. //发生时间是无效请求日
  781. reportAffair.setOccurredTime(vo.getOccurredTime());
  782. //备注
  783. reportAffair.setDescription(vo.getDescription());
  784. reportAffair.setAssoCasePhaseId(vo.getAssoCasePhaseId());
  785. reportAffair.updateById();
  786. //同步报告官限
  787. if (vo.getAssoCasePhaseId().equals(29) || vo.getAssoCasePhaseId().equals(30)) {
  788. invalidRequestFileService.getCommonMethod(projectId);
  789. }
  790. //3. 更新报告事务与文件关联
  791. List<String> fileGuids = vo.getFileGuids();
  792. assoReportAffairFileService.updateAffairFile(reportAffairId, fileGuids);
  793. if (vo.getIfSendEmail()) {
  794. sendReportMailService.finalSendEmail(projectId, fileGuids, vo.getExtraEmailDTOS());
  795. }
  796. return reportAffairId;
  797. }
  798. }