|
@@ -3,6 +3,7 @@ package cn.cslg.pas.service.business;
|
|
|
import cn.cslg.pas.common.dto.business.PatentProjectDTO;
|
|
|
import cn.cslg.pas.common.dto.business.ProjectEventDTO;
|
|
|
import cn.cslg.pas.common.dto.business.ReportProjectDTO;
|
|
|
+import cn.cslg.pas.common.dto.business.UpdateReportProjectDTO;
|
|
|
import cn.cslg.pas.common.model.cronModel.*;
|
|
|
import cn.cslg.pas.common.model.request.GroupRequest;
|
|
|
import cn.cslg.pas.common.model.request.QueryRequest;
|
|
@@ -28,6 +29,7 @@ import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import jakarta.validation.constraints.AssertFalse;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -90,6 +92,14 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
|
|
|
|
|
|
@Autowired
|
|
|
private EventService eventService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProjectService projectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AssoProjectService assoProjectService;
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Object queryMessage(QueryRequest queryRequest) throws Exception {
|
|
@@ -119,19 +129,34 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Object deleteMessage(List<Integer> ids) throws IOException {
|
|
|
- //根据事件id删除事件和文件关联
|
|
|
- LambdaQueryWrapper<AssoEventFile> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.in(AssoEventFile::getEventId, ids);
|
|
|
- List<AssoEventFile> assoEventFiles = assoEventFileService.list(queryWrapper);
|
|
|
- List<String> guids = assoEventFiles.stream().map(AssoEventFile::getFileGuid).collect(Collectors.toList());
|
|
|
- // 根据guid删除文件
|
|
|
- if (guids.size() != 0) {
|
|
|
- fileManagerService.deleteFileFromFMS(guids);
|
|
|
- }
|
|
|
- //删除事件和文件关联表
|
|
|
- assoEventFiles.remove(queryWrapper);
|
|
|
- //根据事件id删除事件
|
|
|
- this.removeBatchByIds(ids);
|
|
|
+ //后续事项
|
|
|
+ LambdaQueryWrapper<FollowUp> followUpWrapper = new LambdaQueryWrapper<>();
|
|
|
+ followUpWrapper.in(FollowUp::getProjectId, ids);
|
|
|
+ followUpService.remove(followUpWrapper);
|
|
|
+ //事件
|
|
|
+ LambdaQueryWrapper<AssoProjectEvent> eventWrapper = new LambdaQueryWrapper<>();
|
|
|
+ eventWrapper.in(AssoProjectEvent::getProjectId, ids);
|
|
|
+ assoProjectEventService.remove(eventWrapper);
|
|
|
+ //附件
|
|
|
+ LambdaQueryWrapper<AssoProjectFile> fileWrapper = new LambdaQueryWrapper<>();
|
|
|
+ fileWrapper.in(AssoProjectFile::getProjectId, ids);
|
|
|
+ assoProjectFileService.remove(fileWrapper);
|
|
|
+ //核心结论
|
|
|
+ LambdaQueryWrapper<AssoReportCron> reportCronWrapper = new LambdaQueryWrapper<>();
|
|
|
+ reportCronWrapper.in(AssoReportCron::getProjectId, ids);
|
|
|
+ assoReportCronService.remove(reportCronWrapper);
|
|
|
+ //和报告关联
|
|
|
+ LambdaQueryWrapper<AssoProject> assoReportWrapper = new LambdaQueryWrapper<>();
|
|
|
+ assoReportWrapper.in(AssoProject::getProjectId, ids);
|
|
|
+ assoReportWrapper.eq(AssoProject::getProjectType, 2);
|
|
|
+ assoReportWrapper.eq(AssoProject::getAssoProjectType, 2);
|
|
|
+ assoProjectService.remove(assoReportWrapper);
|
|
|
+ //report
|
|
|
+ LambdaQueryWrapper<ReportProject> reportProjectWrapper = new LambdaQueryWrapper<>();
|
|
|
+ reportProjectWrapper.in(ReportProject::getProjectId, ids);
|
|
|
+ this.remove(reportProjectWrapper);
|
|
|
+ //project
|
|
|
+ projectService.removeBatchByIds(ids);
|
|
|
return ids;
|
|
|
}
|
|
|
|
|
@@ -317,7 +342,143 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
|
|
|
|
|
|
@Override
|
|
|
public Object updateMessage(Object object) {
|
|
|
- return null;
|
|
|
+ //TODO 校验参数
|
|
|
+ //object to reportProjectDTO
|
|
|
+ UpdateReportProjectDTO updateReportProjectDTO = (UpdateReportProjectDTO) object;
|
|
|
+ /**
|
|
|
+ * 校验必传参数是否上传
|
|
|
+ */
|
|
|
+ //负责人id
|
|
|
+ if (updateReportProjectDTO.getHeadId() == null) {
|
|
|
+ throw new XiaoShiException("负责人id不能为空");
|
|
|
+ }
|
|
|
+ //报告类型
|
|
|
+ if (updateReportProjectDTO.getReportType().equals(null)) {
|
|
|
+ throw new XiaoShiException("报告类型不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取登陆人信息 用于设置创建人
|
|
|
+ PersonnelVO personnelVO = new PersonnelVO();
|
|
|
+ try {
|
|
|
+ personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new UnLoginException("未登录");
|
|
|
+ }
|
|
|
+ String userId =personnelVO.getId();
|
|
|
+ /**
|
|
|
+ * 装载project
|
|
|
+ */
|
|
|
+ Project project = projectService.getById(updateReportProjectDTO.getId());
|
|
|
+ BeanUtils.copyProperties(updateReportProjectDTO, project);
|
|
|
+ project.updateById();
|
|
|
+ /**
|
|
|
+ * 装载和报告关联
|
|
|
+ */
|
|
|
+ if (updateReportProjectDTO.getAssoReportId() != null) {
|
|
|
+ LambdaQueryWrapper<AssoProject> deleteReportWrapper = new LambdaQueryWrapper<>();
|
|
|
+ deleteReportWrapper.eq(AssoProject::getProjectId, project.getId());
|
|
|
+ assoProjectService.remove(deleteReportWrapper);
|
|
|
+
|
|
|
+ AssoProject assoProject = new AssoProject();
|
|
|
+ assoProject.setAssoProjectId(project.getId());
|
|
|
+ assoProject.setAssoProjectType(2);
|
|
|
+ assoProject.setProjectId(updateReportProjectDTO.getAssoReportId());
|
|
|
+ assoProject.setProjectType(2);
|
|
|
+ assoProject.insert();
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 装载reportProject
|
|
|
+ */
|
|
|
+ LambdaQueryWrapper<ReportProject> reportProjectWrapper = new LambdaQueryWrapper<>();
|
|
|
+ reportProjectWrapper.eq(ReportProject::getProjectId, project.getId());
|
|
|
+ ReportProject reportProject = this.getOne(reportProjectWrapper);
|
|
|
+ BeanUtils.copyProperties(updateReportProjectDTO, reportProject);
|
|
|
+ reportProject.updateById();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 装载后续事项和project关联
|
|
|
+ */
|
|
|
+ LambdaQueryWrapper<FollowUp> followUpWrapper = new LambdaQueryWrapper<>();
|
|
|
+ followUpWrapper.eq(FollowUp::getProjectId, project.getId());
|
|
|
+ followUpService.remove(followUpWrapper);
|
|
|
+ if (updateReportProjectDTO.getFollowUps() != null && updateReportProjectDTO.getFollowUps().size() != 0) {
|
|
|
+ List<FollowUp> followUps = new ArrayList<>();
|
|
|
+ updateReportProjectDTO.getFollowUps().forEach(item -> {
|
|
|
+ FollowUp followUp = new FollowUp();
|
|
|
+ BeanUtils.copyProperties(item, followUp);
|
|
|
+ followUp.setCreateId(userId);
|
|
|
+ followUps.add(followUp);
|
|
|
+ });
|
|
|
+ followUpService.saveBatch(followUps);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 装载事件与project关联
|
|
|
+ */
|
|
|
+ List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<AssoProjectEvent> deleteEventWrapper = new LambdaQueryWrapper<>();
|
|
|
+ deleteEventWrapper.eq(AssoProjectEvent::getProjectId, project.getId());
|
|
|
+ assoProjectEventService.remove(deleteEventWrapper);
|
|
|
+
|
|
|
+ List<ProjectEventDTO> events = updateReportProjectDTO.getEvents();
|
|
|
+ if (events != null && events.size() != 0) {
|
|
|
+ //遍历传入的事件集合
|
|
|
+ for (ProjectEventDTO projectEventDTO : events) {
|
|
|
+ AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
|
|
|
+ //事件id和处理事项id
|
|
|
+ BeanUtils.copyProperties(projectEventDTO, assoProjectEvent);
|
|
|
+ //项目id
|
|
|
+ assoProjectEvent.setProjectId(project.getId());
|
|
|
+ //创建人
|
|
|
+ assoProjectEvent.setCreateId(personnelVO.getId());
|
|
|
+ //类型为报告
|
|
|
+ assoProjectEvent.setProjectType(1);
|
|
|
+ assoProjectEvents.add(assoProjectEvent);
|
|
|
+ }
|
|
|
+ if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
|
|
|
+ assoProjectEventService.saveBatch(assoProjectEvents);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 装载和附件关联
|
|
|
+ */
|
|
|
+ List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<AssoProjectFile> deleteFileWrapper = new LambdaQueryWrapper<>();
|
|
|
+ deleteFileWrapper.eq(AssoProjectFile::getProjectId, project.getId());
|
|
|
+ assoProjectFileService.remove(deleteFileWrapper);
|
|
|
+ List<String> fileGuids = updateReportProjectDTO.getFileGuids();
|
|
|
+ if (fileGuids != null && fileGuids.size() != 0) {
|
|
|
+ for (String fileGuid : fileGuids) {
|
|
|
+ AssoProjectFile assoProjectFile = new AssoProjectFile();
|
|
|
+ assoProjectFile.setProjectId(project.getId());
|
|
|
+ assoProjectFile.setFileGuid(fileGuid);
|
|
|
+ assoProjectFile.setCreateId(personnelVO.getId());
|
|
|
+ assoProjectFiles.add(assoProjectFile);
|
|
|
+ }
|
|
|
+ if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
|
|
|
+ assoProjectFileService.saveBatch(assoProjectFiles);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 装载核心结论
|
|
|
+ */
|
|
|
+ List<Integer> cronIds = updateReportProjectDTO.getCronIds();
|
|
|
+ LambdaQueryWrapper<AssoReportCron> reportCronWrapper = new LambdaQueryWrapper<>();
|
|
|
+ reportCronWrapper.eq(AssoReportCron::getProjectId, project.getId());
|
|
|
+ assoReportCronService.remove(reportCronWrapper);
|
|
|
+ List<AssoReportCron> assoReportCrons = new ArrayList<>();
|
|
|
+ if (cronIds != null && cronIds.size() != 0) {
|
|
|
+ cronIds.forEach(item -> {
|
|
|
+ AssoReportCron assoReportCron = new AssoReportCron();
|
|
|
+ assoReportCron.setProjectId(project.getId());
|
|
|
+ assoReportCron.setCronId(item);
|
|
|
+ assoReportCrons.add(assoReportCron);
|
|
|
+ });
|
|
|
+ assoReportCronService.saveBatch(assoReportCrons);
|
|
|
+ }
|
|
|
+ //返回id
|
|
|
+ return project.getId();
|
|
|
}
|
|
|
|
|
|
/**
|