xiexiang 1 سال پیش
والد
کامیت
28d329b02c

+ 1 - 1
src/main/java/cn/cslg/pas/common/dto/business/ProductCategoryDTO.java

@@ -20,7 +20,7 @@ public class ProductCategoryDTO {
     @Schema(description = "id")
     private Integer id;
     @Schema(description = "产品类别名称")
-    private String Name;
+    private String name;
     @Schema(description = "参考许可费率")
     private Double licenseRate;
     @Schema(description = "上市时间")

+ 18 - 29
src/main/java/cn/cslg/pas/common/dto/business/ProductDTO.java

@@ -2,7 +2,13 @@ package cn.cslg.pas.common.dto.business;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * 产品的DTO
@@ -11,39 +17,22 @@ import lombok.Data;
  */
 @Data
 public class ProductDTO {
-    /**
-     * 主键
-     */
+    @Schema(description = "id")
     private Integer id;
-
-    /**
-     * 产品名称
-     */
+    @Schema(description = "产品名称")
     private String name;
-
-    /**
-     * 参考许可费率
-     */
+    @Schema(description = "参考许可费率")
     private Double licenseRate;
-
-    /**
-     * 上市时间
-     */
-    private DateTime marketTime;
-
-    /**
-     * 所属产品类别
-     */
+    @Schema(description = "上市时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date marketTime;
+    @Schema(description = "所属产品类别")
     private Integer categoryId;
-
-    /**
-     * 可见类型(0所有人可见,1本人可见,2仅选定人可见,3选定人不可见)
-     */
+    @Schema(description = "可见类型(0所有人可见、1本人可见、2仅选定人可见、3选定人不可见)")
     private Integer showType;
-
-    /**
-     * 描述
-     */
+    @Schema(description = "描述")
     private String description;
-
+    @Schema(description = "可见类型的人员id")
+    private List<String> showPersonIds;
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/business/UpdateProductCategoryDTO.java

@@ -9,6 +9,7 @@ import java.util.Date;
 import java.util.List;
 
 /**
+ * 产品类别更新DTO
  * @Author xiexiang
  * @Date 2023/10/31
  */

+ 39 - 0
src/main/java/cn/cslg/pas/common/dto/business/UpdateProductDTO.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.common.dto.business;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 产品更新DTO
+ * @Author xiexiang
+ * @Date 2023/11/1
+ */
+@Data
+public class UpdateProductDTO {
+    @Schema(description = "id")
+    private Integer id;
+    @Schema(description = "产品名称")
+    private String Name;
+    @Schema(description = "参考许可费率")
+    private Double licenseRate;
+    @Schema(description = "上市时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date marketTime;
+    @Schema(description = "所属产品类别")
+    private Integer categoryId;
+    @Schema(description = "可见类型(0所有人可见、1本人可见、2仅选定人可见、3选定人不可见)")
+    private Integer showType;
+    @Schema(description = "描述")
+    private String description;
+    @Schema(description = "可见类型的人员id")
+    private List<String> showPersonIds;
+    @Schema(description = "文件guid")
+    private List<String> guids;
+}

+ 30 - 17
src/main/java/cn/cslg/pas/service/business/ProductCategoryService.java

@@ -77,19 +77,6 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
         List<String> sqls = formatQueryService.reSqls(queryRequest,"productCategory");
         //根据sql查询产品类别信息
         List<ProductCategoryVO> productCategoryVOS = productCategoryMapper.getProductCategory(sqls.get(0),sqls.get(1),sqls.get(2));
-        //遍历查询出来的产品类别
-        productCategoryVOS.forEach(item -> {
-            //根据showType到产品类别与可见人员关联表中查询可见人员
-            Integer showType = item.getShowType();
-            if(showType == 2 && showType == 3){
-                LambdaQueryWrapper<AssoProductCategoryPerson> queryWrapper = new LambdaQueryWrapper<>();
-                queryWrapper.eq(AssoProductCategoryPerson::getProductCategoryId, item.getId());
-                queryWrapper.eq(AssoProductCategoryPerson::getRole,showType);
-                List<AssoProductCategoryPerson> assoProductCategoryPeople = assoProductCategoryPersonService.list(queryWrapper);
-                List<String> showPersonIds = assoProductCategoryPeople.stream().map(AssoProductCategoryPerson::getPersonId).collect(Collectors.toList());
-                item.setShowPersonIds(showPersonIds);
-            }
-        });
         //查询总数
         Long total = productCategoryMapper.getProductCategoryCount(sqls.get(0));
         //装载产品类别信息
@@ -132,15 +119,22 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
         //产品类别入表
         ProductCategory productCategory = new ProductCategory();
         BeanUtils.copyProperties(productCategoryDTO, productCategory);
-        productCategory.setCreateId("1");
+        productCategory.setCreateId(personnelVO.getGuid());
         productCategory.setTenant(personnelVO.getTenantId());
         productCategory.insert();
+        //将创建人默认设置为管理员插入到产品类别与可见人员类型表中
+        AssoProductCategoryPerson assoProductCategoryAdmin = new AssoProductCategoryPerson();
+        assoProductCategoryAdmin.setProductCategoryId(productCategory.getId());
+        assoProductCategoryAdmin.setPersonId(personnelVO.getGuid());
+        assoProductCategoryAdmin.setRole(0);
+        assoProductCategoryAdmin.setCreateId(personnelVO.getGuid());
+        assoProductCategoryAdmin.insert();
         //判断可见类型:
         Integer showType = productCategoryDTO.getShowType();
         if(showType != 0 && showType != 1){
             List<String> showPersonIds = productCategoryDTO.getShowPersonIds();
             //0所有人可见,1本人可见
-            if(showPersonIds !=null && showPersonIds.size() != 0){
+            if(showPersonIds != null && showPersonIds.size() != 0){
                 List<AssoProductCategoryPerson> assoProductCategoryPeople = new ArrayList<>();
                 for (String showPersonId : showPersonIds) {
                     AssoProductCategoryPerson assoProductCategoryPerson = new AssoProductCategoryPerson();
@@ -231,7 +225,7 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
         LambdaQueryWrapper<ProductCategory> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ProductCategory::getName, name);
         List<ProductCategory> productCategories = this.list(queryWrapper);
-        if(updateProductCategoryDTO.getName() == productCategory.getName() && productCategories.size() != 0){
+        if(updateProductCategoryDTO.getName() != productCategory.getName() && productCategories.size() != 0){
             throw new XiaoShiException("名称重复");
         }
         BeanUtils.copyProperties(updateProductCategoryDTO, productCategory);
@@ -253,7 +247,6 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
             LambdaQueryWrapper<AssoProductCategoryFile> deleteWrapper = new LambdaQueryWrapper<>();
             deleteWrapper.in(AssoProductCategoryFile::getFileGuid, fileGuIds);
             assoProductCategoryFileService.remove(deleteWrapper);
-
             //远程删除服务器上传文件
             try{
                 fileManagerService.deleteFileFromFMS(fileGuIds);
@@ -295,6 +288,16 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
         return null;
     }
 
+    @Override
+    public Object addMessage(Object object) {
+        return null;
+    }
+
+    @Override
+    public Object updateMessage(Object object) {
+        return null;
+    }
+
     /**
      * 装载产品类别
      * @param productCategoryVOS
@@ -359,6 +362,16 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
                     }
                 }
             }
+            //根据showType到产品类别与可见人员关联表中查询可见人员
+            Integer showType = productCategoryVO.getShowType();
+            if(showType == 2 && showType == 3){
+                LambdaQueryWrapper<AssoProductCategoryPerson> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(AssoProductCategoryPerson::getProductCategoryId, productCategoryVO.getId());
+                queryWrapper.eq(AssoProductCategoryPerson::getRole,showType);
+                List<AssoProductCategoryPerson> assoProductCategoryPeople = assoProductCategoryPersonService.list(queryWrapper);
+                List<String> showPersonIds = assoProductCategoryPeople.stream().map(AssoProductCategoryPerson::getPersonId).collect(Collectors.toList());
+                productCategoryVO.setShowPersonIds(showPersonIds);
+            }
         }
     }
 }

+ 96 - 29
src/main/java/cn/cslg/pas/service/business/ProductService.java

@@ -1,12 +1,14 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.ProductDTO;
+import cn.cslg.pas.common.dto.business.UpdateProductDTO;
 import cn.cslg.pas.common.model.cronModel.*;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.ProductVO;
+import cn.cslg.pas.domain.business.AssoProductCategoryPerson;
 import cn.cslg.pas.domain.business.AssoProductFile;
 import cn.cslg.pas.domain.business.AssoProductPerson;
 import cn.cslg.pas.domain.business.Product;
@@ -71,19 +73,6 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         List<String> sqls = formatQueryService.reSqls(queryRequest,"product");
         //根据sql查询产品信息
         List<ProductVO> productVOS = productMapper.getProduct(sqls.get(0), sqls.get(1), sqls.get(2));
-        //遍历查询出来的产品
-        productVOS.forEach(item -> {
-            //根据showType到产品与可见人员关联表中查询可见人员
-            Integer showType = item.getShowType();
-            if(showType == 2 && showType == 3){
-                LambdaQueryWrapper<AssoProductPerson> queryWrapper = new LambdaQueryWrapper<>();
-                queryWrapper.eq(AssoProductPerson::getProductId, item.getId());
-                queryWrapper.eq(AssoProductPerson::getRole, showType);
-                List<AssoProductPerson> assoProductPeople = assoProductPersonService.list(queryWrapper);
-                List<String> showPersonIds = assoProductPeople.stream().map(AssoProductPerson::getPersonId).collect(Collectors.toList());
-                item.setShowPersonIds(showPersonIds);
-            }
-        });
         //查询总数
         Long total = productMapper.getProductCount(sqls.get(0));
         this.loadProduct(productVOS);
@@ -123,20 +112,53 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         //产品入库
         Product product = new Product();
         BeanUtils.copyProperties(productDTO, product);
-        //TODO
-        product.setCreateId(null);
+        product.setCreateId(personnelVO.getGuid());
         product.setTenantId(personnelVO.getTenantId());
         product.insert();
+        //将创建人默认设置为管理员插入到产品类别与可见人员类型表中
+        AssoProductPerson assoProductAdmin = new AssoProductPerson();
+        assoProductAdmin.setProductId(product.getId());
+        assoProductAdmin.setPersonId(personnelVO.getGuid());
+        assoProductAdmin.setRole(0);
+        assoProductAdmin.setCreateId(personnelVO.getGuid());
+        assoProductAdmin.insert();
+        //判断可见类型:
+        Integer showType = productDTO.getShowType();
+        if(showType != 0 && showType != 1){
+            List<String> showPersonIds = productDTO.getShowPersonIds();
+            //0所有人可见,1本人可见
+            if(showPersonIds != null && showPersonIds.size() != 0){
+                List<AssoProductPerson> assoProductPeople = new ArrayList<>();
+                for (String showPersonId : showPersonIds) {
+                    AssoProductPerson assoProductPerson = new AssoProductPerson();
+                    assoProductPerson.setProductId(product.getId());
+                    assoProductPerson.setPersonId(showPersonId);
+                    assoProductPerson.setCreateId(personnelVO.getGuid());
+                    //2仅选定人可见
+                    if (showType == 2) {
+                        assoProductPerson.setRole(1);
+                    } else if (showType == 3) {//3选定人不可见
+                        assoProductPerson.setRole(2);
+                    } else {
+                        throw new XiaoShiException("可见类型错误");
+                    }
+                    assoProductPeople.add(assoProductPerson);
+                }
+                if(assoProductPeople != null && assoProductPeople.size() != 0){
+                    assoProductPersonService.saveBatch(assoProductPeople);
+                }
+            }
+        }
         if(files != null && files.size() != 0) {
             try {
+                //调用上传文件接口
                 List<String> guids = fileManagerService.uploadFileGetGuid(files);
                 List<AssoProductFile> assoProductFiles = new ArrayList<>();
                 for (String item : guids) {
                     AssoProductFile assoProductFile = new AssoProductFile();
                     assoProductFile.setProductId(product.getId());
                     assoProductFile.setFileGuid(item);
-                    //TODO
-                    assoProductFile.setCreateId("1");
+                    assoProductFile.setCreateId(personnelVO.getGuid());
                     assoProductFiles.add(assoProductFile);
                 }
                 if (assoProductFiles != null && assoProductFiles.size() != 0) {
@@ -162,7 +184,6 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         queryWrapper.in(AssoProductFile::getProductId, ids);
         List<AssoProductFile> assoProductFiles = assoProductFileService.list(queryWrapper);
         List<String> guids = assoProductFiles.stream().map(AssoProductFile::getFileGuid).collect(Collectors.toList());
-        //TODO 根据guid删除文件
         if (guids.size() != 0) {
             fileManagerService.deleteFileFromFMS(guids);
         }
@@ -182,16 +203,45 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
     @Override
     public Object updateMessage(Object object, List<MultipartFile> files) {
         //object to product
-        ProductDTO productDTO = (ProductDTO) object;
+        UpdateProductDTO updateProductDTO = (UpdateProductDTO) object;
+        if(updateProductDTO == null || updateProductDTO.getId() == null){
+            throw new XiaoShiException("参数错误");
+        }
+        Product product = this.getById(updateProductDTO.getId());
         //检测名称是否不规范
-        productDTO.setName(productDTO.getName().trim());
+        updateProductDTO.setName(updateProductDTO.getName().trim());
         //根据名称查询数据库中是否存在
-        String name = productDTO.getName();
+        String name = updateProductDTO.getName();
         LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Product::getName, name);
         List<Product> products = this.list(queryWrapper);
-        if(products == null || products.size() == 0){
-            return null;
+        if(updateProductDTO.getName() != product.getName() && products.size() != 0){
+            throw new XiaoShiException("名称重复");
+        }
+        BeanUtils.copyProperties(updateProductDTO, product);
+        product.updateById();
+        //根据产品id查询对应的附件id
+        LambdaQueryWrapper<AssoProductFile> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AssoProductFile::getProductId, updateProductDTO.getId());
+        List<AssoProductFile> assoFiles = assoProductFileService.list(wrapper);
+        List<String> fileGuIds = assoFiles.stream().map(AssoProductFile::getFileGuid).collect(Collectors.toList());
+        //获取更新后的附件ids
+        List<String> updateFileGuIds = new ArrayList<>();
+        if(updateProductDTO.getGuids() != null && updateProductDTO.getGuids().size() != 0){
+            updateFileGuIds = updateProductDTO.getGuids();
+        }
+        fileGuIds.retainAll(updateFileGuIds);
+        //做差获得被删除的文件id
+        if(fileGuIds.size() != 0){
+            //根据文件id删除产品与文件关联表记录
+            LambdaQueryWrapper<AssoProductFile> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.in(AssoProductFile::getFileGuid, fileGuIds);
+            assoProductFileService.remove(deleteWrapper);
+            try{
+                fileManagerService.deleteFileFromFMS(fileGuIds);
+            } catch (Exception e){
+
+            }
         }
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO;
@@ -200,9 +250,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
-        Product product = this.getById(productDTO.getId());
-        BeanUtils.copyProperties(productDTO, product);
-        product.insert();
+        //添加文件
         if (files != null && files.size() != 0) {
             try {
                 List<String> guids = fileManagerService.uploadFileGetGuid(files);
@@ -211,8 +259,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
                     AssoProductFile assoProductFile = new AssoProductFile();
                     assoProductFile.setProductId(product.getId());
                     assoProductFile.setFileGuid(item);
-                    //TODO
-                    assoProductFile.setCreateId("1");
+                    assoProductFile.setCreateId(personnelVO.getGuid());
                     assoProductFiles.add(assoProductFile);
                 }
                 if (assoProductFiles != null && assoProductFiles.size() != 0) {
@@ -230,6 +277,16 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         return null;
     }
 
+    @Override
+    public Object addMessage(Object object) {
+        return null;
+    }
+
+    @Override
+    public Object updateMessage(Object object) {
+        return null;
+    }
+
     /**
      * 装载productVO
      * @param productVOS
@@ -279,7 +336,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         //装载信息
         for (ProductVO productVO:productVOS) {
             //装载人员信息
-            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(productVO.getCreateId())).findFirst().orElse(null);
+            Personnel personnel = personnels.stream().filter(item -> item.getGuid().equals(productVO.getCreateId())).findFirst().orElse(null);
             if(personnel != null){
                 productVO.setCreateName(personnel.getPersonnelName());
             }
@@ -294,6 +351,16 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
                     }
                 }
             }
+            //装载可见人员ids
+            Integer showType = productVO.getShowType();
+            if(showType == 2 && showType == 3){
+                LambdaQueryWrapper<AssoProductPerson> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(AssoProductPerson::getProductId, productVO.getId());
+                queryWrapper.eq(AssoProductPerson::getRole, showType);
+                List<AssoProductPerson> assoProductPeople = assoProductPersonService.list(queryWrapper);
+                List<String> showPersonIds = assoProductPeople.stream().map(AssoProductPerson::getPersonId).collect(Collectors.toList());
+                productVO.setShowPersonIds(showPersonIds);
+            }
         }
     }
 }

+ 105 - 0
src/main/resources/jsons/product.json

@@ -0,0 +1,105 @@
+[
+  {"name":"Id",
+    "type":"Integer",
+    "value":"id",
+    "field":"id",
+    "sqlField": "id",
+    "sqlClass": "",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"产品名称",
+    "type":"String",
+    "value":"name",
+    "field": "name",
+    "sqlField": "name",
+    "sqlClass": "",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"参考许可费率",
+    "type":"Double",
+    "value":"licenseRate",
+    "field": "licenseRate",
+    "sqlField": "license_rate",
+    "sqlClass": "",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"上市时间",
+    "type":"DateTime",
+    "value":"marketTime",
+    "field": "marketTime",
+    "sqlField": "market_time",
+    "orderClass": "",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"所属产品类别",
+    "type":"Integer",
+    "value":"categoryId",
+    "field": "categoryId",
+    "sqlField": "category_id",
+    "sqlClass": "",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"可见类型",
+    "type":"Integer",
+    "value":"showType",
+    "field": "showType",
+    "sqlField": "show_type",
+    "sqlClass": "",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"描述",
+    "type":"String",
+    "value":"description",
+    "field": "description",
+    "sqlField": "description",
+    "sqlClass": "",
+    "orderClass": "",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"创建人",
+    "type":"String",
+    "value":"createName",
+    "field": "createName",
+    "sqlField": "createId",
+    "sqlClass": "",
+    "orderClass": "",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {
+    "name":"创建时间",
+    "type":"DateTime",
+    "value":"createTime",
+    "field":"createTime",
+    "sqlField": "create_time",
+    "orderClass": "",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  }
+]