chendayu 2 éve
szülő
commit
84e1706129

+ 2 - 1
PAS/src/main/java/cn/cslg/pas/controller/ProjectFieldController.java

@@ -19,6 +19,7 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -42,7 +43,7 @@ public class ProjectFieldController {
     @checkAuth(FunId = "/workspace/common/customField/check")
     @GetMapping("list")
     @Operation(summary = "自定义字段列表")
-    public String getPageList(ProjectFieldVO params) {
+    public String getPageList(ProjectFieldVO params) throws IOException {
         return Response.success(projectFieldService.getPageList(params));
     }
 

+ 2 - 1
PAS/src/main/java/cn/cslg/pas/controller/ProjectFileController.java

@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 /**
  * <p>
@@ -34,7 +35,7 @@ public class ProjectFileController {
 
     @GetMapping("list")
     @Operation(summary = "附件列表")
-    public String getPageList(ProjectFileVO params) {
+    public String getPageList(ProjectFileVO params) throws IOException {
         return Response.success(projectFileService.getPageList(params));
     }
 

+ 92 - 0
PAS/src/main/java/cn/cslg/pas/domain/Personnel.java

@@ -0,0 +1,92 @@
+package cn.cslg.pas.domain;
+
+import cn.cslg.pas.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-2
+ * @description 人员类 数据库对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "PERSONNEL")
+public class Personnel extends BaseEntity<Personnel> {
+    /**
+     * 人员账号
+     */
+    @TableField(value = "PERSONNEL_USERNAME")
+    private String personnelUserName;
+
+    /**
+     * 人员密码
+     */
+    @TableField(value = "PERSONNEL_PASSWORD")
+    private String personnelPassword;
+
+    /**
+     * 人员名称
+     */
+    @TableField(value = "PERSONNEL_NAME")
+    private String personnelName;
+
+    /**
+     * 人员性别(1男0女)
+     */
+    @TableField(value = "PERSONNEL_SEX")
+    private Integer personnelUserSex;
+
+    /**
+     * 人员联系电话
+     */
+    @TableField(value = "PERSONNEL_PHONE")
+    private String personnelPhone;
+
+    /**
+     * 人员邮箱
+     */
+    @TableField(value = "PERSONNEL_EMAIL")
+    private String personnelEmail;
+
+    /**
+     * 人员QQ号
+     */
+    @TableField(value = "PERSONNEL_QQ")
+    private String personnelQQ;
+
+    /**
+     * 人员微信号
+     */
+    @TableField(value = "PERSONNEL_WECHAT")
+    private String personnelWechat;
+
+    /**
+     * 人员钉钉号
+     */
+    @TableField(value = "PERSONNEL_DING")
+    private String personnelDing;
+
+    /**
+     * 人员描述
+     */
+    @TableField(value = "PERSONNEL_DESCRIPTION")
+    private String personnelDescription;
+
+    /**
+     * 人员账号状态(1启用0停用)
+     */
+    @TableField(value = "PERSONNEL_STATUS")
+    private Integer personnelStatus;
+
+    /**
+     * 租户ID
+     */
+    @TableField(value = "TENANT_ID")
+    private Integer tenantId;
+}

+ 33 - 0
PAS/src/main/java/cn/cslg/pas/service/OutInterfaceService.java

@@ -1,14 +1,19 @@
 package cn.cslg.pas.service;
 
+import com.google.gson.Gson;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import okhttp3.MediaType;
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
+import okhttp3.RequestBody;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
+import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 调用外部接口的Service类 PCS:权限系统
@@ -23,6 +28,12 @@ public class OutInterfaceService {
     @Value("${PCSUrl}")
     private String PCSUrl;
 
+    /**
+     * 根据人员名称模糊查询人员ids
+     *
+     * @param personName 人员名称
+     * @return 返回人员ids
+     */
     public String getPersonIdByNamePCS(String personName) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient();
         Request request = new Request.Builder()
@@ -32,4 +43,26 @@ public class OutInterfaceService {
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
+    /**
+     * 根据人员ids查询人员列表
+     *
+     * @param ids 人员ids
+     * @return 返回装载着人员列表数据的data的String
+     */
+    public String getPersonnelByIdsFromPCS(List<Integer> ids) throws IOException {
+
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getPersonnelByIds")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
 }

+ 37 - 12
PAS/src/main/java/cn/cslg/pas/service/ProjectFieldService.java

@@ -9,6 +9,7 @@ import cn.cslg.pas.domain.*;
 import cn.cslg.pas.mapper.ProjectFieldMapper;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.lang.tree.Tree;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -18,6 +19,7 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -33,7 +35,6 @@ import java.util.stream.Collectors;
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, ProjectField> {
-
     private final ProjectFieldOptionService projectFieldOptionService;
     private final ProjectFieldTreeService projectFieldTreeService;
     private final ProjectFolderService projectFolderService;
@@ -42,6 +43,7 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
     private final PatentService patentService;
     private final FileUtils fileUtils;
     private final LoginUtils loginUtils;
+    private final OutInterfaceService outInterfaceService;
 
     public List<PatentDTO.Field> getPatentFieldByPatentIdAndProjectId(Integer projectId, Integer patentId) {
         List<PatentDTO.Field> dataList = new ArrayList<>();
@@ -80,11 +82,12 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
         });
         return dataList;
     }
-    public Map<Integer,List<PatentDTO.Field>> getPatentFieldByPatentIdAndProjectId2(Integer projectId, List<Integer> patentIds) {
-        Map<Integer,List<PatentDTO.Field>> map =new HashMap<>();
-        List<ProjectFieldPatentLink> linkList =new ArrayList<>();
+
+    public Map<Integer, List<PatentDTO.Field>> getPatentFieldByPatentIdAndProjectId2(Integer projectId, List<Integer> patentIds) {
+        Map<Integer, List<PatentDTO.Field>> map = new HashMap<>();
+        List<ProjectFieldPatentLink> linkList = new ArrayList<>();
         //根据专利号和专题库id获得所有自定义字段关联数据
-        if(patentIds.size()>0) {
+        if (patentIds.size() > 0) {
             LambdaQueryWrapper<ProjectFieldPatentLink> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(ProjectFieldPatentLink::getPatentId, patentIds);
             queryWrapper.eq(ProjectFieldPatentLink::getProjectId, projectId);
@@ -96,15 +99,15 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
         List<ProjectFieldOption> optionList = projectFieldOptionService.getFieldOptionList(fieldIds);
         List<ProjectFieldTree> treeList = projectFieldTreeService.getProjectFieldTreeOptionByFieldIds(fieldIds);
         //遍历专利
-        for(Integer patentId :patentIds){
+        for (Integer patentId : patentIds) {
             List<PatentDTO.Field> dataList = new ArrayList<>();
             //获得当前专利的关联信息
-            List<ProjectFieldPatentLink> temLinkList =linkList.stream().filter(item->item.getPatentId().equals(patentId)).collect(Collectors.toList());
+            List<ProjectFieldPatentLink> temLinkList = linkList.stream().filter(item -> item.getPatentId().equals(patentId)).collect(Collectors.toList());
             //过滤出当前专利的自定义栏位
-            List<Integer> temFieldIds =linkList.stream().filter(item->item.getPatentId().equals(patentId)).map(ProjectFieldPatentLink::getFieldId).distinct().collect(Collectors.toList());
-            List<ProjectField> temFieldList =fieldList.stream().filter(item->temFieldIds.contains(item.getId())).collect(Collectors.toList());
+            List<Integer> temFieldIds = linkList.stream().filter(item -> item.getPatentId().equals(patentId)).map(ProjectFieldPatentLink::getFieldId).distinct().collect(Collectors.toList());
+            List<ProjectField> temFieldList = fieldList.stream().filter(item -> temFieldIds.contains(item.getId())).collect(Collectors.toList());
             temFieldList.forEach(field -> {
-                List<Integer> valueIds =temLinkList.stream().filter(item->item.getFieldId().equals(field.getId())).map(ProjectFieldPatentLink::getOptionId).collect(Collectors.toList());
+                List<Integer> valueIds = temLinkList.stream().filter(item -> item.getFieldId().equals(field.getId())).map(ProjectFieldPatentLink::getOptionId).collect(Collectors.toList());
                 PatentDTO.Field data = new PatentDTO.Field();
                 data.setId(field.getId());
                 data.setName(field.getName());
@@ -130,10 +133,11 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
                 }
                 dataList.add(data);
             });
-            map.put(patentId,dataList);
+            map.put(patentId, dataList);
         }
         return map;
     }
+
     public List<ProjectField> getProjectFieldByProjectId(Integer projectId) {
         LambdaQueryWrapper<ProjectField> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ProjectField::getProjectId, projectId);
@@ -310,8 +314,29 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
         return projectField;
     }
 
-    public IPage<ProjectField> getPageList(ProjectFieldVO params) {
+    public IPage<ProjectField> getPageList(ProjectFieldVO params) throws IOException {
+        //分页查询列表
         IPage<ProjectField> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
+        //从分页信息中获取列表
+        List<ProjectField> projectFields = pageList.getRecords();
+        ArrayList<Integer> personnelIds = new ArrayList<>();
+        for (ProjectField projectField : projectFields) {
+            personnelIds.add(projectField.getCreateBy());
+        }
+        //调用权限系统根据人员ids获得人员列表的接口
+        String res = outInterfaceService.getPersonnelByIdsFromPCS(personnelIds);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        List<Personnel> personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+
+        //遍历人员列表和列表,给列表装载人员名称
+        for (ProjectField projectField : projectFields) {
+            for (Personnel personnel : personnels) {
+                if (personnel.getId().equals(projectField.getCreateBy())) {
+                    projectField.setCreateName(personnel.getPersonnelName());
+                }
+            }
+        }
+        pageList.setRecords(projectFields);
 
         return pageList;
     }

+ 26 - 2
PAS/src/main/java/cn/cslg/pas/service/ProjectFileService.java

@@ -6,12 +6,15 @@ import cn.cslg.pas.common.model.vo.ProjectFileVO;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.pas.domain.Personnel;
 import cn.cslg.pas.domain.ProjectFile;
 import cn.cslg.pas.mapper.ProjectFileMapper;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.IdUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -25,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import java.io.BufferedOutputStream;
 import java.io.File;
+import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
@@ -40,12 +44,32 @@ import java.util.List;
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ProjectFileService extends ServiceImpl<ProjectFileMapper, ProjectFile> {
-
     private final FileUtils fileUtils;
     private final LoginUtils loginUtils;
+    private final OutInterfaceService outInterfaceService;
 
-    public IPage<ProjectFile> getPageList(ProjectFileVO params) {
+    public IPage<ProjectFile> getPageList(ProjectFileVO params) throws IOException {
+        //分页查询列表
         IPage<ProjectFile> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
+        //从分页结果中获取列表
+        List<ProjectFile> projectFiles = pageList.getRecords();
+        ArrayList<Integer> personnelIds = new ArrayList<>();
+        for (ProjectFile projectFile : projectFiles) {
+            personnelIds.add(projectFile.getCreateBy());
+        }
+        //调用权限系统接口根据人员ids查询人员列表
+        String res = outInterfaceService.getPersonnelByIdsFromPCS(personnelIds);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        List<Personnel> personnels = JSON.parseArray(jsonObject.getString("data"), Personnel.class);
+        //遍历列表和人员列表,给列表装载人员名称
+        for (ProjectFile projectFile : projectFiles) {
+            for (Personnel personnel : personnels) {
+                if (personnel.getId().equals(projectFile.getCreateBy())) {
+                    projectFile.setCreateName(personnel.getPersonnelName());
+                }
+            }
+        }
+        pageList.setRecords(projectFiles);
 
         return pageList;
     }

+ 6 - 3
PAS/src/main/java/cn/cslg/pas/service/impl/StructureServiceImpl.java

@@ -316,10 +316,7 @@ public class StructureServiceImpl extends ServiceImpl<StructureMapper, Structure
                     );
                 }
         );
-        //若ids.size == 0,则表示根据名称模糊查询不到数据,则直接返回空structureVO
-        //if (structureVO != null) {
         diGui(structureVO, map, structureId, productId, ids);
-        //}
         return structureVO;
     }
 
@@ -454,6 +451,12 @@ public class StructureServiceImpl extends ServiceImpl<StructureMapper, Structure
         }
     }
 
+    /**
+     * 获得某产品的架构树路径键值对 (map存储所有架构id(key)和架构名称(value)的键值对)
+     *
+     * @param productId 产品id
+     * @return 返回map
+     */
     private HashMap<String, String> getStructureIdAndStructureNameMap(Integer productId) {
         List<StructureVO> structures = structureMapper.selectAllByProductId(productId);
         //map存储所有架构id(key)和架构名称(value)的键值对