Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

lwhhszx 1 год назад
Родитель
Сommit
4f8ebaa4b0

+ 14 - 0
src/main/java/cn/cslg/pas/common/vo/business/PersonVO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+/**
+ * 人员id与名称VO类
+ * @Author xiexiang
+ * @Date 2023/11/2
+ */
+@Data
+public class PersonVO {
+    private String id;
+    private String name;
+}

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

@@ -27,8 +27,12 @@ public class ProductCategoryVO {
     private Integer showType;
     @Schema(description = "可见人员ids")
     private List<String> showPersonIds;
+    @Schema(description = "可见人员")
+    private List<PersonVO> persons;
     @Schema(description = "管理员ids")
     private List<String> adminIds;
+    @Schema(description = "管理员")
+    private List<PersonVO> adminPersons;
     @Schema(description = "描述")
     private String description;
     @Schema(description = "创建人")

+ 7 - 6
src/main/java/cn/cslg/pas/common/vo/business/ProductVO.java

@@ -25,34 +25,35 @@ public class ProductVO {
     @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;
+    private DateTime marketTime;
     @Schema(description = "所属产品类别")
     private Integer categoryId;
     @Schema(description = "可见类型(0所有人可见,1本人可见,2仅选定人可见,3选定人不可见)")
     private Integer showType;
     @Schema(description = "可见人员ids")
     private List<String> showPersonIds;
+    @Schema(description = "可见人员")
+    private List<PersonVO> persons;
+    @Schema(description = "管理员ids")
+    private List<String> adminIds;
+    @Schema(description = "管理员")
+    private List<PersonVO> adminPersons;
     @Schema(description = "描述")
     private String description;
     @Schema(description = "创建人id")
     private String createId;
     @Schema(description = "创建人")
     private String createName;
-
-
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @Schema(description = "创建时间")
     private Date createTime;
     @Schema(description = "租户id")
     private Integer tenantId;
-
     @Schema(description = "公司名称")
     private String companyName;
-
     @Schema(description = "文件信息")
     private List<SystemFile> systemFileList;
 }

+ 1 - 1
src/main/java/cn/cslg/pas/controller/ProductController.java

@@ -45,7 +45,7 @@ public class ProductController {
     @Operation(summary = "添加产品")
     @PostMapping("/addProduct")
     public Response addProduct(String product, List<MultipartFile> files) throws Exception {
-        if (product != null) {
+        if (product != null && product != "") {
             ProductDTO productDTO = JSONObject.parseObject(product, ProductDTO.class);
             Business business = businessFactory.getClass("productService");
             Integer id = null;

+ 49 - 7
src/main/java/cn/cslg/pas/service/business/ProductCategoryService.java

@@ -7,6 +7,7 @@ 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.PersonVO;
 import cn.cslg.pas.common.vo.business.ProductCategoryVO;
 import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.exception.UnLoginException;
@@ -82,6 +83,7 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
         Long total = productCategoryMapper.getProductCategoryCount(sqls.get(0));
         //装载产品类别信息
         this.loadProductCategory(productCategoryVOS);
+        //装载返回信息
         Records records = new Records();
         records.setCurrent(queryRequest.getCurrent());
         records.setSize(queryRequest.getSize());
@@ -125,7 +127,7 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
         productCategory.insert();
         //插入产品类别与可见人员类型表
         List<AssoProductCategoryPerson> assoProductCategoryPeople = new ArrayList<>();
-        //默认管理员
+        //默认管理员为创建人
         AssoProductCategoryPerson assoProductCategoryAdmin = new AssoProductCategoryPerson();
         assoProductCategoryAdmin.setProductCategoryId(productCategory.getId());
         assoProductCategoryAdmin.setPersonId(personnelVO.getId());
@@ -330,7 +332,7 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
             LambdaQueryWrapper<AssoProductCategoryFile> deleteWrapper = new LambdaQueryWrapper<>();
             deleteWrapper.in(AssoProductCategoryFile::getFileGuid, fileGuIds);
             assoProductCategoryFileService.remove(deleteWrapper);
-            //远程删除服务器上文件
+            //远程删除服务器上文件
             try{
                 fileManagerService.deleteFileFromFMS(fileGuIds);
             } catch (Exception e){
@@ -419,7 +421,7 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
         }
 
         //装载信息
-        for (ProductCategoryVO productCategoryVO:productCategoryVOS) {
+        for (ProductCategoryVO productCategoryVO : productCategoryVOS) {
             //装载人员信息
             Personnel personnel = personnels.stream().filter(item -> item.getId().toString().equals(productCategoryVO.getCreateId())).findFirst().orElse(null);
             if(personnel != null){
@@ -443,19 +445,59 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
             if(showType.equals(2) || showType.equals(3)){
                 LambdaQueryWrapper<AssoProductCategoryPerson> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.eq(AssoProductCategoryPerson::getProductCategoryId, productCategoryVO.getId());
-                queryWrapper.eq(AssoProductCategoryPerson::getRole,showType);
+                //如果showType为2,则查询的角色类型为1
+                if (showType.equals(2)) {
+                    queryWrapper.eq(AssoProductCategoryPerson::getRole, 1);
+                } else if (showType.equals(3)) {//如果showType为3,则查询的角色类型为2
+                    queryWrapper.eq(AssoProductCategoryPerson::getRole, 2);
+                }
                 List<AssoProductCategoryPerson> assoProductCategoryPeople = assoProductCategoryPersonService.list(queryWrapper);
                 List<String> showPersonIds = assoProductCategoryPeople.stream().map(AssoProductCategoryPerson::getPersonId).collect(Collectors.toList());
+                //根据可见人员ids查询名称
+                String res = permissionService.getPersonnelByIdsFromPCS(showPersonIds);
+                JSONObject jsonObject = JSONObject.parseObject(res);
+                List<Personnel> showPersonnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+                List<PersonVO> showPersonVOS = new ArrayList<>();
+                //遍历可见人员ids
+                for (String showPersonId : showPersonIds) {
+                    PersonVO personVO = new PersonVO();
+                    personVO.setId(showPersonId);
+                    Personnel showPerson = showPersonnels.stream().filter(item -> item.getId().toString().equals(showPersonId)).findFirst().orElse(null);
+                    if (showPerson != null) {
+                        personVO.setName(showPerson.getPersonnelName());
+                        showPersonVOS.add(personVO);
+                    } else {
+                        throw new XiaoShiException("未获取到信息");
+                    }
+                }
+                productCategoryVO.setPersons(showPersonVOS);
                 productCategoryVO.setShowPersonIds(showPersonIds);
             }
             LambdaQueryWrapper<AssoProductCategoryPerson> adminWrapper = new LambdaQueryWrapper<>();
             adminWrapper.eq(AssoProductCategoryPerson::getProductCategoryId, productCategoryVO.getId());
-            adminWrapper.eq(AssoProductCategoryPerson::getRole,0);
+            adminWrapper.eq(AssoProductCategoryPerson::getRole, 0);
             List<AssoProductCategoryPerson> assoProductCategoryPeople = assoProductCategoryPersonService.list(adminWrapper);
             List<String> adminIds = assoProductCategoryPeople.stream().map(AssoProductCategoryPerson::getPersonId).collect(Collectors.toList());
+            adminIds.remove(personnel.getId().toString());
+            //根据管理员人员ids查询名称
+            String res = permissionService.getPersonnelByIdsFromPCS(adminIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            List<Personnel> adminPersonnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+            List<PersonVO> adminPersonVOS = new ArrayList<>();
+            //遍历管理人员ids
+            for (String adminId : adminIds) {
+                PersonVO personVO = new PersonVO();
+                personVO.setId(adminId);
+                Personnel adminPerson = adminPersonnels.stream().filter(item -> item.getId().toString().equals(adminId)).findFirst().orElse(null);
+                if (adminPerson != null) {
+                    personVO.setName(adminPerson.getPersonnelName());
+                    adminPersonVOS.add(personVO);
+                } else {
+                    throw new XiaoShiException("未获取到信息");
+                }
+            }
+            productCategoryVO.setAdminPersons(adminPersonVOS);
             productCategoryVO.setAdminIds(adminIds);
         }
     }
-
-
 }

+ 72 - 12
src/main/java/cn/cslg/pas/service/business/ProductService.java

@@ -7,6 +7,7 @@ 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.PersonVO;
 import cn.cslg.pas.common.vo.business.ProductVO;
 import cn.cslg.pas.domain.business.AssoProductCategoryPerson;
 import cn.cslg.pas.domain.business.AssoProductFile;
@@ -19,6 +20,7 @@ import cn.cslg.pas.mapper.ProductMapper;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
+import co.elastic.clients.elasticsearch.core.search.LaplaceSmoothingModel;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -75,7 +77,9 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         List<ProductVO> productVOS = productMapper.getProduct(sqls.get(0), sqls.get(1), sqls.get(2));
         //查询总数
         Long total = productMapper.getProductCount(sqls.get(0));
+        //装载产品信息
         this.loadProduct(productVOS);
+        //装载返回信息
         Records records = new Records();
         records.setCurrent(queryRequest.getCurrent());
         records.setSize(queryRequest.getSize());
@@ -92,9 +96,11 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
      */
     @Override
     public Integer addMessage(Object object, List<MultipartFile> files) {
+        //object to productDTO
         ProductDTO productDTO = (ProductDTO) object;
-        //根据名称查询是否重复
+        //检测名称是否不规范
         productDTO.setName(productDTO.getName().trim());
+        //根据名称查询数据库中是否存在
         String name = productDTO.getName();
         LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Product::getName, name);
@@ -117,6 +123,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         product.insert();
         //插入产品与可见人员类型表
         List<AssoProductPerson> assoProductPeople = new ArrayList<>();
+        //默认管理员为创建人
         AssoProductPerson assoProductAdmin = new AssoProductPerson();
         assoProductAdmin.setProductId(product.getId());
         assoProductAdmin.setPersonId(personnelVO.getId());
@@ -154,11 +161,12 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
                     }
                     assoProductPeople.add(assoProductPerson);
                 }
-                if(assoProductPeople != null && assoProductPeople.size() != 0){
-                    assoProductPersonService.saveBatch(assoProductPeople);
-                }
             }
         }
+        if(assoProductPeople != null && assoProductPeople.size() != 0){
+            assoProductPersonService.saveBatch(assoProductPeople);
+        }
+        //判断文件是否为空
         if(files != null && files.size() != 0) {
             try {
                 //调用上传文件接口
@@ -178,6 +186,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
 
             }
         }
+        //返回id
         return product.getId();
     }
 
@@ -223,7 +232,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
             throw new XiaoShiException("参数错误");
         }
         //获取登陆人信息 用于设置创建人
-        PersonnelVO personnelVO;
+        PersonnelVO personnelVO = new PersonnelVO();
         try {
             personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         } catch (Exception e) {
@@ -237,7 +246,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Product::getName, name);
         List<Product> products = this.list(queryWrapper);
-        if(updateProductDTO.getName() != product.getName() && products.size() != 0){
+        if(!updateProductDTO.getName().equals(product.getName()) && products.size() != 0){
             throw new XiaoShiException("名称重复");
         }
         BeanUtils.copyProperties(updateProductDTO, product);
@@ -250,6 +259,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         assoProductPersonService.remove(personWrapper);
         //插入产品与可见人员类型表
         List<AssoProductPerson> assoProductPeople = new ArrayList<>();
+        //默认管理员
         AssoProductPerson assoProductAdmin = new AssoProductPerson();
         assoProductAdmin.setProductId(product.getId());
         assoProductAdmin.setPersonId(personnelVO.getId());
@@ -312,6 +322,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
             LambdaQueryWrapper<AssoProductFile> deleteWrapper = new LambdaQueryWrapper<>();
             deleteWrapper.in(AssoProductFile::getFileGuid, fileGuIds);
             assoProductFileService.remove(deleteWrapper);
+            //远程删除服务器上的文件
             try{
                 fileManagerService.deleteFileFromFMS(fileGuIds);
             } catch (Exception e){
@@ -373,7 +384,6 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
                     }
                 }
         );
-
         List<Personnel> personnels = new ArrayList<>();
         List<String> guids = new ArrayList<>();
         List<SystemFile> systemFiles = new ArrayList<>();
@@ -401,15 +411,17 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         }
 
         //装载信息
-        for (ProductVO productVO:productVOS) {
+        for (ProductVO productVO : productVOS) {
             //装载人员信息
             Personnel personnel = personnels.stream().filter(item -> item.getId().toString().equals(productVO.getCreateId())).findFirst().orElse(null);
             if(personnel != null){
                 productVO.setCreateName(personnel.getPersonnelName());
+            } else {
+                throw new XiaoShiException("未获取到当前登陆人信息");
             }
             //装载文件信息
             List<AssoProductFile> assoProductFilesTemp = assoProductFiles.stream().filter(item -> item.getProductId().equals(productVO.getId())).collect(Collectors.toList());
-            if(assoProductFilesTemp.size() != 0){
+            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());
@@ -418,16 +430,64 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
                     }
                 }
             }
-            //装载可见人员ids
+            //根据showType到产品与可见人员关联表中查询可见人员
             Integer showType = productVO.getShowType();
-            if(showType == 2 && showType == 3){
+            if (showType.equals(2) || showType.equals(3)) {
                 LambdaQueryWrapper<AssoProductPerson> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.eq(AssoProductPerson::getProductId, productVO.getId());
-                queryWrapper.eq(AssoProductPerson::getRole, showType);
+                //如果showType为2,则查询的角色类型为1
+                if (showType.equals(2)) {
+                    queryWrapper.eq(AssoProductPerson::getRole, 1);
+                } else if (showType.equals(3)) {//如果showType为3,则查询的角色类型为2
+                    queryWrapper.eq(AssoProductPerson::getRole, 2);
+                }
                 List<AssoProductPerson> assoProductPeople = assoProductPersonService.list(queryWrapper);
                 List<String> showPersonIds = assoProductPeople.stream().map(AssoProductPerson::getPersonId).collect(Collectors.toList());
+                //根据可见人员ids查询名称
+                String res = permissionService.getPersonnelByIdsFromPCS(showPersonIds);
+                JSONObject jsonObject = JSONObject.parseObject(res);
+                List<Personnel> showPersonnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+                List<PersonVO> showPersonVOS = new ArrayList<>();
+                //遍历可见人员ids
+                for (String showPersonId : showPersonIds) {
+                    PersonVO personVO = new PersonVO();
+                    personVO.setId(showPersonId);
+                    Personnel showPerson = showPersonnels.stream().filter(item -> item.getId().toString().equals(showPersonId)).findFirst().orElse(null);
+                    if (showPerson != null) {
+                        personVO.setName(showPerson.getPersonnelName());
+                        showPersonVOS.add(personVO);
+                    } else {
+                        throw new XiaoShiException("未获取到信息");
+                    }
+                }
+                productVO.setPersons(showPersonVOS);
                 productVO.setShowPersonIds(showPersonIds);
             }
+            LambdaQueryWrapper<AssoProductPerson> adminWrapper = new LambdaQueryWrapper<>();
+            adminWrapper.eq(AssoProductPerson::getProductId, productVO.getId());
+            adminWrapper.eq(AssoProductPerson::getRole, 0);
+            List<AssoProductPerson> assoProductPeople = assoProductPersonService.list(adminWrapper);
+            List<String> adminIds = assoProductPeople.stream().map(AssoProductPerson::getPersonId).collect(Collectors.toList());
+            adminIds.remove(personnel.getId().toString());
+            //根据管理员人员ids查询名称
+            String res = permissionService.getPersonnelByIdsFromPCS(adminIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            List<Personnel> adminPersonnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+            List<PersonVO> adminPersonVOS = new ArrayList<>();
+            //遍历管理人员ids
+            for (String adminId : adminIds) {
+                PersonVO personVO = new PersonVO();
+                personVO.setId(adminId);
+                Personnel adminPerson = adminPersonnels.stream().filter(item -> item.getId().toString().equals(adminId)).findFirst().orElse(null);
+                if (adminPerson != null) {
+                    personVO.setName(adminPerson.getPersonnelName());
+                    adminPersonVOS.add(personVO);
+                } else {
+                    throw new XiaoShiException("未获取到信息");
+                }
+            }
+            productVO.setAdminPersons(adminPersonVOS);
+            productVO.setAdminIds(adminIds);
         }
     }
 }