Quellcode durchsuchen

标注库二次检索功能

chendayu vor 2 Jahren
Ursprung
Commit
3fa7a08395

+ 3 - 18
PAS/src/main/java/cn/cslg/pas/common/model/dto/QueryGroupScratchsDTO.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.common.model.dto;
 
+import cn.cslg.pas.domain.SearchItem;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -20,24 +21,8 @@ public class QueryGroupScratchsDTO extends PageDTO2 implements Serializable {
      */
     private String grouping;
     /**
-     * 标注内容
+     * 检索信息
      */
-    private String remark;
-    /**
-     * 专利号
-     */
-    private String patentNo;
-    /**
-     * 标注人
-     */
-    private String name;
-    /**
-     * 标注时间
-     */
-    private String date;
-    /**
-     * 标注人ids(根据标注人name手动调用权限系统获取人员ids)
-     */
-    private List<Integer> personIds;
+    private List<SearchItem> search;
 
 }

+ 3 - 22
PAS/src/main/java/cn/cslg/pas/common/model/dto/QueryScratchsDTO.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.common.model.dto;
 
+import cn.cslg.pas.domain.SearchItem;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -16,28 +17,8 @@ import java.util.List;
 @Data
 public class QueryScratchsDTO extends PageDTO2 implements Serializable {
     /**
-     * 分组字段
+     * 检索信息
      */
-    //private String grouping;
-    /**
-     * 标注内容
-     */
-    private String remark;
-    /**
-     * 专利号
-     */
-    private String patentNo;
-    /**
-     * 标注人
-     */
-    private String name;
-    /**
-     * 标注时间
-     */
-    private String date;
-    /**
-     * 标注人ids(根据标注人name手动调用权限系统获取人员ids)
-     */
-    private List<Integer> personIds;
+    private List<SearchItem> search;
 
 }

+ 26 - 0
PAS/src/main/java/cn/cslg/pas/domain/SearchItem.java

@@ -0,0 +1,26 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 检索项
+ *
+ * @Author chenyu
+ * @Date 2023/8/16
+ */
+@Accessors(chain = true)
+@Data
+public class SearchItem implements Serializable {
+    /**
+     * 检索字段(如:remark标注、patentNo专利号、name标注人、date标注日期)
+     */
+    private String value;
+    /**
+     * 检索内容(如:标注abc)
+     */
+    private String content;
+
+}

+ 3 - 2
PAS/src/main/java/cn/cslg/pas/mapper/ScratchWordsMapper.java

@@ -7,6 +7,7 @@ import cn.cslg.pas.common.model.vo.ScratchWordsVO;
 import cn.cslg.pas.domain.AdminUser;
 import cn.cslg.pas.domain.GroupName;
 import cn.cslg.pas.domain.ScratchWords;
+import cn.cslg.pas.domain.SearchItem;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 import java.util.List;
@@ -30,8 +31,8 @@ public interface ScratchWordsMapper extends BaseMapper<ScratchWords> {
      */
     List<ScratchWordsVO> querySW(String patentNo, Integer tenantId, Integer createId, Integer projectId, Integer reportId);
 
-    List<ScratchWordVO> queryScratchWords(QueryScratchsDTO queryScratchsDTO, Integer tenantId, Integer personId, List<Integer> projectIds, List<Integer> reportIds);
+    List<ScratchWordVO> queryScratchWords(List<Integer> createIds, List<SearchItem> search, Integer tenantId, Integer personId, List<Integer> projectIds, List<Integer> reportIds);
 
-    List<GroupName> queryGroupScratchs(QueryGroupScratchsDTO queryGroupScratchsDTO, Integer tenantId, Integer personId, List<Integer> projectIds, List<Integer> reportIds);
+    List<GroupName> queryGroupScratchs(List<Integer> createIds, List<SearchItem> search, String grouping, Integer tenantId, Integer personId, List<Integer> projectIds, List<Integer> reportIds);
 
 }

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

@@ -55,6 +55,21 @@ public class OutInterfaceService {
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
+    public String getPersonIdByNamesPCS(List<String> personNames) throws IOException {
+        String param = new Gson().toJson(personNames);
+        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/getPersonIdByNames")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
     /**
      * 根据人员ids查询人员列表
      *

+ 19 - 24
PAS/src/main/java/cn/cslg/pas/service/ScratchWordsService.java

@@ -142,28 +142,22 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
     public PageVO queryScratchs(QueryScratchsDTO queryScratchsDTO) throws IOException {
         log.info("开始处理【查询标注清单】的业务,参数为:{}", queryScratchsDTO);
 
-        //若有检索筛选,将检索框里的专利号或标注内容去除两端空格
-        if (queryScratchsDTO.getPatentNo() != null) {
-            queryScratchsDTO.setPatentNo(queryScratchsDTO.getPatentNo().trim());
-        }
-        if (queryScratchsDTO.getRemark() != null) {
-            queryScratchsDTO.setRemark(queryScratchsDTO.getRemark().trim());
+        List<SearchItem> search = queryScratchsDTO.getSearch();
+        List<String> names = search.stream().filter(searchItem -> searchItem.getValue().equals("name")).map(SearchItem::getContent).collect(Collectors.toList());
+        List<Integer> personIds = new ArrayList<>();
+        if (names.size() > 0) {
+            //若根据创建人名称模糊查询,调用权限系统根据人员名称获得人员ids并装载到参数中
+            String res = outInterfaceService.getPersonIdByNamesPCS(names);
+            personIds = JSON.parseArray(res, Integer.class);
+            if (personIds.size() == 0) {
+                personIds.add(-1);
+            }
         }
 
         PageVO pageVO = new PageVO()
                 .setCurrent(queryScratchsDTO.getCurrent())
                 .setSize(queryScratchsDTO.getSize());
 
-        //若根据创建人名称模糊查询,调用权限系统根据人员名称获得人员ids并装载到参数中
-        if (queryScratchsDTO.getName() != null && !queryScratchsDTO.getName().equals("")) {
-            String res = outInterfaceService.getPersonIdByNamePCS(queryScratchsDTO.getName());
-            List<Integer> personIds = JSON.parseArray(res, Integer.class);
-            if (personIds.size() == 0) {
-                personIds.add(-1);
-            }
-            queryScratchsDTO.setPersonIds(personIds);
-        }
-
         //获取登陆人id、所属租户id、token
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         Integer personId = personnelVO.getId();
@@ -197,7 +191,7 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
             PageHelper.startPage(queryScratchsDTO.getCurrent(), queryScratchsDTO.getSize());
         }
 //        if (queryScratchsDTO.getGrouping() == null || queryScratchsDTO.getGrouping().equals("")) {  //不分组
-        List<ScratchWordVO> scratchWords = scratchWordsMapper.queryScratchWords(queryScratchsDTO, tenantId, personId, projectIds, reportIds);
+        List<ScratchWordVO> scratchWords = scratchWordsMapper.queryScratchWords(personIds, search, tenantId, personId, projectIds, reportIds);
         PageInfo<ScratchWordVO> pageInfo = new PageInfo<>(scratchWords);
         if (scratchWords.size() > 0) {
             //装载创建人名称
@@ -253,15 +247,16 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
     public PageVO queryGroupScratchs(QueryGroupScratchsDTO queryGroupScratchsDTO) throws IOException {
         log.info("开始处理【分页分组查询标注清单】的业务,参数为:{}", queryGroupScratchsDTO);
 
-        //调用权限系统根据人员名称获得人员ids
-        if (queryGroupScratchsDTO.getName() != null && !queryGroupScratchsDTO.getName().equals("")) {
-            String res = outInterfaceService.getPersonIdByNamePCS(queryGroupScratchsDTO.getName());
-            //JSONObject jsonObject = JSONObject.parseObject(res);
-            List<Integer> personIds = JSON.parseArray(res, Integer.class);
+        List<SearchItem> search = queryGroupScratchsDTO.getSearch();
+        List<String> names = search.stream().filter(searchItem -> searchItem.getValue().equals("name")).map(SearchItem::getContent).collect(Collectors.toList());
+        List<Integer> personIds = new ArrayList<>();
+        if (names.size() > 0) {
+            //若根据创建人名称模糊查询,调用权限系统根据人员名称获得人员ids并装载到参数中
+            String res = outInterfaceService.getPersonIdByNamesPCS(names);
+            personIds = JSON.parseArray(res, Integer.class);
             if (personIds.size() == 0) {
                 personIds.add(-1);
             }
-            queryGroupScratchsDTO.setPersonIds(personIds);
         }
 
         //获取登陆人id和所属租户id
@@ -290,7 +285,7 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
         if (queryGroupScratchsDTO.getCurrent() != null && queryGroupScratchsDTO.getSize() != null) {
             PageHelper.startPage(queryGroupScratchsDTO.getCurrent(), queryGroupScratchsDTO.getSize());
         }
-        List<GroupName> groupNames = scratchWordsMapper.queryGroupScratchs(queryGroupScratchsDTO, tenantId, personId, projectIds, reportIds);
+        List<GroupName> groupNames = scratchWordsMapper.queryGroupScratchs(personIds, search, queryGroupScratchsDTO.getGrouping(), tenantId, personId, projectIds, reportIds);
         PageInfo<GroupName> pageInfo = new PageInfo<>(groupNames);
 
         if (groupNames.size() > 0) {

+ 33 - 25
PAS/src/main/resources/mapper/ScratchWordsMapper.xml

@@ -112,22 +112,26 @@
                 or(create_from = 0 and permission_type = 0 and create_id = #{personId})
                 )
             </if>
-            <if test="queryScratchsDTO.remark != null and queryScratchsDTO.remark != ''">
-                and remark like '%${queryScratchsDTO.remark}%'
-            </if>
-            <if test="queryScratchsDTO.patentNo != null and queryScratchsDTO.patentNo != ''">
-                and patent_no like '%${queryScratchsDTO.patentNo}%'
+            <if test="search != null and search.size > 0">
+                <foreach collection="search" item="searchItem">
+                    <if test="searchItem.value == 'remark'">
+                        and remark like '%${searchItem.content}%'
+                    </if>
+                    <if test="searchItem.value == 'patentNo'">
+                        and patent_no like '%${searchItem.content}%'
+                    </if>
+                    <if test="searchItem.value == 'date'">
+                        and create_time like '%${searchItem.content}%'
+                    </if>
+                </foreach>
             </if>
-            <if test="queryScratchsDTO.personIds != null and queryScratchsDTO.personIds.size > 0">
+            <if test="createIds != null and createIds.size > 0">
                 and create_id in (
-                <foreach collection="queryScratchsDTO.personIds" item="n" separator=",">
-                    #{n}
+                <foreach collection="createIds" item="createId" separator=",">
+                    #{createId}
                 </foreach>
                 )
             </if>
-            <if test="queryScratchsDTO.date != null and queryScratchsDTO.date != ''">
-                and create_time like '%${queryScratchsDTO.date}%'
-            </if>
         </where>
         order by create_time desc
     </select>
@@ -192,31 +196,35 @@
                 or(create_from = 0 and permission_type = 0 and create_id = #{personId})
                 )
             </if>
-            <if test="queryGroupScratchsDTO.remark != null and queryGroupScratchsDTO.remark != ''">
-                and remark like '%${queryGroupScratchsDTO.remark}%'
-            </if>
-            <if test="queryGroupScratchsDTO.patentNo != null and queryGroupScratchsDTO.patentNo != ''">
-                and patent_no like '%${queryGroupScratchsDTO.patentNo}%'
+            <if test="search != null and search.size > 0">
+                <foreach collection="search" item="searchItem">
+                    <if test="searchItem.value == 'remark'">
+                        and remark like '%${searchItem.content}%'
+                    </if>
+                    <if test="searchItem.value == 'patentNo'">
+                        and patent_no like '%${searchItem.content}%'
+                    </if>
+                    <if test="searchItem.value == 'date'">
+                        and create_time like '%${searchItem.content}%'
+                    </if>
+                </foreach>
             </if>
-            <if test="queryGroupScratchsDTO.personIds != null and queryGroupScratchsDTO.personIds.size > 0">
+            <if test="createIds != null and createIds.size > 0">
                 and create_id in (
-                <foreach collection="queryGroupScratchsDTO.personIds" item="n" separator=",">
-                    #{n}
+                <foreach collection="createIds" item="createId" separator=",">
+                    #{createId}
                 </foreach>
                 )
             </if>
-            <if test="queryGroupScratchsDTO.date != null and queryGroupScratchsDTO.date != ''">
-                and create_time like '%${queryGroupScratchsDTO.date}%'
-            </if>
         </where>
         group by
-        <if test="queryGroupScratchsDTO.grouping != null and queryGroupScratchsDTO.grouping == 'name'">
+        <if test="grouping != null and grouping == 'name'">
             create_id
         </if>
-        <if test="queryGroupScratchsDTO.grouping != null and queryGroupScratchsDTO.grouping == 'patentNo'">
+        <if test="grouping != null and grouping == 'patentNo'">
             patent_no
         </if>
-        <if test="queryGroupScratchsDTO.grouping != null and queryGroupScratchsDTO.grouping == 'date'">
+        <if test="grouping != null and grouping == 'date'">
             YmD
         </if>
         order by create_time desc