package cn.cslg.pas.service.business; import cn.cslg.pas.common.dto.business.ReportAffairDTO; import cn.cslg.pas.common.dto.invalidDTO.AddInvalidRequestFileDTO; import cn.cslg.pas.common.dto.invalidDTO.UpdateInvalidRequestFileDTO; import cn.cslg.pas.common.model.report.MailMessageDTO; import cn.cslg.pas.common.vo.invalidVO.InvalidRequestFileVO; import cn.cslg.pas.domain.business.AssoReportAffairFile; import cn.cslg.pas.domain.business.InvalidRequestFile; import cn.cslg.pas.domain.business.ReportAffair; import cn.cslg.pas.exception.XiaoShiException; import cn.cslg.pas.mapper.InvalidRequestFileMapper; 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.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 无效请求书的Service层 * @Author xiexiang * @Date 2023/12/23 */ @Service @Slf4j public class InvalidRequestFileService extends ServiceImpl { @Autowired @Lazy private ReportAffairService reportAffairService; @Autowired private AssoReportAffairFileService assoReportAffairFileService; @Autowired private SendReportMailService sendReportMailService; @Autowired private MailSendService mailSendService; /** * 上传无效请求书 * @param addInvalidRequestFileDTO */ public Integer add(AddInvalidRequestFileDTO addInvalidRequestFileDTO){ if (addInvalidRequestFileDTO == null) { throw new XiaoShiException("入参为空"); } Integer projectId = addInvalidRequestFileDTO.getProjectId(); if (projectId == null) { throw new XiaoShiException("报告id为空"); } //1. 首先上传报告事务,拿到报告事务id ReportAffairDTO reportAffairDTO = new ReportAffairDTO(); reportAffairDTO.setProjectId(projectId); //无效请求书 1 reportAffairDTO.setAffairType(1); //发生时间是无效请求日 reportAffairDTO.setOccurredTime(addInvalidRequestFileDTO.getInvalidRequestDate()); //备注 reportAffairDTO.setDescription(addInvalidRequestFileDTO.getDescription()); Integer reportAffairId = reportAffairService.addReportAffair(reportAffairDTO); if (reportAffairId == null) { throw new XiaoShiException("上传报告事务失败"); } //2. 上传无效请求书 InvalidRequestFile invalidRequestFile = new InvalidRequestFile(); BeanUtils.copyProperties(addInvalidRequestFileDTO, invalidRequestFile); invalidRequestFile.setReportAffairId(reportAffairId); invalidRequestFile.insert(); //3. 添加报告事务与文件关联 List fileGuids = addInvalidRequestFileDTO.getFileGuids(); if (fileGuids != null && !fileGuids.isEmpty()) { List assoReportAffairFiles = new ArrayList<>(); fileGuids.forEach(item -> { AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile(); assoReportAffairFile.setReportAffairId(reportAffairId); assoReportAffairFile.setFileGuid(item); assoReportAffairFiles.add(assoReportAffairFile); }); assoReportAffairFileService.saveBatch(assoReportAffairFiles); } if (addInvalidRequestFileDTO.getIfSendEmail()) { MailMessageDTO mailMessageDTO = sendReportMailService.loadingData(7, projectId, fileGuids); if (mailMessageDTO != null) { mailSendService.sendReportEmail(mailMessageDTO); } } return reportAffairId; } public InvalidRequestFileVO getInvalidRequestFileVO(Integer reportAffairId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(InvalidRequestFile::getReportAffairId, reportAffairId); InvalidRequestFile invalidRequestFile = this.getOne(queryWrapper, false); InvalidRequestFileVO invalidRequestFileVO = new InvalidRequestFileVO(); if (invalidRequestFile != null) { BeanUtils.copyProperties(invalidRequestFile, invalidRequestFileVO); invalidRequestFileVO.setInvalidRequestFileId(invalidRequestFile.getId()); } return invalidRequestFileVO; } /** * 更新无效请求书 * @param updateInvalidRequestFileDTO * @return */ public Integer update(UpdateInvalidRequestFileDTO updateInvalidRequestFileDTO){ if (updateInvalidRequestFileDTO == null) { throw new XiaoShiException("入参为空"); } Integer projectId = updateInvalidRequestFileDTO.getProjectId(); Integer id = updateInvalidRequestFileDTO.getInvalidRequestFileId(); if (id == null) { throw new XiaoShiException("id为空"); } if (projectId == null) { throw new XiaoShiException("报告id为空"); } //1. 根据id查出无效请求书 InvalidRequestFile invalidRequestFile = this.getById(id); if (invalidRequestFile == null) { throw new XiaoShiException("invalidRequestFile查询错误"); } BeanUtils.copyProperties(updateInvalidRequestFileDTO, invalidRequestFile); invalidRequestFile.updateById(); Integer reportAffairId = invalidRequestFile.getReportAffairId(); //2. 拿到报告事务id,获取报告事务 ReportAffair reportAffair = reportAffairService.getById(reportAffairId); reportAffair.setProjectId(projectId); //发生时间是无效请求日 reportAffair.setOccurredTime(updateInvalidRequestFileDTO.getInvalidRequestDate()); //备注 reportAffair.setDescription(updateInvalidRequestFileDTO.getDescription()); reportAffair.updateById(); //3. 更新报告事务与文件关联 List fileGuids = updateInvalidRequestFileDTO.getFileGuids(); assoReportAffairFileService.updateAffairFile(reportAffairId, fileGuids); if (updateInvalidRequestFileDTO.getIfSendEmail()) { MailMessageDTO mailMessageDTO = sendReportMailService.loadingData(7, projectId, fileGuids); if (mailMessageDTO != null) { mailSendService.sendReportEmail(mailMessageDTO); } } return reportAffairId; } }