Преглед на файлове

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	RMS/target/classes/cn/cslg/report/service/business/ReportService.class
liRJ преди 2 години
родител
ревизия
dfe6682ee8

+ 1 - 5
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 10:16
@@ -65,9 +65,5 @@ public class ProductDTO implements Serializable {
      * 创建人ID
      */
     private Integer createPersonId;
-    /**
-     * 附件
-     */
-    private List<ReportFileStandardVO> reportFiles;
 
 }

+ 73 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/ProductIncludeFilesDTO.java

@@ -0,0 +1,73 @@
+package cn.cslg.report.common.model.dto;
+
+import cn.cslg.report.common.model.vo.ReportFileStandardVO;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 产品关联附件的前端传输DTO类
+ *
+ * @Author chenyu
+ * @Data 2022/12/27 10:16
+ */
+@Accessors(chain = true)
+@Data
+public class ProductIncludeFilesDTO implements Serializable {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 产品名称
+     */
+    private String productName;
+    /**
+     * 产品标识
+     */
+    private String productIdentify;
+    /**
+     * 产品说明
+     */
+    private String productDescription;
+    /**
+     * 调查区域
+     */
+    private String surveyArea;
+    /**
+     * 产品图
+     */
+    private String productImage;
+    /**
+     * 检索策略
+     */
+    private String searchPolicy;
+    /**
+     * 检索截止日期
+     */
+    private Date deadLine;
+    /**
+     * 关注企业/发明人/技术方向
+     */
+    private String focusInformation;
+    /**
+     * 报告ID
+     */
+    private Integer reportId;
+    /**
+     * 创建人姓名
+     */
+    private String createPersonName;
+    /**
+     * 创建人ID
+     */
+    private Integer createPersonId;
+    /**
+     * 附件
+     */
+    private List<ReportFileStandardVO> reportFiles;
+
+}

+ 2 - 2
RMS/src/main/java/cn/cslg/report/common/model/vo/ProductStandardVO.java

@@ -8,14 +8,14 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * 产品的查询数据VO类
+ * 产品关联附件的查询VO类
  *
  * @Author chenyu
  * @Data 2022/12/20 10:16
  */
 @Accessors(chain = true)
 @Data
-public class ProductStandardVO implements Serializable {
+public class ProductIncludeFilesVO implements Serializable {
     /**
      * ID
      */

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

@@ -2,10 +2,10 @@ package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.dto.ProductDTO;
-import cn.cslg.report.common.model.vo.ProductStandardVO;
+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.service.IProductService;
-import cn.cslg.report.service.impl.ProductServiceImpl;
 import com.alibaba.fastjson.JSONObject;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -20,10 +20,10 @@ import org.springframework.web.multipart.MultipartFile;
 import java.util.List;
 
 /**
- * 产品的控制
+ * 产品的Controller
  *
  * @Author chenyu
- * @Data 2022/12/20 15:00
+ * @Data 2022/12/20
  */
 @Tag(name = "产品管理模块")
 @Slf4j
@@ -31,7 +31,7 @@ import java.util.List;
 @RequestMapping(Constants.REPORT_API + "/product")
 @RequiredArgsConstructor
 public class ProductController {
-    private final IProductService productService;
+    private final IProductService productService;  //装配产品的Service层接口实现类
 
     @Operation(summary = "新增产品")
     @PostMapping("/addProduct")
@@ -42,7 +42,7 @@ public class ProductController {
             productService.addProduct(productDTO, files);
             return Response.success("产品新增成功");
         } else {
-            return Response.error("产品信息不能为空");
+            return Response.error("产品相关信息不能为空");
         }
     }
 
@@ -51,8 +51,8 @@ public class ProductController {
     public String updateProduct(String jsons, List<MultipartFile> files) {
         log.info("开始处理【修改产品】的业务,参数为:{}, {}", jsons, files);
         if (jsons != null) {
-            ProductDTO productDTO = JSONObject.parseObject(jsons, ProductDTO.class);
-            productService.updateProduct(productDTO, files);
+            ProductIncludeFilesDTO productIncludeFilesDTO = JSONObject.parseObject(jsons, ProductIncludeFilesDTO.class);
+            productService.updateProduct(productIncludeFilesDTO, files);
             return Response.success("产品修改成功");
         } else {
             return Response.error("产品信息不能为空");
@@ -64,7 +64,10 @@ public class ProductController {
     public String getProduct(Integer reportId) {
         log.info("开始处理【根据报告id查询产品数据信息】的请求,参数为:{}", reportId);
         if (reportId != null) {
-            ProductStandardVO queryResult = productService.getProduct(reportId);
+            ProductIncludeFilesVO queryResult = productService.getProduct(reportId);
+            if (queryResult == null) {
+                return Response.error("产品已不存在");
+            }
             return Response.success(queryResult);
         } else {
             return Response.error("报告id不能为空");

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

@@ -1,14 +1,14 @@
 package cn.cslg.report.mapper;
 
 import cn.cslg.report.entity.Product;
-import cn.cslg.report.common.model.vo.ProductStandardVO;
+import cn.cslg.report.common.model.vo.ProductIncludeFilesVO;
 import org.springframework.stereotype.Repository;
 
 /**
  * 产品的Mapper层接口
  *
- * @author chenyu
- * @date 2022/12/20
+ * @Author chenyu
+ * @Data 2022/12/20
  */
 @Repository
 public interface ProductMapper {
@@ -21,7 +21,7 @@ public interface ProductMapper {
     int insert(Product product);
 
     /**
-     * 根据报告id修改产品数据
+     * 根据id修改产品数据
      *
      * @param product 产品数据对象
      * @return 返回受影响的行数
@@ -34,7 +34,7 @@ public interface ProductMapper {
      * @param reportId 报告id
      * @return 返回查询到的产品数据对象
      */
-    ProductStandardVO getStandardByReportId(Integer reportId);
+    ProductIncludeFilesVO getStandardByReportId(Integer reportId);
 
     /**
      * 根据报告id删除产品表数据

+ 14 - 12
RMS/src/main/java/cn/cslg/report/service/IProductService.java

@@ -1,36 +1,37 @@
 package cn.cslg.report.service;
 
 import cn.cslg.report.common.model.dto.ProductDTO;
-import cn.cslg.report.common.model.vo.ProductStandardVO;
+import cn.cslg.report.common.model.dto.ProductIncludeFilesDTO;
+import cn.cslg.report.common.model.vo.ProductIncludeFilesVO;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
 /**
- * 产品表的业务层接口
+ * 产品的Service层接口
  *
- * @author chenyu
- * @date 2022/12/20
+ * @Author chenyu
+ * @Data 2022/12/20
  */
 public interface IProductService {
     /**
-     * 新增产品数据的业务层方法
+     * 新增产品的业务层方法
      *
-     * @param productDTO 产品数据对象
-     * @param files      产品图片附件
+     * @param productDTO 产品的前端传输DTO类
+     * @param files      产品附件
      */
     @Transactional(rollbackFor = Exception.class)
     void addProduct(ProductDTO productDTO, List<MultipartFile> files);
 
     /**
-     * 根据报告id修改产品数据的业务层方法
+     * 修改产品的业务层方法
      *
-     * @param productDTO 待修改的产品新数据
-     * @param files      待修改的产品图片附件
+     * @param productIncludeFilesDTO 产品新数据
+     * @param files                  产品的新附件
      */
     @Transactional(rollbackFor = Exception.class)
-    void updateProduct(ProductDTO productDTO, List<MultipartFile> files);
+    void updateProduct(ProductIncludeFilesDTO productIncludeFilesDTO, List<MultipartFile> files);
 
     /**
      * 根据reportId关联查询产品数据(产品表和图片附件文件表数据)
@@ -38,13 +39,14 @@ public interface IProductService {
      * @param reportId 报告id
      * @return 返回查询到的产品数据对象
      */
-    ProductStandardVO getProduct(Integer reportId);
+    ProductIncludeFilesVO getProduct(Integer reportId);
 
     /**
      * 根据报告id删除产品表数据
      *
      * @param reportId 报告id
      */
+    @Transactional(rollbackFor = Exception.class)
     void deleteProduct(Integer reportId);
 
 }

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

@@ -243,8 +243,7 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         //删除所有和报告有关的对比方案
         compareScenariosService.deleteByReportId(id);
         assoTaskPersonelService.deleAssoTaskPersonel(id);
-        //陈宇 ↓
-        //删除和报告有关的产品表数据、删除和产品有关的产品文件关联表数据、删除和产品有关的附件图片文件表数据
+        //陈宇 ↓ 删除和报告有关的产品表数据、删除和产品有关的产品文件关联表数据、删除和产品有关的附件图片文件表数据
         productService.deleteProduct(id);
 
         int dele = reportMapper.dele(id);

+ 39 - 33
RMS/src/main/java/cn/cslg/report/service/impl/ProductServiceImpl.java

@@ -1,19 +1,20 @@
 package cn.cslg.report.service.impl;
 
+import cn.cslg.report.common.model.dto.ProductIncludeFilesDTO;
 import cn.cslg.report.common.model.vo.PersonnelVO;
 import cn.cslg.report.common.model.vo.ReportFileStandardVO;
 import cn.cslg.report.common.utils.CacheUtils;
+import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.report.mapper.ProductMapper;
 import cn.cslg.report.common.model.dto.ProductDTO;
 import cn.cslg.report.entity.Product;
-import cn.cslg.report.common.model.vo.ProductStandardVO;
+import cn.cslg.report.common.model.vo.ProductIncludeFilesVO;
 import cn.cslg.report.service.IProductService;
 import cn.cslg.report.service.business.ReportFileService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -21,66 +22,69 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * 产品表的业务层实现类
+ * 产品的Service层实现类
  *
  * @Author chenyu
- * @Data 2022/12/20 11:28
+ * @Data 2022/12/20
  */
 @Slf4j
 @Service
 @RequiredArgsConstructor
 public class ProductServiceImpl implements IProductService {
-    private final ProductMapper productMapper;  //产品表Mapper接口
-    private final ReportFileService reportFileService;  //报告系统文件表业务层
-    private final AssoProductFileServiceImpl assoProductFileService;  //产品文件关联表业务层
+    private final ProductMapper productMapper;  //产品的Mapper层接口
+    private final ReportFileService reportFileService;  //报告系统文件的Service层实现类
+    private final AssoProductFileServiceImpl assoProductFileService;  //产品文件关联的Service层实现类
     private final CacheUtils cacheUtils;
     private final LoginUtils loginUtils;
 
     /**
-     * 新增产品表数据和产品文件关联表数据和报告系统文件表中产品图片数据的业务层方法
+     * 新增产品的业务层方法
      *
-     * @param productDTO 产品数据对象
-     * @param files      产品图片附件
+     * @param productDTO 产品的前端传输DTO类
+     * @param files      产品附件
      */
     @Override
     public void addProduct(ProductDTO productDTO, List<MultipartFile> files) {
         log.info("开始处理【新增产品】的业务,参数为:{}, {}", productDTO, files);
+        //产品DTO类赋值给产品实体类
         Product product = new Product();
         BeanUtils.copyProperties(productDTO, product);
-        //product.setProductIdentify("产品标识???");  产品标识字段未知逻辑???
+        //获取当前管理员的人员信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        product.setCreatePersonId(personnelVO.getId());  //获取创建人ID
-        product.setCreatePersonName(personnelVO.getName());  //获取创建人姓名
-        //插入产品数据信息入产品表
-        productMapper.insert(product);
+        //获取创建人id和创建人姓名并赋值给实体类
+        product.setCreatePersonId(personnelVO.getId())
+                .setCreatePersonName(personnelVO.getName());
 
-        //上传图片/文件入库,返回图片/文件的ids,将ids插入产品文件关联表中
+        //1.插入产品数据入产品表
+        productMapper.insert(product);
+        //2.插入产品附件数据入报告系统文件表并返回附件的ids
         if (files != null && files.size() != 0) {
-            //将文档上传并返回文件入库的Ids集合
             List<Integer> fileIds = reportFileService.uploadFiles(files);
-            Integer productId = product.getId();
-            assoProductFileService.addAsso(productId, fileIds);
+            //3.插入产品id和附件id入产品文件关联表
+            assoProductFileService.addAsso(product.getId(), fileIds);
         }
         log.info("产品新增完成!");
 
     }
 
     /**
-     * 根据id修改产品表数据和产品文件关联表数据和报告系统文件表中产品图片数据的业务层方法
+     * 修改产品的业务层方法
      *
-     * @param productDTO 待修改的产品新数据
-     * @param files      待修改的产品图片附件
+     * @param productIncludeFilesDTO 产品新数据
+     * @param files                  产品的新附件
      */
     @Override
-    public void updateProduct(ProductDTO productDTO, List<MultipartFile> files) {
-        log.info("开始处理【修改产品】的业务,参数为:{}, {}", productDTO, files);
+    public void updateProduct(ProductIncludeFilesDTO productIncludeFilesDTO, List<MultipartFile> files) {
+        log.info("开始处理【修改产品】的业务,参数为:{}, {}", productIncludeFilesDTO, files);
+        //产品关联附件的前端传输DTO类赋值给产品实体类
         Product product = new Product();
-        BeanUtils.copyProperties(productDTO, product);
-        //1.根据reportId(报告id)修改产品表数据
+        BeanUtils.copyProperties(productIncludeFilesDTO, product);
+
+        //1.根据id修改产品表数据
         productMapper.update(product);
 
-        //2.根据reportId(报告id)关联查询出产品表数据对象
-        ProductStandardVO queryResult = productMapper.getStandardByReportId(product.getReportId());
+        //2.根据reportId(报告id)关联查询出产品关联附件的数据信息
+        ProductIncludeFilesVO queryResult = productMapper.getStandardByReportId(product.getReportId());
 
         //3.取出对象中的附件集合属性,遍历取出原所有附件fileIds
         List<ReportFileStandardVO> oldReportFiles = queryResult.getReportFiles();
@@ -90,7 +94,7 @@ public class ProductServiceImpl implements IProductService {
             oldFileIdList.add(fileId);
         }
         //4.取出对象中的附件集合属性,遍历取出现所有附件fileIds
-        List<ReportFileStandardVO> newReportFiles = productDTO.getReportFiles();
+        List<ReportFileStandardVO> newReportFiles = productIncludeFilesDTO.getReportFiles();
         ArrayList<Integer> newFileIdList = new ArrayList<>();
         for (ReportFileStandardVO reportFile : newReportFiles) {
             Integer fileId = reportFile.getId();
@@ -105,10 +109,11 @@ public class ProductServiceImpl implements IProductService {
             assoProductFileService.deleteAssoByFileIds(oldFileIdList);  //删除产品文件关联表中被删除附件的数据
         }
 
-        //7.插入新的附件入文件表中,返回文件id
+        //7.插入新的附件入报告系统文件表中,返回文件id
         List<Integer> fileIds = reportFileService.uploadFiles(files);
-        Integer productId = product.getId();
+
         //8.插入新的文件id入产品文件关联表中
+        Integer productId = product.getId();
         assoProductFileService.addAsso(productId, fileIds);
 
         log.info("产品修改完成");
@@ -122,8 +127,9 @@ public class ProductServiceImpl implements IProductService {
      * @return 返回查询到的产品数据对象
      */
     @Override
-    public ProductStandardVO getProduct(Integer reportId) {
+    public ProductIncludeFilesVO getProduct(Integer reportId) {
         log.info("开始处理【查询产品】的业务,参数为:{}", reportId);
+        ProductIncludeFilesVO queryResult = productMapper.getStandardByReportId(reportId);
         return productMapper.getStandardByReportId(reportId);
 
     }
@@ -140,7 +146,7 @@ public class ProductServiceImpl implements IProductService {
         productMapper.deleteByReportId(reportId);
 
         //2.删除产品文件关联表数据:根据报告id关联查询产品数据,取出产品id,根据产品id删除产品与文件关联表数据
-        ProductStandardVO queryResult = this.getProduct(reportId);
+        ProductIncludeFilesVO queryResult = this.getProduct(reportId);
         Integer productId = queryResult.getId();
         assoProductFileService.deleteAssoByProductId(productId);
 

+ 4 - 4
RMS/src/main/resources/mapper/ProductMapper.xml

@@ -15,7 +15,7 @@
                 #{createPersonId})
     </insert>
 
-    <!--修改产品数据-->
+    <!--根据id修改产品数据-->
     <!--int update(Product product);-->
     <update id="update">
         update PRODUCT
@@ -58,7 +58,7 @@
     </update>
 
     <!--根据reportId关联查询产品数据-->
-    <!--ProductStandardVO getStandardByReportId(Integer reportId);-->
+    <!--ProductIncludeFilesVO getStandardByReportId(Integer reportId);-->
     <select id="getStandardByReportId" resultMap="getStandardByReportIdResultMap">
         select p.ID,
                p.product_name,
@@ -86,11 +86,11 @@
         from PRODUCT p
                  left join ASSO_PRODUCT_FILE apf on p.ID = apf.PRODUCT_ID
                  left join REPORT_FILE rf on apf.FILE_ID = rf.ID
-        where p.REPORT_ID = #{report_Id}
+        where p.REPORT_ID = #{reportId}
         order by rf_ID
     </select>
 
-    <resultMap id="getStandardByReportIdResultMap" type="cn.cslg.report.common.model.vo.ProductStandardVO">
+    <resultMap id="getStandardByReportIdResultMap" type="cn.cslg.report.common.model.vo.ProductIncludeFilesVO">
         <id column="id" property="id"/>
         <result column="PRODUCT_NAME" property="productName"/>
         <result column="PRODUCT_IDENTIFY" property="productIdentify"/>

BIN
RMS/target/classes/cn/cslg/report/controller/ProductController.class


BIN
RMS/target/classes/cn/cslg/report/service/impl/ProductServiceImpl.class


+ 1 - 1
RMS/target/classes/mapper/ProductMapper.xml

@@ -86,7 +86,7 @@
         from PRODUCT p
                  left join ASSO_PRODUCT_FILE apf on p.ID = apf.PRODUCT_ID
                  left join REPORT_FILE rf on apf.FILE_ID = rf.ID
-        where p.REPORT_ID = #{report_Id}
+        where p.REPORT_ID = #{reportId}
         order by rf_ID
     </select>