123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- package cn.cslg.pas.service.business;
- import cn.cslg.pas.common.dto.business.ReportAffairDTO;
- import cn.cslg.pas.common.dto.invalidDTO.AddInvalidDecisionFileDTO;
- import cn.cslg.pas.common.dto.invalidDTO.UpdateInvalidDecisionFileDTO;
- import cn.cslg.pas.common.model.report.ExtraEmailDTO;
- import cn.cslg.pas.common.model.report.MailMessageDTO;
- import cn.cslg.pas.common.vo.invalidVO.InvalidDecisionFileVO;
- import cn.cslg.pas.common.vo.invalidVO.OralTrailVO;
- import cn.cslg.pas.domain.business.*;
- import cn.cslg.pas.exception.XiaoShiException;
- import cn.cslg.pas.mapper.InvalidDecisionFileMapper;
- import cn.cslg.pas.mapper.ReportProjectMapper;
- import cn.cslg.pas.service.MailSendService;
- import cn.cslg.pas.service.report.SendReportMailService;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.ObjectUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Propagation;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.CollectionUtils;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * @Author xiexiang
- * @Date 2023/12/28
- */
- @Slf4j
- @Service
- public class InvalidDecisionFileService extends ServiceImpl<InvalidDecisionFileMapper, InvalidDecisionFile> {
- @Autowired
- private ReportAffairService reportAffairService;
- @Autowired
- private AssoReportAffairFileService assoReportAffairFileService;
- @Autowired
- private SendReportMailService sendReportMailService;
- @Autowired
- private AssoInvalidDecisionCronService assoInvalidDecisionCronService;
- @Autowired
- private ReportProjectMapper reportProjectMapper;
- @Autowired
- private AssoReportCronService assoReportCronService;
- @Autowired
- private InvalidRequestFileService invalidRequestFileService;
- public Integer add(AddInvalidDecisionFileDTO addInvalidDecisionFileDTO){
- if (addInvalidDecisionFileDTO == null) {
- throw new XiaoShiException("入参为空");
- }
- Integer projectId = addInvalidDecisionFileDTO.getProjectId();
- if (projectId == null) {
- throw new XiaoShiException("报告id为空");
- }
- if (ObjectUtils.isEmpty(addInvalidDecisionFileDTO.getAssoCasePhaseId())) {
- throw new XiaoShiException("案件流程阶段id为空");
- }
- //1. 首先上传报告事务,拿到报告事务id
- ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
- reportAffairDTO.setProjectId(projectId);
- //发生时间是口审时间
- reportAffairDTO.setOccurredTime(addInvalidDecisionFileDTO.getInvalidDecisionTime());
- //备注
- reportAffairDTO.setDescription(addInvalidDecisionFileDTO.getDescription());
- reportAffairDTO.setAssoCasePhaseId(addInvalidDecisionFileDTO.getAssoCasePhaseId());
- Integer reportAffairId = reportAffairService.addReportAffair(reportAffairDTO);
- if (reportAffairId == null) {
- throw new XiaoShiException("上传报告事务失败");
- }
- //2. 上传无效决定书
- InvalidDecisionFile invalidDecisionFile = new InvalidDecisionFile();
- invalidDecisionFile.setFileNo(addInvalidDecisionFileDTO.getFileNo());
- invalidDecisionFile.setDecisionKey(addInvalidDecisionFileDTO.getDecisionKey());
- invalidDecisionFile.setConclusion(addInvalidDecisionFileDTO.getConclusion());
- invalidDecisionFile.setLegalBase(addInvalidDecisionFileDTO.getLegalBase());
- invalidDecisionFile.setInvalidStageReason(addInvalidDecisionFileDTO.getInvalidStageReason());
- invalidDecisionFile.setReportAffairId(reportAffairId);
- invalidDecisionFile.insert();
- //同步无效决定号
- this.updateReportIssueNum(projectId, addInvalidDecisionFileDTO.getFileNo());
- //同步报告官限
- invalidRequestFileService.getCommonMethod(projectId, addInvalidDecisionFileDTO.getAssoCasePhaseId());
- //3. 添加报告事务与文件关联
- List<String> fileGuids = addInvalidDecisionFileDTO.getFileGuids();
- if (fileGuids != null && !fileGuids.isEmpty()) {
- List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
- fileGuids.forEach(item -> {
- AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
- assoReportAffairFile.setReportAffairId(reportAffairId);
- assoReportAffairFile.setFileGuid(item);
- assoReportAffairFiles.add(assoReportAffairFile);
- });
- assoReportAffairFileService.saveBatch(assoReportAffairFiles);
- }
- //4. 添加无效决定书与无效结果关联
- List<Integer> cronIds = addInvalidDecisionFileDTO.getCronIds();
- List<AssoInvalidDecisionCron> assoInvalidDecisionCrons = new ArrayList<>();
- if (!CollectionUtils.isEmpty(cronIds)) {
- cronIds.forEach(item -> {
- AssoInvalidDecisionCron assoInvalidDecisionCron = new AssoInvalidDecisionCron();
- assoInvalidDecisionCron.setInvalidDecisionId(invalidDecisionFile.getId());
- assoInvalidDecisionCron.setCronId(item);
- assoInvalidDecisionCrons.add(assoInvalidDecisionCron);
- });
- assoInvalidDecisionCronService.saveBatch(assoInvalidDecisionCrons);
- }
- //5.把无效结果同步到报告的核心结论
- if (!CollectionUtils.isEmpty(cronIds) && ObjectUtils.isNotEmpty(projectId)) {
- this.updateReportCron(cronIds, projectId);
- }
- if (addInvalidDecisionFileDTO.getIfSendEmail()) {
- sendReportMailService.finalSendEmail(projectId, fileGuids, addInvalidDecisionFileDTO.getExtraEmailDTOS());
- }
- return reportAffairId;
- }
- //同步修改报告中发文序号和无效决定书号码保持一致
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
- public void updateReportIssueNum(Integer projectId, String num) {
- if (StringUtils.isNotEmpty(num)) {
- reportProjectMapper.updateReportField(projectId, "issue_number", num);
- } else {
- reportProjectMapper.updateReportField(projectId, "issue_number", null);
- }
- }
- //把无效结果同步到报告的核心结论
- public void updateReportCron(List<Integer> cronIds, Integer projectId) {
- LambdaQueryWrapper<AssoReportCron> reportCronWrapper = new LambdaQueryWrapper<>();
- reportCronWrapper.eq(AssoReportCron::getProjectId, projectId);
- assoReportCronService.remove(reportCronWrapper);
- List<AssoReportCron> assoReportCrons = new ArrayList<>();
- cronIds.forEach(item -> {
- AssoReportCron assoReportCron = new AssoReportCron();
- assoReportCron.setProjectId(projectId);
- assoReportCron.setCronId(item);
- assoReportCrons.add(assoReportCron);
- });
- assoReportCronService.saveBatch(assoReportCrons);
- }
- /**
- * 修改无效决定书
- * @param updateInvalidDecisionFileDTO
- * @return
- */
- public Integer update(UpdateInvalidDecisionFileDTO updateInvalidDecisionFileDTO){
- if (updateInvalidDecisionFileDTO == null) {
- throw new XiaoShiException("入参为空");
- }
- Integer projectId = updateInvalidDecisionFileDTO.getProjectId();
- Integer id = updateInvalidDecisionFileDTO.getInvalidDecisionFileId();
- if (id == null) {
- throw new XiaoShiException("id为空");
- }
- if (projectId == null) {
- throw new XiaoShiException("报告id为空");
- }
- if (ObjectUtils.isEmpty(updateInvalidDecisionFileDTO.getAssoCasePhaseId())) {
- throw new XiaoShiException("案件流程阶段id为空");
- }
- //1. 根据id查出无效决定书
- InvalidDecisionFile invalidDecisionFile = this.getById(id);
- if (invalidDecisionFile == null) {
- throw new XiaoShiException("invalidDecisionFile查询错误");
- }
- BeanUtils.copyProperties(updateInvalidDecisionFileDTO, invalidDecisionFile);
- invalidDecisionFile.updateById();
- //同步无效决定号
- this.updateReportIssueNum(projectId, updateInvalidDecisionFileDTO.getFileNo());
- Integer reportAffairId = invalidDecisionFile.getReportAffairId();
- //2. 拿到报告事务id,获取报告事务
- ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
- reportAffair.setProjectId(projectId);
- //发生时间是无效请求日
- reportAffair.setOccurredTime(updateInvalidDecisionFileDTO.getInvalidDecisionTime());
- //备注
- reportAffair.setDescription(updateInvalidDecisionFileDTO.getDescription());
- reportAffair.setAssoCasePhaseId(updateInvalidDecisionFileDTO.getAssoCasePhaseId());
- reportAffair.updateById();
- //同步报告官限
- invalidRequestFileService.getCommonMethod(projectId, updateInvalidDecisionFileDTO.getAssoCasePhaseId());
- //3. 更新报告事务与文件关联
- LambdaQueryWrapper<AssoReportAffairFile> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(AssoReportAffairFile::getReportAffairId, reportAffairId);
- assoReportAffairFileService.remove(queryWrapper);
- List<String> fileGuids = updateInvalidDecisionFileDTO.getFileGuids();
- if (fileGuids != null && !fileGuids.isEmpty()) {
- List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
- fileGuids.forEach(item -> {
- AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
- assoReportAffairFile.setReportAffairId(reportAffairId);
- assoReportAffairFile.setFileGuid(item);
- assoReportAffairFiles.add(assoReportAffairFile);
- });
- assoReportAffairFileService.saveBatch(assoReportAffairFiles);
- }
- //4.更新无效书与无效结果关联
- List<Integer> cronIds = updateInvalidDecisionFileDTO.getCronIds();
- LambdaQueryWrapper<AssoInvalidDecisionCron> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(AssoInvalidDecisionCron::getInvalidDecisionId, invalidDecisionFile.getId());
- assoInvalidDecisionCronService.remove(wrapper);
- List<AssoInvalidDecisionCron> decisionCrons = new ArrayList<>();
- if (!CollectionUtils.isEmpty(cronIds)) {
- cronIds.forEach(item -> {
- AssoInvalidDecisionCron decisionCron = new AssoInvalidDecisionCron();
- decisionCron.setInvalidDecisionId(invalidDecisionFile.getId());
- decisionCron.setCronId(item);
- decisionCrons.add(decisionCron);
- });
- assoInvalidDecisionCronService.saveBatch(decisionCrons);
- }
- //5.把无效结果同步到报告的核心结论
- if (!CollectionUtils.isEmpty(cronIds) && ObjectUtils.isNotEmpty(projectId)) {
- this.updateReportCron(cronIds, projectId);
- }
- if (updateInvalidDecisionFileDTO.getIfSendEmail()) {
- sendReportMailService.finalSendEmail(projectId, fileGuids, updateInvalidDecisionFileDTO.getExtraEmailDTOS());
- }
- return reportAffairId;
- }
- public InvalidDecisionFileVO getInvalidDecisionFile(Integer reportAffairId) {
- LambdaQueryWrapper<InvalidDecisionFile> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(InvalidDecisionFile::getReportAffairId, reportAffairId);
- InvalidDecisionFile invalidDecisionFile = this.getOne(queryWrapper, false);
- InvalidDecisionFileVO invalidDecisionFileVO = new InvalidDecisionFileVO();
- if (invalidDecisionFile != null) {
- BeanUtils.copyProperties(invalidDecisionFile, invalidDecisionFileVO);
- invalidDecisionFileVO.setInvalidDecisionFileId(invalidDecisionFile.getId());
- }
- ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
- invalidDecisionFileVO.setInvalidDecisionTime(reportAffair.getOccurredTime());
- return invalidDecisionFileVO;
- }
- }
|