Prechádzať zdrojové kódy

Merge branch 'master' of http://116.63.33.55/git/nazw

李雪梅 3 rokov pred
rodič
commit
83909e6e07
27 zmenil súbory, kde vykonal 1636 pridanie a 725 odobranie
  1. 6 0
      nngkxxdp/pom.xml
  2. 35 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/controller/SmsMessageController.java
  3. 26 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/dao/ElkDao.java
  4. 8 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/dao/SmsMessageDao.java
  5. 537 273
      nngkxxdp/src/main/java/com/example/nngkxxdp/elk/ElkController.java
  6. 30 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/service/ElkService.java
  7. 4 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/service/SmsMessageService.java
  8. 85 44
      nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/ElkServiceImpl.java
  9. 19 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/SmsMessageServiceImpl.java
  10. 16 15
      nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/TjServiceImpl.java
  11. 40 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/util/ExcelUtils.java
  12. 105 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/util/WebsiteSmsUtil.java
  13. 1 0
      nngkxxdp/src/main/resources/application-prod.yml
  14. 42 1
      nngkxxdp/src/main/resources/mapper/ElkDao.xml
  15. 25 0
      nngkxxdp/src/main/resources/mapper/SmsMessageDao.xml
  16. 42 13
      nngkxxdp/src/main/resources/static/page/css/webStatis.css
  17. 17 1
      nngkxxdp/src/main/resources/static/page/index.html
  18. 101 2
      nngkxxdp/src/main/resources/static/page/js/base/fbtx.item.js
  19. 2 2
      nngkxxdp/src/main/resources/static/page/js/base/guideSituation.item.js
  20. 1 1
      nngkxxdp/src/main/resources/static/page/js/base/happy_city.js
  21. 1 1
      nngkxxdp/src/main/resources/static/page/js/base/wzkp.item.js
  22. 1 1
      nngkxxdp/src/main/resources/static/zdjc/css/foot.css
  23. 2 2
      nngkxxdp/src/main/resources/static/zdjc/css/sywj.css
  24. 13 0
      nngkxxdp/src/main/resources/static/zdjc/css/wj2.css
  25. 108 88
      nngkxxdp/src/main/resources/static/zdjc/sywj.html
  26. 224 165
      nngkxxdp/src/main/resources/static/zdjc/wj2.html
  27. 145 116
      nngkxxdp/src/main/resources/static/zdjc/xqwj-copy.html

+ 6 - 0
nngkxxdp/pom.xml

@@ -177,6 +177,12 @@
 			<groupId>org.elasticsearch.client</groupId>
 			<artifactId>elasticsearch-rest-high-level-client</artifactId>
 		</dependency>
+		
+		<dependency>
+		    <groupId>com.google.zxing</groupId>
+		    <artifactId>core</artifactId>
+		    <version>3.3.3</version>
+		</dependency>
 
 	</dependencies>
 

+ 35 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/controller/SmsMessageController.java

@@ -103,5 +103,40 @@ public class SmsMessageController {
 		
 		return SendUtil.send(obj.getBoolean("result"));
 	}
+	
+	/**
+	* @Title: getWechatSms 
+	* @Description: 获取微信公众号短信 
+	* @param @param page
+	* @param @param limit
+	* @param @return     
+	* @return Map<String,Object>   
+	* @throws
+	 */
+	@GetMapping("getWechatSms")
+	public Map<String, Object> getWechatSms(Integer page, Integer limit) {
+		if (!Blank.notBlank(page) || !Blank.notBlank(limit)) {
+			return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+		}
+		return smsMessageService.getWechatSms(page, limit);
+	}
+	
+	/**
+	 * 
+	* @Title: getWechatSmsDetail 
+	* @Description: 获取微信公众号短信-详情
+	* @param @param page
+	* @param @param limit
+	* @param @return     
+	* @return Map<String,Object>   
+	* @throws
+	 */
+	@GetMapping("getWechatSmsDetail")
+	public Map<String, Object> getWechatSmsDetail(Integer page, Integer limit, Integer id) {
+		if (!Blank.notBlank(page) || !Blank.notBlank(limit) || !Blank.notBlank(id)) {
+			return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+		}
+		return smsMessageService.getWechatSmsDetail(page, limit, id);
+	}
 
 }

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

@@ -46,4 +46,30 @@ public interface ElkDao {
 	List<Map<String, Object>> getPageSub(Map<String, Object> map);
 	
 	List<String> getSubDeptAll();
+
+	/**
+	 * 获取所有的发文机关
+	 * @return
+	 */
+	List<Map<String, Object>> getPubs();
+
+	/**
+	 * 获取第一级主题分类
+	 * @return
+	 */
+	List<Map<String, Object>> getFirstChildType();
+
+	/**
+	 * 获取第二级主题分类
+	 * @param id
+	 * @return
+	 */
+	List<Map<String, Object>> getSecondChildType(@Param("id") Integer id);
+
+	/**
+	 * 获取主题分类条数
+	 * @param typeName
+	 * @return
+	 */
+	int getChildTypeCount(@Param("typeName") String typeName);
 }

+ 8 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/dao/SmsMessageDao.java

@@ -31,4 +31,12 @@ public interface SmsMessageDao {
 	List<Map<String, Object>> getAllOfa();
 	
 	Boolean saveOfaSms(@Param("list") List<Map<String, Object>> list);
+	
+	Integer getCountWechatSms();
+	
+	List<Map<String, Object>> getWechatSms(@Param("page") Integer page, @Param("limit") Integer limit);
+	
+	Integer getCountWechatSmsDetail(@Param("id") Integer id);
+	
+	List<Map<String, Object>> getWechatSmsDetail(@Param("page") Integer page, @Param("limit") Integer limit, @Param("id") Integer id);
 }

+ 537 - 273
nngkxxdp/src/main/java/com/example/nngkxxdp/elk/ElkController.java

@@ -1,11 +1,13 @@
 package com.example.nngkxxdp.elk;
 
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
+import com.example.nngkxxdp.dao.ElkDao;
 import org.elasticsearch.action.search.SearchRequest;
+import org.elasticsearch.action.search.SearchRequestBuilder;
+import org.elasticsearch.search.aggregations.bucket.terms.Terms;
+import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.RestHighLevelClient;
@@ -14,7 +16,10 @@ import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.script.Script;
 import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.aggregations.*;
+import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
 import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
 import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
 import org.elasticsearch.search.sort.ScriptSortBuilder;
@@ -34,289 +39,548 @@ 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;
-
-	/**
-	 * 搜索字段
-	 */
-	private String[] query = new String[] {"title", "content"};
-
-	/**
-	 * 部门字段
-	 */
-	private String deptName = "departmentname.keyword";
-
-	/**
-	 * 热门字段
-	 */
-	private String hotArticle = "e_top";
-	
-	/**
-	 * 排序字段
-	 */
-	private String publishTime = "sorttime";
-
-	/**
-	 * 关键词搜索
-	 * @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);
+            // 搜索部门
+            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]);
+            }
+            hb.numOfFragments(0);
+            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);
-	    
-		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++) {
+
+        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++) {
 //			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(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);
+        }
+        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);
+        // 排序
+        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]);
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("array", array);
+        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 = 0;
+        }
+        BoolQueryBuilder boolQueryBuilder3 = new BoolQueryBuilder();
+        // 默认全部文件 查询所有
+        if (type == 0) {
+            List<QueryBuilder> should1 = boolQueryBuilder3.should();
+            should1.add(QueryBuilders.matchQuery(articleType, 1));
+            should1.add(QueryBuilders.matchQuery(articleType, 2));
+            should1.add(QueryBuilders.matchQuery(articleType, 3));
+            list.add(boolQueryBuilder3);
+        } else {
+            List<QueryBuilder> must = boolQueryBuilder3.must();
+            must.add(QueryBuilders.matchQuery(articleType, type));
+            list.add(boolQueryBuilder3);
+        }
+
+
+        // 搜索主题分类
+        if (Blank.notBlank(childTypeName)) {
+            String[] childTypeNames = childTypeName.split(",");
+            BoolQueryBuilder boolQueryBuilder4 = new BoolQueryBuilder();
+            List<QueryBuilder> should = boolQueryBuilder4.should();
+            for (String typeName : childTypeNames) {
+                if (typeName.indexOf("\\") != -1) {
+                    typeName = typeName.replace("\\", "\\");
+                }
+                should.add(QueryBuilders.matchQuery(childType, typeName));
+            }
+            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);
+        }
+        // 分组查询 根据主题类型分类
+        TermsAggregationBuilder aggregation = AggregationBuilders.terms("childtype")
+                //聚合字段名
+                .field("childtype.keyword")
+                .size(300)
+                // 降序
+                .order(BucketOrder.count(false));
+        // 排序
+        searchSourceBuilder.sort("_score", SortOrder.DESC);
+        searchSourceBuilder.sort(pubTimeStr, SortOrder.DESC);
+
+        // 开始位置
+        searchSourceBuilder.from((page - 1) * limit);
+        // 查询条数
+        searchSourceBuilder.size(limit);
+        searchSourceBuilder.aggregation(aggregation);
+        searchRequest.source(searchSourceBuilder);
+//        System.out.println(searchSourceBuilder);
+        // 执行搜索
+        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
+        SearchHit[] s = searchResponse.getHits().getHits();
+        // 查询分组信息
+        Terms terms = searchResponse.getAggregations().get("childtype");
+        List<? extends Bucket> buckets = terms.getBuckets();
+        Map<Object, Object> groupInfo = new HashMap<>();
+        for (Bucket bt : buckets) {
+            groupInfo.put(bt.getKey(), bt.getDocCount());
+//            System.err.println(bt.getKey() + " " + bt.getDocCount());
+        }
+
+        // 封装主题分类第一级的总数量
+        List<Map<String, Object>> childType = elkService.getChildType();
+        int count = 0;
+        Map<String, Object> childTypeMap = new HashMap<>();
+        if (Blank.isNotEmpty(childType)) {
+            for (Map<String, Object> childM : childType) {
+                if (Blank.isNotEmpty(childM.get("children"))) {
+                    List<Map<String, Object>> childrenList = (List<Map<String, Object>>) childM.get("children");
+                    for (int i = 0; i < childrenList.size(); i++) {
+                        String scendTitle = (String) childrenList.get(i).get("title");
+                        if (Blank.isNotEmpty(groupInfo.get(scendTitle))) {
+                            count += (long) groupInfo.get(scendTitle);
+                        }
+                    }
+                    childTypeMap.put((String) childM.get("title"), count);
+                    count = 0;
+                }
+            }
+        }
+
+        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);
+        map.put("groupInfo", groupInfo);
+        map.put("firstCount", childTypeMap);
+        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);
         }
-		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());
-	}
+        return SendUtil.send(true, null, elkService.getSecondChildType(id));
+    }
+
+    /**
+     * 获取主题分类
+     *
+     * @return
+     */
+    @GetMapping("getChildType")
+    public Map<String, Object> getChildType() {
+        return SendUtil.send(true, null, elkService.getChildType());
+    }
+
+    /**
+     * 获取主题分类条数
+     */
+    @GetMapping("getChildTypeCount")
+    public Map<String, Object> getChildTypeCount(String typeName) {
+        return SendUtil.send(true, null, elkService.getChildTypeCount(typeName));
+    }
 }

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

@@ -47,4 +47,34 @@ public interface ElkService {
 	Map<String, Object> getPageSub(Map<String, Object> map);
 	
 	List<String> getSubDeptAll();
+
+	/**
+	 * 获取所有的发文机关
+	 * @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();
+
+	/**
+	 * 获取主题分类条数
+	 * @param typeName
+	 * @return
+	 */
+	int getChildTypeCount(String typeName);
 }

+ 4 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/service/SmsMessageService.java

@@ -23,4 +23,8 @@ public interface SmsMessageService {
 	boolean saveSendSuccess(List<String> ids);
 
 	List<Map<String, Object>> getAllNotSendSmsMessage(Integer limit);
+	
+	Map<String, Object> getWechatSms(Integer page, Integer limit);
+	
+	Map<String, Object> getWechatSmsDetail(Integer page, Integer limit, Integer id);
 }

+ 85 - 44
nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/ElkServiceImpl.java

@@ -1,59 +1,100 @@
 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));
-	}
-
-	@Override
-	public List<String> getSubDeptAll() {
-		return elkDao.getSubDeptAll();
-	}
+
+    @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 int getChildTypeCount(String typeName) {
+        return elkDao.getChildTypeCount(typeName);
+    }
+
+    @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) {
+                        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();
+    }
 
 }

+ 19 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/SmsMessageServiceImpl.java

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
 import com.example.nngkxxdp.dao.SmsMessageDao;
 import com.example.nngkxxdp.entity.SmsMessage;
 import com.example.nngkxxdp.service.SmsMessageService;
+import com.example.nngkxxdp.util.Blank;
 import com.example.nngkxxdp.util.SendUtil;
 
 /**
@@ -50,4 +51,22 @@ public class SmsMessageServiceImpl implements SmsMessageService {
 		return smsMessageDao.getAllNotSendSmsMessage(limit);
 	}
 
+	@Override
+	public Map<String, Object> getWechatSms(Integer page, Integer limit) {
+		Integer count = smsMessageDao.getCountWechatSms();
+		if (Blank.isEmpty(count) || count == 0) {
+			return SendUtil.layuiTable(0, null);
+		}
+		return SendUtil.layuiTable(count, smsMessageDao.getWechatSms(page, limit));
+	}
+
+	@Override
+	public Map<String, Object> getWechatSmsDetail(Integer page, Integer limit, Integer id) {
+		Integer count = smsMessageDao.getCountWechatSmsDetail(id);
+		if (Blank.isEmpty(count) || count == 0) {
+			return SendUtil.layuiTable(0, null);
+		}
+		return SendUtil.layuiTable(count, smsMessageDao.getWechatSmsDetail((page - 1)*limit, limit, id));
+	}
+
 }

+ 16 - 15
nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/TjServiceImpl.java

@@ -302,22 +302,23 @@ public class TjServiceImpl implements TjService {
 			reDate = String.valueOf((Integer.valueOf(m) - 1)/3);
 			break;
 		case 2:
-			int month = cn.hutool.core.date.DateUtil.month(now);
-			if (Blank.isNotEmpty(childrenType)) {
-				if (childrenType == 0) {
-					month = 0;
-				} else if (childrenType == 1) {
-					month = 10;
-				}
-			}
-			if (month > 5) {
+			int month = cn.hutool.core.date.DateUtil.month(cn.hutool.core.date.DateUtil.offsetMonth(now, -5));
+//			if (Blank.isNotEmpty(childrenType)) {
+//				if (childrenType == 0) {
+//					month = 0;
+//				} else if (childrenType == 1) {
+//					month = 10;
+//				}
+//			}
+			System.out.println(month);
+			if (month < 6) {
 				reDate = "0";
-				startTime = cn.hutool.core.date.DateUtil.format(now, "yyyy") + "-01-01 00:00:00";
-				endTime = cn.hutool.core.date.DateUtil.format(now, "yyyy") + "-06-30 23:59:59";
+				startTime = cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetMonth(now, -5), "yyyy") + "-01-01 00:00:00";
+				endTime = cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetMonth(now, -5), "yyyy") + "-06-30 23:59:59";
 				
 			} else {
 				reDate = "1";
-				int year = Integer.valueOf(cn.hutool.core.date.DateUtil.format(now, "yyyy")) - 1;
+				int year = Integer.valueOf(cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetMonth(now, -5), "yyyy"));
 				startTime = year + "-07-01 00:00:00";
 				endTime = year + "-12-31 23:59:59";
 			}
@@ -367,7 +368,7 @@ public class TjServiceImpl implements TjService {
 			
 			BigDecimal sbd = new BigDecimal(score + bScore);
 			BigDecimal nbd = new BigDecimal(num + bNum);
-			double dScore = sbd.divide(nbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+			double dScore = sbd.divide(nbd, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 			Map<String, Object> bMap = new HashMap<>();
 			bMap.put("deptname", basic.get("deptname"));
 			bMap.put("score", dScore);
@@ -384,7 +385,7 @@ public class TjServiceImpl implements TjService {
 			
 			BigDecimal sbd = new BigDecimal(bScore);
 			BigDecimal nbd = new BigDecimal(bNum);
-			double dScore = sbd.divide(nbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+			double dScore = sbd.divide(nbd, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 			Map<String, Object> bMap = new HashMap<>();
 			bMap.put("deptname", val.get("deptname"));
 			bMap.put("score", dScore);
@@ -407,7 +408,7 @@ public class TjServiceImpl implements TjService {
 			
 			BigDecimal sbd = new BigDecimal(score);
 			BigDecimal nbd = new BigDecimal(bNum);
-			double dScore = sbd.divide(nbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+			double dScore = sbd.divide(nbd, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 			deptMap.put("add", dScore);
 			change.put(String.valueOf(basic.get("deptid")), deptMap);
 		}

+ 40 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/util/ExcelUtils.java

@@ -0,0 +1,40 @@
+package com.example.nngkxxdp.util;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.poi.ss.usermodel.Sheet;
+
+import cn.hutool.extra.qrcode.QrCodeUtil;
+import cn.hutool.poi.excel.ExcelReader;
+
+public class ExcelUtils {
+	private static String file = "D:/cqf/nan/";
+
+	public static void main(String[] args) {
+		for (int i = 1; i < 7; i++) {
+			mkird(i);
+			
+		}
+	}
+	
+	private static void mkird(int i) {
+		ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader("D:/cqf/窗口分类1229(带链接20211229).xlsx", i);
+		List<List<Object>> readAll = reader.read(2);
+		for (List<Object> list : readAll) {
+			Object dept = list.get(3);
+			String url = file + reader.getSheetNames().get(i) + "/" + dept;
+			File sFlie = new File(url);
+			sFlie.mkdirs();
+			if (Blank.isNotEmpty(list.get(5))) {
+				QrCodeUtil.generate(String.valueOf(list.get(5)), 300, 300, cn.hutool.core.io.FileUtil.file(url+"/"+String.valueOf(list.get(1)).replace("/", " ") + "(个人).jpg"));
+			}
+			if (Blank.isNotEmpty(list.get(6))) {
+				QrCodeUtil.generate(String.valueOf(list.get(6)), 300, 300, cn.hutool.core.io.FileUtil.file(url+"/"+String.valueOf(list.get(1)).replace("/", " ") + "(法人).jpg"));
+			}
+		}
+	}
+	
+}

+ 105 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/util/WebsiteSmsUtil.java

@@ -0,0 +1,105 @@
+package com.example.nngkxxdp.util;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import com.example.nngkxxdp.service.TjService;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.log.StaticLog;
+
+/**
+* @ClassName: WebsiteSmsUtil 
+* @Description: 网站考评每月短信定时任务
+* @author wangs  
+* @date 2022年1月4日 下午2:10:16 
+*
+ */
+@Configuration      
+@EnableScheduling 
+public class WebsiteSmsUtil {
+	
+	@Autowired
+	private TjService tjService;
+	
+	@Value("${sms.custom}")
+	private String custom;
+	
+	private static String UP_SMS = "${name},您好,${year}年${month}月区政务公开考评结果已经更新。贵单位得分${branch}分,位列${ranking}名,同比上月上升${ringRatio}名,感谢您的努力工作。点击查看详细考评数据。》》${url}";
+	private static String DOWN_SMS = "${name},您好,上月网站考核结果已经更新。贵单位得分${branch}分,位列${ranking}名,同比上月下降${ringRatio}名。点击查看详细考评数据。》》${url}";
+	
+	/**
+	* @Title: task 
+	* @Description: 每月定时任务
+	* @param      
+	* @return void   
+	* @throws
+	 */
+//	@Scheduled(cron = "0 0 08 10 * ?")
+	public void task() {
+		StaticLog.info("==============================================================");
+		StaticLog.info("开始执行每月网站考评短信发送任务");
+		Map<String, Object> map = tjService.sendSms();
+		StaticLog.info("获取网站考核,data:{}", map);
+		if (Blank.isEmpty(map)) {
+			return;
+		}
+		Map<String, Object> upObj ;
+		List<?> up = Convert.toList(map.get("up"));
+		if (Blank.notBlank(up)) {
+			String upMsg = UP_SMS;
+			Date date = new Date();
+			date = cn.hutool.core.date.DateUtil.offsetMonth(date, -1);
+			for (int i = 0; i < up.size(); i++) {
+				upObj = Convert.toMap(String.class, Object.class, up.get(i));
+				
+				String content = upMsg.replace("${name}", String.valueOf(upObj.get("name"))).replace("${year}", String.valueOf(cn.hutool.core.date.DateUtil.year(date)))
+						.replace("${month}", String.valueOf(cn.hutool.core.date.DateUtil.month(date) + 1)).replace("${branch}", String.valueOf(upObj.get("score")))
+						.replace("${ranking}", String.valueOf(upObj.get("ranking"))).replace("${ringRatio}", String.valueOf(upObj.get("ringRatio")))
+						.replace("${url}", String.valueOf(upObj.get("url")));
+				String phone = String.valueOf(upObj.get("phone"));
+				
+				sendSms(phone, content);
+			}
+		}
+		List<?> down = Convert.toList(map.get("down"));
+		if (Blank.notBlank(down)) {
+			String downMsg = DOWN_SMS;
+			for (int i = 0; i < down.size(); i++) {
+				upObj = Convert.toMap(String.class, Object.class, down.get(i));
+				
+				String content = downMsg.replace("${name}", String.valueOf(upObj.get("name"))).replace("${ranking}", String.valueOf(upObj.get("ranking")))
+						.replace("${branch}", String.valueOf(upObj.get("score"))).replace("${ringRatio}", String.valueOf(upObj.get("ringRatio")))
+						.replace("${url}", String.valueOf(upObj.get("url")));
+				String phone = String.valueOf(upObj.get("phone"));
+				
+				sendSms(phone, content);
+			}
+		}
+	}
+	
+	public void sendSms(String phone, String content) {
+		long time = new Date().getTime();
+		Map<String, Object> map = new HashMap<>();
+		map.put("phoneNumber", phone);
+		map.put("content", content);
+		String result = HttpRequest.post(custom)
+			    .header("_t", String.valueOf(time))
+			    .header("_yz", SecureUtil.md5(phone + "," + content + "," + time))
+			    .form(map)
+			    .execute().body();
+		System.err.println("body==========:"+result);
+	}
+	
+
+}

+ 1 - 0
nngkxxdp/src/main/resources/application-prod.yml

@@ -24,5 +24,6 @@ elasticsearch:
   ip: localhost:9200
   # 索引名
   index: elk_article
+  index2: article_library
 
 

+ 42 - 1
nngkxxdp/src/main/resources/mapper/ElkDao.xml

@@ -50,7 +50,48 @@
 	<select id="getSubDeptAll" resultType="java.lang.String">
 		SELECT new_dept_name FROM question_article_dept WHERE new_dept_name IS NOT NULL
 	</select>
-	
+	<!--获取所有的发文机关-->
+	<select id="getPubs" resultType="java.util.Map">
+		SELECT DISTINCT
+		( substring_index( substring_index( pa.puborg, ' ', b.help_topic_id + 1 ), ' ',- 1 ) ) AS puborg
+		FROM
+		policy_article pa
+		JOIN mysql.help_topic b ON b.help_topic_id &lt; ( length( pa.puborg ) - length( REPLACE ( pa.puborg, ' ', '' ) ) + 1 )
+		WHERE
+		pa.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>
+	<!--获取主题分类条数-->
+	<select id="getChildTypeCount" resultType="java.lang.Integer">
+		SELECT
+			count( 1 ) AS count
+		FROM
+			`policy_article`
+		where
+			childtype != " "
+
+	</select>
+
 	<insert id="saveSub">
 		insert into question_article_remark(phone, dept_name, remark) values(#{phone}, #{dept}, #{remark})
 	</insert>

+ 25 - 0
nngkxxdp/src/main/resources/mapper/SmsMessageDao.xml

@@ -55,4 +55,29 @@
 			(#{item.ofaId}, #{item.phone}, #{item.type}, #{item.sendTime}, #{item.isSuccess})
 		</foreach>
     </insert>
+    
+    <select id="getCountWechatSms" resultType="java.lang.Integer">
+    	SELECT COUNT(*) FROM w_ofa
+    </select>
+    
+    <select id="getWechatSms" resultType="java.util.Map">
+    	SELECT b.* FROM (
+		SELECT wo.*, DATE_FORMAT(wos.send_time ,'%Y-%m-%d %H:%i') send_time FROM w_ofa wo
+		LEFT JOIN w_ofa_sms wos ON wo.id = wos.ofa_id
+		ORDER BY wos.send_time DESC
+		LIMIT 999999999
+		) b
+		GROUP BY b.id
+		ORDER BY b.send_time DESC
+    </select>
+    
+    <select id="getCountWechatSmsDetail" resultType="java.lang.Integer">
+    	SELECT COUNT(*) FROM w_ofa_sms WHERE ofa_id = #{id}
+    </select>
+    
+    <select id="getWechatSmsDetail" resultType="java.util.Map">
+    	SELECT id, ofa_id, phone, type, is_success, DATE_FORMAT(send_time ,'%Y-%m-%d %H:%i') send_time FROM w_ofa_sms WHERE ofa_id = #{id}
+		ORDER BY send_time DESC
+		LIMIT #{page}, #{limit}
+    </select>
 </mapper>

+ 42 - 13
nngkxxdp/src/main/resources/static/page/css/webStatis.css

@@ -142,7 +142,7 @@ body {
 
 
 
-/* 缂冩垹鐝懓鍐槑  */
+/* 缂傚啯鍨归悵顖炴嚀閸愵厾妲�  */
 .web-contanier .content-wrap #siteAssessment {
 	width: 100%;
 	height: 634px;
@@ -210,7 +210,7 @@ body {
 	margin-bottom: 8px;
 }
 
-/* 閸栧搫骞欓崣濠咁敎闂�鍥劥闂傘劍娲块弬鐗堝剰閸愶拷 */
+/* 闁告牕鎼獮娆撳矗婵犲拋鏁庨梻锟介崶顒�鍔ラ梻鍌樺妽濞插潡寮悧鍫濆壈闁告劧鎷� */
 .update-case {
 	width: 100%;
 	height: 1000px;
@@ -347,7 +347,7 @@ body {
 	left: 2%;
 }
 
-/* 閺堫剛缍夌粩锟�  */
+/* 闁哄牜鍓涚紞澶岀博閿燂拷  */
 .marker2-one::before {
 	content: ' ';
 	width: 10px;
@@ -393,7 +393,7 @@ body {
 	left: -1%;
 }
 
-/*濮樻垹鏁撻弽蹇曟窗閺囧瓨鏌婇幆鍛枌*/
+/*婵ɑ鍨归弫鎾诲冀韫囨洘绐楅柡鍥х摠閺屽﹪骞嗛崨顓炴瀸*/
 .DistrictPortal {
 	height: 600px;
 	width: 1123px;
@@ -408,7 +408,7 @@ body {
 	text-align: center;
 }
 
-/*闁劑妫弴瀛樻煀閹懎鍠�*/
+/*闂侇喓鍔戝Λ顒勫即鐎涙ɑ鐓�闁诡垰鎳庨崰锟�*/
 .updateStreet {
 	width: 1123px;
 	height: 600px;
@@ -420,7 +420,7 @@ body {
 	text-align: left;
 }
 
-/*閸忔湹绮崠鍝勫箼閹懎鍠�*/
+/*闁稿繑婀圭划顒勫礌閸濆嫬绠奸柟顖氭噹閸狅拷*/
 
 .web-assessment {
 	overflow: hidden;
@@ -439,7 +439,7 @@ body {
 	color: #ffffff;
 }
 
-/*24鐏忓繑妞傞崘鍛纯閺傜増鏋冪粩锟�*/
+/*24閻忓繐绻戝鍌炲礃閸涱喗绾柡鍌滃閺嬪啰绮╅敓锟�*/
 .article-warp {
 	margin-top: 19px;
 }
@@ -482,7 +482,7 @@ body {
 	text-align: left;
 }
 
-/*閸欐垵绔烽幓鎰板晪*/
+/*闁告瑦鍨电粩鐑藉箵閹版澘鏅�*/
 .remindList {
 	width: 100%;
 	/*height: 100px;*/
@@ -585,7 +585,7 @@ body {
 	padding-bottom: 10px;
 }
 
-/*閸旂姴鍣洪崚鍡涖��*/
+/*闁告梻濮撮崳娲礆閸℃稏锟斤拷*/
 .dataTabSec .layui-tab-title li {
 	width: 151px;
 	height: 36px;
@@ -721,7 +721,7 @@ body {
 
 
 
-/* 鎰夊揩鍔炲姙浜嬫寚鍗楁儏鍐电粺璁★紙澶х粺璁★級 */
+/* 閹板鎻╅崝鐐插娴滃瀵氶崡妤佸剰閸愮數绮虹拋鈽呯礄婢堆呯埠鐠佲槄绱� */
 
 ./* city_box {
 	width: 800px;
@@ -750,7 +750,7 @@ body {
 	background: #E3E3E3;
 } */
 
-/* 鎰夊揩鍔炲姙浜嬫寚鍗楃粺璁� */
+/* 閹板鎻╅崝鐐插娴滃瀵氶崡妤冪埠鐠侊拷 */
 .content-wrap>div>div>div>div>div>div.layui-tab-item.layui-show>div>div>div.layui-tab.update-tab>div.layui-tab.layui-tab-brief>ul {
 	border: none;
 }
@@ -787,7 +787,7 @@ body {
 li .min_color {
 	background: linear-gradient(30deg, #37B37D, #43DC99 );
 }
-/* 寮圭獥 */
+/* 瀵湱鐛� */
 .xq{
 	    border-left: 4px solid #333333;
 	    width: 105px;
@@ -807,4 +807,33 @@ li .min_color {
 }
 .xq_box .xq_minbox .xq_font{
 	    color: #999999;
-}
+}
+
+.w-sms-tab {
+	display: flex;
+	margin-top: 20px;
+	float: left;
+}
+.w-sms-tab li {
+    width: 120px;
+    border: 1px solid #333;
+    text-align: center;
+    height: 36px;
+    line-height: 36px;
+    cursor: pointer;
+}
+
+.w-sms-tab li:first-child {
+    border-right: 0px;
+}
+
+.w-sms-tab li:last-child{
+   	border-left: 0px;
+}
+
+.w-sms-tab .w-sms-tab-this {
+    border: 1px solid #1276ff;
+    border-left: 1px solid #1276ff !important;
+    border-right: 1px solid #1276ff !important;
+    color: #1276ff;
+}

+ 17 - 1
nngkxxdp/src/main/resources/static/page/index.html

@@ -630,6 +630,7 @@
 											<button id="testReport" class="layui-btn layui-btn-normal" type="button" style="float: right;margin-right: 15px;">相关工作文档上传</button>
 											<button id="publishReminder" class="layui-btn layui-btn-normal" type="button" style="float: right;">下载情况查看</button>
 											<button id="smsSend" class="layui-btn layui-btn-normal" type="button" style="float: right;">短信发送</button>
+											<button id="smsSendRecord" class="layui-btn layui-btn-normal" type="button" style="float: right;">发送记录</button>
 										</div>
 										<div class="line"></div>
 									</div>
@@ -654,6 +655,21 @@
 										</table>
 										<button class="layui-btn layui-btn-normal layui-btn-sm" id="reBack">返回</button>
 									</div>
+									<div class="w-sms-record" style="display:none;">
+										<div>
+											<div>
+												<div class="w-sms-wai-div">
+													<ul class="w-sms-tab">
+														<li class="w-sms-tab-this">微信公众号</li>
+														<li>网站</li>
+													</ul>
+													<button id="w-sms-tab-back" style="margin-top: 20px;float: right;" class="layui-btn layui-btn-primary" type="button">返回</button>
+												</div>
+												<button id="w-sms-back" style="margin-top: 20px;" class="layui-btn layui-btn-primary layui-hide" type="button">返回</button>
+												<table id="w-sms-wechat-table" class="layui-table" lay-skin="line"></table>
+											</div>
+										</div>
+									</div>
 								</div>
 							</div>
 							<div class="layui-tab-item">
@@ -687,7 +703,7 @@
 														<th>本年更新量</th>
 													</tr>
 													</thead>
-													<tbody style="opacity:0;height" id="otherHeader"></tbody>
+													<tbody style="opacity:0;" id="otherHeader"></tbody>
 												</table>
 											</div>
 											<div class="tbl-body2">

+ 101 - 2
nngkxxdp/src/main/resources/static/page/js/base/fbtx.item.js

@@ -232,6 +232,7 @@ function lyupload() {
 		$("#publishReminder").click(function () {
 			$(".remindList").css("display","none");
 			$(".clearfix").css("display","none");
+			$(".w-sms-record").css("display","none")
 			$("#publishTable").css("display","block")
 			layui.use('table',function(){
 				var table = layui.table;
@@ -389,9 +390,24 @@ function lyupload() {
 					layer.msg('发送成功!');
 				}
 			},function(err) {
+			
 			});
 	 })
-		
+	 
+	 $('#smsSendRecord').on('click', function() {
+	 	$(".remindList").css("display","none");
+		$(".clearfix").css("display","none");
+		$("#publishTable").css("display","none")
+		$(".w-sms-record").css("display","block")
+	 });
+	 
+	 $('.w-sms-tab li').on('click', function() {
+	 	//$('.w-sms-tab li').each(function() {
+	 	//	$(this).removeClass('w-sms-tab-this');
+	 	//});
+	 	//$(this).addClass('w-sms-tab-this');
+	 });
+		initSmsTable();
 		initUp();
 		initUp2();
 		initStatus = false;
@@ -560,4 +576,87 @@ $('#smsSend').on('click', function() {
 			$('#ly-sms-remark').val('')
 		}
 	});
-});
+});
+
+function initSmsTable() {
+	table.render({
+    elem: '#w-sms-wechat-table',
+    url: '/smsmessage/getWechatSms',
+    skin: 'line',
+    cols: [[
+  		{width:80, title: '序号', type: 'numbers'},
+  		{field:'wName', title: '新媒体名称'},
+  		{field:'wType', title: '类型'},
+		{title: '分管领导', templet: function(d) {
+			return d.leadName + "  " + d.leadPhone;
+		}},
+		{title: '工作人员', templet: function(d) {
+			return d.staffName + "  " + d.staffPhone;
+		}},
+		{title: '提醒记录', templet: function(d) {
+			return d.sendTime ? d.sendTime : '未提醒';
+		}},
+		{title: '操作', templet: function(d) {
+			return '<a style="color:#1276ff;cursor: pointer;" onclick="initSmsTableDetail(\''+ d.staffName +'\',\''+ d.leadName +'\',\''+ (d.wType + '-' + d.wName) +'\',\''+ d.id +'\')">详情</a>';
+		}}
+    ]]
+  });
+  
+  	$('#w-sms-back').on('click', function() {
+		$('#w-sms-back').addClass('layui-hide');
+		$('.w-sms-wai-div').removeClass('layui-hide');
+		reloadSmsTable();
+	})
+	$('#w-sms-tab-back').on('click', function() {
+		$(".remindList").css("display","block");
+		$(".clearfix").css("display","block");
+		$("#publishTable").css("display","none")
+		$(".w-sms-record").css("display","none")
+	})
+}
+function initSmsTableDetail(staffName, leadName, wechat, id) {
+	$('#w-sms-back').removeClass('layui-hide');
+	$('.w-sms-wai-div').addClass('layui-hide');
+	var smsContent = '您好,贵单位政务新媒体{wechat}已有{day}天未更新,有超期未更新风险,如不能按时更新,本月政务公开考核将扣分。如因未及时更新被市政府办公厅点名通报批评,会影响单位政务公开年终考核得分,请及时更新';
+	table.reload('w-sms-wechat-table', {
+		url: '/smsmessage/getWechatSmsDetail',
+		where: {
+			'id': id
+		},
+		page: true,
+		cols: [[
+  		{field:'sendTime', title: '发送时间', width: '15%'},
+		{title: '发送内容', templet: function(d) {
+			return (d.type == 1 ? leadName : staffName) + smsContent.replace('{wechat}', wechat).replace('{day}', d.type == 1 ? '12' : '10');
+		}},
+		{title: '发送状态', width: '12%', templet: function(d) {
+			return d.isSuccess == 1 ? '发送成功' : '未发送成功';
+		}}
+    ]]
+	});
+}
+
+function reloadSmsTable() {
+	table.reload('w-sms-wechat-table', {
+		url: '/smsmessage/getWechatSms',
+		page: false,
+		cols: [[
+	  		{width:80, title: '序号', type: 'numbers'},
+	  		{field:'wName', title: '新媒体名称'},
+	  		{field:'wType', title: '类型'},
+			{title: '分管领导', templet: function(d) {
+				return d.leadName + "  " + d.leadPhone;
+			}},
+			{title: '工作人员', templet: function(d) {
+				return d.staffName + "  " + d.staffPhone;
+			}},
+			{title: '提醒记录', templet: function(d) {
+				return d.sendTime ? d.sendTime : '未提醒';
+			}},
+			{title: '操作', templet: function(d) {
+				return '<a style="color:#1276ff;cursor: pointer;" onclick="initSmsTableDetail(\''+ d.staffName +'\',\''+ d.leadName +'\',\''+ (d.wType + '-' + d.wName) +'\',\''+ d.id +'\')">详情</a>';
+			}}
+	    ]]
+	});
+}
+

+ 2 - 2
nngkxxdp/src/main/resources/static/page/js/base/guideSituation.item.js

@@ -17,7 +17,7 @@ function guide() {
                         title: '所属单位',
                     }, {
                     field: 'title',
-                    title: '项名称',
+                    title: '项名称',
 
                 }, {
                     field: 'problemurl',
@@ -68,7 +68,7 @@ function guide() {
                         title: '所属单位',
                     }, {
                     field: 'title',
-                    title: '项名称',
+                    title: '项名称',
 
                 }, {
                     field: 'problemurl',

+ 1 - 1
nngkxxdp/src/main/resources/static/page/js/base/happy_city.js

@@ -81,7 +81,7 @@ function guideState() {
 						title: '所属单位',
 					}, {
 					field: 'title',
-					title: '项名称',
+					title: '项名称',
 
 				}, {
 					field: 'problemurl',

+ 1 - 1
nngkxxdp/src/main/resources/static/page/js/base/wzkp.item.js

@@ -107,7 +107,7 @@ function initBarChartData(data, deptId, hasDept, type, dBasic) {
 	let rankSituation=[]  //用来存储部门排名情况
 	var total = [];
 	for (var i = 0; i < basic.length; i++) {
-		total.push(basic[i]+add[i]);
+		total.push((basic[i] * 100 + add[i] * 100)/100);
 	}
 	var totalRanking = {};
 	var deptNames = [];

+ 1 - 1
nngkxxdp/src/main/resources/static/zdjc/css/foot.css

@@ -20,7 +20,7 @@ a {
 	height: 110px;
 	margin: 0 auto;
 	/* padding-top: 24px; */
-	background-color: #133A66;
+	background-color: #A79675;
 	display: flex;
     justify-content: center;
     align-items: center;

+ 2 - 2
nngkxxdp/src/main/resources/static/zdjc/css/sywj.css

@@ -20,13 +20,13 @@ body {
 }
 .hed{
 	width: 100%;
-	background-color: #000;
+	background-color: #210404;
 }
 .head {
 	width: 58%;
 	margin: 0 auto;
 	height: 64px;
-	background: #000;
+	background: #210404;
 	display: flex;
 	justify-content: flex-start;
 }

+ 13 - 0
nngkxxdp/src/main/resources/static/zdjc/css/wj2.css

@@ -369,6 +369,7 @@ div.search-area > div:nth-child(2) > form > div > input{
 .treeti{
 	width: 274px;
 	border-right: #B5B5B5 solid 1px;
+	text-overflow: ellipsis;
 }
 
 .ti1{
@@ -381,6 +382,7 @@ div.search-area > div:nth-child(2) > form > div > input{
 	font-weight: bold;
 	text-align: center;
 	line-height: 42px;
+
 }
 
 #wjtree{
@@ -388,6 +390,17 @@ div.search-area > div:nth-child(2) > form > div > input{
 	font-size: 14px;
 }
 
+.layui-tree-txt{
+	width: 209px !important;
+	overflow: hidden;
+	text-overflow: ellipsis !important;
+}
+
+.layui-tree-txt:hover{
+	text-overflow:inherit;
+	overflow:visible;
+}
+
 @media screen and (max-width:1440px){
 	.tangchu {
 	    left: 325px;

+ 108 - 88
nngkxxdp/src/main/resources/static/zdjc/sywj.html

@@ -22,50 +22,62 @@
 	</div>
 
 		<div class="content">
-			<div class="ques" id="ques">没有找到合适答案,我要提问</div>
+<!--			<div class="ques" id="ques">没有找到合适答案,我要提问</div>-->
 			<div class="wrap_content">
 				<div class="wrapDiv">
 					<ul class="layui-timeline">
 						<li class="layui-timeline-item">
 							<i class="layui-icon layui-timeline-axis"></i>
 							<div class="layui-timeline-content layui-text">
-								<h3 class="layui-timeline-title">政务服务</h3>
+								<h3 class="layui-timeline-title">国务院组织机构</h3>
 							</div>
 						</li>
 						<li class="layui-timeline-item">
 							<i class="layui-icon layui-timeline-axis"></i>
 							<div class="layui-timeline-content layui-text">
-								<h3 class="layui-timeline-title">川渝通办</h3>
+								<h3 class="layui-timeline-title">综合政务</h3>
 							</div>
 						</li>
 						<li class="layui-timeline-item">
 							<i class="layui-icon layui-timeline-axis"></i>
 							<div class="layui-timeline-content layui-text">
-								<h3 class="layui-timeline-title">放管服</h3>
+								<h3 class="layui-timeline-title">国有资产监管</h3>
 							</div>
 						</li>
 						<li class="layui-timeline-item">
 							<i class="layui-icon layui-timeline-axis"></i>
 							<div class="layui-timeline-content layui-text">
-								<h3 class="layui-timeline-title">减税降费</h3>
+								<h3 class="layui-timeline-title">财政、金融、审计</h3>
 							</div>
 						</li>
 						<li class="layui-timeline-item">
 							<i class="layui-icon layui-timeline-axis"></i>
 							<div class="layui-timeline-content layui-text">
-								<h3 class="layui-timeline-title">六稳六保</h3>
+								<h3 class="layui-timeline-title">国土资源、能源</h3>
 							</div>
 						</li>
 						<li class="layui-timeline-item">
 							<i class="layui-icon layui-timeline-axis"></i>
 							<div class="layui-timeline-content layui-text">
-								<h3 class="layui-timeline-title">政务公开</h3>
+								<h3 class="layui-timeline-title">农业、林业、水利</h3>
 							</div>
 						</li>
 						<li class="layui-timeline-item">
 							<i class="layui-icon layui-timeline-axis"></i>
 							<div class="layui-timeline-content layui-text">
-								<h3 class="layui-timeline-title">互联网+</h3>
+								<h3 class="layui-timeline-title">工业、交通</h3>
+							</div>
+						</li>
+						<li class="layui-timeline-item">
+							<i class="layui-icon layui-timeline-axis"></i>
+							<div class="layui-timeline-content layui-text">
+								<h3 class="layui-timeline-title">商贸、海关、旅游</h3>
+							</div>
+						</li>
+						<li class="layui-timeline-item">
+							<i class="layui-icon layui-timeline-axis"></i>
+							<div class="layui-timeline-content layui-text">
+								<h3 class="layui-timeline-title">安全生产监管</h3>
 							</div>
 						</li>
 					</ul>
@@ -73,10 +85,10 @@
 				<div class="text_content">
 					<div class="header-contanier">
 						<img alt="国徽" src="img/logo-big.png">
-						<h3>南岸区政策文件库</h3>
+						<h3 style="color: #210404">南岸区政策文件库</h3>
 					</div>
 
-					<span class="totall">共计问答数:1234</span>
+<!--					<span class="totall">共计问答数:1234</span>-->
 
 					<div class="sq">
 							<div style="position:relative">
@@ -104,7 +116,7 @@
 
 					<div class="text_three">
 						<div class="title">
-							热门问题:
+							最新政策:
 						</div>
 						<div class="th_con">
 
@@ -113,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>
@@ -145,40 +157,40 @@
 		</div>
 	</div>
 		
-		<div class="quesTanchu" id="quesTanchu">
-			<div class="layui-form">
-				<div class="layui-form-item">
-				    <label class="layui-form-label">手机号:</label>
-				    <div class="layui-input-block">
-				      <input id="lyPhone" type="text" name="username" lay-verify="required" lay-reqtext="请输入手机号" placeholder="请输入手机号" autocomplete="off" class="layui-input">
-				    </div>
-			  	</div>
-			  	
-			  	<div class="layui-form-item">
-				    <label class="layui-form-label">部门</label>
-				    <div class="layui-input-block">
-				      <select id="lyDept" name="dept" lay-verify="required" lay-reqtext="请选择部门">
-				        <option value=""></option>
-				      </select>
-				    </div>
-				 </div>
-				 
-				 <div class="layui-form-item layui-form-text">
-				    <label class="layui-form-label">问题</label>
-				    <div class="layui-input-block">
-				      <textarea id="lyRemark" placeholder="请输入内容" class="layui-textarea"></textarea>
-				    </div>
-			  	</div>
-			  	
-			  	<div class="layui-form-item" style="text-align: center">
-				    <div class="layui-input-block">
-				      <button type="button" id="quesub" class="layui-btn layui-btn-normal" onclick="saveSub()">立即提交</button>
-				      <button type="button" class="layui-btn layui-btn-primary" onclick="cancel()">取消</button>
-				    </div>
-			  	</div> 
-			  	
-			</div>
-		</div>
+<!--		<div class="quesTanchu" id="quesTanchu">-->
+<!--			<div class="layui-form">-->
+<!--				<div class="layui-form-item">-->
+<!--				    <label class="layui-form-label">手机号:</label>-->
+<!--				    <div class="layui-input-block">-->
+<!--				      <input id="lyPhone" type="text" name="username" lay-verify="required" lay-reqtext="请输入手机号" placeholder="请输入手机号" autocomplete="off" class="layui-input">-->
+<!--				    </div>-->
+<!--			  	</div>-->
+<!--			  	-->
+<!--			  	<div class="layui-form-item">-->
+<!--				    <label class="layui-form-label">部门</label>-->
+<!--				    <div class="layui-input-block">-->
+<!--				      <select id="lyDept" name="dept" lay-verify="required" lay-reqtext="请选择部门">-->
+<!--				        <option value=""></option>-->
+<!--				      </select>-->
+<!--				    </div>-->
+<!--				 </div>-->
+<!--				 -->
+<!--				 <div class="layui-form-item layui-form-text">-->
+<!--				    <label class="layui-form-label">问题</label>-->
+<!--				    <div class="layui-input-block">-->
+<!--				      <textarea id="lyRemark" placeholder="请输入内容" class="layui-textarea"></textarea>-->
+<!--				    </div>-->
+<!--			  	</div>-->
+<!--			  	-->
+<!--			  	<div class="layui-form-item" style="text-align: center">-->
+<!--				    <div class="layui-input-block">-->
+<!--				      <button type="button" id="quesub" class="layui-btn layui-btn-normal" onclick="saveSub()">立即提交</button>-->
+<!--				      <button type="button" class="layui-btn layui-btn-primary" onclick="cancel()">取消</button>-->
+<!--				    </div>-->
+<!--			  	</div> -->
+<!--			  	-->
+<!--			</div>-->
+<!--		</div>-->
 
 
 		<script type="text/javascript">
@@ -186,15 +198,13 @@
 				$ = layui.jquery,
 					form = layui.form,
 					layer = layui.layer;
-				
-
-
 
 				$('.img_position').click(function() {
 					window.location.href = "wj2.html";
 				});
 
 
+
 				$(".all").mouseenter(function(){
 					$(".tangchu").css("display","block");
 				});
@@ -218,7 +228,7 @@
 						return;
 					}
  					page = 1;
-					sessionStorage.ELK_SEARCH = $('#search-input').val();
+					sessionStorage.ES_SEARCH = $('#search-input').val();
 					window.location = 'wj2.html'
 					/* initPage(); */
 				});
@@ -230,32 +240,32 @@
 			        }
 			    });
 
-				/* $('.more').on('click', function() {
+				 $('.more').on('click', function() {
 					initPage();
-				}); */
+				});
 				
-				$.ajax({
-					type:'get',
-					url: '/elk/getSubDeptAll',
-					success:function(obj) {
-			          if (obj.data && obj.data.length > 0) {
-			        	  var data = obj.data;
-			        	  var html = '';
-			        	  for (var i = 0; i < data.length; i++) {
-			        		  html += '<option value="'+ data[i] +'">'+ data[i] +'</option>';
-			        	  }
-			        	  $('select[name="dept"]').empty().append(html);
-			        	  form.render('select');
-			          }
-					},
-					error: function(msg) {
-						
-					}
-				})
+				// $.ajax({
+				// 	type:'get',
+				// 	url: '/elk/getSubDeptAll',
+				// 	success:function(obj) {
+			    //       if (obj.data && obj.data.length > 0) {
+			    //     	  var data = obj.data;
+			    //     	  var html = '';
+			    //     	  for (var i = 0; i < data.length; i++) {
+			    //     		  html += '<option value="'+ data[i] +'">'+ data[i] +'</option>';
+			    //     	  }
+			    //     	  $('select[name="dept"]').empty().append(html);
+			    //     	  form.render('select');
+			    //       }
+				// 	},
+				// 	error: function(msg) {
+				//
+				// 	}
+				// })
 				
 
-				sessionStorage.ELK_SEARCH = '';
-				sessionStorage.ELK_DEPTNAME = '';
+				sessionStorage.ES_SEARCH = '';
+				sessionStorage.ES_ORGNAME = '';
 				initPage();
 				initDetail();
 				
@@ -306,14 +316,14 @@
 			
 			
 
-			/* 请求热门问题 */
+			/* 请求热门文件 */
 			var page = 1;
 			var dataMap = {};
 			function initPage() {
 				/* var index = layer.load(2); */
 				$.ajax({
 					type:'get',
-					url: '/elk/searchHot',
+					url: '/elk/searchHotArticle',
 					data: {
 						'page': page,
 						'limit': 8,
@@ -325,8 +335,6 @@
 			        		 $('.more').removeClass('layui-hide');
 			        	 };
 			        	 var datas = obj.data.array;
-			        	 $(".totall").text("共计问答数:"+obj.data.count);
-			        	 console.log(datas.length);
 			        	 if (datas && datas.length > 0) {
 			        		 if (datas.length < 5) {
 				        		  $('.more').addClass('layui-hide');
@@ -337,19 +345,20 @@
 								for(var i = 0; i < data.length; i++){
 									var content = (data[i]).sourceAsMap.content;
 					        		  var title = (data[i]).sourceAsMap.title;
-					        		  var deptName = (data[i]).sourceAsMap.departmentname;
+					        		  var colname = (data[i].sourceAsMap.colname)
 					        		  var url = (data[i]).sourceAsMap.url;
 
 					        		  html += '<div class="art" style="cursor: pointer;" onclick="openWindow(\''+ data[i].id +'\')">'
 					        		  		+ '<div class="t1">'
-					        		  		+'<span class="sp1" title="'+deptName+'">'+ deptName +'</span><span title="'+title+'">'+ title +'</span>'
+					        		  		+'<span class="sp1" title="'+colname+'">'+ colname +'</span><span title="'+title+'">'+ title +'</span>'
 					        		  		+'</div>'
 					        		  		+'<div class="tx">'
-					        		  		+'<span>'+content+'</span>'
+					        		  		+'<span>'+ matchReg(repalceHtml(content)) +'</span>'
 					        		  		+'<p>详情>></p>'
 					        		  		+'</div>'
 					        		  		+'</div>'
 					        		  		dataMap[data[i].id] = data[i];
+
 								};
 								$('.th_con').append(html);
 								/* layer.close(index); */
@@ -365,19 +374,30 @@
 				})
 			};
 
+		// 去除所有html标签
+		function matchReg(str){
+			let reg=/<\/?.+?\/?>/g;
+			return str.replace(reg,'');
+		}
+
+		// 替换富文本标签内容
+		function repalceHtml(str){
+			var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'};
+			return str.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});
+		}
 			// 初始化详情页面
 		function initDetail() {
 
 				$.ajax({
 					type:'get',
-
-					url: '/elk/deptAll',
+					url: '/elk/getPubs',
 					success:function(obj) {
+						console.log(obj)
 			          if (obj.data && obj.data.length > 0) {
 			        	  var data = obj.data;
 			        	  var html = '<div class="tangchu-item" title="全部" onclick="openSearch(\'全部\')">全部</div>';
 			        	  for (var i = 0; i < data.length; i++) {
-			        		  html += '<div class="tangchu-item" title="'+data[i]+'" onclick="openSearch(\''+ data[i] +'\')">'+ data[i] +'</div>';
+			        		  html += '<div class="tangchu-item" title="'+data[i].puborg+'" onclick="openSearch(\''+ data[i].puborg +'\')">'+ data[i].puborg +'</div>';
 			        	  }
 			        	  $('.tangchu').empty().append(html);
 			          }
@@ -388,16 +408,16 @@
 				})
 			};
 
-			function openSearch(dept) {
-				if (dept == '全部'){
-					sessionStorage.ELK_DEPTNAME = '';
+			function openSearch(org) {
+				if (org == '全部'){
+					sessionStorage.ES_ORGNAME = '';
 				} else {
-					sessionStorage.ELK_DEPTNAME = dept;
+					sessionStorage.ES_ORGNAME = org;
 				}
 				if (!$('#search-input').val()) {
-					sessionStorage.ELK_SEARCH = '';
+					sessionStorage.ES_SEARCH = '';
 				}
-				$('.all').val(dept);
+				$('.all').val(org);
 				page = 1;
 				window.location = 'wj2.html';
 			}

+ 224 - 165
nngkxxdp/src/main/resources/static/zdjc/wj2.html

@@ -38,6 +38,9 @@
 		.quesTanchu .layui-form-select .layui-edge {
 			margin-right: 70px;
 		}
+		.ly-color {
+			color: #cca65e !important;
+		}
 	</style>
 	</head>
 	<body>
@@ -45,8 +48,8 @@
 		<div class="content">
 
 			<div class="content_one">
-					<a href="sy.html">首页</a>>
-					<a href="javascript:void(0);">详情</a>
+					<a href="sywj.html">首页</a>>
+					<a href="javascript:void(0);">文件搜索</a>
 			</div>
 			<div class="text_content">
 				<h4 style="cursor: pointer;" onclick="window.location.href='sy.html'">南岸区政策文件库</h4>
@@ -75,15 +78,15 @@
 			<div class="text_four">
 				<div class="title_three">
 					<div class="treeti" >
-						<div class="ti1">按主题分类(10000)</div>
+						<div class="ti1">按主题分类</div>
 						<div id="wjtree"></div>
 					</div>
 					<div class="layui-tab layui-tab-brief tright" lay-filter="docDemoTabBrief">
-						<ul class="layui-tab-title">
-							<li class="layui-this">南岸区文件</li>
-							<li>市政府文件</li>
-							<li>国务院文件</li>
-
+						<ul class="layui-tab-title" id="articleType" >
+							<li class="layui-this" data-type="0" >全部文件</li>
+							<li  data-type="1">南岸区文件</li>
+							<li  data-type="2">市政府文件</li>
+							<li  data-type="3">国务院文件</li>
 						</ul>
 						<div class="layui-tab-content">
 							<div class="wrap_text">
@@ -141,92 +144,46 @@
 
 				//…
 			});
+			// 定义默认搜索全部主题分类
+			var allSearch = 1;
+			var childTypeData;
 			layui.use('tree', function(){
 				var tree = layui.tree;
-
 				//渲染
-				var inst1 = tree.render({
-					elem: '#wjtree'  //绑定元素
-					,data: [{
-						title: '国务院组织机构(365)' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-							,children: [{
-								title: '' //三级菜单
-								//…… //以此类推,可无限层级
-							}]
-						}]
-					},{
-						title: '综合政务(546)' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '国民经济管理、国有资产监管(222)' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '财政、金融、审计' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '国土资源、能源' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '农业、林业、水利' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '工业、交通' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '商贸、海关、旅游' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '市场监管、安全生产监管' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '城乡建设、环境保护' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '科技、教育' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '文化、广电、新闻出版' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '卫生、体育' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '人口与生育计划、妇女儿童工作' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					},{
-						title: '劳动、人事、监察' //一级菜单
-						,children: [{
-							title: '' //二级菜单
-						}]
-					}]
+				$.get("/elk/getChildType", function (data) {//请求数据
+					var inst1 = tree.render({
+						elem: '#wjtree',  //绑定元素
+						data: data.data,
+						click: function(obj){
+							page = 1;
+							if (!$('#search-input').val()) {
+								sessionStorage.ES_SEARCH = '';
+							}
+							// $('.layui-tree-entry').find('.layui-tree-txt').removeClass('ly-color');
+							$('.layui-tree-set').find('.layui-tree-txt').removeClass('ly-color');
+							if ($(obj.elem).find('.layui-tree-icon').length > 0) {
+								$(obj.elem).children(":first").find('.layui-tree-txt').addClass('ly-color')
+							} else {
+								$(obj.elem).find('.layui-tree-txt').addClass('ly-color')
+							}
+							// console.log(obj.data); //得到当前点击的节点数据
+							var childData = obj.data.children;
+							if (childData) {
+								childTypeData = '';
+								for (let i = 0; i < childData.length; i++) {
+									childTypeData += childData[i].title + ",";
+								}
+							}else {
+								childTypeData = obj.data.title;
+							}
+							// console.log(childTypeData)
+							var articleType = $($("#articleType").find(".layui-this")[0]).attr("data-type");
+							// console.log($($("#articleType").find(".layui-this")[0]).attr("data-type"))
+							initPage(articleType, childTypeData, allSearch);
+						},
+						accordion: true,//手风琴模式
+					});
+					initPage();
 				});
 			});
 			layui.use(['form', 'jquery'], function() {
@@ -240,7 +197,10 @@
 				$(".all").mouseenter(function(){
 					$(".tangchu").css("display","block");
 				});
-				$(".tangchu").mouseenter(function(){
+				// $(".ti1").on('click', function() {
+				//
+				// })
+					$(".tangchu").mouseenter(function(){
 					$(".tangchu").css("display","block");
 				});
 				$(".all").mouseleave(function(){
@@ -250,14 +210,27 @@
 					$(".tangchu").css("display","none");
 				});
 				$('.ss-icon').on('click', function() {
-					 if (!$('#search-input').val()) {
-						layer.msg('请输入检索信息');
-						return;
-					} 
+					if (!$('#search-input').val()) {
+						// layer.msg('请输入检索信息');
+						$('.ly-color').text($('.ly-color').text())
+						// return;
+					}
 					page = 1;
-					sessionStorage.ELK_SEARCH = $('#search-input').val();
-					initPage();
+					sessionStorage.ES_SEARCH = $('#search-input').val();
+					var articleType = $($("#articleType").find(".layui-this")[0]).attr("data-type")
+					// initPage(articleType, $('.ly-color').text(),2);
+					$('.ly-color').removeClass("ly-color")
+					initPage(articleType, '',2);
 				});
+				$("#articleType li").on('click', function (){
+					// console.log($('.ly-color').text())
+					if ($('.ly-color').text()) {
+						var childType = "";
+					}
+					page = 1;
+					initPage($(this).attr("data-type"), childType)
+					// console.log($(this).attr("data-type"))
+				})
 				$('#search-input').bind('keyup', function(event) {
 			        if (event.keyCode == "13") {
 			            //回车执行查询
@@ -265,13 +238,15 @@
 			        }
 			    });
 				$('.more').on('click', function() {
-					initPage();
+					var articleType = $($("#articleType").find(".layui-this")[0]).attr("data-type")
+					// console.log(childTypeData)
+					initPage(articleType, childTypeData, allSearch);
 				})
-				if (sessionStorage.ELK_DEPTNAME) {
-					$('.all').text(sessionStorage.ELK_DEPTNAME);
+				if (sessionStorage.ES_ORGNAME) {
+					$('.all').text(sessionStorage.ES_ORGNAME);
 				}
-				if (sessionStorage.ELK_SEARCH) {
-					$('#search-input').val(sessionStorage.ELK_SEARCH);
+				if (sessionStorage.ES_SEARCH) {
+					$('#search-input').val(sessionStorage.ES_SEARCH);
 				}
 				$("#ques").click(function(){
 					layer.open({
@@ -283,86 +258,141 @@
 						  }
 					});
 				});
-				$.ajax({
-					type:'get',
-					url: '/elk/getSubDeptAll',
-					success:function(obj) {
-			          if (obj.data && obj.data.length > 0) {
-			        	  var data = obj.data;
-			        	  var html = '';
-			        	  for (var i = 0; i < data.length; i++) {
-			        		  html += '<option value="'+ data[i] +'">'+ data[i] +'</option>';
-			        	  }
-			        	  $('select[name="dept"]').empty().append(html);
-			        	  form.render('select');
-			          }
-					},
-					error: function(msg) {
-						
-					}
-				})
+				// $.ajax({
+				// 	type:'get',
+				// 	url: '/elk/getSubDeptAll',
+				// 	success:function(obj) {
+			    //       if (obj.data && obj.data.length > 0) {
+			    //     	  var data = obj.data;
+			    //     	  var html = '';
+			    //     	  for (var i = 0; i < data.length; i++) {
+			    //     		  html += '<option value="'+ data[i] +'">'+ data[i] +'</option>';
+			    //     	  }
+			    //     	  $('select[name="dept"]').empty().append(html);
+			    //     	  form.render('select');
+			    //       }
+				// 	},
+				// 	error: function(msg) {
+				//
+				// 	}
+				// })
+
+				// initPage();
 				initDetail();
-				initPage();
-				hotSearch();
+
 			});
 
 			var page = 1;
 			var dataMap = {};
-			function initPage() {
+			function initPage(type, childType, changeCount) {
 				var index = layer.load(2);
+				// if (childType && childType.lastIndexOf("(") != -1) {
+				// 	childType = childType.substring(0,childType.lastIndexOf("("));
+				// }
 				$.ajax({
 					type:'get',
-					url: '/elk/search',
+					url: '/elk/retrieval',
 					data: {
 						'page': page,
 						'limit': 5,
-						'content': sessionStorage.ELK_SEARCH,
-						'dept': sessionStorage.ELK_DEPTNAME
+						'content': sessionStorage.ES_SEARCH,
+						'orgName': sessionStorage.ES_ORGNAME,
+						'type': type,
+						'childTypeName':childType
 					},
 					dataType: 'json',
 					success:function(obj) {
-			        	 // sessionStorage.ELK_SEARCH = '';
-			        	 // sessionStorage.ELK_DEPTNAME = '';
-			        	 if (page == 1) {
-			        		 $('.more').removeClass('layui-hide');
-			        		 $('.wrap_text').empty();
-			        	 }
-			        	  var datas = obj.data;
+
+					  if (page == 1) {
+						 $('.more').removeClass('layui-hide');
+						 $('.wrap_text').empty();
+					  }
+					  var datas = obj.data;
 			          if (datas.data && datas.data.length > 0) {
 			        	  if (datas.data.length < 5) {
 			        		  $('.more').addClass('layui-hide');
 			        	  }
 			        	  page++;
 			        	  var data = datas.data;
+						  var groupInfo = datas.groupInfo;
+						  var firstCount = datas.firstCount;
+						  var total = 0;
+						  // 计算主题分类总数
+						  for(var key in groupInfo) {
+							  var value1 = groupInfo[key];
+							  if (key === '') {
+								  value1 = 0;
+							  }else {
+								  total += value1
+							  }
+						  }
+
+						  $("#wjtree").find(".layui-tree-txt").each(function (){
+							  // 判断如果是点击主题分类栏查询就不改变原有数量统计
+							  if (changeCount === 1) {
+								  $(this).text($(this).text())
+								  $(".ti1").text($(".ti1").text())
+							  }else {
+								  var classStyle = $(this).prev().attr("class").length;
+								  if (classStyle == 36) {
+									  if ($(this).text().lastIndexOf("(") != -1) {
+										  var textA = $(this).text()
+										  var textB = textA.substring(0, textA.lastIndexOf("("))
+										  $(this).text(textB)
+									  }
+
+									  if (firstCount[$(this).text()]) {
+										  $(this).text($(this).text() +"("+firstCount[$(this).text()]+")")
+									  }else {
+										  $(this).text($(this).text() +"(0)")
+									  }
+
+								  }else {
+									  if ($(this).text().lastIndexOf("(") != -1) {
+										  var textA = $(this).text()
+										  var checkIsNum = textA.substring(textA.lastIndexOf("(")+1, textA.lastIndexOf(")"))
+										  var reg = new RegExp("^[0-9]*$");
+										  // 原有主题分类名称带有括号
+										  if (!reg.test(checkIsNum)) {
+										  	  // 保持原文件名称不变
+											  $(this).text($(this).text())
+										  } else {
+											  var textB = textA.substring(0, textA.lastIndexOf("("))
+											  $(this).text(textB)
+										  }
+									  }
+									  var value = groupInfo[$(this).text()]
+									  if (!value) {
+										  value = 0;
+									  }
+									  $(this).text($(this).text()+"("+value+")")
+								  }
+								  $(".ti1").text("主题分类("+total+")")
+							  }
+						  })
 			        	  var html = '';
 			        	  for (var i = 0; i < data.length; i++) {
-			        		  // var content = (data[i]).sourceAsMap.content;
-			        		  // var title = (data[i]).sourceAsMap.title;
-			        		  // var deptName = (data[i]).sourceAsMap.departmentname;
-			        		  // var time = (data[i]).sourceAsMap.publishtime;
-
+			        	  	// console.log(data[i])
 							  var content = data[i]['_source']['content'];
+							  if ((sessionStorage.ES_ORGNAME && !sessionStorage.ES_SEARCH) ||
+									  (!sessionStorage.ES_ORGNAME && !sessionStorage.ES_SEARCH)) {
+								  content = matchReg(escape2Html(content)).substring(0, 150)+"..."
+							  }else {
+								  content = escape2Html( data[i]['_source']['summary']);
+							  }
 							  var title = data[i]['_source']['title'];
 							  if (data[i]['_source']['title.keyword']) {
 								  title = data[i]['_source']['title.keyword'];
 							  }
-							  var deptName = data[i]['_source']['departmentname'];
-							  var time = data[i]['_source']['publishtime'];
-			        		  /* if (data[i].highlightFields) {
-			        			  if (data[i].highlightFields.content) {
-			        				  content = data[i].highlightFields.content;
-			        			  }
-			        			  if (data[i].highlightFields.title) {
-			        				  title = data[i].highlightFields.title;
-			        			  }
-			        		  } */
+							  var colname = data[i]['_source']['colname'];
+							  var time = data[i]['_source']['pubtimestr'];
 			        		  html += '<div class="text_one" onclick="openWindow(\''+ data[i]['_source'].id +'\')">'
 									+ '<p>'+ title +'</p>'
 									+ '<p>'
-									+ escape2Html(content)
+									+ content
 									+ '</p>'
 									+ '<div class="data-contanier">'
-									+ '<a href="javascript:void(0);" title="'+deptName+'">'+ deptName +'</a>'
+									+ '<a href="javascript:void(0);" title="'+colname+'">'+ colname +'</a>'
 									+ '<span>'+ time +'</span>'
 									+ '</div>'
 									+ '</div>';
@@ -371,7 +401,23 @@
 			        	  $('.wrap_text').append(html);
 			          } else {
 			        	  $('.more').addClass('layui-hide');
+						  if (changeCount === 1) {
+							  $(this).text($(this).text())
+							  $(".ti1").text($(".ti1").text())
+						  }else {
+							  // 将主题分类数量全部清零
+							  $("#wjtree").find(".layui-tree-txt").each(function (){
+								  if ($(this).text().lastIndexOf("(") != -1) {
+									  var textA = $(this).text()
+									  var textB = textA.substring(0, textA.lastIndexOf("("))
+									  $(this).text(textB)
+								  }
+								  $(this).text($(this).text()+"(0)")
+								  $(".ti1").text("主题分类(0)")
+							  })
+						  }
 			        	  layer.msg('没有更多了');
+						  $('.wrap_text').empty();
 			          }
 			          layer.close(index);
 					},
@@ -387,13 +433,13 @@
 				$.ajax({
 					type:'get',
 
-					url: '/elk/deptAll',
+					url: '/elk/getPubs',
 					success:function(obj) {
 			          if (obj.data && obj.data.length > 0) {
 			        	  var data = obj.data;
 			        	  var html = '<div class="tangchu-item" title="全部" onclick="openSearch(\'全部\')">全部</div>';
 			        	  for (var i = 0; i < data.length; i++) {
-			        		  html += '<div class="tangchu-item" title="'+data[i]+'" onclick="openSearch(\''+ data[i] +'\')">'+ data[i] +'</div>';
+			        		  html += '<div class="tangchu-item" title="'+data[i].puborg+'" onclick="openSearch(\''+ data[i].puborg +'\')">'+ data[i].puborg +'</div>';
 			        	  }
 			        	  $('.tangchu').empty().append(html);
 			          }
@@ -403,21 +449,34 @@
 					}
 				})
 			}
-			function openSearch(dept) {
-				if (dept == '全部'){
-					sessionStorage.ELK_DEPTNAME = '';
+			function openSearch(org) {
+				if (!$('#search-input').val()) {
+					sessionStorage.ES_SEARCH = '';
+					sessionStorage.ES_ORGNAME = '';
+				}
+				if (org == '全部'){
+					sessionStorage.ES_ORGNAME = '全部';
 				} else {
-					sessionStorage.ELK_DEPTNAME = dept;
+					sessionStorage.ES_ORGNAME = org;
 				}
-				$('.all').attr('title',dept);
-				$('.all').text(dept);
+
+				$('.all').attr('title',org);
+				$('.all').text(org);
 				page = 1;
-				initPage();
+				var articleType = $($("#articleType").find(".layui-this")[0]).attr("data-type")
+				// $('.ly-color').text()
+				initPage(articleType, '' );
 			}
 			function openWindow(data) {
 				//console.log(dataMap[data])
 				sessionStorage.ELK_ARTICLE = JSON.stringify(dataMap[data]);
-				 window.location = 'xq.html';
+				 // window.location = 'xq.html';
+				 window.location = 'xqwj-copy.html';
+			}
+			// 去除所有html标签
+			function matchReg(str){
+				let reg=/<\/?.+?\/?>/g;
+				return str.replace(reg,'');
 			}
 			function escape2Html(str) {
 			 var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'};
@@ -517,8 +576,8 @@
 								$('#column').append(html);
 								/* layer.close(index); */
 			        	 }else {
-				      
 				        	  layer.msg('没有更多了');
+
 				         }
 
 					},
@@ -529,13 +588,13 @@
 			};
 			
 			function openWindow(data) {
-				console.log(dataMap[data])
+				// console.log(dataMap[data])
 				sessionStorage.ELK_ARTICLE = JSON.stringify(dataMap[data]);
-				window.location = 'xq.html';
+				window.location = 'xqwj-copy.html';
 			}
 			
 			function openWindow2(data) {
-				console.log(dataMap2[data]);
+				// console.log(dataMap2[data]);
 				
 				sessionStorage.ELK_ARTICLE = JSON.stringify(dataMap2[data].sourceAsMap);
 				/* window.location = 'xq.html'; */

+ 145 - 116
nngkxxdp/src/main/resources/static/zdjc/xqwj-copy.html

@@ -54,7 +54,7 @@
 		<!-- <div class="ques" id="ques">没有找到合适答案,我要提问</div> -->
 		<div class="wrap_content">
 			<div class="content_one">
-				<a href="sy.html">首页</a>> <a href="javascript:void(0);">详情</a>
+				<a href="sywj.html">首页</a>> <a href="javascript:void(0);">详情</a>
 			</div>
 			<div class="main-contanier">
 				<div class="title" style="cursor: pointer;"
@@ -87,34 +87,34 @@
 							onclick="window.history.go(-1);"
 							style="background: #F2F2F2; border: none; width: 100px;">返回</button>
 						<hr style="border-color: #F2F2F2; color: #F2F2F2;">
-						<div class="tabl">
-							<table>
-								<tr>
-									<td class="td1">标题:</td>
-									<td class="td2">Savings</td>
-									<td class="td1">发文机关:</td>
-									<td class="td2">发改委办公厅工业和信息化部办公</td>
-								</tr>
-								<tr>
-									<td class="td1">发文字号:</td>
-									<td class="td2">发改办环资(2021)1004号</td>
-									<td class="td1" >来源:</td>
-									<td class="td2">发展改委网站</td>
-								</tr>
-								<tr>
-									<td class="td1">主题分类:</td>
-									<td class="td2">城乡建设、环境保护\环境监测、保护与治理</td>
-									<td class="td1">公文种类:</td>
-									<td class="td2">通知</td>
-								</tr>
-								<tr>
-									<td class="td1">成文日期:</td>
-									<td class="td2">2021年3月23号</td>
-									<td class="td1">发布日期</td>
-									<td class="td2">2021年</td>
-								</tr>
-							</table>
-						</div>
+<!--						<div class="tabl">-->
+<!--							<table>-->
+<!--								<tr>-->
+<!--									<td class="td1">标题:</td>-->
+<!--									<td class="td2" id="title">Savings</td>-->
+<!--									<td class="td1">发文机关:</td>-->
+<!--									<td class="td2" id="fwjg">发改委办公厅工业和信息化部办公</td>-->
+<!--								</tr>-->
+<!--								<tr>-->
+<!--									<td class="td1">发文字号:</td>-->
+<!--									<td class="td2" id="fwzh">发改办环资(2021)1004号</td>-->
+<!--									<td class="td1" >来源:</td>-->
+<!--									<td class="td2" id="ly">发展改委网站</td>-->
+<!--								</tr>-->
+<!--								<tr>-->
+<!--									<td class="td1">主题分类:</td>-->
+<!--									<td class="td2" id="ztfl">城乡建设、环境保护\环境监测、保护与治理</td>-->
+<!--									<td class="td1">公文种类:</td>-->
+<!--									<td class="td2" id="gwzl">通知</td>-->
+<!--								</tr>-->
+<!--								<tr>-->
+<!--									<td class="td1">成文日期:</td>-->
+<!--									<td class="td2" id="cwrq">2021年3月23号</td>-->
+<!--									<td class="td1">发布日期</td>-->
+<!--									<td class="td2" id="fbrq">2021年</td>-->
+<!--								</tr>-->
+<!--							</table>-->
+<!--						</div>-->
 						<h4 id="d-title" style="margin-top: 30px; margin-bottom: 20px;"></h4>
 						<div style="background: #F2F2F2; padding: 15px;">
 							<div id="d-content" class="wz-content"></div>
@@ -241,8 +241,8 @@
 					layer.msg('请输入检索信息');
 					return;
 				}
-				sessionStorage.ELK_SEARCH = $('#search-input').val();
-				window.location = 'wj.html';
+				sessionStorage.ES_SEARCH = $('#search-input').val();
+				window.location = 'wj2.html';
 			});
 			$('#search-input').bind('keyup', function(event) {
 				if (event.keyCode == "13") {
@@ -291,42 +291,72 @@
 			var data = sessionStorage.ELK_ARTICLE;
 			if (data) {
 				data = JSON.parse(data);
-				$('#d-title').text(data.title);
+				console.log(data)
+				// 标题
+				$('#title').text(data.title);
+				// 发文机关
+				$('#fwjg').text(data.puborg);
+				// 发文字号
+				$('#fwzh').text(data.pcode);
+				// 来源
+				$('#ly').text(data.source);
+				// 主题分类
+				$('#ztfl').text(data.childtype);
+				// 公文种类
+				$('#gwzl').text(data.filetype);
+				// 成文日期
+				$('#cwrq').text(timeChange(data.ptime));
+				// 发布日期
+				$('#fbrq').text(data.pubtimestr);
+				$('#d-title').html(escape2Html(data.title));
 				$('#d-content').empty().append(escape2Html(data.content));
-				$('#d-dept').text(data.departmentname);
 			}
-			$
-					.ajax({
-						type : 'get',
-
-						url : '/elk/deptAll',
-						success : function(obj) {
-							if (obj.data && obj.data.length > 0) {
-								var data = obj.data;
-								var html = '<div class="tangchu-item" title="全部" onclick="openSearch(\'全部\')">全部</div>';
-								for (var i = 0; i < data.length; i++) {
-									html += '<div class="tangchu-item" title="'
-											+ data[i]
-											+ '" onclick="openSearch(\''
-											+ data[i] + '\')">' + data[i]
-											+ '</div>';
-								}
-								$('.tangchu').empty().append(html);
-							}
-						},
-						error : function(msg) {
-
+			$.ajax({
+				type : 'get',
+				url : '/elk/getPubs',
+				success : function(obj) {
+					if (obj.data && obj.data.length > 0) {
+						var data = obj.data;
+						var html = '<div class="tangchu-item" title="全部" onclick="openSearch(\'全部\')">全部</div>';
+						for (var i = 0; i < data.length; i++) {
+							html += '<div class="tangchu-item" title="'
+									+ data[i].puborg
+									+ '" onclick="openSearch(\''
+									+ data[i].puborg + '\')">' + data[i].puborg
+									+ '</div>';
 						}
-					})
+						$('.tangchu').empty().append(html);
+					}
+				},
+				error : function(msg) {
+
+				}
+			})
 		}
-		function openSearch(dept) {
-			if (dept == '全部') {
-				sessionStorage.ELK_DEPTNAME = '';
+		//时间戳格式转换
+		function timeChange(value){
+			if (value == "None") {
+				return 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 = '';
 			} else {
-				sessionStorage.ELK_DEPTNAME = dept;
+				sessionStorage.ES_ORGNAME = org;
 			}
-			$('.all').text(dept);
-			window.location = 'wj.html';
+			$('.all').text(org);
+			window.location = 'wj2.html';
 		}
 		function escape2Html(str) {
 			var arrEntities = {
@@ -406,70 +436,69 @@
 		function hotSearch() {
 			/* var index = layer.load(2); */
 
-			$
-					.ajax({
-						type : 'get',
-						url : '/elk/searchHot',
-						data : {
-							'page' : page2,
-							'limit' : 5,
-						},
-						dataType : 'json',
-						success : function(obj) {
-							if (page2 == 1) {
-								$('#column').empty();
+			$.ajax({
+				type : 'get',
+				url : '/elk/searchHotArticle',
+				data : {
+					'page' : page2,
+					'limit' : 5,
+				},
+				dataType : 'json',
+				success : function(obj) {
+					if (page2 == 1) {
+						$('#column').empty();
+
+					}
+					;
+					var datas = obj.data.array;
+
+					if (datas && datas.length > 0) {
 
+						page2++;
+						var data = datas;
+
+						var html = '';
+						for (var i = 0; i < data.length; i++) {
+							var content = (data[i]).sourceAsMap.content;
+							var title = (data[i]).sourceAsMap.title;
+							var colname = (data[i]).sourceAsMap.colname;
+							var url = (data[i]).sourceAsMap.url;
+							var iii = 2;
+							if (i < 2) {
+								iii = 1;
 							}
-							;
-							var datas = obj.data.array;
-
-							if (datas && datas.length > 0) {
-
-								page2++;
-								var data = datas;
-
-								var html = '';
-								for (var i = 0; i < data.length; i++) {
-									var content = (data[i]).sourceAsMap.content;
-									var title = (data[i]).sourceAsMap.title;
-									var deptName = (data[i]).sourceAsMap.departmentname;
-									var url = (data[i]).sourceAsMap.url;
-									var iii = 2;
-									if (i < 2) {
-										iii = 1;
-									}
-									// html += '<li onclick="openWindow(\''
-									// 		+ data[i].id + '\')">' + '<img src="./img/h'+iii+'.png" style="margin-right: 5px;" /><a >'
-									// 		+ title + '</a>' + '</li>'
-									html += '<li onclick="openWindow(\''
-											+ data[i].id + '\')" style="display:flex;">' + '<div class="huo-1" style="margin-right: 5px;"><img src="./img/h'+iii+'.png"/></div><a >'
-											+ title + '</a>' + '</li>'
-
-									dataMap2[data[i].id] = data[i];
-
-								}
-								;
-
-								$('#column').append(html);
-								/* layer.close(index); */
-							} else {
-
-								layer.msg('没有更多了');
-							}
+							// html += '<li onclick="openWindow(\''
+							// 		+ data[i].id + '\')">' + '<img src="./img/h'+iii+'.png" style="margin-right: 5px;" /><a >'
+							// 		+ title + '</a>' + '</li>'
+							html += '<li onclick="openWindow(\''
+									+ data[i].id + '\')" style="display:flex;">' + '<div class="huo-1" style="margin-right: 5px;"><img src="./img/h'+iii+'.png"/></div><a >'
+									+ title + '</a>' + '</li>'
+
+							dataMap2[data[i].id] = data[i];
 
-						},
-						error : function(msg) {
-							/* layer.close(index); */
 						}
-					})
+						;
+
+						$('#column').append(html);
+						/* layer.close(index); */
+					} else {
+
+						layer.msg('没有更多了');
+					}
+
+				},
+				error : function(msg) {
+					/* layer.close(index); */
+				}
+			})
 		};
 
 		function openWindow(data) {
-			console.log(dataMap2[data]);
-			console.log(111);
+			// console.log(dataMap2[data]);
+			// console.log(111);
 			sessionStorage.ELK_ARTICLE = JSON
 					.stringify(dataMap2[data].sourceAsMap);
-			window.location = 'xq.html';
+			window.location = 'xqwj-copy.html';
 		}
 
 		function initWechart() {