Selaa lähdekoodia

10/30 xx 产品以及产品类别的查询代码补齐

xiexiang 1 vuosi sitten
vanhempi
commit
0f5a47550c

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

@@ -1,6 +1,7 @@
 package cn.cslg.pas.common.dto.business;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.joda.time.DateTime;
 
@@ -11,45 +12,16 @@ import org.joda.time.DateTime;
  */
 @Data
 public class ProductCategoryDTO {
-    /**
-     * 主键
-     */
-    @TableField(value = "id")
+    @Schema(description = "id")
     private Integer id;
-
-    /**
-     * 产品类别名称
-     */
-    @TableField(value = "name")
+    @Schema(description = "产品类别名称")
     private String Name;
-
-    /**
-     * 参考许可费率
-     */
-    @TableField(value = "license_rate")
+    @Schema(description = "参考许可费率")
     private Double licenseRate;
-
-    /**
-     * 上市时间
-     */
-    @TableField(value = "market_time")
+    @Schema(description = "上市时间")
     private DateTime marketTime;
-
-    /**
-     * 可见类型(0所有人可见、1本人可见、2仅选定人可见、3选定人不可见)
-     */
-    @TableField(value = "show_type")
+    @Schema(description = "可见类型(0所有人可见、1本人可见、2仅选定人可见、3选定人不可见)")
     private Integer showType;
-
-    /**
-     * 描述
-     */
-    @TableField(value = "description")
+    @Schema(description = "描述")
     private String description;
-
-    /**
-     * 创建人
-     */
-    @TableField(value = "create_id")
-    private Integer createId;
 }

+ 38 - 0
src/main/java/cn/cslg/pas/common/vo/business/ProductCategoryVO.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.joda.time.DateTime;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 产品类别VO类
+ * @Author xiexiang
+ * @Date 2023/10/30
+ */
+@Data
+public class ProductCategoryVO {
+    @Schema(description = "id")
+    private Integer id;
+    @Schema(description = "产品类别名称")
+    private String Name;
+    @Schema(description = "参考许可费率")
+    private Double licenseRate;
+    @Schema(description = "上市时间")
+    private DateTime marketTime;
+    @Schema(description = "可见类型(0所有人可见、1本人可见、2仅选定人可见、3选定人不可见)")
+    private Integer showType;
+    @Schema(description = "描述")
+    private String description;
+    @Schema(description = "创建人")
+    private String createName;
+    @Schema(description = "创建人id")
+    private Integer createId;
+    @Schema(description = "创建时间")
+    private Date createTime;
+    @Schema(description = "文件信息")
+    private List<SystemFile> systemFileList;
+}

+ 43 - 0
src/main/java/cn/cslg/pas/common/vo/business/ProductVO.java

@@ -0,0 +1,43 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 产品VO
+ * @Author xiexiang
+ * @Date 2023/10/30
+ */
+@Data
+public class ProductVO {
+    @Schema(description = "id")
+    private Integer id;
+    @Schema(description = "产品名称")
+    private String name;
+    @Schema(description = "参考许可费率")
+    private Double licenseRate;
+    @Schema(description = "上市时间")
+    private DateTime marketTime;
+    @Schema(description = "所属产品类别")
+    private Integer categoryId;
+    @Schema(description = "可见类型(0所有人可见,1本人可见,2仅选定人可见,3选定人不可见)")
+    private Integer showType;
+    @Schema(description = "描述")
+    private String description;
+    @Schema(description = "创建人id")
+    private Integer createId;
+    @Schema(description = "创建人")
+    private String createName;
+    @Schema(description = "创建时间")
+    private DateTime createTime;
+    @Schema(description = "租户id")
+    private Integer tenantId;
+    @Schema(description = "文件信息")
+    private List<SystemFile> systemFileList;
+}

+ 5 - 11
src/main/java/cn/cslg/pas/domain/business/ProductCategory.java

@@ -18,44 +18,38 @@ import org.joda.time.DateTime;
 @TableName("product_category")
 public class ProductCategory extends BaseEntity<ProductCategory> {
     /**
-     * 主键
-     */
-    @TableField(value = "id")
-    private Integer id;
-
-    /**
      * 产品类别名称
      */
     @TableField(value = "name")
     private String Name;
-
     /**
      * 参考许可费率
      */
     @TableField(value = "license_rate")
     private Double licenseRate;
-
     /**
      * 上市时间
      */
     @TableField(value = "market_time")
     private DateTime marketTime;
-
     /**
      * 可见类型(0所有人可见、1本人可见、2仅选定人可见、3选定人不可见)
      */
     @TableField(value = "show_type")
     private Integer showType;
-
     /**
      * 描述
      */
     @TableField(value = "description")
     private String description;
-
     /**
      * 创建人
      */
     @TableField(value = "create_id")
     private Integer createId;
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private DateTime createTime;
 }

+ 5 - 0
src/main/java/cn/cslg/pas/mapper/ProductCategoryMapper.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.vo.business.ProductCategoryVO;
 import cn.cslg.pas.domain.business.ProductCategory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 产品类别的Mapper层接口
  * @Author xiexiang
@@ -11,4 +14,6 @@ import org.springframework.stereotype.Repository;
  */
 @Repository
 public interface ProductCategoryMapper extends BaseMapper<ProductCategory> {
+    List<ProductCategoryVO> getProductCategory(String sql1, String sql2, String sql3);
+    Long getProductCategoryCount(String sql);
 }

+ 4 - 0
src/main/java/cn/cslg/pas/mapper/ProductMapper.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.vo.business.ProductVO;
 import cn.cslg.pas.domain.business.Product;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 产品的Mapper层
  * @Author xiexiang
@@ -11,4 +14,5 @@ import org.springframework.stereotype.Repository;
  */
 @Repository
 public interface ProductMapper extends BaseMapper<Product> {
+    List<ProductVO> getProduct(String sql1,String sql2,String sql3);
 }

+ 85 - 3
src/main/java/cn/cslg/pas/service/business/ProductCategoryService.java

@@ -1,12 +1,12 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.ProductCategoryDTO;
-import cn.cslg.pas.common.model.cronModel.GroupVO;
-import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+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.ProductCategoryVO;
 import cn.cslg.pas.domain.business.AssoProductCategoryFile;
 import cn.cslg.pas.domain.business.ProductCategory;
 import cn.cslg.pas.exception.UnLoginException;
@@ -15,6 +15,9 @@ import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.ProductCategoryMapper;
 
 import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import cn.cslg.pas.service.query.FormatQueryService;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
@@ -52,9 +55,26 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
     @Autowired
     private LoginUtils loginUtils;
 
+    @Autowired
+    private FormatQueryService formatQueryService;
+    @Autowired
+    private PermissionService permissionService;
+
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-        return null;
+        List<String> sqls = formatQueryService.reSqls(queryRequest);
+        //根据sql查询产品类别信息
+        List<ProductCategoryVO> productCategoryVOS = productCategoryMapper.getProductCategory(sqls.get(0),sqls.get(1),sqls.get(2));
+        //查询总数
+        Long total = productCategoryMapper.getProductCategoryCount(sqls.get(0));
+        //装载产品类别信息
+        this.loadProductCategory(productCategoryVOS);
+        Records records = new Records();
+        records.setCurrent(queryRequest.getCurrent());
+        records.setSize(queryRequest.getSize());
+        records.setData(productCategoryVOS);
+        records.setTotal(total);
+        return records;
     }
 
     /**
@@ -191,4 +211,66 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
     public GroupVO getGroup(GroupRequest groupRequest,String name) throws Exception {
         return null;
     }
+
+    private void loadProductCategory(List<ProductCategoryVO> productCategoryVOS) throws IOException {
+        List<Integer> createIds = new ArrayList<>();
+        List<Integer> ids = new ArrayList<>();
+        productCategoryVOS.forEach(
+                item -> {
+                    if(item.getCreateId() != null){
+                        createIds.add(item.getCreateId());
+                    }
+                    if (item.getId() != null) {
+                        ids.add(item.getId());
+                    }
+                }
+        );
+
+        List<Personnel> personnels = new ArrayList<>();
+        List<String> guids = new ArrayList<>();
+        List<SystemFile> systemFiles = new ArrayList<>();
+        List<AssoProductCategoryFile> assoProductCategoryFiles = new ArrayList<>();
+
+        if (ids.size() != 0) {
+            //根据产品类别id获得产品类别与文件关联表
+            LambdaQueryWrapper<AssoProductCategoryFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoProductCategoryFile::getProductCategoryId, ids);
+            assoProductCategoryFiles = assoProductCategoryFileService.list(queryWrapper);
+            guids = assoProductCategoryFiles.stream().map(AssoProductCategoryFile::getFileGuid).collect(Collectors.toList());
+        }
+
+        //查询创建人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+
+        //查询文件
+        if (guids.size() != 0) {
+            String res = fileManagerService.getSystemFileFromFMS(guids);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            systemFiles = JSONObject.parseArray(jsonObject.getString("data"), SystemFile.class);
+        }
+
+        //装载信息
+        for (ProductCategoryVO productCategoryVO:productCategoryVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(productCategoryVO.getCreateId())).findFirst().orElse(null);
+            if(personnel != null){
+                productCategoryVO.setCreateName(personnel.getPersonnelName());
+            }
+            //装载文件信息
+            List<AssoProductCategoryFile> assoProductCategoryFilesTemp = assoProductCategoryFiles.stream().filter(item -> item.getProductCategoryId().equals(productCategoryVO.getId())).collect(Collectors.toList());
+            if(assoProductCategoryFilesTemp.size() != 0){
+                List<String> guidTemp = assoProductCategoryFilesTemp.stream().map(AssoProductCategoryFile::getFileGuid).collect(Collectors.toList());
+                if (guidTemp.size() != 0) {
+                    List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
+                    if (systemFileTemp.size() != 0) {
+                        productCategoryVO.setSystemFileList(systemFileTemp);
+                    }
+                }
+            }
+        }
+    }
 }

+ 70 - 0
src/main/java/cn/cslg/pas/service/business/ProductService.java

@@ -2,11 +2,14 @@ package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.ProductDTO;
 import cn.cslg.pas.common.model.cronModel.GroupVO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 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.AssoProductFile;
 import cn.cslg.pas.domain.business.Product;
 import cn.cslg.pas.exception.UnLoginException;
@@ -14,6 +17,8 @@ import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.ProductMapper;
 import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
@@ -49,6 +54,9 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
     @Autowired
     private LoginUtils loginUtils;
 
+    @Autowired
+    private PermissionService permissionService;
+
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
         return null;
@@ -183,4 +191,66 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
     public GroupVO getGroup(GroupRequest groupRequest,String tableName) throws Exception {
         return null;
     }
+
+    private void loadProduct(List<ProductVO> productVOS) throws IOException {
+        List<Integer> createIds = new ArrayList<>();
+        List<Integer> ids = new ArrayList<>();
+        productVOS.forEach(
+                item -> {
+                    if(item.getCreateId() != null){
+                        createIds.add(item.getCreateId());
+                    }
+                    if (item.getId() != null) {
+                        ids.add(item.getId());
+                    }
+                }
+        );
+
+        List<Personnel> personnels = new ArrayList<>();
+        List<String> guids = new ArrayList<>();
+        List<SystemFile> systemFiles = new ArrayList<>();
+        List<AssoProductFile> assoProductFiles = new ArrayList<>();
+
+        if (ids.size() != 0) {
+            //根据产品类别id获得产品类别与文件关联表
+            LambdaQueryWrapper<AssoProductFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoProductFile::getProductId, ids);
+            assoProductFiles = assoProductFileService.list(queryWrapper);
+            guids = assoProductFiles.stream().map(AssoProductFile::getFileGuid).collect(Collectors.toList());
+        }
+
+        //查询创建人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+
+        //查询文件
+        if (guids.size() != 0) {
+            String res = fileManagerService.getSystemFileFromFMS(guids);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            systemFiles = JSONObject.parseArray(jsonObject.getString("data"), SystemFile.class);
+        }
+
+        //装载信息
+        for (ProductVO productVO:productVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(productVO.getCreateId())).findFirst().orElse(null);
+            if(personnel != null){
+                productVO.setCreateName(personnel.getPersonnelName());
+            }
+            //装载文件信息
+            List<AssoProductFile> assoProductFilesTemp = assoProductFiles.stream().filter(item -> item.getProductId().equals(productVO.getId())).collect(Collectors.toList());
+            if(assoProductFilesTemp.size() != 0){
+                List<String> guidTemp = assoProductFilesTemp.stream().map(AssoProductFile::getFileGuid).collect(Collectors.toList());
+                if (guidTemp.size() != 0) {
+                    List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
+                    if (systemFileTemp.size() != 0) {
+                        productVO.setSystemFileList(systemFileTemp);
+                    }
+                }
+            }
+        }
+    }
 }