Просмотр исходного кода

新增首页统计折线图/柱状图

Administrator 2 лет назад
Родитель
Сommit
6decd35775

+ 8 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/IndexController.java

@@ -29,5 +29,12 @@ public class IndexController extends BaseController {
         return indexService.getIndexData();
     }
 
-
+    /**
+     * 本周职业 类别核酸情况统计
+     * @return
+     */
+    @GetMapping("/jobStyle")
+    public AjaxResult jobStyle() {
+        return indexService.getJobStyle();
+    }
 }

+ 8 - 1
ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserNucleicTimeMapper.java

@@ -10,7 +10,7 @@ import com.ruoyi.system.domain.UserNucleicTime;
  * @author ruoyi
  * @date 2022-08-15
  */
-public interface UserNucleicTimeMapper 
+public interface UserNucleicTimeMapper
 {
     /**
      * 查询导入人员核酸时间记录
@@ -80,4 +80,11 @@ public interface UserNucleicTimeMapper
      * @return
      */
     public int getIndexDataLastWeek(Date weekTime);
+
+    /**
+     * 获取首页折线图/柱状图,本周所有人群数据
+     * @param weekTime
+     * @return
+     */
+    public List<UserNucleicTime> getJobStyle(Date weekTime);
 }

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IIndexService.java

@@ -14,4 +14,10 @@ public interface IIndexService {
      */
     public AjaxResult getIndexData();
 
+    /**
+     * 本周职业 类别核酸情况统计
+     * @return
+     */
+    public AjaxResult getJobStyle();
+
 }

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IUserNucleicTimeService.java

@@ -64,4 +64,10 @@ public interface IUserNucleicTimeService
      * @param
      */
     public void getIndexData();
+
+    /**
+     * 获取首页折线图/柱状图人群数据
+     * @return
+     */
+    public List<UserNucleicTime> getJobStyle();
 }

+ 42 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IndexServiceImpl.java

@@ -2,13 +2,24 @@ package com.ruoyi.system.service.impl;
 
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.UserNucleicTime;
+import com.ruoyi.system.service.ISysDictDataService;
+import com.ruoyi.system.service.ISysDictTypeService;
 import com.ruoyi.system.service.IUserNucleicTimeService;
 import com.ruoyi.system.service.IIndexService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Author: tjf
@@ -23,6 +34,9 @@ public class IndexServiceImpl implements IIndexService {
 
     @Autowired
     private IUserNucleicTimeService userNucleicTimeService;
+
+    @Autowired
+    private ISysDictTypeService dictTypeService;
     /**
      * 后台首页统计本月核酸人数,本周人数,对比上周人数
      * @return
@@ -38,4 +52,32 @@ public class IndexServiceImpl implements IIndexService {
         Map<String, Object> indexDataNew = redisCache.getCacheMap(CacheConstants.INDEX_DATA);
         return AjaxResult.success(indexDataNew);
     }
+
+    /**
+     * 本周职业 类别核酸情况统计
+     * @return
+     */
+    @Override
+    public AjaxResult getJobStyle() {
+        Map<String,Object> map = new HashMap<>(2);
+        //从字典值中获取X轴坐标
+        List<SysDictData> occupationalCategory = dictTypeService.selectDictDataByType("occupational_category");
+        List<String> dictLabelList = occupationalCategory.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());
+        map.put("x",dictLabelList);
+        List<UserNucleicTime> jobStyle = userNucleicTimeService.getJobStyle();
+        Map<String, List<UserNucleicTime>> collectJobStyle = jobStyle.stream().filter(e -> StringUtils.isNotEmpty(e.getJobStyle())).collect(Collectors.groupingBy(UserNucleicTime::getJobStyle));
+        List<Integer> yResult = new ArrayList<>();
+        for (String dictLabel : dictLabelList) {
+            List<UserNucleicTime> userNucleicTimes = collectJobStyle.get(dictLabel);
+            if (userNucleicTimes == null || userNucleicTimes.size() == 0){
+                yResult.add(0);
+            }else {
+                //根据IDCard进行分组,就知道有多少个不同的身份证号码
+                Map<String, List<UserNucleicTime>> collectIdCard = userNucleicTimes.stream().filter(e -> StringUtils.isNotEmpty(e.getIdCard())).collect(Collectors.groupingBy(UserNucleicTime::getIdCard));
+                yResult.add(collectIdCard.size());
+            }
+        }
+        map.put("y",yResult);
+        return AjaxResult.success(map);
+    }
 }

+ 16 - 3
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserNucleicTimeServiceImpl.java

@@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl;
 
 import java.text.NumberFormat;
 import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -108,12 +109,13 @@ public class UserNucleicTimeServiceImpl implements IUserNucleicTimeService
      */
     @Override
     public void getIndexData() {
+        Date nowDate = DateUtils.getNowDate();
         //获取本月人数
-        int indexDataMonth = userNucleicTimeMapper.getIndexDataMonth(DateUtils.getNowDate());
+        int indexDataMonth = userNucleicTimeMapper.getIndexDataMonth(nowDate);
         //获取本周人数
-        int indexDataWeek = userNucleicTimeMapper.getIndexDataWeek(DateUtils.getNowDate());
+        int indexDataWeek = userNucleicTimeMapper.getIndexDataWeek(nowDate);
         //获取上周周人数
-        int indexDataLastWeek = userNucleicTimeMapper.getIndexDataLastWeek(DateUtils.getNowDate());
+        int indexDataLastWeek = userNucleicTimeMapper.getIndexDataLastWeek(nowDate);
 
         NumberFormat numberformat= NumberFormat.getPercentInstance();
         numberformat.setMinimumFractionDigits(2);
@@ -134,4 +136,15 @@ public class UserNucleicTimeServiceImpl implements IUserNucleicTimeService
         map.put("resultLastWeek",resultLastWeek);
         redisCache.setCacheMap(CacheConstants.INDEX_DATA,map);
     }
+
+    /**
+     * 获取首页折线图/柱状图
+     * @return
+     */
+    @Override
+    public List<UserNucleicTime> getJobStyle() {
+        Date nowDate = DateUtils.getNowDate();
+        List<UserNucleicTime> jobStyle = userNucleicTimeMapper.getJobStyle(nowDate);
+        return jobStyle;
+    }
 }

+ 5 - 0
ruoyi-system/src/main/resources/mapper/system/UserNucleicTimeMapper.xml

@@ -84,4 +84,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 select ifnull(count(s1.id_card),0) from (
         SELECT id_card FROM `user_nucleic_time` where YEARWEEK(DATE_FORMAT(nucleic_collect_time,'%Y-%m-%d')) = YEARWEEK(DATE_FORMAT(now(),'%Y-%m-%d')) -1 GROUP BY id_card) s1
     </select>
+
+    <select id="getJobStyle" resultMap="UserNucleicTimeResult">
+        <include refid="selectUserNucleicTimeVo"/>
+        where DATE_FORMAT(nucleic_collect_time,'%x-%v') = DATE_FORMAT(now(),'%x-%v')
+    </select>
 </mapper>