Browse Source

12.21 陈宇

chendayu 2 years ago
parent
commit
d380113cba
48 changed files with 11283 additions and 534 deletions
  1. 433 410
      .idea/dataSources/9303303b-ed0d-4f1f-bade-c895d02ef213.xml
  2. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/14fed836f00f4725a1aaf61f7494c7a6.png
  3. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/244ca18d2d2f447381ed3a8235f57a84.jpg
  4. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/7738d41e149e4addab9a88b2bd6051a8.png
  5. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/7e9c8204c71f4862b0f49b6713271856.jpg
  6. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/AssoProductFileMapper.class
  7. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/AssoProductFileServiceImpl.class
  8. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/IAssoProductFileService.class
  9. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/IProductService.class
  10. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/Product.class
  11. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductController.class
  12. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductDTO.class
  13. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductServiceImpl.class
  14. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ReportService.class
  15. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/b55744b79ef14779b32b4ba7fd6ea0f7.png
  16. BIN
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/bb7df77ef6d64e8e84e539d24adc25e1.png
  17. 10504 0
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/shelved.patch
  18. 79 0
      .idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18__Default_Changelist_.xml
  19. 5 0
      RMS/RMS.iml
  20. 27 4
      RMS/src/main/java/cn/cslg/report/common/model/dto/ProductDTO.java
  21. 15 1
      RMS/src/main/java/cn/cslg/report/controller/ProductController.java
  22. 2 2
      RMS/src/main/java/cn/cslg/report/entity/Product.java
  23. 8 6
      RMS/src/main/java/cn/cslg/report/mapper/AssoProductFileMapper.java
  24. 9 1
      RMS/src/main/java/cn/cslg/report/service/IAssoProductFileService.java
  25. 6 3
      RMS/src/main/java/cn/cslg/report/service/IProductService.java
  26. 13 12
      RMS/src/main/java/cn/cslg/report/service/business/ReportService.java
  27. 12 0
      RMS/src/main/java/cn/cslg/report/service/impl/AssoProductFileServiceImpl.java
  28. 66 11
      RMS/src/main/java/cn/cslg/report/service/impl/ProductServiceImpl.java
  29. 12 7
      RMS/src/main/resources/mapper/AssoProductFileMapper.xml
  30. 40 35
      RMS/src/main/resources/mapper/ProductMapper.xml
  31. BIN
      RMS/target/classes/cn/cslg/report/common/model/dto/ProductDTO.class
  32. BIN
      RMS/target/classes/cn/cslg/report/controller/ProductController.class
  33. BIN
      RMS/target/classes/cn/cslg/report/entity/Product.class
  34. BIN
      RMS/target/classes/cn/cslg/report/mapper/AssoProductFileMapper.class
  35. BIN
      RMS/target/classes/cn/cslg/report/service/IAssoProductFileService.class
  36. BIN
      RMS/target/classes/cn/cslg/report/service/IProductService.class
  37. BIN
      RMS/target/classes/cn/cslg/report/service/business/ReportService.class
  38. BIN
      RMS/target/classes/cn/cslg/report/service/impl/AssoProductFileServiceImpl.class
  39. BIN
      RMS/target/classes/cn/cslg/report/service/impl/ProductServiceImpl.class
  40. 12 7
      RMS/target/classes/mapper/AssoProductFileMapper.xml
  41. 40 35
      RMS/target/classes/mapper/ProductMapper.xml
  42. BIN
      RMS/target/file/20221221/14fed836f00f4725a1aaf61f7494c7a6.png
  43. BIN
      RMS/target/file/20221221/244ca18d2d2f447381ed3a8235f57a84.jpg
  44. BIN
      RMS/target/file/20221221/74f2fd6f1d3a44288357cdab3d18f2d0.png
  45. BIN
      RMS/target/file/20221221/7738d41e149e4addab9a88b2bd6051a8.png
  46. BIN
      RMS/target/file/20221221/7e9c8204c71f4862b0f49b6713271856.jpg
  47. BIN
      RMS/target/file/20221221/b55744b79ef14779b32b4ba7fd6ea0f7.png
  48. BIN
      RMS/target/file/20221221/bb7df77ef6d64e8e84e539d24adc25e1.png

File diff suppressed because it is too large
+ 433 - 410
.idea/dataSources/9303303b-ed0d-4f1f-bade-c895d02ef213.xml


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/14fed836f00f4725a1aaf61f7494c7a6.png


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/244ca18d2d2f447381ed3a8235f57a84.jpg


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/7738d41e149e4addab9a88b2bd6051a8.png


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/7e9c8204c71f4862b0f49b6713271856.jpg


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/AssoProductFileMapper.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/AssoProductFileServiceImpl.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/IAssoProductFileService.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/IProductService.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/Product.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductController.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductDTO.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductServiceImpl.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ReportService.class


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/b55744b79ef14779b32b4ba7fd6ea0f7.png


BIN
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/bb7df77ef6d64e8e84e539d24adc25e1.png


File diff suppressed because it is too large
+ 10504 - 0
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/shelved.patch


+ 79 - 0
.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18__Default_Changelist_.xml

@@ -0,0 +1,79 @@
+<changelist name="Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]" date="1671614308671" recycled="true" deleted="true">
+  <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/shelved.patch" />
+  <option name="DESCRIPTION" value="Uncommitted changes before Update at 2022/12/21 17:18 [Default Changelist]" />
+  <binary>
+    <option name="BEFORE_PATH" />
+    <option name="AFTER_PATH" value="RMS/target/file/20221221/7e9c8204c71f4862b0f49b6713271856.jpg" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/7e9c8204c71f4862b0f49b6713271856.jpg" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" />
+    <option name="AFTER_PATH" value="RMS/target/file/20221221/b55744b79ef14779b32b4ba7fd6ea0f7.png" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/b55744b79ef14779b32b4ba7fd6ea0f7.png" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" />
+    <option name="AFTER_PATH" value="RMS/target/file/20221221/14fed836f00f4725a1aaf61f7494c7a6.png" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/14fed836f00f4725a1aaf61f7494c7a6.png" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/service/IProductService.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/service/IProductService.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/IProductService.class" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/service/IAssoProductFileService.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/service/IAssoProductFileService.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/IAssoProductFileService.class" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" />
+    <option name="AFTER_PATH" value="RMS/target/file/20221221/244ca18d2d2f447381ed3a8235f57a84.jpg" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/244ca18d2d2f447381ed3a8235f57a84.jpg" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/controller/ProductController.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/controller/ProductController.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductController.class" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/mapper/AssoProductFileMapper.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/mapper/AssoProductFileMapper.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/AssoProductFileMapper.class" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/service/impl/AssoProductFileServiceImpl.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/service/impl/AssoProductFileServiceImpl.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/AssoProductFileServiceImpl.class" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" />
+    <option name="AFTER_PATH" value="RMS/target/file/20221221/7738d41e149e4addab9a88b2bd6051a8.png" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/7738d41e149e4addab9a88b2bd6051a8.png" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/common/model/dto/ProductDTO.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/common/model/dto/ProductDTO.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductDTO.class" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/service/business/ReportService.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/service/business/ReportService.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ReportService.class" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/service/impl/ProductServiceImpl.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/service/impl/ProductServiceImpl.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/ProductServiceImpl.class" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" />
+    <option name="AFTER_PATH" value="RMS/target/file/20221221/bb7df77ef6d64e8e84e539d24adc25e1.png" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/bb7df77ef6d64e8e84e539d24adc25e1.png" />
+  </binary>
+  <binary>
+    <option name="BEFORE_PATH" value="RMS/target/classes/cn/cslg/report/entity/Product.class" />
+    <option name="AFTER_PATH" value="RMS/target/classes/cn/cslg/report/entity/Product.class" />
+    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_12_21_17_18_[Default_Changelist]/Product.class" />
+  </binary>
+</changelist>

+ 5 - 0
RMS/RMS.iml

@@ -4,6 +4,10 @@
     <facet type="web" name="Web">
       <configuration>
         <webroots />
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src/main/java" />
+          <root url="file://$MODULE_DIR$/src/main/resources" />
+        </sourceRoots>
       </configuration>
     </facet>
     <facet type="Spring" name="Spring">
@@ -16,6 +20,7 @@
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/${project.build.directory}/classes" />
       <excludeFolder url="file://$MODULE_DIR$/${project.build.directory}/test-classes" />
       <excludeFolder url="file://$MODULE_DIR$/target" />

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

@@ -1,24 +1,35 @@
 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.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
 
 /**
- * 产品的前端传输DTO类
+ * 产品的前端传输类DTO
+ *
  * @Author chenyu
- * @Data 2022/12/20 11:21
+ * @Data 2022/12/20 10:16
  */
 @Accessors(chain = true)
 @Data
 public class ProductDTO implements Serializable {
     /**
+     * ID
+     */
+    private Integer id;
+    /**
      * 产品名称
      */
     private String productName;
     /**
+     * 产品标识
+     */
+    private String productIdentify;
+    /**
      * 产品说明
      */
     private String productDescription;
@@ -37,7 +48,7 @@ public class ProductDTO implements Serializable {
     /**
      * 检索截止日期
      */
-    private LocalDateTime deadLine;
+    private Date deadLine;
     /**
      * 关注企业/发明人/技术方向
      */
@@ -46,5 +57,17 @@ public class ProductDTO implements Serializable {
      * 报告ID
      */
     private Integer reportId;
+    /**
+     * 创建人姓名
+     */
+    private String createPersonName;
+    /**
+     * 创建人ID
+     */
+    private Integer createPersonId;
+    /**
+     * 附件
+     */
+    private List<ReportFileStandardVO> reportFiles;
 
 }

+ 15 - 1
RMS/src/main/java/cn/cslg/report/controller/ProductController.java

@@ -4,6 +4,7 @@ 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.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;
@@ -30,7 +31,7 @@ import java.util.List;
 @RequestMapping(Constants.REPORT_API + "/product")
 @RequiredArgsConstructor
 public class ProductController {
-    private ProductServiceImpl productService;
+    private final IProductService productService;
 
     @Operation(summary = "新增产品")
     @PostMapping("/addProduct")
@@ -45,6 +46,19 @@ public class ProductController {
         }
     }
 
+    @Operation(summary = "修改产品")
+    @PostMapping("/updateProduct")
+    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);
+            return Response.success("产品修改成功");
+        } else {
+            return Response.error("产品信息不能为空");
+        }
+    }
+
     @Operation(summary = "根据报告id查询产品数据信息")
     @GetMapping("/getProduct")
     public String getProduct(Integer reportId) {

+ 2 - 2
RMS/src/main/java/cn/cslg/report/entity/Product.java

@@ -4,7 +4,7 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * 产品表的实体类
@@ -46,7 +46,7 @@ public class Product implements Serializable {
     /**
      * 检索截止日期
      */
-    private LocalDateTime deadLine;
+    private Date deadLine;
     /**
      * 关注企业/发明人/技术方向
      */

+ 8 - 6
RMS/src/main/java/cn/cslg/report/mapper/AssoProductFileMapper.java

@@ -11,17 +11,19 @@ import java.util.List;
 @Repository
 public interface AssoProductFileMapper {
     /**
-     * 插入产品文件关联数据
-     * @param assoProductFile 产品文件关联数据对象
+     * 批量插入文件关联数据
+     *
+     * @param assoProductFiles 产品文件关联数据对象集合
      * @return 返回受影响的行数
      */
-    int insert(AssoProductFile assoProductFile);
+    int insertBatch(List<AssoProductFile> assoProductFiles);
 
     /**
-     * 批量插入文件关联数据
-     * @param assoProductFiles 产品文件关联数据对象集合
+     * 根据fileId(文件id)删除文件关联数据
+     *
+     * @param fileIds 文件id集合
      * @return 返回受影响的行数
      */
-    int insertBatch(List<AssoProductFile> assoProductFiles);
+    int deleteByFileId(List<Integer> fileIds);
 
 }

+ 9 - 1
RMS/src/main/java/cn/cslg/report/service/IAssoProductFileService.java

@@ -8,9 +8,17 @@ import java.util.List;
 public interface IAssoProductFileService {
     /**
      * 插入产品与文件关联表数据 对应实体AssoReportFile 0代表上传文件为附件
+     *
      * @param productId 产品id
-     * @param fileIds 文件ids
+     * @param fileIds   文件ids
      */
     void addAsso(Integer productId, List<Integer> fileIds);
 
+    /**
+     * 根据文件id删除产品与文件关联数据
+     *
+     * @param fileIds 文件id集合
+     */
+    void deleteAsso(List<Integer> fileIds);
+
 }

+ 6 - 3
RMS/src/main/java/cn/cslg/report/service/IProductService.java

@@ -12,17 +12,20 @@ import java.util.List;
  */
 public interface IProductService {
     /**
-     * 新增产品的业务层方法
+     * 新增产品数据的业务层方法
      * @param productDTO 产品数据对象
+     * @param files 产品图片附件
      */
     @Transactional(rollbackFor = Exception.class)
     void addProduct(ProductDTO productDTO, List<MultipartFile> files);
 
     /**
-     * 根据id修改产品的业务层方法
+     * 根据id修改产品数据的业务层方法
      * @param productDTO 待修改的产品新数据
+     * @param files 待修改的产品图片附件
      */
-    void updateProduct(ProductDTO productDTO);
+    @Transactional(rollbackFor = Exception.class)
+    void updateProduct(ProductDTO productDTO, List<MultipartFile> files);
 
     /**
      * 根据报告id查询产品数据的业务层方法

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

@@ -76,6 +76,7 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
             report.setClientName(clientName);
             report.setDepartmentName(map.get("departName").toString());
             report.setPersonName(map.get("personName").toString());
+
             PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
             report.setCreatePersonId(personnelVO.getId());
             report.setCreatePersonName(personnelVO.getName());
@@ -87,7 +88,7 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
                 assoReportFileService.addAsso(report.getId(), fileIds);
 
             }
-             //如果报告生成成功,给报告添加默认自定义字段
+            //如果报告生成成功,给报告添加默认自定义字段
             if (addFlag) {
                 reportFieldService.addDefaultField(report.getId(), report.getType());
                 return report.getId();
@@ -111,19 +112,19 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     //查询报告
     public String queryReport(ReportVO reportVO) throws IOException {
         LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper<>();
-        if (reportVO.getName() != null&&reportVO.getName()!="") {
+        if (reportVO.getName() != null && reportVO.getName() != "") {
             queryWrapper.like(Report::getName, reportVO.getName());
         }
         if (reportVO.getReportId() != null) {
             queryWrapper.eq(Report::getId, reportVO.getReportId());
         }
-        if(reportVO.getSignPatentNo()!=null&&reportVO.getSignPatentNo()!=""){
-            queryWrapper.like(Report::getSignPatentNo,reportVO.getSignPatentNo());
+        if (reportVO.getSignPatentNo() != null && reportVO.getSignPatentNo() != "") {
+            queryWrapper.like(Report::getSignPatentNo, reportVO.getSignPatentNo());
         }
-        queryWrapper.and(QueryWrapper-> {
-            QueryWrapper.eq(Report::getCreatePersonId,  loginUtils.getId())
-                    .or().eq(Report::getPersonId,loginUtils.getId());
-     });
+        queryWrapper.and(QueryWrapper -> {
+            QueryWrapper.eq(Report::getCreatePersonId, loginUtils.getId())
+                    .or().eq(Report::getPersonId, loginUtils.getId());
+        });
 
         queryWrapper.orderByDesc(Report::getId);
         //分页
@@ -140,10 +141,10 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     }
 
     /**
-     * @function 查询报告
      * @param reports
      * @return
      * @throws IOException
+     * @function 查询报告
      */
     public List<Report> reportData(List<Report> reports) throws IOException {
         List<Integer> reportIds = reports.stream().map(Report::getId).collect(Collectors.toList());
@@ -183,10 +184,10 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     }
 
     /**
-     * @function 修改报告
      * @param id(报告id)
      * @return
      * @throws IOException
+     * @function 修改报告
      */
     @Transactional(rollbackFor = Exception.class)
     public Boolean updateReport(Report report, List<MultipartFile> files) throws IOException {
@@ -221,10 +222,10 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     }
 
     /**
-     * @function 删除报告
      * @param id(报告id)
      * @return
      * @throws IOException
+     * @function 删除报告
      */
     @Transactional(rollbackFor = Exception.class)
     public String reportDele(int id) throws IOException {
@@ -245,10 +246,10 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     }
 
     /**
-     * @function 查询报告
      * @param id(报告id)
      * @return
      * @throws IOException
+     * @function 查询报告
      */
 
     public String getName(int id) throws IOException {

+ 12 - 0
RMS/src/main/java/cn/cslg/report/service/impl/AssoProductFileServiceImpl.java

@@ -39,4 +39,16 @@ public class AssoProductFileServiceImpl implements IAssoProductFileService {
         }
         assoProductFileMapper.insertBatch(list);
     }
+
+    /**
+     * 根据文件id删除产品与文件关联数据
+     *
+     * @param fileIds 文件id集合
+     */
+    @Override
+    public void deleteAsso(List<Integer> fileIds) {
+        assoProductFileMapper.deleteByFileId(fileIds);
+    }
+
+
 }

+ 66 - 11
RMS/src/main/java/cn/cslg/report/service/impl/ProductServiceImpl.java

@@ -1,5 +1,9 @@
 package cn.cslg.report.service.impl;
 
+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.SecurityUtils.LoginUtils;
 import cn.cslg.report.mapper.ProductMapper;
 import cn.cslg.report.common.model.dto.ProductDTO;
 import cn.cslg.report.entity.Product;
@@ -13,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -25,13 +30,17 @@ import java.util.List;
 @Service
 @RequiredArgsConstructor
 public class ProductServiceImpl implements IProductService {
-    private ProductMapper productMapper;
-    private ReportFileService reportFileService;
-    private AssoProductFileServiceImpl assoProductFileService;
+    private final ProductMapper productMapper;
+    private final ReportFileService reportFileService;
+    private final AssoProductFileServiceImpl assoProductFileService;
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
 
     /**
-     * 新增产品的业务层方法
-     * @param productDTO 前端新增产品数据对象
+     * 新增产品数据的业务层方法
+     *
+     * @param productDTO 产品数据对象
+     * @param files      产品图片附件
      */
     @Override
     public void addProduct(ProductDTO productDTO, List<MultipartFile> files) {
@@ -39,37 +48,83 @@ public class ProductServiceImpl implements IProductService {
         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);
 
         //上传图片/文件入库,返回图片/文件的ids,将ids插入产品文件关联表中
         if (files != null && files.size() != 0) {
             //将文档上传并返回文件入库的Ids集合
             List<Integer> fileIds = reportFileService.uploadFiles(files);
-            assoProductFileService.addAsso(product.getId(), fileIds);
+            Integer productId = product.getId();
+            assoProductFileService.addAsso(productId, fileIds);
         }
-        log.info("新增产品成功");
+        log.info("产品新增完成!");
 
     }
 
     /**
-     * 根据id修改产品的业务层方法
+     * 根据id修改产品数据的业务层方法
+     *
      * @param productDTO 待修改的产品新数据
+     * @param files      待修改的产品图片附件
      */
     @Override
-    public void updateProduct(ProductDTO productDTO) {
-        log.info("开始处理【修改产品】的业务,参数为:{}", productDTO);
+    public void updateProduct(ProductDTO productDTO, List<MultipartFile> files) {
+        log.info("开始处理【修改产品】的业务,参数为:{}, {}", productDTO, files);
+        Product product = new Product();
+        BeanUtils.copyProperties(productDTO, product);
+        //1.修改产品表数据
+        productMapper.update(product);
+
+        //2.删除文件表中原来的图片文件,根据reportId(报告id)关联查询取出产品表数据对象
+        ProductStandardVO queryResult = productMapper.getStandardByReportId(product.getReportId());
+
+        //3.取出对象中的附件集合属性,遍历取出原所有附件fileIds
+        List<ReportFileStandardVO> oldReportFiles = queryResult.getReportFiles();
+        ArrayList<Integer> oldFileIdList = new ArrayList<>();
+        for (ReportFileStandardVO reportFile : oldReportFiles) {
+            Integer fileId = reportFile.getId();
+            oldFileIdList.add(fileId);
+        }
+        //4.取出对象中的附件集合属性,遍历取出现所有附件fileIds
+        List<ReportFileStandardVO> newReportFiles = productDTO.getReportFiles();
+        ArrayList<Integer> newFileIdList = new ArrayList<>();
+        for (ReportFileStandardVO reportFile : newReportFiles) {
+            Integer fileId = reportFile.getId();
+            newFileIdList.add(fileId);
+        }
+        //5.去重保留被删除的附件fileId
+        oldFileIdList.removeAll(newFileIdList);
+
+        //6.若去重后的原fileId集合仍有长度(即表示被删除了部分原附件),则删除文件表和产品文件关联表中被删除的附件的数据
+        if (oldFileIdList.size() != 0) {
+            reportFileService.deleteFiles(oldFileIdList);  //删除文件表中被删除附件的数据
+            assoProductFileService.deleteAsso(oldFileIdList);  //删除产品文件关联表中被删除附件的数据
+        }
 
+        //7.插入新的附件入文件表中,返回文件id
+        List<Integer> fileIds = reportFileService.uploadFiles(files);
+        Integer productId = product.getId();
+        //8.插入新的文件id入产品文件关联表中
+        assoProductFileService.addAsso(productId, fileIds);
+
+        log.info("产品修改完成!");
 
     }
 
     /**
      * 根据报告id查询产品数据的业务层方法
+     *
      * @param reportId 报告id
      * @return 返回查询到的产品数据对象
      */
     @Override
     public ProductStandardVO getProduct(Integer reportId) {
-        log.info("开始处理【根据报告id查询产品数据信息】的业务,参数为:{}", reportId);
+        log.info("开始处理【查询产品】的业务,参数为:{}", reportId);
         return productMapper.getStandardByReportId(reportId);
+
     }
 }

+ 12 - 7
RMS/src/main/resources/mapper/AssoProductFileMapper.xml

@@ -4,13 +4,6 @@
 
 <mapper namespace="cn.cslg.report.mapper.AssoProductFileMapper">
 
-    <!--插入产品文件关联数据-->
-    <!--int insert(AssoProductFile assoProductFile);-->
-    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
-        insert into ASSO_PRODUCT_FILE (PRODUCT_ID, FILE_ID, FILE_USE_TYPE)
-        values (#{productId}, #{fileId}, #{fileUseType})
-    </insert>
-
     <!--批量插入文件关联数据-->
     <!--int insertBatch(List<AssoProductFile> assoProductFiles);-->
     <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
@@ -21,4 +14,16 @@
         </foreach>
     </insert>
 
+    <!--根据fileId(文件id)删除文件关联数据-->
+    <!--int deleteByFileId(List<Integer> fileIds);-->
+    <delete id="deleteByFileId">
+        delete
+        from ASSO_PRODUCT_FILE
+        where FILE_ID in (
+        <foreach collection="list" item="n" separator=",">
+            #{n}
+        </foreach>
+        )
+    </delete>
+
 </mapper>

+ 40 - 35
RMS/src/main/resources/mapper/ProductMapper.xml

@@ -21,37 +21,37 @@
         update PRODUCT
         <set>
             <if test="productName != null">
-                PRODUCT_NAME = productName,
+                PRODUCT_NAME = #{productName},
             </if>
             <if test="productIdentify != null">
-                PRODUCT_IDENTIFY = productIdentify,
+                PRODUCT_IDENTIFY = #{productIdentify},
             </if>
             <if test="productDescription != null">
-                PRODUCT_DESCRIPTION = productDescription,
+                PRODUCT_DESCRIPTION = #{productDescription},
             </if>
             <if test="surveyArea != null">
-                SURVEY_AREA = surveyArea,
+                SURVEY_AREA = #{surveyArea},
             </if>
             <if test="productImage != null">
-                PRODUCT_IMAGE = productImage,
+                PRODUCT_IMAGE = #{productImage},
             </if>
             <if test="searchPolicy != null">
-                SEARCH_POLICY = searchPolicy,
+                SEARCH_POLICY = #{searchPolicy},
             </if>
             <if test="deadLine != null">
-                DEADLINE = deadLine,
+                DEADLINE = #{deadLine},
             </if>
             <if test="focusInformation != null">
-                FOCUS_INFORMATION = focusInformation,
+                FOCUS_INFORMATION = #{focusInformation},
             </if>
             <if test="reportId != null">
-                REPORT_ID = reportId,
+                REPORT_ID = #{reportId},
             </if>
             <if test="createPersonName != null">
-                CREATE_PERSON_NAME = createPersonName,
+                CREATE_PERSON_NAME = #{createPersonName},
             </if>
             <if test="createPersonId != null">
-                CREATE_PERSON_ID = createPersonId,
+                CREATE_PERSON_ID = #{createPersonId},
             </if>
         </set>
         where ID = #{id}
@@ -60,34 +60,38 @@
     <!--根据reportId关联查询产品数据-->
     <!--ProductStandardVO getStandardByReportId(Integer reportId);-->
     <select id="getStandardByReportId" resultMap="getStandardByReportIdResultMap">
-        select product_name,
-               product_identify,
-               product_description,
-               survey_area,
-               product_image,
-               search_policy,
-               deadline,
-               focus_information,
-               report_id,
-               create_person_name,
-               create_person_id,
-               name,
-               address,
-               zid,
-               remark,
-               update_time,
-               uid,
-               type,
-               size,
-               suffix,
-               file_name
+        select p.ID,
+               p.product_name,
+               p.product_identify,
+               p.product_description,
+               p.survey_area,
+               p.product_image,
+               p.search_policy,
+               p.deadline,
+               p.focus_information,
+               p.report_id,
+               p.create_person_name,
+               p.create_person_id,
+               rf.ID rf_ID,
+               rf.name,
+               rf.address,
+               rf.zid,
+               rf.remark,
+               rf.update_time,
+               rf.uid,
+               rf.type,
+               rf.size,
+               rf.suffix,
+               rf.file_name
         from PRODUCT p
                  left join ASSO_PRODUCT_FILE apf on p.ID = apf.PRODUCT_ID
-                 left join REPORT_FILE rf on rf.ID = apf.FILE_ID
-        where REPORT_ID = #{report_Id}
+                 left join REPORT_FILE rf on apf.FILE_ID = rf.ID
+        where p.REPORT_ID = #{report_Id}
+        order by rf_ID
     </select>
 
     <resultMap id="getStandardByReportIdResultMap" type="cn.cslg.report.common.model.vo.ProductStandardVO">
+        <id column="id" property="id"/>
         <result column="PRODUCT_NAME" property="productName"/>
         <result column="PRODUCT_IDENTIFY" property="productIdentify"/>
         <result column="PRODUCT_DESCRIPTION" property="productDescription"/>
@@ -98,8 +102,9 @@
         <result column="FOCUS_INFORMATION" property="focusInformation"/>
         <result column="REPORT_ID" property="reportId"/>
         <result column="CREATE_PERSON_NAME" property="createPersonName"/>
-        <result column="CREATE_PERSON_ID" property="create_person_id"/>
+        <result column="CREATE_PERSON_ID" property="createPersonId"/>
         <collection property="reportFiles" ofType="cn.cslg.report.common.model.vo.ReportFileStandardVO">
+            <id column="rf_ID" property="id"/>
             <result column="NAME" property="name"/>
             <result column="ADDRESS" property="address"/>
             <result column="ZID" property="zid"/>

BIN
RMS/target/classes/cn/cslg/report/common/model/dto/ProductDTO.class


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


BIN
RMS/target/classes/cn/cslg/report/entity/Product.class


BIN
RMS/target/classes/cn/cslg/report/mapper/AssoProductFileMapper.class


BIN
RMS/target/classes/cn/cslg/report/service/IAssoProductFileService.class


BIN
RMS/target/classes/cn/cslg/report/service/IProductService.class


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


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


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


+ 12 - 7
RMS/target/classes/mapper/AssoProductFileMapper.xml

@@ -4,13 +4,6 @@
 
 <mapper namespace="cn.cslg.report.mapper.AssoProductFileMapper">
 
-    <!--插入产品文件关联数据-->
-    <!--int insert(AssoProductFile assoProductFile);-->
-    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
-        insert into ASSO_PRODUCT_FILE (PRODUCT_ID, FILE_ID, FILE_USE_TYPE)
-        values (#{productId}, #{fileId}, #{fileUseType})
-    </insert>
-
     <!--批量插入文件关联数据-->
     <!--int insertBatch(List<AssoProductFile> assoProductFiles);-->
     <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
@@ -21,4 +14,16 @@
         </foreach>
     </insert>
 
+    <!--根据fileId(文件id)删除文件关联数据-->
+    <!--int deleteByFileId(List<Integer> fileIds);-->
+    <delete id="deleteByFileId">
+        delete
+        from ASSO_PRODUCT_FILE
+        where FILE_ID in (
+        <foreach collection="list" item="n" separator=",">
+            #{n}
+        </foreach>
+        )
+    </delete>
+
 </mapper>

+ 40 - 35
RMS/target/classes/mapper/ProductMapper.xml

@@ -21,37 +21,37 @@
         update PRODUCT
         <set>
             <if test="productName != null">
-                PRODUCT_NAME = productName,
+                PRODUCT_NAME = #{productName},
             </if>
             <if test="productIdentify != null">
-                PRODUCT_IDENTIFY = productIdentify,
+                PRODUCT_IDENTIFY = #{productIdentify},
             </if>
             <if test="productDescription != null">
-                PRODUCT_DESCRIPTION = productDescription,
+                PRODUCT_DESCRIPTION = #{productDescription},
             </if>
             <if test="surveyArea != null">
-                SURVEY_AREA = surveyArea,
+                SURVEY_AREA = #{surveyArea},
             </if>
             <if test="productImage != null">
-                PRODUCT_IMAGE = productImage,
+                PRODUCT_IMAGE = #{productImage},
             </if>
             <if test="searchPolicy != null">
-                SEARCH_POLICY = searchPolicy,
+                SEARCH_POLICY = #{searchPolicy},
             </if>
             <if test="deadLine != null">
-                DEADLINE = deadLine,
+                DEADLINE = #{deadLine},
             </if>
             <if test="focusInformation != null">
-                FOCUS_INFORMATION = focusInformation,
+                FOCUS_INFORMATION = #{focusInformation},
             </if>
             <if test="reportId != null">
-                REPORT_ID = reportId,
+                REPORT_ID = #{reportId},
             </if>
             <if test="createPersonName != null">
-                CREATE_PERSON_NAME = createPersonName,
+                CREATE_PERSON_NAME = #{createPersonName},
             </if>
             <if test="createPersonId != null">
-                CREATE_PERSON_ID = createPersonId,
+                CREATE_PERSON_ID = #{createPersonId},
             </if>
         </set>
         where ID = #{id}
@@ -60,34 +60,38 @@
     <!--根据reportId关联查询产品数据-->
     <!--ProductStandardVO getStandardByReportId(Integer reportId);-->
     <select id="getStandardByReportId" resultMap="getStandardByReportIdResultMap">
-        select product_name,
-               product_identify,
-               product_description,
-               survey_area,
-               product_image,
-               search_policy,
-               deadline,
-               focus_information,
-               report_id,
-               create_person_name,
-               create_person_id,
-               name,
-               address,
-               zid,
-               remark,
-               update_time,
-               uid,
-               type,
-               size,
-               suffix,
-               file_name
+        select p.ID,
+               p.product_name,
+               p.product_identify,
+               p.product_description,
+               p.survey_area,
+               p.product_image,
+               p.search_policy,
+               p.deadline,
+               p.focus_information,
+               p.report_id,
+               p.create_person_name,
+               p.create_person_id,
+               rf.ID rf_ID,
+               rf.name,
+               rf.address,
+               rf.zid,
+               rf.remark,
+               rf.update_time,
+               rf.uid,
+               rf.type,
+               rf.size,
+               rf.suffix,
+               rf.file_name
         from PRODUCT p
                  left join ASSO_PRODUCT_FILE apf on p.ID = apf.PRODUCT_ID
-                 left join REPORT_FILE rf on rf.ID = apf.FILE_ID
-        where REPORT_ID = #{report_Id}
+                 left join REPORT_FILE rf on apf.FILE_ID = rf.ID
+        where p.REPORT_ID = #{report_Id}
+        order by rf_ID
     </select>
 
     <resultMap id="getStandardByReportIdResultMap" type="cn.cslg.report.common.model.vo.ProductStandardVO">
+        <id column="id" property="id"/>
         <result column="PRODUCT_NAME" property="productName"/>
         <result column="PRODUCT_IDENTIFY" property="productIdentify"/>
         <result column="PRODUCT_DESCRIPTION" property="productDescription"/>
@@ -98,8 +102,9 @@
         <result column="FOCUS_INFORMATION" property="focusInformation"/>
         <result column="REPORT_ID" property="reportId"/>
         <result column="CREATE_PERSON_NAME" property="createPersonName"/>
-        <result column="CREATE_PERSON_ID" property="create_person_id"/>
+        <result column="CREATE_PERSON_ID" property="createPersonId"/>
         <collection property="reportFiles" ofType="cn.cslg.report.common.model.vo.ReportFileStandardVO">
+            <id column="rf_ID" property="id"/>
             <result column="NAME" property="name"/>
             <result column="ADDRESS" property="address"/>
             <result column="ZID" property="zid"/>

BIN
RMS/target/file/20221221/14fed836f00f4725a1aaf61f7494c7a6.png


BIN
RMS/target/file/20221221/244ca18d2d2f447381ed3a8235f57a84.jpg


BIN
RMS/target/file/20221221/74f2fd6f1d3a44288357cdab3d18f2d0.png


BIN
RMS/target/file/20221221/7738d41e149e4addab9a88b2bd6051a8.png


BIN
RMS/target/file/20221221/7e9c8204c71f4862b0f49b6713271856.jpg


BIN
RMS/target/file/20221221/b55744b79ef14779b32b4ba7fd6ea0f7.png


BIN
RMS/target/file/20221221/bb7df77ef6d64e8e84e539d24adc25e1.png