From 18fe584df1cfb31114de3b2e5ae63a57cec10c21 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Tue, 15 Mar 2022 17:48:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=BA=93--=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BussDocumentLibraryEOServiceImpl.java | 4 +- .../controller/DocumentSearchController.java | 6 +- .../impl/DocumentSearchServiceImpl.java | 126 +++++++++++------- .../service/impl/IDocumentSearchService.java | 8 +- 4 files changed, 84 insertions(+), 60 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index f353ab82a..297faebdf 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -1808,7 +1808,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl sysDictItems, Map.Entry entry, List collect, String cut) { + public void dictItem(List sysDictItems, Map.Entry entry, List collect, String cut) { Map map = new HashMap<>(); //通过dictField判断字段是否为下拉选(不为空则为下拉选) if (collect.size() != 0 && StringUtils.isNotBlank(collect.get(0).getDictField())) { @@ -2590,7 +2590,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl categoryList, Map.Entry entry, List treeFieldList, String cut) { + public void treeDictItem(List categoryList, Map.Entry entry, List treeFieldList, String cut) { List treeFields = treeFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList()); String key = entry.getKey(); if (treeFields.contains(entry.getKey())) { diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/controller/DocumentSearchController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/controller/DocumentSearchController.java index 35b52ebdd..f9e61172a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/controller/DocumentSearchController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/controller/DocumentSearchController.java @@ -1,9 +1,8 @@ package com.jero.modules.searchcenter.controller; -import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.AutoLog; -import com.jero.modules.searchcenter.service.impl.DocumentSearchServiceImpl; import com.jero.modules.searchcenter.service.impl.IDocumentSearchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -14,7 +13,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -66,7 +64,7 @@ public class DocumentSearchController { @ApiOperation(value="列表查询", notes="列表查询") @GetMapping(value = "/getInfoList") public Result getInfoList(@RequestParam Map map) { - JSONObject infoList = iDocumentSearchService.getInfoList(map); + IPage infoList = iDocumentSearchService.getInfoList(map); return Result.OK(infoList); } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java index 7649620b2..5410fe20f 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java @@ -1,27 +1,29 @@ package com.jero.modules.searchcenter.service.impl; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.constant.enums.ModuleEnum; import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.es.JeroElasticsearchTemplate; -import com.jero.common.es.QueryStringBuilder; import com.jero.generater.modules.online.cgform.entity.OnlCgformField; import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl; import com.jero.modules.document.enums.FieldTypeEnum; import com.jero.modules.document.service.IBussDocumentLibraryEOService; -import io.swagger.annotations.ApiOperation; +import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; +import com.jero.modules.system.entity.SysCategory; +import com.jero.modules.system.entity.SysDictItem; +import com.jero.modules.system.service.impl.SysCategoryServiceImpl; +import com.jero.modules.system.service.impl.SysDictItemServiceImpl; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.PostMapping; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -37,24 +39,29 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { private JeroElasticsearchTemplate jeroElasticsearchTemplate; @Autowired private OnlCgformFieldServiceImpl onlCgformFieldService; - + @Autowired + private SysCategoryServiceImpl sysCategoryService; + @Autowired + private SysDictItemServiceImpl sysDictItemServiceImpl; + @Autowired + private BussDocumentLibraryEOServiceImpl bussDocumentLibraryEOService; @Override - public List> queryCondition(String flag, String cut,String searchFlag) { + public List> queryCondition(String flag, String cut, String searchFlag) { List> mapList = iBussDocumentLibraryEOService.queryCondition(flag, cut, searchFlag); //type = 0时,查询下拉,树形,日期等字段 type = 1时,查询输入框字段 return mapList; } @Override - public List> getHeader(String flag, String cut,String searchFlag) { + public List> getHeader(String flag, String cut, String searchFlag) { List> header = iBussDocumentLibraryEOService.getHeader(flag, cut, searchFlag); return header; } @Override - public JSONObject getInfoList(Map map) { + public IPage getInfoList(Map map) { //文档库所有的字段 List fieldList = onlCgformFieldService.getFieldList(ModuleEnum.DOCUMENT_LIBRARY.getValue()); //需要查询的列表字段 @@ -77,77 +84,96 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { .collect(Collectors.toList()); List otherFieldList = otherOnlCgformFieldList.stream().map(OnlCgformField::getDbFieldEnName).collect(Collectors.toList()); - Map inputMap = new HashMap<>();//条件内容为输入框的 - Map otherMap = new HashMap<>();//条件内容为下拉,日期,树形 + //过滤出下拉选 + List onlCgformFieldList = fieldList.stream() + .filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType()) + || FieldTypeEnum.PULL_MORE.getValue().equals(e.getFieldShowType())) + .collect(Collectors.toList()); + //下拉选字段 + List fieldPullList = onlCgformFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList()); + + //过滤出树形字段 + List treeFieldList = fieldList.stream() + .filter(e -> FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType())) + .collect(Collectors.toList()); + + Map inputMap = new HashMap<>();//条件内容为输入框的 + Map otherMap = new HashMap<>();//条件内容为下拉,日期,树形 //区分输入框和下拉,树形,日期等字段 - if(ObjectUtils.isNotEmpty(map)){ + if (ObjectUtils.isNotEmpty(map)) { for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); - if(inputFieldList.contains(key)){ - inputMap.put(key,value); + if (inputFieldList.contains(key)) { + inputMap.put(key, value); } - if(otherFieldList.contains(key)){ - otherMap.put(key,value); + if (otherFieldList.contains(key)) { + otherMap.put(key, value); } } } JSONArray should = new JSONArray(); //封装输入框查询条件 - if(ObjectUtils.isNotEmpty(inputMap)){ - Map queryMap = new HashMap<>(); + if (ObjectUtils.isNotEmpty(inputMap)) { + Map queryMap = new HashMap<>(); for (Map.Entry entry : inputMap.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); - Map queryMapTemp = new HashMap<>(); - queryMapTemp.put(key,value); - queryMap.put("match",queryMapTemp); + Map queryMapTemp = new HashMap<>(); + queryMapTemp.put(key, value); + queryMap.put("match", queryMapTemp); } } //封装下拉,树形,日期查询条件 JSONArray must = new JSONArray(); - if(ObjectUtils.isNotEmpty(otherMap)){ + if (ObjectUtils.isNotEmpty(otherMap)) { for (Map.Entry entry : otherMap.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); - Map queryMap = new HashMap<>(); - Map queryMapTemp = new HashMap<>(); - queryMapTemp.put(key,value); - queryMap.put("match",queryMapTemp); + Map queryMap = new HashMap<>(); + Map queryMapTemp = new HashMap<>(); + queryMapTemp.put(key, value); + queryMap.put("match", queryMapTemp); must.add(queryMap); } } // String indexName = "documentLibrary"; // String typeName = "document"; - JSONObject search = null; - try { - //封装查询条件 + //封装查询条件 + JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(must, null, null); -// Map queryMap = new HashMap<>(); -// Map queryMap2 = new HashMap<>(); -// queryMap2.put("serial_number","1332"); -// queryMap.put("term",queryMap2); -// must.add(queryMap); - - // - JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(must, null, null); - - //封装分页和字段值 -// JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(sourceList, jsonObject,null, 0,10); - JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(sourceList, jsonObject,null, Integer.parseInt(map.get("pageNo").toString()),Integer.parseInt(map.get("pageSize").toString())); + //封装分页和字段值 + JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(sourceList, jsonObject, null, Integer.parseInt(map.get("pageNo").toString()), Integer.parseInt(map.get("pageSize").toString())); // - //数据查询 - search = jeroElasticsearchTemplate.search("documentLibrary", "document", queryObject); -// Map map1 = JSONObject.parseObject(search.toJSONString(), Map.class); -// String s = search.toJSONString(); -// Map map2 = JSON.parseObject(search.toJSONString(), Map.class); -// List> list = ((Map) search.get("hits")).get("hits"); - } catch (Exception e) { - e.printStackTrace(); + //数据查询 + JSONObject search = jeroElasticsearchTemplate.search("documentLibrary", "document", queryObject); + //处理数据字典 + List sysDictItems = sysDictItemServiceImpl.selectItemsAll();//下拉数据字典 + List categoryList = sysCategoryService.list();//树形数据字典 + List> list = (List>) (((Map) search.get("hits")).get("hits")); + List> mapList = new ArrayList<>(); + for (Map stringObjectMap : list) { + Map mapTemp = (Map) stringObjectMap.get("_source"); + mapList.add(mapTemp); + mapTemp.entrySet().forEach(entry -> { + //下拉选处理数据字典 + bussDocumentLibraryEOService.treeDictItem(categoryList, entry, treeFieldList, (String) map.get("cut")); + }); + + //下拉单选和下拉多选数据字典处理 + mapTemp.entrySet().forEach(entry -> { + if (fieldPullList.contains(entry.getKey())) { + //下拉选处理数据字典 + bussDocumentLibraryEOService.dictItem(sysDictItems, entry, onlCgformFieldList, (String) map.get("cut")); + } + }); } - return search; + IPage page = new Page(Integer.parseInt(map.get("pageNo").toString()), Integer.parseInt(map.get("pageSize").toString())); + page.setTotal(Long.parseLong(String.valueOf(((Map) search.get("hits")).get("total")))); + page.setRecords(mapList); + return page; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/IDocumentSearchService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/IDocumentSearchService.java index 4e8e3611a..efc050a9e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/IDocumentSearchService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/IDocumentSearchService.java @@ -1,6 +1,6 @@ package com.jero.modules.searchcenter.service.impl; -import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; import java.util.Map; @@ -12,10 +12,10 @@ import java.util.Map; */ public interface IDocumentSearchService { - List> queryCondition(String flag, String cut,String searchFlag); + List> queryCondition(String flag, String cut, String searchFlag); - List> getHeader(String flag, String cut,String searchFla); + List> getHeader(String flag, String cut, String searchFla); - JSONObject getInfoList(Map map); + IPage getInfoList(Map map); }