xiexiang 1 yıl önce
ebeveyn
işleme
4bafd0c7da

+ 10 - 4
src/main/java/cn/cslg/pas/common/dto/business/UpdateReportProjectDTO.java

@@ -19,11 +19,11 @@ public class UpdateReportProjectDTO {
     @Schema(description = "委托类型1客户,2部门")
     private Integer entrustType;
     @Schema(description = "委托方id")
-    private Integer entrustId;
+    private String entrustId;
     @Schema(description = "负责人id")
-    private Integer headId;
+    private String headId;
     @Schema(description = "负责部门id")
-    private Integer departmentId;
+    private String departmentId;
     @Schema(description = "项目类型(1专题库 2报告 3专利挖掘项目)")
     private Integer type;
     @Schema(description = "合同号")
@@ -56,9 +56,15 @@ public class UpdateReportProjectDTO {
     @Schema(description = "结论论述")
     private String cronDescription;
     @Schema(description = "事件集合")
-    List<ProjectEventDTO> events;
+    List<ProjectEventDTO>  events;
     @Schema(description = "文件guids")
     private List<String> fileGuids;
     @Schema(description = "核心结论")
     private List<Integer> cronIds;
+    @Schema(description = "后续事项")
+    private List<FollowUpDTO> followUps;
+    @Schema(description = "产品或技术")
+    private String productOrTech;
+    @Schema(description = "关联报告")
+    private Integer AssoReportId;
 }

+ 0 - 4
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -159,14 +159,10 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
 
         //TODO 根据id删除专利数据库的自定义字段(自定义字段模块未完成,暂时不做)
 
-        //TODO 根据id删除专利数据库和事件的关联
-
         //TODO 根据id删除专利数据库和应用场景关联
         LambdaQueryWrapper<AssoProjectScenario> deleteScenarioWrapper = new LambdaQueryWrapper<>();
         deleteScenarioWrapper.in(AssoProjectScenario::getProjectId, ids);
         assoProjectScenarioService.remove(deleteScenarioWrapper);
-        //TODO 根据id删除专利数据库和报告的关联
-
         //TODO 根据id删除任务信息(任务模块未完成,暂时不做)
 
         //TODO 根据id删除任专利关联信息(es部分,暂时不做)

+ 175 - 14
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -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();
     }
 
     /**