chendayu 2 tahun lalu
induk
melakukan
11557642a2

+ 1 - 2
RMS/src/main/java/cn/cslg/report/common/config/WebSocketConfig.java

@@ -1,12 +1,11 @@
 package cn.cslg.report.common.config;
 
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.socket.server.standard.ServerEndpointExporter;
 
 @Configuration
 public class WebSocketConfig {
-    @Bean
+    //@Bean
     public ServerEndpointExporter serverEndpointExporter() {
         return new ServerEndpointExporter();
     }

+ 1 - 1
RMS/src/main/java/cn/cslg/report/common/model/dto/ProductDTO.java

@@ -9,7 +9,7 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * 产品的前端传输DTO类
+ * 新增产品DTO类
  *
  * @Author chenyu
  * @Data 2022/12/20

+ 1 - 1
RMS/src/main/java/cn/cslg/report/common/utils/Response.java

@@ -52,7 +52,7 @@ public class Response {
         return JsonUtils.objectToJson(response);
     }
 
-    public static String error(Object data,String message) {
+    public static String error(Object data, String message) {
         Response response = new Response();
         response.setCode(ResponseEnum.ERROR.getCode());
         response.setData(data);

+ 9 - 5
RMS/src/main/java/cn/cslg/report/controller/ProductController.java

@@ -5,6 +5,7 @@ import cn.cslg.report.common.model.dto.ProductDTO;
 import cn.cslg.report.common.model.dto.ProductIncludeFilesDTO;
 import cn.cslg.report.common.model.vo.ProductIncludeFilesVO;
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.exception.XiaoShiException;
 import cn.cslg.report.service.IProductService;
 import com.alibaba.fastjson.JSONObject;
 import io.swagger.v3.oas.annotations.Operation;
@@ -37,13 +38,16 @@ public class ProductController {
     @PostMapping("/addProduct")
     public String addProduct(String jsons, List<MultipartFile> files) {
         log.info("开始处理【新增产品】的请求,参数为:{}, {}", jsons, files);
-        if (jsons != null) {
-            ProductDTO productDTO = JSONObject.parseObject(jsons, ProductDTO.class);
+        if (jsons == null) {
+            return Response.error("产品创建失败,无新增产品的数据");
+        }
+        ProductDTO productDTO = JSONObject.parseObject(jsons, ProductDTO.class);
+        try {
             productService.addProduct(productDTO, files);
-            return Response.success("产品新增成功");
-        } else {
-            return Response.error("产品相关信息不能为空");
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
         }
+        return Response.success("新增产品完成");
     }
 
     @Operation(summary = "修改产品")

+ 15 - 0
RMS/src/main/java/cn/cslg/report/exception/XiaoShiException.java

@@ -0,0 +1,15 @@
+package cn.cslg.report.exception;
+
+/**
+ * 整个项目通用异常类
+ *
+ * @Author chenyu
+ * @Data 2023/2/1
+ */
+public class XiaoShiException extends RuntimeException {
+
+    public XiaoShiException(String message) {
+        super(message);
+    }
+
+}

+ 8 - 0
RMS/src/main/java/cn/cslg/report/mapper/ProductMapper.java

@@ -29,6 +29,14 @@ public interface ProductMapper {
     int update(Product product);
 
     /**
+     * 根据报告reportId统计产品数量
+     *
+     * @param reportId 报告id
+     * @return 返回统计到的数量
+     */
+    int countByReportId(Integer reportId);
+
+    /**
      * 根据报告reportId关联查询产品和产品附件数据(产品表、产品文件关联表、报告系统文件表)
      *
      * @param reportId 报告id

+ 3 - 3
RMS/src/main/java/cn/cslg/report/service/business/ReportService.java

@@ -127,9 +127,9 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         if (reportVO.getSignPatentNo() != null && reportVO.getSignPatentNo() != "") {
             queryWrapper.like(Report::getSignPatentNo, reportVO.getSignPatentNo());
         }
-        String orderBy ="";
-        String orderType="";
-        queryWrapper.last(" order by "+orderBy+" "+orderType);
+//        String orderBy ="";
+//        String orderType="";
+//        queryWrapper.last(" order by "+orderBy+" "+orderType);
         //分页
         if (reportVO.getSize() != null && reportVO.getCurrent() != null) {
             SecurityUtils.startDataScope("/pcs/report/query");

+ 94 - 104
RMS/src/main/java/cn/cslg/report/service/business/TaskService.java

@@ -1,7 +1,6 @@
 package cn.cslg.report.service.business;
 
 
-
 import cn.cslg.report.common.model.dto.TaskTDO;
 import cn.cslg.report.common.model.vo.*;
 import cn.cslg.report.common.model.vo.queryVo.QueryCMVO;
@@ -32,6 +31,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
+
 import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -59,7 +59,6 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
     public final SyneryCodeService syneryCodeService;
 
 
-
     /**
      * @param id(Task 任务id)
      * @return
@@ -92,19 +91,19 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             queryWrapper.eq(Task::getReportId, id);
             //拿到对象,根据对象判断任务类型
             List<Task> list = this.list(queryWrapper);
-            if(list.size()!=0){
-               for(Task task : list){
-                   if(task.getType().equals(1)){
-                       syneryCCService.deleteByTaskId(task.getId());
-                       syneryCodeService.deleteByTaskId(task.getId());
-
-                   }
-                   if(task.getType().equals(2)){
-                       //删除对比记录
-                       compareRecordsService.deleteByTaskId(task.getId());
-
-                   }
-               }
+            if (list.size() != 0) {
+                for (Task task : list) {
+                    if (task.getType().equals(1)) {
+                        syneryCCService.deleteByTaskId(task.getId());
+                        syneryCodeService.deleteByTaskId(task.getId());
+
+                    }
+                    if (task.getType().equals(2)) {
+                        //删除对比记录
+                        compareRecordsService.deleteByTaskId(task.getId());
+
+                    }
+                }
             }
 
             return this.remove(queryWrapper);
@@ -143,51 +142,45 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
      */
     public IPage<TaskReportVO> queryPageList(TaskVO taskVO) throws IOException {
         taskVO.setLoginId(StpUtil.getLoginIdAsInt());
-        if(taskVO.getRoleInTask()==0&&taskVO.getTaskStatus()==0){
-            taskVO.setTaskStatuses(Arrays.asList(0,2));
-        }
-        else if(taskVO.getRoleInTask()==0&&taskVO.getTaskStatus()==1)
-        {
+        if (taskVO.getRoleInTask() == 0 && taskVO.getTaskStatus() == 0) {
+            taskVO.setTaskStatuses(Arrays.asList(0, 2));
+        } else if (taskVO.getRoleInTask() == 0 && taskVO.getTaskStatus() == 1) {
             taskVO.setTaskStatuses(Arrays.asList(1));
-        }
-        else if(taskVO.getRoleInTask()==1&&taskVO.getTaskStatus()==0)
-        {
+        } else if (taskVO.getRoleInTask() == 1 && taskVO.getTaskStatus() == 0) {
             taskVO.setTaskStatuses(Arrays.asList(0));
-        }
-        else if(taskVO.getRoleInTask()==1&&taskVO.getTaskStatus()==1)
-        {
-            taskVO.setTaskStatuses(Arrays.asList(1,2));
+        } else if (taskVO.getRoleInTask() == 1 && taskVO.getTaskStatus() == 1) {
+            taskVO.setTaskStatuses(Arrays.asList(1, 2));
         }
         IPage<TaskReportVO> dataPage = new Page<>();
         //当查询使用发起人名称时
-        if(taskVO.getCreateName()!=null&&taskVO.getCreateName()!=""){
-        String res =outInterfaceService.getPersonIdByNamePCS(taskVO.getCreateName());
-        List<Integer> createIds =  JSONArray.parseArray(res,Integer.class);
+        if (taskVO.getCreateName() != null && taskVO.getCreateName() != "") {
+            String res = outInterfaceService.getPersonIdByNamePCS(taskVO.getCreateName());
+            List<Integer> createIds = JSONArray.parseArray(res, Integer.class);
             taskVO.setIds(createIds);
             //当未查询到时直接返回空页
-            if(createIds==null||createIds.size()==0){
-           taskVO.setIds(Arrays.asList(-1));
+            if (createIds == null || createIds.size() == 0) {
+                taskVO.setIds(Arrays.asList(-1));
             }
         }
         //当查询使用处理人名称时
-        if(taskVO.getHandlePersonName()!=null&&taskVO.getHandlePersonName()!=""){
-            String res =outInterfaceService.getPersonIdByNamePCS(taskVO.getHandlePersonName());
-            List<Integer> handleIds =  JSONArray.parseArray(res,Integer.class);
+        if (taskVO.getHandlePersonName() != null && taskVO.getHandlePersonName() != "") {
+            String res = outInterfaceService.getPersonIdByNamePCS(taskVO.getHandlePersonName());
+            List<Integer> handleIds = JSONArray.parseArray(res, Integer.class);
             taskVO.setHandleIds(handleIds);
             //当未查询到时直接返回空页
-            if(handleIds==null||handleIds.size()==0){
+            if (handleIds == null || handleIds.size() == 0) {
                 taskVO.setIds(Arrays.asList(-1));
             }
         }
         dataPage = baseMapper.queryTasks(new Page<>(taskVO.getCurrent(), taskVO.getSize()), taskVO);
-        List<TaskReportVO>  taskReportVOS =   dataPage.getRecords();
-        taskReportVOS =this.reTaskReportVOs(taskReportVOS);
+        List<TaskReportVO> taskReportVOS = dataPage.getRecords();
+        taskReportVOS = this.reTaskReportVOs(taskReportVOS);
         dataPage.setRecords(taskReportVOS);
         return dataPage;
     }
 
-   public List<TaskReportVO> reTaskReportVOs(List<TaskReportVO>  taskReportVOS) throws IOException {
-        if(taskReportVOS.size()!=0){
+    public List<TaskReportVO> reTaskReportVOs(List<TaskReportVO> taskReportVOS) throws IOException {
+        if (taskReportVOS.size() != 0) {
             //创建人Id
             List<Integer> createIds = taskReportVOS.stream().map(TaskReportVO::getCreateID).collect(Collectors.toList());
             //处理人Id
@@ -198,19 +191,20 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             //解析jason获得标的专利的权要
             List<Personnel> personnels = JSON.parseArray(jsonObject1.getString("data"), Personnel.class);
 
-            for(TaskReportVO item :taskReportVOS){
+            for (TaskReportVO item : taskReportVOS) {
                 //装载创建人名和负责人名
                 List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(item.getCreateID())).collect(Collectors.toList());
                 List<Personnel> mapDuty = personnels.stream().filter(tem -> tem.getId().equals(item.getHandlePersonId())).collect(Collectors.toList());
-                if(mapCre.size()!=0)
+                if (mapCre.size() != 0)
                     item.setCreateName(mapCre.get(0).getPersonnelName());
-                if(mapDuty.size()!=0){
-                    item.setHandlePersonName(mapDuty.get(0).getPersonnelName());}
+                if (mapDuty.size() != 0) {
+                    item.setHandlePersonName(mapDuty.get(0).getPersonnelName());
+                }
 
             }
         }
         return taskReportVOS;
-   }
+    }
 
     /**
      * @function 获取对比任务
@@ -584,7 +578,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         simpleDateFormat.format(now);
         task.setFinishTime(now);
         // 当是协同任务
-        if(task.getType()==1&&task.getTaskStatus()==0) {
+        if (task.getType() == 1 && task.getTaskStatus() == 0) {
             task.setTaskStatus(2);
             Map<String, Object> map = new LinkedHashMap<>();
             map.put("title", "任务通知");
@@ -615,15 +609,14 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
                     mailUtils.sendEmailMessage(map);
                 }
             }
+        } else {
+            task.setTaskStatus(1);
         }
-            else {
-                    task.setTaskStatus(1);
-                }
-                //结果为已完成状态
-                task.setResult(1);
-                task.updateById();
-                return Response.success();
-            }
+        //结果为已完成状态
+        task.setResult(1);
+        task.updateById();
+        return Response.success();
+    }
 
     /**
      * @param taskVO
@@ -636,7 +629,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(Task::getReportId, taskVO.getReportId());
         List<Task> records = this.page(new Page<>(taskVO.getCurrent(), taskVO.getSize()), lambdaQueryWrapper).getRecords();
-        for(Task task :records){
+        for (Task task : records) {
             Integer createID = task.getCreateID();
             Integer handlePersonId = task.getHandlePersonId();
             PersonnelVO loginUser = cacheUtils.getLoginUser(createID);
@@ -652,8 +645,8 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
 
     }
 
-    public List<Task> reTasks(List<Task>  tasks) throws IOException {
-        if(tasks.size()!=0){
+    public List<Task> reTasks(List<Task> tasks) throws IOException {
+        if (tasks.size() != 0) {
             //创建人Id
             List<Integer> createIds = tasks.stream().map(Task::getCreateID).collect(Collectors.toList());
             //处理人Id
@@ -664,14 +657,15 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             //解析jason获得标的专利的权要
             List<Personnel> personnels = JSON.parseArray(jsonObject1.getString("data"), Personnel.class);
 
-            for(Task item :tasks){
+            for (Task item : tasks) {
                 //装载创建人名和负责人名
                 List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(item.getCreateID())).collect(Collectors.toList());
                 List<Personnel> mapDuty = personnels.stream().filter(tem -> tem.getId().equals(item.getHandlePersonId())).collect(Collectors.toList());
-                if(mapCre.size()!=0)
+                if (mapCre.size() != 0)
                     item.setCreateName(mapCre.get(0).getPersonnelName());
-                if(mapDuty.size()!=0&&item.getHandlePersonName() ==null){
-                    item.setHandlePersonName(mapDuty.get(0).getPersonnelName());}
+                if (mapDuty.size() != 0 && item.getHandlePersonName() == null) {
+                    item.setHandlePersonName(mapDuty.get(0).getPersonnelName());
+                }
                 //装载部门名
 
             }
@@ -686,9 +680,9 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
      * @author :cj
      */
     @Transactional
-    public String read(Integer taskID, String patentNo,Integer reportId) {
+    public String read(Integer taskID, String patentNo, Integer reportId) {
 
-        if(taskID!=null) {
+        if (taskID != null) {
             LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(AssoTaskPersonel::getPatentNo, patentNo);
             queryWrapper.eq(AssoTaskPersonel::getTaskId, taskID);
@@ -699,31 +693,29 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
                 assoTaskPersonel.setState(1);
             }
             assoTaskPersonel.updateById();
-        }else {
-            LambdaQueryWrapper<CompareFiles> queryWrapper=new LambdaQueryWrapper<>();
-            queryWrapper.eq(CompareFiles::getReportId,reportId).eq(CompareFiles::getPatentNo,patentNo);
+        } else {
+            LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CompareFiles::getReportId, reportId).eq(CompareFiles::getPatentNo, patentNo);
             CompareFiles compareFiles = compareFilesService.list(queryWrapper).get(0);
             compareFiles.setState(1);
             compareFiles.updateById();
 
 
-
         }
-            return Response.success();
+        return Response.success();
 
     }
 
-    public String look( Integer taskID, String patentNo,Integer reoportId) {
+    public String look(Integer taskID, String patentNo, Integer reoportId) {
         if (taskID != null) {
             LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(AssoTaskPersonel::getPatentNo, patentNo);
             queryWrapper.eq(AssoTaskPersonel::getTaskId, taskID);
             AssoTaskPersonel assoTaskPersonel = assoTaskPersonelService.list(queryWrapper).get(0);
             return Response.success(assoTaskPersonel.getState());
-        }
-        else {
+        } else {
             LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(CompareFiles::getPatentNo,patentNo).eq(CompareFiles::getReportId,reoportId);
+            queryWrapper.eq(CompareFiles::getPatentNo, patentNo).eq(CompareFiles::getReportId, reoportId);
             List<CompareFiles> list = compareFilesService.list(queryWrapper);
             return Response.success(list.get(0).getState());
 
@@ -733,9 +725,9 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
     @Transactional(rollbackFor = Exception.class)
     public String addSyneryTask(SyneryVO syneryVO) throws ParseException, IOException {
         //任务保存部分
-        Report report =reportService.getById(syneryVO.getReportId());
+        Report report = reportService.getById(syneryVO.getReportId());
         PatentVO patentVO = new PatentVO();
-        List<Synery_CC> synery_ccs= syneryVO.getSyneryCCList();
+        List<Synery_CC> synery_ccs = syneryVO.getSyneryCCList();
         if (syneryVO.getPatentVO() != null) {
             patentVO = syneryVO.getPatentVO();
         }
@@ -747,10 +739,9 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         task.setProgress(0.0);
         task.setEndTime(syneryVO.getEndTime());
         task.setRemark(syneryVO.getRemark());
-        if(syneryVO.getHandlePersonId() !=null){
+        if (syneryVO.getHandlePersonId() != null) {
             task.setHandlePersonId(syneryVO.getHandlePersonId());
-        }
-        else{
+        } else {
             task.setHandlePersonName(syneryVO.getPersonEmail());
         }
         task.setCreateID(loginUtils.getId());
@@ -762,40 +753,40 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         queryCMVO.setCompareResult(syneryVO.getCompareResult());
         List<String> patentNos = new ArrayList<>();
         //无查询条件,单个专利
-        if( syneryVO.getPatentNo()!=null){
-          patentNos =Arrays.asList(syneryVO.getPatentNo());
+        if (syneryVO.getPatentNo() != null) {
+            patentNos = Arrays.asList(syneryVO.getPatentNo());
         }
         //无查询条件并且是对比过的专利
-      else  if ((patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0)&&syneryVO.getIsAll()==0) {
+        else if ((patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0) && syneryVO.getIsAll() == 0) {
             List<String> AllpatentNos = compareMessageService.getBaseMapper().getComparedMessageAll(queryCMVO);
-            patentNos=AllpatentNos;
+            patentNos = AllpatentNos;
         }
         //无查询条件并且是全部的专利
-      else if((patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0)&&syneryVO.getIsAll()==1){
+        else if ((patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0) && syneryVO.getIsAll() == 1) {
             LambdaQueryWrapper<CompareFiles> queryWrapper1 = new LambdaQueryWrapper<>();
             queryWrapper1.eq(CompareFiles::getReportId, syneryVO.getReportId());
             List<CompareFiles> compareFiles = compareFilesService.list(queryWrapper1);
-            List<String>  AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
-            patentNos=AllpatentNos;
+            List<String> AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+            patentNos = AllpatentNos;
         }
         //有查询条件并且是对比过的专利
-        else if(patentVO != null && patentVO.getFiledOptions() != null && patentVO.getFiledOptions().size() != 0&&syneryVO.getIsAll()==0){
+        else if (patentVO != null && patentVO.getFiledOptions() != null && patentVO.getFiledOptions().size() != 0 && syneryVO.getIsAll() == 0) {
             List<String> AllpatentNos = compareMessageService.getBaseMapper().getComparedMessageAll(queryCMVO);
             List<String> temPatentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(), syneryVO.getReportId(), task.getId(), patentVO.getTaskStatus());
             List<String> strings1 = new ArrayList<>(CollectionUtils.intersection(temPatentNos, AllpatentNos));
             patentVO.setPatentNos(temPatentNos);
         }
         //有查询条件并且是全部的专利
-        else if(patentVO != null && patentVO.getFiledOptions() != null && patentVO.getFiledOptions().size() != 0&&syneryVO.getIsAll()==1){
+        else if (patentVO != null && patentVO.getFiledOptions() != null && patentVO.getFiledOptions().size() != 0 && syneryVO.getIsAll() == 1) {
             LambdaQueryWrapper<CompareFiles> queryWrapper1 = new LambdaQueryWrapper<>();
             queryWrapper1.eq(CompareFiles::getReportId, syneryVO.getReportId());
             List<CompareFiles> compareFiles = compareFilesService.list(queryWrapper1);
-            List<String>  AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+            List<String> AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
             List<String> temPatentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(), syneryVO.getReportId(), task.getId(), patentVO.getTaskStatus());
             List<String> strings1 = new ArrayList<>(CollectionUtils.intersection(temPatentNos, AllpatentNos));
             patentVO.setPatentNos(temPatentNos);
         }
-        if (patentVO!=null&&patentVO.getPatentNos()!=null&&patentVO.getPatentNos().size() != 0) {
+        if (patentVO != null && patentVO.getPatentNos() != null && patentVO.getPatentNos().size() != 0) {
             String res = outInterfaceService.getConPantentNos(patentVO, 1);
             JSONObject jsonObject1 = JSONObject.parseObject(res);
             patentNos = JSONArray.parseArray(jsonObject1.get("data").toString(), String.class);
@@ -811,22 +802,22 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         // 分配信息入库
         assoTaskPersonelService.saveBatch(assoTaskPersonels);
 
-        if(synery_ccs!=null&&synery_ccs.size()!=0){
-            synery_ccs.forEach(item->{
+        if (synery_ccs != null && synery_ccs.size() != 0) {
+            synery_ccs.forEach(item -> {
                 item.setTaskId(task.getId());
             });
             syneryCCService.saveBatch(synery_ccs);
         }
-         //发送邮件部分
-        String code =DataUtils.generateShortUuid();
-        SyneryCode syneryCode =new SyneryCode();
+        //发送邮件部分
+        String code = DataUtils.generateShortUuid();
+        SyneryCode syneryCode = new SyneryCode();
         syneryCode.setCode(code);
         syneryCode.setTaskId(task.getId());
         syneryCode.insert();
         Map<String, Object> map = new LinkedHashMap<>();
         map.put("title", "任务通知");
         map.put("template", "mail/Synery.html");
-        if(syneryVO.getHandlePersonId()!=null) {
+        if (syneryVO.getHandlePersonId() != null) {
             String resBody = outInterfaceService.getPersonnelByIdsFromPCS(Arrays.asList(task.getHandlePersonId()));
             JSONObject jsonObject = JSONObject.parseObject(resBody);
             //解析jason获得标的专利的权要
@@ -835,21 +826,20 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             map.put("email", personnels.get(0).getPersonnelEmail());
             map.put("img", "\\src\\main\\resources\\mail\\logo.png");
             map.put("value2", syneryCode.getCode());
-            map.put("value3", "http://localhost:8086/Incomplete?taskId="+task.getId()+"&reportId="+task.getReportId()+"&type=1"+"&reportType="+report.getType());
+            map.put("value3", "http://localhost:8086/Incomplete?taskId=" + task.getId() + "&reportId=" + task.getReportId() + "&type=1" + "&reportType=" + report.getType());
             mailUtils.sendEmailMessage(map);
-        }
-      else{
-          String orgin = syneryVO.getPersonEmail();
+        } else {
+            String orgin = syneryVO.getPersonEmail();
             String parStr = "\\<([^}]*)\\>";
             Pattern pattern = Pattern.compile(parStr);
             Matcher matcher = pattern.matcher(orgin);
-            if(matcher.find()) {
+            if (matcher.find()) {
                 String personName = orgin.substring(0, matcher.start());
-                String email =matcher.group(0);
-             email =   email.replace("<","");
-                email= email.replace(">","");
-                map.put("value1",personName);
-                map.put("email",email);
+                String email = matcher.group(0);
+                email = email.replace("<", "");
+                email = email.replace(">", "");
+                map.put("value1", personName);
+                map.put("email", email);
                 map.put("img", "\\src\\main\\resources\\mail\\logo.png");
                 map.put("value2", syneryCode.getCode());
                 map.put("value3", "http://localhost:8086/identificationCode");

+ 17 - 7
RMS/src/main/java/cn/cslg/report/service/impl/ProductServiceImpl.java

@@ -8,6 +8,7 @@ import cn.cslg.report.common.model.vo.ReportFileStandardVO;
 import cn.cslg.report.common.utils.CacheUtils;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.report.entity.Product;
+import cn.cslg.report.exception.XiaoShiException;
 import cn.cslg.report.mapper.ProductMapper;
 import cn.cslg.report.service.IAssoProductFileService;
 import cn.cslg.report.service.IProductService;
@@ -46,24 +47,33 @@ public class ProductServiceImpl implements IProductService {
     @Override
     public void addProduct(ProductDTO productDTO, List<MultipartFile> files) {
         log.info("开始处理【新增产品】的业务,参数为:{}, {}", productDTO, files);
-        //产品DTO类赋值给产品实体类
+        //新增产品DTO类对象赋值给产品实体类对象
         Product product = new Product();
         BeanUtils.copyProperties(productDTO, product);
-        //获取当前管理员的人员信息
+        //获取创建人信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        //获取创建人id和创建人姓名并赋值给实体类
+        //将创建人id和姓名赋值给产品表实体类对象
         product.setCreatePersonId(personnelVO.getId())
                 .setCreatePersonName(personnelVO.getName());
 
-        //1.插入产品数据入产品表
+        //检查当前报告是否已有创建的产品 (根据报告id查询产品,1个报告只能创建有1个产品)
+        Integer reportId = product.getReportId();
+        int count = productMapper.countByReportId(reportId);
+        if (count > 0) {
+            String message = "新增产品失败,当前报告产品已存在";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //1.产品数据入产品表
         productMapper.insert(product);
-        //2.插入产品附件数据入报告系统文件表并返回附件的ids
+        //2.附件数据(如果有附件)入报告系统文件表并返回附件的id集合
         if (files != null && files.size() != 0) {
             List<Integer> fileIds = reportFileService.uploadFiles(files);
-            //3.插入产品id和附件id入产品文件关联表
+            //3.产品productId和附件fileId入产品文件关联表
             assoProductFileService.addAsso(product.getId(), fileIds);
         }
-        log.info("产品新增完成!");
+        log.info("新增产品完成");
 
     }
 

+ 11 - 3
RMS/src/main/resources/mapper/ProductMapper.xml

@@ -38,7 +38,7 @@
             <if test="searchPolicy != null">
                 SEARCH_POLICY = #{searchPolicy},
             </if>
-                DEADLINE = #{deadLine},
+            DEADLINE = #{deadLine},
             <if test="focusInformation != null">
                 FOCUS_INFORMATION = #{focusInformation},
             </if>
@@ -55,10 +55,18 @@
         where ID = #{id}
     </update>
 
+    <!--根据报告reportId统计产品数量-->
+    <!--int countByReportId(Integer reportId);-->
+    <select id="countByReportId" resultType="int">
+        select count(*)
+        from PRODUCT
+        where REPORT_ID = #{reportId}
+    </select>
+
     <!--根据报告reportId关联查询产品和产品附件数据(产品表、产品文件关联表、报告系统文件表)-->
     <!--ProductIncludeFilesVO getWholeByReportId(Integer reportId);-->
     <select id="getWholeByReportId" resultMap="WholeResultMap">
-        select p.ID p_ID,
+        select p.ID  p_ID,
                product_name,
                product_identify,
                product_description,
@@ -86,7 +94,7 @@
                  left join REPORT_FILE rf on apf.FILE_ID = rf.ID
         where REPORT_ID = #{reportId}
         order by rf_ID
-  limit 1;
+        limit 1;
     </select>
 
     <resultMap id="WholeResultMap" type="cn.cslg.report.common.model.vo.ProductIncludeFilesVO">

+ 28 - 0
RMS/src/test/java/cn/cslg/report/mapper/ProductMapperTests.java

@@ -0,0 +1,28 @@
+package cn.cslg.report.mapper;
+
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * 产品表的Mapper层接口测试类
+ *
+ * @Author chenyu
+ * @Data 2023/2/1
+ */
+@Slf4j
+@SpringBootTest
+public class ProductMapperTests {
+
+    @Autowired
+    private ProductMapper productMapper;
+
+    @Test
+    void countByReportId() {
+        Integer reportId = 482;
+        int count = productMapper.countByReportId(reportId);
+        log.info("根据报告id统计产品数量完成,数量为{}", count);
+    }
+
+}

TEMPAT SAMPAH
RMS/target/classes/cn/cslg/report/common/config/WebSocketConfig.class


TEMPAT SAMPAH
RMS/target/classes/cn/cslg/report/controller/ProductController.class


TEMPAT SAMPAH
RMS/target/classes/cn/cslg/report/service/business/ReportService.class


TEMPAT SAMPAH
RMS/target/classes/cn/cslg/report/service/business/TaskService.class


+ 11 - 3
RMS/target/classes/mapper/ProductMapper.xml

@@ -38,7 +38,7 @@
             <if test="searchPolicy != null">
                 SEARCH_POLICY = #{searchPolicy},
             </if>
-                DEADLINE = #{deadLine},
+            DEADLINE = #{deadLine},
             <if test="focusInformation != null">
                 FOCUS_INFORMATION = #{focusInformation},
             </if>
@@ -55,10 +55,18 @@
         where ID = #{id}
     </update>
 
+    <!--根据报告reportId统计产品数量-->
+    <!--int countByReportId(Integer reportId);-->
+    <select id="countByReportId" resultType="int">
+        select count(*)
+        from PRODUCT
+        where REPORT_ID = #{reportId}
+    </select>
+
     <!--根据报告reportId关联查询产品和产品附件数据(产品表、产品文件关联表、报告系统文件表)-->
     <!--ProductIncludeFilesVO getWholeByReportId(Integer reportId);-->
     <select id="getWholeByReportId" resultMap="WholeResultMap">
-        select p.ID p_ID,
+        select p.ID  p_ID,
                product_name,
                product_identify,
                product_description,
@@ -86,7 +94,7 @@
                  left join REPORT_FILE rf on apf.FILE_ID = rf.ID
         where REPORT_ID = #{reportId}
         order by rf_ID
-  limit 1;
+        limit 1;
     </select>
 
     <resultMap id="WholeResultMap" type="cn.cslg.report.common.model.vo.ProductIncludeFilesVO">