Browse Source

专题更新情况切换为华龙网接口数据源

gt 2 years ago
parent
commit
adf25a7dd5

+ 4 - 3
nngkxxdp/src/main/java/com/example/nngkxxdp/controller/UpdateStateController.java

@@ -46,10 +46,11 @@ public class UpdateStateController {
      * @Param
      **/
     @GetMapping("getSpecialDetail")
-    public Map<String, Object> getSpecialDetail(String typeName) {
-        if (Blank.isEmpty(typeName)) {
+    public Map<String, Object> getSpecialDetail(String columnId) {
+        if (Blank.isEmpty(columnId)) {
             return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
         }
-        return updateStateService.getDetailSpecialState(typeName);
+//        return updateStateService.getDetailSpecialState(typeName);
+        return updateStateService.getDetailSpecialStateNew(columnId);
     }
 }

+ 9 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/dao/ColumnDao.java

@@ -1,8 +1,10 @@
 package com.example.nngkxxdp.dao;
 
 import com.example.nngkxxdp.entity.Column;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by hyh
@@ -11,4 +13,11 @@ import java.util.List;
 public interface ColumnDao {
 
     List<Column> getByPostId(Integer postId);
+
+    /**
+     * 根据类型获取栏目信息
+     * @param type
+     * @return
+     */
+    List<Map<String, Object>> getColumnByType(@Param("type") int type);
 }

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

@@ -71,4 +71,17 @@ public interface HlwInterfaceDao {
      * @param offsetMonth
      */
     List<Map<String, Object>> countArticleByChnlidsAndDate(@Param("list") List<String> list, @Param("date") String date);
+
+    /**
+     * 获取其他栏目信息(民生栏目、专题栏目)
+     * @param list
+     * @return
+     */
+    List<Map<String, Object>> getColumnUpdateInfo(@Param("list") List<String> list);
+
+    /**
+     * 按时间统计文章数量
+     * @param dateList
+     */
+    List<Map<String, Object>> countArticleBycolumnIdAndDates(@Param("list") List<String> dateList, @Param("columnId") String columnId);
 }

+ 6 - 1
nngkxxdp/src/main/java/com/example/nngkxxdp/service/UpdateStateService.java

@@ -30,5 +30,10 @@ public interface UpdateStateService {
     **/
      Map<String ,Object>getDetailSpecialState(String typeName);
 
-
+    /**
+     * 专项栏目详情(华龙网数据源)
+     * @param columnId
+     * @return
+     */
+    Map<String, Object> getDetailSpecialStateNew(String columnId);
 }

+ 3 - 22
nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/ArticleServiceImpl.java

@@ -10,6 +10,7 @@ import javax.annotation.Resource;
 import cn.hutool.core.convert.Convert;
 import com.example.nngkxxdp.dao.*;
 import com.example.nngkxxdp.entity.Dept;
+import com.example.nngkxxdp.util.ArrayUtil;
 import org.springframework.stereotype.Service;
 
 import com.alibaba.fastjson.JSONArray;
@@ -215,13 +216,13 @@ public class ArticleServiceImpl implements ArticleService {
 				mergeList,
 				DateUtil.offsetDay(DateUtil.parseDate(DateUtil.today()).toJdkDate(), -30).toString("yyyy-MM-dd")
 		);
-		Map<String, Object> monthMap = listConvertMap(monthUpdate, "chnlid", null);
+		Map<String, Object> monthMap = ArrayUtil.listConvertMap(monthUpdate, "chnlid", null);
 		// 年更新情况
 		List<Map<String, Object>> yearUpdate = hlwInterfaceDao.countArticleByChnlidsAndDate(
 				mergeList,
 				DateUtil.offsetDay(DateUtil.parseDate(DateUtil.today()).toJdkDate(), -365).toString("yyyy-MM-dd")
 		);
-		Map<String, Object> yearMap = listConvertMap(yearUpdate, "chnlid", null);
+		Map<String, Object> yearMap = ArrayUtil.listConvertMap(yearUpdate, "chnlid", null);
 
 		// 部门
 		for (Dept dept : deptList) {
@@ -613,24 +614,4 @@ public class ArticleServiceImpl implements ArticleService {
 		Map<String, Object> columns = handleColumn(hlwInterfaceDao.getStreetInformation(DateUtil.format(new Date(), "yyyy-MM-dd")));
 		return null;
 	}
-
-	/**
-	 * 将list转换为map,指定map的key和value,如果value为null或空则把list的项作为value
-	 * @param list
-	 * @param key
-	 * @param value
-	 * @return
-	 */
-	public Map<String, Object> listConvertMap(List<Map<String, Object>> list, String key, String value) {
-		Map<String, Object> res = new HashMap<>();
-		for (int i = 0; i < list.size(); i++) {
-			Map<String, Object> map = list.get(i);
-			if (Blank.isEmpty(value)) {
-				res.put(map.get(key).toString(), map);
-			} else {
-				res.put(map.get(key).toString(), map.get(value));
-			}
-		}
-		return res;
-	}
 }

+ 55 - 2
nngkxxdp/src/main/java/com/example/nngkxxdp/service/impl/UpdateStateServiceImpl.java

@@ -1,7 +1,12 @@
 package com.example.nngkxxdp.service.impl;
 
+import cn.hutool.core.convert.Convert;
+import com.example.nngkxxdp.dao.ColumnDao;
+import com.example.nngkxxdp.dao.DeptDao;
+import com.example.nngkxxdp.dao.HlwInterfaceDao;
 import com.example.nngkxxdp.dao.UpdateStateDao;
 import com.example.nngkxxdp.service.UpdateStateService;
+import com.example.nngkxxdp.util.ArrayUtil;
 import com.example.nngkxxdp.util.Blank;
 import com.example.nngkxxdp.util.ConstStr;
 
@@ -10,6 +15,7 @@ import cn.hutool.core.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
@@ -32,11 +38,26 @@ public class UpdateStateServiceImpl implements UpdateStateService {
     @Autowired
     UpdateStateDao updateStateDao;
 
+    @Resource
+    private HlwInterfaceDao hlwInterfaceDao;
+
+    @Resource
+    private ColumnDao columnDao;
+
     @Override
     public Map<String, Object> getSpecialState() {
         Map<String, Object> result = new HashMap();
-        List<Map<String, Object>> map = updateStateDao.SpecialStateSum();
+//        List<Map<String, Object>> map = updateStateDao.SpecialStateSum();
+        List<Map<String, Object>> columns = columnDao.getColumnByType(1);
+        ArrayList<String> columnIds = new ArrayList<>();
+        for (int i = 0; i < columns.size(); i++) {
+            Map<String, Object> map = columns.get(i);
+            columnIds.add(Convert.toStr(map.get("chnlid")));
+        }
+
+        List<Map<String, Object>> map = hlwInterfaceDao.getColumnUpdateInfo(columnIds);
         result.put("result", map);
+        result.put("columns", columns);
         return result;
     }
 
@@ -128,7 +149,39 @@ public class UpdateStateServiceImpl implements UpdateStateService {
         result.put("listDate", listDate);
         return result;
     }
-    
+
+    @Override
+    public Map<String, Object> getDetailSpecialStateNew(String columnId) {
+        Map<String, Object> map = new HashMap<>();
+        List<Integer> listCount = new ArrayList<>();
+        List<String> dateList = getDateList(30);
+        List<Map<String, Object>> list = hlwInterfaceDao.countArticleBycolumnIdAndDates(dateList, columnId);
+        Map<String, Object> updateCountMap = ArrayUtil.listConvertMap(list, "date", "count");
+
+        for (int i = 0; i < dateList.size(); i++) {
+            String key = dateList.get(i);
+            listCount.add(Convert.toInt(updateCountMap.get(key), 0));
+        }
+
+        map.put("listDate", dateList);
+        map.put("listCount", listCount);
+        return map;
+    }
+
+    /**
+     * 生成今天之前指定天数,指定格式的日期(不包括当天)
+     * @param days
+     * @return
+     */
+    public static List<String> getDateList(Integer days) {
+        List<String> res = new ArrayList<>();
+        Date date = new Date();
+        for (int i = days - 1; i >= 0; i--) {
+            res.add(DateUtil.offsetDay(date, -i).toString("yyyy-MM-dd"));
+        }
+        return res;
+    }
+
     public static void main(String[] args) {
 		System.err.println(DateUtil.weekOfYear(DateUtil.parse("2021-09-29")));
 	}

+ 21 - 4
nngkxxdp/src/main/java/com/example/nngkxxdp/util/ArrayUtil.java

@@ -7,10 +7,7 @@ import cn.hutool.json.JSONUtil;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @ApplicationName: commons
@@ -134,4 +131,24 @@ public class ArrayUtil {
         return t;
     }
 
+    /**
+     * 将list转换为map,指定map的key和value,如果value为null或空则把list的项作为value
+     * @param list
+     * @param key
+     * @param value
+     * @return
+     */
+    public static Map<String, Object> listConvertMap(List<Map<String, Object>> list, String key, String value) {
+        Map<String, Object> res = new HashMap<>();
+        for (int i = 0; i < list.size(); i++) {
+            Map<String, Object> map = list.get(i);
+            if (Blank.isEmpty(value)) {
+                res.put(map.get(key).toString(), map);
+            } else {
+                res.put(map.get(key).toString(), map.get(value));
+            }
+        }
+        return res;
+    }
+
 }

+ 10 - 0
nngkxxdp/src/main/resources/mapper/ColumnDao.xml

@@ -11,4 +11,14 @@
             h_column hc
         WHERE hc.post_management_id = #{postId}
     </select>
+
+    <!-- 按类型获取其他栏目 -->
+    <select id="getColumnByType" resultType="map" >
+        SELECT
+            id, `column`, child_column, chnlid, type
+        FROM
+            other_column
+        WHERE
+            type = #{type}
+    </select>
 </mapper>

+ 38 - 0
nngkxxdp/src/main/resources/mapper/HlwInterfaceDao.xml

@@ -182,5 +182,43 @@
 			CHNLID
 	</select>
 
+	<!-- 获取其他栏目信息(民生栏目、专题栏目) -->
+	<select id="getColumnUpdateInfo" resultType="map" >
+		SELECT
+			a.CHANNELNAME,
+			count(1) count,
+			DATE_FORMAT(MAX(a.DOCRELTIME), '%Y-%m-%d') lastUpdateTime,
+			b.frequency
+		FROM
+			save_hlw_interface_data a
+			LEFT JOIN column_relation b ON a.CHNLID = b.chnlid
+		WHERE
+			a.CHNLID in
+			<foreach collection="list" item="item" open="(" separator="," close=")">
+				#{item}
+			</foreach>
+		GROUP BY
+			a.CHNLID
+	</select>
+
+	<!-- 按时间统计文章数量 -->
+	<select id="countArticleBycolumnIdAndDates" resultType="map">
+		SELECT
+			DATE_FORMAT( DOCRELTIME, '%Y-%m-%d' ) date,
+			count( 1 ) count
+		FROM
+			save_hlw_interface_data
+		WHERE
+			CHNLID = #{columnId}
+		  AND DATE_FORMAT( DOCRELTIME, '%Y-%m-%d' ) IN
+				<foreach collection="list" item="item" open="(" separator="," close=")">
+					#{item}
+				</foreach>
+		GROUP BY
+			DATE_FORMAT( DOCRELTIME, '%Y-%m-%d' )
+		ORDER BY
+			DATE_FORMAT(DOCRELTIME,'%Y-%m-%d')
+	</select>
+
 </mapper>
 

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

@@ -1086,23 +1086,23 @@
                                     <div class="layui-tab update-tab">
                                         <!-- 详情数据 -->
 
-                                        <div class="box" style="width: 240px;">
-                                            <div class="minli" onclick="detailed(1)" style="color: #2D7BCC;">
-                                                <div class="circle"></div>
-                                                疫苗接种点
-                                            </div>
-                                            <div class="minli" onclick="detailed(2)">
-                                                <div class="circle"></div>
-                                                我为群众办实事
-                                            </div>
-                                            <div class="minli" onclick="detailed(3)">
-                                                <div class="circle"></div>
-                                                城市热线
-                                            </div>
-                                            <div id="ybs" class="minli" onclick="detailed(4)">
-                                                <div class="circle"></div>
-                                                部门镇街“一把手”这周在忙啥
-                                            </div>
+                                        <div class="box special-column-box" style="width: 240px;">
+<!--                                            <div class="minli" onclick="detailed(1)" style="color: #2D7BCC;">-->
+<!--                                                <div class="circle"></div>-->
+<!--                                                疫苗接种点-->
+<!--                                            </div>-->
+<!--                                            <div class="minli" onclick="detailed(2)">-->
+<!--                                                <div class="circle"></div>-->
+<!--                                                我为群众办实事-->
+<!--                                            </div>-->
+<!--                                            <div class="minli" onclick="detailed(3)">-->
+<!--                                                <div class="circle"></div>-->
+<!--                                                城市热线-->
+<!--                                            </div>-->
+<!--                                            <div id="ybs" class="minli" onclick="detailed(4)">-->
+<!--                                                <div class="circle"></div>-->
+<!--                                                部门镇街“一把手”这周在忙啥-->
+<!--                                            </div>-->
                                         </div>
                                         <div id="main" style=" float: right;  width: 830px;height:400px;"></div>
                                     </div>

+ 29 - 27
nngkxxdp/src/main/resources/static/page/js/base/updataState.item.js

@@ -5,7 +5,7 @@ function getSpecialState() {
     detailed(1)
 }
 
-$('.minli').on('click', function () {
+$('.special-column-box').on('click', '.minli', function () {
     $(this).css('color', '#2D7BCC');
     var that = this;
     $('.minli').each(function () {
@@ -19,46 +19,48 @@ function getUpdate() {
     _html = '';
     get('/getUpdate/getSpecialState', true, null,
         function (res) {
+            // 专题更新情况
             let data = res.result;
             for (let i = 0; i < data.length; i++) {
                 _html += '<tr>" +\n' +
-                    '<td>' + data[i].columnFirstName + '</td>\n';
-                    if (data[i].columnFirstName == '疫苗接种点') {
-                    	_html += '<td>每天</td>\n';
-                    } else if (data[i].columnFirstName == '部门镇街“一把手”这周在忙啥') {
-                    	_html += '<td>一周</td>\n';
-                    } else {
-                    	_html += '<td>一个月</td>\n';
-                    }
-                    _html += '<td>已更新</td>\n' +
+                    '<td>' + data[i].channelname + '</td>\n';
+                _html += '<td>' + data[i].frequency + '天</td>\n';
+                var lastUpdateDays = GetNumberOfDays(data[i].lastUpdateTime, new Date().toDateString());
+
+                var updateStatus = (data[i].frequency - lastUpdateDays) < 0 ? '未更新' : '已更新';
+                _html += '<td>' + updateStatus + '</td>\n' +
                     '<td >' + data[i].count + '</td>\n' +
-                    '<td >' + data[i].releaseDate + '</td>' +
+                    '<td >' + data[i].lastUpdateTime + '</td>' +
                     '</tr>'
             }
             $("#upDataDetail").html(_html);
 
+            // 详情数据
+            let columns = res.columns;
+            var html = '';
+            for (let i = 0; i < columns.length; i++) {
+                var column = columns[i];
+                var style = '';
+                if (i == 0) {
+                    style = 'color: #2D7BCC;';
+                }
+                html += `
+                <div class="minli" onclick="detailed(${column.chnlid})" style="${style}">
+                    <div class="circle"></div>
+                    ${column.column}
+                </div>
+                `
+            }
+            $('.special-column-box').empty().append(html);
+
         }, function (err) {
         });
 
 }
 
-function detailed(type) {
-    let typeName;
-    if (type == 1) {
-        typeName = "疫苗接种点"
-    } else if (type == 2) {
-        typeName = "我为群众办实事"
-
-    } else if (type == 3) {
-        typeName = "城市热线"
-
-    } else if (type == 4) {
-        typeName = "部门镇街“一把手”这周在忙啥"
-
-    }
-
+function detailed(columnId) {
     get('/getUpdate/getSpecialDetail', true, {
-            "typeName": typeName
+            "columnId": columnId
         },
         function (res) {
             DetailEcharts(res.listDate, res.listCount)