yp před 3 roky
rodič
revize
1d199d241e

+ 13 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/dao/ElkDao.java

@@ -54,4 +54,17 @@ public interface ElkDao {
 	List<Map<String, Object>> getPubs();
 
 	List<Map<String, Object>> getPub();
+
+	/**
+	 * 获取第一级主题分类
+	 * @return
+	 */
+	List<Map<String, Object>> getFirstChildType();
+
+	/**
+	 * 获取第二级主题分类
+	 * @param id
+	 * @return
+	 */
+	List<Map<String, Object>> getSecondChildType(@Param("id") Integer id);
 }

+ 465 - 395
nngkxxdp/src/main/java/com/example/nngkxxdp/elk/ElkController.java

@@ -34,419 +34,489 @@ import com.example.nngkxxdp.util.ConstStr;
 import com.example.nngkxxdp.util.SendUtil;
 
 /**
-* @author Mr.wang
-* @version 1.0.0
-* @date 2021年12月10日 下午2:41:31
-* @Description
-*/
+ * @author Mr.wang
+ * @version 1.0.0
+ * @date 2021年12月10日 下午2:41:31
+ * @Description
+ */
 @RestController
 @RequestMapping("elk")
 public class ElkController {
 
-	@Autowired
-	private ElkService elkService;
-
-	@Autowired
-	private RestHighLevelClient restHighLevelClient;
-
-	@Value("${elasticsearch.index}")
-	private String elkIndex;
-	@Value("${elasticsearch.index2}")
-	private String artIndex;
-
-	/**
-	 * 搜索字段
-	 */
-	private String[] query = new String[] {"title", "content"};
-
-	/**
-	 * 部门字段
-	 */
-	private String deptName = "departmentname.keyword";
-	private String pubOrg = "puborg.keyword";
-
-	/**
-	 * 热门字段
-	 */
-	private String hotArticle = "e_top";
-
-	/**
-	 * 排序字段
-	 */
-	private String publishTime = "sorttime";
-	private String pubTimeStr = "pubtimestr.keyword";
-
-	/**
-	 * 关键词搜索
-	 * @param page
-	 * @param limit
-	 * @param content
-	 * @param dept
-	 * @return
-	 * @throws IOException
-	 */
-	@GetMapping("search")
-	public Map<String, Object> search(Integer page, Integer limit, String content, String dept) throws IOException {
-		if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
-			return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
-		}
-		SearchRequest searchRequest = new SearchRequest(elkIndex);
-
-
-		// 创建搜索条件
-		SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
-
-		// 多条件
-		BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
-
-		List<QueryBuilder> list = boolQueryBuilder.must();
-		// 搜索标题和内容
-		if (Blank.notBlank(content)) {
-			Map<String,Float> fields = new HashMap<>(2);
-		    fields.put(query[0], 5.0f);
-		    fields.put(query[1], 1.0f);
-			list.add(QueryBuilders.multiMatchQuery(content, query).fields(fields));
-		}
-		if (Blank.notBlank(dept)) {
-			// 查询对应部门
-			List<String> oldDept = elkService.getDeptName(dept);
-			// 搜索部门
-			System.err.println(oldDept);
-			BoolQueryBuilder boolQueryBuilder2 = new BoolQueryBuilder();
-			List<QueryBuilder> should = boolQueryBuilder2.should();
-			if (Blank.notBlank(oldDept)) {
-				for (String depts : oldDept) {
-					if (Blank.notBlank(depts)) {
-						should.add(QueryBuilders.matchQuery(deptName, depts));
-					}
-				}
-			}
-			should.add(QueryBuilders.matchQuery(deptName, dept));
-			list.add(boolQueryBuilder2);
-		}
-		if (Blank.notBlank(content) || Blank.notBlank(dept)) {
-			searchSourceBuilder.query(boolQueryBuilder);
-		}
-		if (Blank.notBlank(content)) {
-			// 添加高亮显示
-			HighlightBuilder hb = new HighlightBuilder();
-			hb.preTags("<span style=\"color:red !important;\">");
-			hb.postTags("</span>");
-			for (int i = 0; i < query.length; i++) {
-				hb.field(query[i]);
-			}
-			searchSourceBuilder.highlighter(hb);
-		}
-		// 排序
-		searchSourceBuilder.sort("_score", SortOrder.DESC);
-		searchSourceBuilder.sort(publishTime, SortOrder.DESC);
-		// 开始位置
-		searchSourceBuilder.from((page - 1) * limit);
-		// 查询条数
-		searchSourceBuilder.size(limit);
-		searchRequest.source(searchSourceBuilder);
+    @Autowired
+    private ElkService elkService;
+
+    @Autowired
+    private RestHighLevelClient restHighLevelClient;
+
+    @Value("${elasticsearch.index}")
+    private String elkIndex;
+    @Value("${elasticsearch.index2}")
+    private String artIndex;
+
+    /**
+     * 搜索字段
+     */
+    private String[] query = new String[]{"title", "summary"};
+
+    /**
+     * 部门字段
+     */
+    private String deptName = "departmentname.keyword";
+    private String pubOrg = "puborg.keyword";
+    /**
+     * 文件类型
+     */
+    private String articleType = "artical_type";
+    private String childType = "childtype.keyword";
+    /**
+     * 热门字段
+     */
+    private String hotArticle = "e_top";
+
+    /**
+     * 排序字段
+     */
+    private String publishTime = "sorttime";
+    private String pubTimeStr = "pubtimestr.keyword";
+
+    /**
+     * 关键词搜索
+     *
+     * @param page
+     * @param limit
+     * @param content
+     * @param dept
+     * @return
+     * @throws IOException
+     */
+    @GetMapping("search")
+    public Map<String, Object> search(Integer page, Integer limit, String content, String dept) throws IOException {
+        if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
+            return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+        }
+        SearchRequest searchRequest = new SearchRequest(elkIndex);
+
+
+        // 创建搜索条件
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+
+        // 多条件
+        BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
+
+        List<QueryBuilder> list = boolQueryBuilder.must();
+        // 搜索标题和内容
+        if (Blank.notBlank(content)) {
+            Map<String, Float> fields = new HashMap<>(2);
+            fields.put(query[0], 5.0f);
+            fields.put(query[1], 1.0f);
+            list.add(QueryBuilders.multiMatchQuery(content, query).fields(fields));
+        }
+        if (Blank.notBlank(dept)) {
+            // 查询对应部门
+            List<String> oldDept = elkService.getDeptName(dept);
+            // 搜索部门
+            System.err.println(oldDept);
+            BoolQueryBuilder boolQueryBuilder2 = new BoolQueryBuilder();
+            List<QueryBuilder> should = boolQueryBuilder2.should();
+            if (Blank.notBlank(oldDept)) {
+                for (String depts : oldDept) {
+                    if (Blank.notBlank(depts)) {
+                        should.add(QueryBuilders.matchQuery(deptName, depts));
+                    }
+                }
+            }
+            should.add(QueryBuilders.matchQuery(deptName, dept));
+            list.add(boolQueryBuilder2);
+        }
+        if (Blank.notBlank(content) || Blank.notBlank(dept)) {
+            searchSourceBuilder.query(boolQueryBuilder);
+        }
+        if (Blank.notBlank(content)) {
+            // 添加高亮显示
+            HighlightBuilder hb = new HighlightBuilder();
+            hb.preTags("<span style=\"color:red !important;\">");
+            hb.postTags("</span>");
+            for (int i = 0; i < query.length; i++) {
+                hb.field(query[i]);
+            }
+            searchSourceBuilder.highlighter(hb);
+        }
+        // 排序
+        searchSourceBuilder.sort("_score", SortOrder.DESC);
+        searchSourceBuilder.sort(publishTime, SortOrder.DESC);
+        // 开始位置
+        searchSourceBuilder.from((page - 1) * limit);
+        // 查询条数
+        searchSourceBuilder.size(limit);
+        searchRequest.source(searchSourceBuilder);
 //		SearchHit[] s = getAllTitle(page, limit, content, dept);
 //		if (s == null) {
-			// 执行搜索
-			SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
-			SearchHit[] s = searchResponse.getHits().getHits();
+        // 执行搜索
+        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
+        SearchHit[] s = searchResponse.getHits().getHits();
 //		}
-		JSONArray array = new JSONArray();
-		JSONArray highlightArr = new JSONArray();
-		for (int i = 0; i < s.length; i++) {
+        JSONArray array = new JSONArray();
+        JSONArray highlightArr = new JSONArray();
+        for (int i = 0; i < s.length; i++) {
 //			System.err.println(s[i]);
-			Map<String, HighlightField> hig = s[i].getHighlightFields();
+            Map<String, HighlightField> hig = s[i].getHighlightFields();
 //			System.err.println(s[i].getHighlightFields());
-			JSONObject jsonObject = JSONObject.parseObject(s[i].toString());
-			JSONObject obj = jsonObject.getJSONObject("_source");
-			String str = JSONObject.toJSONString(obj);
-			highlightArr.add(JSONObject.parse(str));
-			for (String key : hig.keySet()){
-				jsonObject.getJSONObject("_source").put(key, hig.get(key).getFragments()[0].toString());
-			}
-			array.add(jsonObject);
-		}
-		Map<String, Object> map = new HashMap<>();
-		map.put("data", array);
-		map.put("highlightArr", highlightArr);
-		return SendUtil.send(true, null, map);
-
-	}
-
-	public SearchHit[] getAllTitle(Integer page, Integer limit, String content, String dept) throws IOException {
-		SearchRequest searchRequest = new SearchRequest(elkIndex);
-		// 创建搜索条件
-		SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
-
-		// 多条件
-		BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
-
-		List<QueryBuilder> list = boolQueryBuilder.must();
-		// 搜索标题和内容
-		if (Blank.notBlank(content)) {
-			list.add(QueryBuilders.matchQuery(query[0] + ".keyword", content));
-		}
-		if (Blank.notBlank(dept)) {
-			// 查询对应部门
-			List<String> oldDept = elkService.getDeptName(dept);
-			// 搜索部门
-			BoolQueryBuilder boolQueryBuilder2 = new BoolQueryBuilder();
-			List<QueryBuilder> should = boolQueryBuilder2.should();
-			if (Blank.notBlank(oldDept)) {
-				for (String depts : oldDept) {
-					should.add(QueryBuilders.matchQuery(deptName, depts));
-				}
-			} else {
-				should.add(QueryBuilders.matchQuery(deptName, dept));
-			}
-			list.add(boolQueryBuilder2);
-		}
-		if (Blank.notBlank(content) || Blank.notBlank(dept)) {
-			searchSourceBuilder.query(boolQueryBuilder);
-		}
-		if (Blank.notBlank(content)) {
-			// 添加高亮显示
-			HighlightBuilder hb = new HighlightBuilder();
-			hb.preTags("<span style=\"color:red !important;\">");
-			hb.postTags("</span>");
-			hb.field(query[0] + ".keyword");
-			searchSourceBuilder.highlighter(hb);
-		}
-		// 排序
-		searchSourceBuilder.sort(publishTime, SortOrder.DESC);
-		searchSourceBuilder.sort("_score", SortOrder.DESC);
-		// 开始位置
-		searchSourceBuilder.from((page - 1) * limit);
-		// 查询条数
-		searchSourceBuilder.size(limit);
-		searchRequest.source(searchSourceBuilder);
-		// 执行搜索
-		SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
-		SearchHit[] s = searchResponse.getHits().getHits();
-		if (s == null || s.length == 0) {
-			return null;
-		}
-		return s;
-	}
-
-	/**
-	 * 搜索热门文章
-	 * @param page
-	 * @param limit
-	 * @return
-	 * @throws IOException
-	 */
-	@GetMapping("searchHot")
-	public Map<String, Object> searchHot(Integer page, Integer limit) throws IOException {
-		if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
-			return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
-		}
-		SearchRequest searchRequest = new SearchRequest(elkIndex);
-
-		// 创建搜索条件
-		SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
-		// 搜索热门
-		searchSourceBuilder.query(QueryBuilders.termQuery(hotArticle, 1));
-		// 开始位置
-		searchSourceBuilder.from((page - 1) * limit);
-		// 查询条数
-		searchSourceBuilder.size(limit);
-		// 排序
+            JSONObject jsonObject = JSONObject.parseObject(s[i].toString());
+            JSONObject obj = jsonObject.getJSONObject("_source");
+            String str = JSONObject.toJSONString(obj);
+            highlightArr.add(JSONObject.parse(str));
+            for (String key : hig.keySet()) {
+                jsonObject.getJSONObject("_source").put(key, hig.get(key).getFragments()[0].toString());
+            }
+            array.add(jsonObject);
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", array);
+        map.put("highlightArr", highlightArr);
+        return SendUtil.send(true, null, map);
+
+    }
+
+    public SearchHit[] getAllTitle(Integer page, Integer limit, String content, String dept) throws IOException {
+        SearchRequest searchRequest = new SearchRequest(elkIndex);
+        // 创建搜索条件
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+
+        // 多条件
+        BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
+
+        List<QueryBuilder> list = boolQueryBuilder.must();
+        // 搜索标题和内容
+        if (Blank.notBlank(content)) {
+            list.add(QueryBuilders.matchQuery(query[0] + ".keyword", content));
+        }
+        if (Blank.notBlank(dept)) {
+            // 查询对应部门
+            List<String> oldDept = elkService.getDeptName(dept);
+            // 搜索部门
+            BoolQueryBuilder boolQueryBuilder2 = new BoolQueryBuilder();
+            List<QueryBuilder> should = boolQueryBuilder2.should();
+            if (Blank.notBlank(oldDept)) {
+                for (String depts : oldDept) {
+                    should.add(QueryBuilders.matchQuery(deptName, depts));
+                }
+            } else {
+                should.add(QueryBuilders.matchQuery(deptName, dept));
+            }
+            list.add(boolQueryBuilder2);
+        }
+        if (Blank.notBlank(content) || Blank.notBlank(dept)) {
+            searchSourceBuilder.query(boolQueryBuilder);
+        }
+        if (Blank.notBlank(content)) {
+            // 添加高亮显示
+            HighlightBuilder hb = new HighlightBuilder();
+            hb.preTags("<span style=\"color:red !important;\">");
+            hb.postTags("</span>");
+            hb.field(query[0] + ".keyword");
+            searchSourceBuilder.highlighter(hb);
+        }
+        // 排序
+        searchSourceBuilder.sort(publishTime, SortOrder.DESC);
+        searchSourceBuilder.sort("_score", SortOrder.DESC);
+        // 开始位置
+        searchSourceBuilder.from((page - 1) * limit);
+        // 查询条数
+        searchSourceBuilder.size(limit);
+        searchRequest.source(searchSourceBuilder);
+        // 执行搜索
+        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
+        SearchHit[] s = searchResponse.getHits().getHits();
+        if (s == null || s.length == 0) {
+            return null;
+        }
+        return s;
+    }
+
+    /**
+     * 搜索热门文章
+     *
+     * @param page
+     * @param limit
+     * @return
+     * @throws IOException
+     */
+    @GetMapping("searchHot")
+    public Map<String, Object> searchHot(Integer page, Integer limit) throws IOException {
+        if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
+            return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+        }
+        SearchRequest searchRequest = new SearchRequest(elkIndex);
+
+        // 创建搜索条件
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+        // 搜索热门
+        searchSourceBuilder.query(QueryBuilders.termQuery(hotArticle, 1));
+        // 开始位置
+        searchSourceBuilder.from((page - 1) * limit);
+        // 查询条数
+        searchSourceBuilder.size(limit);
+        // 排序
 //		searchSourceBuilder.sort("dataid", SortOrder.ASC);
 
-		Script script = new Script("Math.random()");
-	    ScriptSortBuilder sortBuilder = new ScriptSortBuilder(script, ScriptSortBuilder.ScriptSortType.NUMBER);
-	    searchSourceBuilder.sort(sortBuilder);
+        Script script = new Script("Math.random()");
+        ScriptSortBuilder sortBuilder = new ScriptSortBuilder(script, ScriptSortBuilder.ScriptSortType.NUMBER);
+        searchSourceBuilder.sort(sortBuilder);
 
-		searchRequest.source(searchSourceBuilder);
-		// 执行搜索
-		SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
-		SearchHit[] s = searchResponse.getHits().getHits();
-		JSONArray array = new JSONArray();
-		for (int i = 0; i < s.length; i++) {
+        searchRequest.source(searchSourceBuilder);
+        // 执行搜索
+        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
+        SearchHit[] s = searchResponse.getHits().getHits();
+        JSONArray array = new JSONArray();
+        for (int i = 0; i < s.length; i++) {
 //			System.err.println(s[i]);
-			array.add(s[i]);
-		}
-		Map<String, Object> map = new HashMap<>();
-		map.put("array", array);
-		map.put("count", elkService.getAnswerCount());
-		return SendUtil.send(true, null, map);
-	}
-
-	/**
-	 * 获取所有部门
-	 * @return
-	 */
-	@GetMapping("deptAll")
-	public Map<String, Object> deptAll() {
-		return SendUtil.send(true, null, elkService.deptAll());
-	}
-
-	/**
-	 * 保存提问信息
-	 * @param phone
-	 * @param remark
-	 * @param dept
-	 * @return
-	 */
-	@PostMapping("saveSub")
-	public Map<String, Object> saveSub(String phone, String remark, String dept) {
-		if (Blank.isEmpty(phone, remark, dept)) {
+            array.add(s[i]);
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("array", array);
+        map.put("count", elkService.getAnswerCount());
+        return SendUtil.send(true, null, map);
+    }
+
+    /**
+     * 获取所有部门
+     *
+     * @return
+     */
+    @GetMapping("deptAll")
+    public Map<String, Object> deptAll() {
+        return SendUtil.send(true, null, elkService.deptAll());
+    }
+
+    /**
+     * 保存提问信息
+     *
+     * @param phone
+     * @param remark
+     * @param dept
+     * @return
+     */
+    @PostMapping("saveSub")
+    public Map<String, Object> saveSub(String phone, String remark, String dept) {
+        if (Blank.isEmpty(phone, remark, dept)) {
+            return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+        }
+        return SendUtil.send(elkService.saveSub(phone, remark, dept));
+    }
+
+    /**
+     * 分页查询提问信息
+     *
+     * @param page
+     * @param limit
+     * @param search
+     * @param dept
+     * @return
+     */
+    @GetMapping("getPageSub")
+    public Map<String, Object> getPageSub(Integer page, Integer limit, String search, String dept, String time) {
+        if (Blank.isEmpty(page, limit)) {
             return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
         }
-		return SendUtil.send(elkService.saveSub(phone, remark, dept));
-	}
-
-	/**
-	 * 分页查询提问信息
-	 * @param page
-	 * @param limit
-	 * @param search
-	 * @param dept
-	 * @return
-	 */
-	@GetMapping("getPageSub")
-	public Map<String, Object> getPageSub(Integer page, Integer limit, String search, String dept, String time) {
-		if (Blank.isEmpty(page, limit)) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("page", (page - 1) * limit);
+        map.put("limit", limit);
+        map.put("search", search);
+        map.put("dept", dept);
+        map.put("time", time);
+        return elkService.getPageSub(map);
+    }
+
+    @GetMapping("getSubDeptAll")
+    public Map<String, Object> getSubDeptAll() {
+        return SendUtil.send(true, null, elkService.getSubDeptAll());
+    }
+
+    /**
+     * 搜索热门文件库
+     *
+     * @param page
+     * @param limit
+     * @return
+     * @throws IOException
+     */
+    @GetMapping("searchHotArticle")
+    public Map<String, Object> searchHotArticle(Integer page, Integer limit) throws IOException {
+        if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
             return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
         }
-		Map<String, Object> map = new HashMap<>();
-		map.put("page", (page - 1) * limit);
-		map.put("limit", limit);
-		map.put("search", search);
-		map.put("dept", dept);
-		map.put("time", time);
-		return elkService.getPageSub(map);
-	}
-
-	@GetMapping("getSubDeptAll")
-	public Map<String, Object> getSubDeptAll() {
-		return SendUtil.send(true, null, elkService.getSubDeptAll());
-	}
-
-	/**
-	 * 搜索热门文件库
-	 * @param page
-	 * @param limit
-	 * @return
-	 * @throws IOException
-	 */
-	@GetMapping("searchHotArticle")
-	public Map<String, Object> searchHotArticle(Integer page, Integer limit) throws IOException {
-		if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
-			return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
-		}
-		SearchRequest searchRequest = new SearchRequest(artIndex);
-		// 创建搜索条件
-		SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
-		// 搜索热门
-		searchSourceBuilder.query(QueryBuilders.termQuery(hotArticle, 1));
-		// 开始位置
-		searchSourceBuilder.from((page - 1) * limit);
-		// 查询条数
-		searchSourceBuilder.size(limit);
-		// 排序
+        SearchRequest searchRequest = new SearchRequest(artIndex);
+        // 创建搜索条件
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+        // 搜索热门
+        searchSourceBuilder.query(QueryBuilders.termQuery(hotArticle, 1));
+        // 开始位置
+        searchSourceBuilder.from((page - 1) * limit);
+        // 查询条数
+        searchSourceBuilder.size(limit);
+        // 排序
 //		searchSourceBuilder.sort("dataid", SortOrder.ASC);
-		Script script = new Script("Math.random()");
-		ScriptSortBuilder sortBuilder = new ScriptSortBuilder(script, ScriptSortBuilder.ScriptSortType.NUMBER);
-		searchSourceBuilder.sort(sortBuilder);
-		searchRequest.source(searchSourceBuilder);
-		// 执行搜索
-		SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
-		SearchHit[] s = searchResponse.getHits().getHits();
-		JSONArray array = new JSONArray();
-		for (int i = 0; i < s.length; i++) {
-			array.add(s[i]);
-		}
-		System.out.println(array.size());
-		Map<String, Object> map = new HashMap<>();
-		map.put("array", array);
+        Script script = new Script("Math.random()");
+        ScriptSortBuilder sortBuilder = new ScriptSortBuilder(script, ScriptSortBuilder.ScriptSortType.NUMBER);
+        searchSourceBuilder.sort(sortBuilder);
+        searchRequest.source(searchSourceBuilder);
+        // 执行搜索
+        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
+        SearchHit[] s = searchResponse.getHits().getHits();
+        JSONArray array = new JSONArray();
+        for (int i = 0; i < s.length; i++) {
+            array.add(s[i]);
+        }
+        System.out.println(array.size());
+        Map<String, Object> map = new HashMap<>();
+        map.put("array", array);
 //		map.put("count", elkService.getAnswerCount());
-		return SendUtil.send(true, null, map);
-	}
-
-	/**
-	 * 全文检索
-	 * @param page
-	 * @param limit
-	 * @param content
-	 * @return
-	 * @throws IOException
-	 */
-	@GetMapping("retrieval")
-	public Map<String, Object> retrieval(Integer page, Integer limit, String content, String orgName) throws IOException {
-		if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
-			return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
-		}
-		SearchRequest searchRequest = new SearchRequest(artIndex);
-		// 创建搜索条件
-		SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
-		// 多条件
-		BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
-		List<QueryBuilder> list = boolQueryBuilder.must();
-		// 搜索标题和内容
-		if (Blank.notBlank(content)) {
-			Map<String,Float> fields = new HashMap<>(2);
-			fields.put(query[0], 5.0f);
-			fields.put(query[1], 1.0f);
-			list.add(QueryBuilders.multiMatchQuery(content, query).fields(fields));
-		}
-		if (Blank.notBlank(orgName)) {
-			BoolQueryBuilder boolQueryBuilder2 = new BoolQueryBuilder();
-			List<QueryBuilder> should = boolQueryBuilder2.should();
-			should.add(QueryBuilders.matchQuery(pubOrg, orgName));
-			list.add(boolQueryBuilder2);
-		}
-		if (Blank.notBlank(content) || Blank.notBlank(orgName)) {
-			searchSourceBuilder.query(boolQueryBuilder);
-		}
-		if (Blank.notBlank(content)) {
-			// 添加高亮显示
-			HighlightBuilder hb = new HighlightBuilder();
-			hb.preTags("<span style=\"color:red !important;\">");
-			hb.postTags("</span>");
-			for (int i = 0; i < query.length; i++) {
-				hb.field(query[i]);
-			}
-			searchSourceBuilder.highlighter(hb);
-		}
-		// 排序
-		searchSourceBuilder.sort("_score", SortOrder.DESC);
-		searchSourceBuilder.sort(pubTimeStr, SortOrder.DESC);
-		// 开始位置
-		searchSourceBuilder.from((page - 1) * limit);
-		// 查询条数
-		searchSourceBuilder.size(limit);
-		searchRequest.source(searchSourceBuilder);
-		// 执行搜索
-		SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
-		SearchHit[] s = searchResponse.getHits().getHits();
-		JSONArray array = new JSONArray();
-		JSONArray highlightArr = new JSONArray();
-		for (int i = 0; i < s.length; i++) {
-			Map<String, HighlightField> hig = s[i].getHighlightFields();
-			JSONObject jsonObject = JSONObject.parseObject(s[i].toString());
-			JSONObject obj = jsonObject.getJSONObject("_source");
-			String str = JSONObject.toJSONString(obj);
-			highlightArr.add(JSONObject.parse(str));
-			for (String key : hig.keySet()){
-				jsonObject.getJSONObject("_source").put(key, hig.get(key).getFragments()[0].toString());
-			}
-			array.add(jsonObject);
-		}
-		Map<String, Object> map = new HashMap<>();
-		map.put("data", array);
-		map.put("highlightArr", highlightArr);
-		return SendUtil.send(true, null, map);
-	}
-
-	/**
-	 * 获取所有的发文机关
-	 * @return
-	 */
-	@GetMapping("getPubs")
-	public Map<String, Object> getPubs(){
-		return SendUtil.send(true, null, elkService.getPubs());
-	}
+        return SendUtil.send(true, null, map);
+    }
+
+    /**
+     * 全文检索
+     *
+     * @param page
+     * @param limit
+     * @param content
+     * @return
+     * @throws IOException
+     */
+    @GetMapping("retrieval")
+    public Map<String, Object> retrieval(Integer page, Integer limit, String content,
+                                         String orgName, Integer type, String childTypeName) throws IOException {
+        if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
+            return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+        }
+        SearchRequest searchRequest = new SearchRequest(artIndex);
+        // 创建搜索条件
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+        // 多条件
+        BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
+        List<QueryBuilder> list = boolQueryBuilder.must();
+        // 搜索标题和内容
+        if (Blank.notBlank(content)) {
+            Map<String, Float> fields = new HashMap<>(2);
+            fields.put(query[0], 5.0f);
+            fields.put(query[1], 1.0f);
+            list.add(QueryBuilders.multiMatchQuery(content, query).fields(fields));
+        }
 
+        if (Blank.notBlank(orgName)) {
+            if (!"全部".equals(orgName)) {
+                BoolQueryBuilder boolQueryBuilder2 = new BoolQueryBuilder();
+                List<QueryBuilder> should = boolQueryBuilder2.should();
+                should.add(QueryBuilders.matchQuery(pubOrg, orgName));
+                list.add(boolQueryBuilder2);
+            }
+        }
+        if (Blank.isEmpty(type)) {
+            type = 1;
+        }
+        BoolQueryBuilder boolQueryBuilder3 = new BoolQueryBuilder();
+        List<QueryBuilder> must = boolQueryBuilder3.must();
+        must.add(QueryBuilders.matchQuery(articleType, type));
+        list.add(boolQueryBuilder3);
+
+        // 搜索主题分类
+        if (Blank.notBlank(childTypeName)) {
+            if (childTypeName.indexOf("\\") != -1) {
+                childTypeName = childTypeName.replace("\\", "\\");
+            }
+            BoolQueryBuilder boolQueryBuilder4 = new BoolQueryBuilder();
+            List<QueryBuilder> should = boolQueryBuilder4.should();
+            should.add(QueryBuilders.matchQuery(childType, childTypeName));
+            list.add(boolQueryBuilder4);
+        }
+
+        if (Blank.notBlank(content) || Blank.notBlank(orgName)
+                || Blank.notBlank(type) || Blank.notBlank(childTypeName)) {
+            searchSourceBuilder.query(boolQueryBuilder);
+        }
+        System.out.println(boolQueryBuilder);
+        if (Blank.notBlank(content)) {
+            // 添加高亮显示
+            HighlightBuilder hb = new HighlightBuilder();
+            hb.preTags("<span style=\"color:red !important;\">");
+            hb.postTags("</span>");
+            for (int i = 0; i < query.length; i++) {
+                hb.field(query[i]);
+            }
+            searchSourceBuilder.highlighter(hb);
+        }
+        // 排序
+        searchSourceBuilder.sort("_score", SortOrder.DESC);
+        searchSourceBuilder.sort(pubTimeStr, SortOrder.DESC);
+        // 开始位置
+        searchSourceBuilder.from((page - 1) * limit);
+        // 查询条数
+        searchSourceBuilder.size(limit);
+        searchRequest.source(searchSourceBuilder);
+        System.out.println(searchSourceBuilder);
+        // 执行搜索
+        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
+        SearchHit[] s = searchResponse.getHits().getHits();
+        JSONArray array = new JSONArray();
+        JSONArray highlightArr = new JSONArray();
+        for (int i = 0; i < s.length; i++) {
+            Map<String, HighlightField> hig = s[i].getHighlightFields();
+            JSONObject jsonObject = JSONObject.parseObject(s[i].toString());
+            JSONObject obj = jsonObject.getJSONObject("_source");
+            String str = JSONObject.toJSONString(obj);
+            highlightArr.add(JSONObject.parse(str));
+            for (String key : hig.keySet()) {
+                jsonObject.getJSONObject("_source").put(key, hig.get(key).getFragments()[0].toString());
+            }
+            array.add(jsonObject);
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", array);
+        map.put("highlightArr", highlightArr);
+        return SendUtil.send(true, null, map);
+    }
+
+    /**
+     * 获取所有的发文机关
+     *
+     * @return
+     */
+    @GetMapping("getPubs")
+    public Map<String, Object> getPubs() {
+        return SendUtil.send(true, null, elkService.getPubs());
+    }
+
+    /**
+     * 获取第一级主题分类
+     *
+     * @return
+     */
+    @GetMapping("getFirstChildType")
+    public Map<String, Object> getFirstChildType() {
+        return SendUtil.send(true, null, elkService.getFirstChildType());
+    }
+
+    /**
+     * 获取第二级主题分类
+     *
+     * @return
+     */
+    @GetMapping("getSecondChildType")
+    public Map<String, Object> getSecondChildType(Integer id) {
+        if (Blank.isEmpty(id)) {
+            return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+        }
+        return SendUtil.send(true, null, elkService.getSecondChildType(id));
+    }
+
+    /**
+     * 获取主题分类
+     *
+     * @return
+     */
+    @GetMapping("getChildType")
+    public Map<String, Object> getChildType() {
+        return SendUtil.send(true, null, elkService.getChildType());
+    }
 }

+ 17 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/service/ElkService.java

@@ -53,4 +53,21 @@ public interface ElkService {
 	 * @return
 	 */
 	List<Map<String, Object>> getPubs();
+
+	/**
+	 * 获取第一级主题分类
+	 * @return
+	 */
+	List<Map<String, Object>> getFirstChildType();
+	/**
+	 * 获取第二级主题分类
+	 * @return
+	 */
+	List<Map<String, Object>> getSecondChildType(Integer id);
+
+	/**
+	 * 获取主题分类
+	 * @return
+	 */
+	List<Map<String, Object>> getChildType();
 }

+ 84 - 46
nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/ElkServiceImpl.java

@@ -1,53 +1,56 @@
 package com.example.nngkxxdp.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+
+import com.example.nngkxxdp.util.Blank;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.example.nngkxxdp.dao.ElkDao;
 import com.example.nngkxxdp.service.ElkService;
 import com.example.nngkxxdp.util.SendUtil;
 
-/** 
-* @author Mr.wang
-* @version 1.0.0
-* @date 2021年12月10日 下午4:29:13
-* @Description 
-*/
+/**
+ * @author Mr.wang
+ * @version 1.0.0
+ * @date 2021年12月10日 下午4:29:13
+ * @Description
+ */
 @Service
 public class ElkServiceImpl implements ElkService {
-	
-	@Autowired
-	private ElkDao elkDao;
-
-	@Override
-	public List<String> deptAll() {
-		return elkDao.deptAll();
-	}
-
-	@Override
-	public Integer getAnswerCount() {
-		return elkDao.getAnswerCount();
-	}
-
-	@Override
-	public List<String> getDeptName(String dept) {
-		return elkDao.getDeptName(dept);
-	}
-
-	@Override
-	public Boolean saveSub(String phone, String remark, String dept) {
-		return elkDao.saveSub(phone, remark, dept);
-	}
-
-	@Override
-	public Map<String, Object> getPageSub(Map<String, Object> map) {
-		Integer count = elkDao.getCountSub(map);
-		if (count == 0) {
-			return SendUtil.layuiTable(0, null);
-		}
-		return SendUtil.layuiTable(count, elkDao.getPageSub(map));
-	}
+
+    @Autowired
+    private ElkDao elkDao;
+
+    @Override
+    public List<String> deptAll() {
+        return elkDao.deptAll();
+    }
+
+    @Override
+    public Integer getAnswerCount() {
+        return elkDao.getAnswerCount();
+    }
+
+    @Override
+    public List<String> getDeptName(String dept) {
+        return elkDao.getDeptName(dept);
+    }
+
+    @Override
+    public Boolean saveSub(String phone, String remark, String dept) {
+        return elkDao.saveSub(phone, remark, dept);
+    }
+
+    @Override
+    public Map<String, Object> getPageSub(Map<String, Object> map) {
+        Integer count = elkDao.getCountSub(map);
+        if (count == 0) {
+            return SendUtil.layuiTable(0, null);
+        }
+        return SendUtil.layuiTable(count, elkDao.getPageSub(map));
+    }
 
 //	@Override
 //	public List<Map<String, Object>> getPub() {
@@ -70,14 +73,49 @@ public class ElkServiceImpl implements ElkService {
 //		return list;
 //	}
 
-	@Override
-	public List<Map<String, Object>> getPubs() {
-		return elkDao.getPubs();
-	}
+    @Override
+    public List<Map<String, Object>> getChildType() {
+        List list = new ArrayList();
+        List<Map<String, Object>> firstChildType = elkDao.getFirstChildType();
+        if (Blank.isNotEmpty(firstChildType)) {
+            for (Map<String, Object> first : firstChildType) {
+                List children = new ArrayList();
+                List<Map<String, Object>> secondChildType = elkDao.getSecondChildType((Integer) first.get("id"));
+                if (Blank.isNotEmpty(secondChildType)) {
+                    for (Map<String, Object> second : secondChildType) {
+//                        String title = (String)second.get("title");
+//                        if (title.indexOf("\\") != -1) {
+//                            String replace = title.replace("\\", "\\\\");
+//                            second.put("title", replace);
+//                        }
+                        children.add(second);
+                    }
+                    first.put("children", children);
+                }
+                list.add(first);
+            }
+        }
+        return list;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSecondChildType(Integer id) {
+        return elkDao.getSecondChildType(id);
+    }
+
+    @Override
+    public List<Map<String, Object>> getFirstChildType() {
+        return elkDao.getFirstChildType();
+    }
+
+    @Override
+    public List<Map<String, Object>> getPubs() {
+        return elkDao.getPubs();
+    }
 
-	@Override
-	public List<String> getSubDeptAll() {
-		return elkDao.getSubDeptAll();
-	}
+    @Override
+    public List<String> getSubDeptAll() {
+        return elkDao.getSubDeptAll();
+    }
 
 }

+ 21 - 0
nngkxxdp/src/main/resources/mapper/ElkDao.xml

@@ -63,6 +63,27 @@
 	<select id="getPub" resultType="java.util.Map">
 		SELECT DISTINCT(puborg) FROM `policy_article` WHERE puborg != ''
 	</select>
+	<!--获取第一级主题分类-->
+	<select id="getFirstChildType" resultType="java.util.Map">
+		SELECT
+			id,
+			pid,
+			child_type as title
+		FROM
+			`policy_article_type`
+		WHERE
+			pid = -1
+	</select>
+	<!--获取第二级主题分类-->
+	<select id="getSecondChildType" resultType="java.util.Map">
+		SELECT
+			id,
+			pid,
+			child_type as title
+		FROM
+			`policy_article_type`
+		WHERE pid = #{id}
+	</select>
 
 	<insert id="saveSub">
 		insert into question_article_remark(phone, dept_name, remark) values(#{phone}, #{dept}, #{remark})

+ 3 - 3
nngkxxdp/src/main/resources/static/zdjc/sywj11.html

@@ -125,7 +125,7 @@
 						
 						</div>
 						<div class="more">
-							<i class="layui-icon layui-icon-down"></i>
+							<i class="layui-icon layui-icon-down">更多</i>
 						</div>
 					</div>
 				</div>
@@ -240,9 +240,9 @@
 			        }
 			    });
 
-				/* $('.more').on('click', function() {
+				 $('.more').on('click', function() {
 					initPage();
-				}); */
+				});
 				
 				$.ajax({
 					type:'get',

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 61 - 94
nngkxxdp/src/main/resources/static/zdjc/wj2.html


+ 15 - 2
nngkxxdp/src/main/resources/static/zdjc/xqwj-copy.html

@@ -303,9 +303,9 @@
 				// 主题分类
 				$('#ztfl').text(data.childtype);
 				// 公文种类
-				$('#gwzl').text("公文种类还没找到对应字段");
+				$('#gwzl').text(data.filetype);
 				// 成文日期
-				$('#cwrq').text("成文日期还没找到对应字段");
+				$('#cwrq').text(timeChange(data.ptime));
 				// 发布日期
 				$('#fbrq').text(data.pubtimestr);
 				$('#d-title').text(data.title);
@@ -336,6 +336,19 @@
 						}
 					})
 		}
+		//时间戳格式转换
+		function timeChange(value){
+			var timestamp = "/Date("+value+")/";
+			var date = new Date(parseInt(timestamp.replace("/Date(", "").replace(")/", ""),     10));
+			Y = date.getFullYear() + '-';
+			M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth()    + 1) + '-';
+			D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
+			h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
+			m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
+			s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
+			var NewDtime = Y + M + D;
+			return NewDtime;
+		}
 		function openSearch(org) {
 			if (org == '全部') {
 				sessionStorage.ES_ORGNAME = '';

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů