Explorar el Código

1.修改获取数据概览、获取客户数量变化趋势可根据时间查询
2.为LocalDateTime.now添加时区

云殇忆 hace 1 año
padre
commit
364bf5aee3

+ 7 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/BrandController.java

@@ -1,6 +1,7 @@
 package com.ruoyi.demo.controller;
 
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.demo.constant.RedisContant;
@@ -43,14 +44,18 @@ public class BrandController extends BaseController {
 //    获取品牌信息列表
     @PostMapping("/list")
     public R list(ListQueryBody body){
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         return R.ok(brandService.searchListByMulti(body,userId));
     }
 
 //    获取品牌详细信息
     @GetMapping("/info")
     public R info(String brandId){
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         return R.ok(brandService.searchByBrandId(brandId,userId));
     }
 

+ 42 - 16
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/WorkTableController.java

@@ -1,10 +1,12 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.github.pagehelper.PageInfo;
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.demo.entity.bo.AttentionPoolBo;
 import com.ruoyi.demo.entity.bo.AttentionPoolStatisticsBo;
+import com.ruoyi.demo.entity.bo.WorkTableBo;
 import com.ruoyi.demo.entity.vo.AddFollowRecordVo;
 import com.ruoyi.demo.entity.vo.TurnBusinessOpportunitiesVo;
 import com.ruoyi.demo.entity.vo.WorkTableSearchVo;
@@ -32,23 +34,27 @@ public class WorkTableController {
 
 //    获取数据概览
     @GetMapping("/databack/about")
-    public R about(){
+    public R about(@RequestBody WorkTableBo vo){
         // 获取用户id
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
-        AttentionPoolStatisticsBo bo = databackService.searchAbout(userId);
+        AttentionPoolStatisticsBo bo = databackService.searchAbout(userId,vo);
         return R.ok(bo);
     }
 
 //    获取客户数量变化趋势
     @GetMapping("/databack/trend")
-    public R trend(){
+    public R trend(String condition){
         // 获取用户id
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
-        List<AttentionPoolStatisticsBo> bos = databackService.searchTrand(userId);
+        List<AttentionPoolStatisticsBo> bos = databackService.searchTrand(userId,condition);
         return R.ok(bos);
     }
 
@@ -56,7 +62,9 @@ public class WorkTableController {
     @PostMapping("/pool/list")
     public R poolList(WorkTableSearchVo workTableSearchVo){
         // 获取用户id
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         PageInfo<List<AttentionPoolBo>> listPageInfo = attentionPoolService.searchList(workTableSearchVo, userId);
@@ -67,7 +75,9 @@ public class WorkTableController {
     @DeleteMapping("/pool")
     public R cancel(String attentionId){
         // 获取用户id
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         if (attentionId == null || attentionId.equals(""))
@@ -82,7 +92,9 @@ public class WorkTableController {
     @PostMapping("/pool")
     public R turn(TurnBusinessOpportunitiesVo turnVo){
         // 获取用户id
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         int flag = attentionPoolService.turnBusinessOpportunities(turnVo, userId);
@@ -97,7 +109,9 @@ public class WorkTableController {
     @PostMapping("/clue/list")
     public R clueList(WorkTableSearchVo vo){
         // 获取用户id
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         return R.ok(businessOpportunitiesService.searchList(vo,userId));
@@ -107,7 +121,9 @@ public class WorkTableController {
     @PostMapping("/follow/list")
     public R followList(WorkTableSearchVo vo){
         // 获取用户id
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         return R.ok(businessOpportunitiesService.searchFollowList(vo,userId));
@@ -117,7 +133,9 @@ public class WorkTableController {
     @PostMapping("/follow")
     public R followAdd(AddFollowRecordVo addVo){
         // 获取用户id
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         int flag = businessOpportunitiesService.addFollow(addVo, userId);
@@ -129,7 +147,9 @@ public class WorkTableController {
     //    品牌关注
     @PostMapping("/brand")
     public R brandAttention(String brandId){
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         int flag = attentionPoolService.attentionBrand(brandId, userId);
@@ -146,7 +166,9 @@ public class WorkTableController {
     //    品牌取消关注
     @DeleteMapping("/brand")
     public R brandCancel(String brandId){
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         int flag = attentionPoolService.cancelBrand(brandId, userId);
@@ -159,7 +181,9 @@ public class WorkTableController {
 //    网点关注
     @PostMapping("/wdInfo")
     public R wdInfoAttention(String wdId){
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         int flag = attentionPoolService.attentionWdInfo(wdId,userId);
@@ -176,7 +200,9 @@ public class WorkTableController {
 //    网点取消关注
     @DeleteMapping("/wdInfo")
     public R wdInfoCancel(String wdId){
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        Long userid = Long.valueOf(loginId.split(":")[1]);
+        String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
         int flag = attentionPoolService.cancelWdInfo(wdId, userId);

+ 1 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/AttentionPoolStatistics.java

@@ -27,7 +27,7 @@ public class AttentionPoolStatistics {
     @TableField("user_id")
     private String userId;
     @TableField("stat_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @JsonSerialize(using = LocalDateTimeSerializer.class)
     @JsonDeserialize(using = LocalDateTimeDeserializer.class)
     private LocalDateTime statTime;

+ 11 - 4
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/AttentionPoolStatisticsBo.java

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import com.ruoyi.demo.entity.AttentionPoolStatistics;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -16,8 +17,14 @@ public class AttentionPoolStatisticsBo implements Serializable {
     private Integer clueCount;
     private Integer onlineCount;
     private Integer offlineCount;
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonSerialize(using = LocalDateTimeSerializer.class)
-    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
-    private LocalDateTime time;
+    private String time;
+
+    public AttentionPoolStatisticsBo () {}
+    public AttentionPoolStatisticsBo (AttentionPoolStatistics statistics) {
+        this.attentionCount = statistics.getAttentionCount();
+        this.clueCount = statistics.getClueCount();
+        this.onlineCount = statistics.getOnlineCount();
+        this.offlineCount = statistics.getOfflineCount();
+        this.time = statistics.getStatTime().toString();
+    }
 }

+ 11 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/WorkTableBo.java

@@ -0,0 +1,11 @@
+package com.ruoyi.demo.entity.bo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class WorkTableBo {
+    private LocalDateTime startTime;
+    private LocalDateTime endTime;
+}

+ 1 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/AttentionPoolDao.java

@@ -5,6 +5,7 @@ import com.ruoyi.demo.entity.AttentionPool;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 @Mapper

+ 4 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/AttentionPoolStatisticsDao.java

@@ -2,6 +2,7 @@ package com.ruoyi.demo.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.demo.entity.AttentionPoolStatistics;
+import com.ruoyi.demo.entity.bo.AttentionPoolStatisticsBo;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -9,4 +10,7 @@ import java.util.List;
 @Mapper
 public interface AttentionPoolStatisticsDao extends BaseMapper<AttentionPoolStatistics> {
     List<AttentionPoolStatistics> searchAllByUserId(String userId);
+    List<AttentionPoolStatisticsBo> selectAllByUserIdAndDay(String userId);
+    List<AttentionPoolStatisticsBo> selectAllByUserIdAndMonth(String userId);
+    List<AttentionPoolStatisticsBo> selectAllByUserIdAndYear(String userId);
 }

+ 3 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/DatabackService.java

@@ -2,10 +2,11 @@ package com.ruoyi.demo.service;
 
 
 import com.ruoyi.demo.entity.bo.AttentionPoolStatisticsBo;
+import com.ruoyi.demo.entity.bo.WorkTableBo;
 
 import java.util.List;
 
 public interface DatabackService {
-    AttentionPoolStatisticsBo searchAbout(String userId);
-    List<AttentionPoolStatisticsBo> searchTrand(String userId);
+    AttentionPoolStatisticsBo searchAbout(String userId, WorkTableBo vo);
+    List<AttentionPoolStatisticsBo> searchTrand(String userId,String condition);
 }

+ 4 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/AttentionPoolServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
@@ -82,7 +83,7 @@ public class AttentionPoolServiceImpl implements AttentionPoolService {
         clue.setTelephone(turnVo.getTelephone());
         clue.setFollowUpCount(0);
         clue.setUserId(userId);
-        clue.setCreateTime(LocalDateTime.now());
+        clue.setCreateTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         return businessOpportunitiesDao.insert(clue);
     }
 
@@ -108,7 +109,7 @@ public class AttentionPoolServiceImpl implements AttentionPoolService {
         pool.setWdName("");
         pool.setWdAddrInfo("");
         pool.setUserId(userId);
-        pool.setAttentionTime(LocalDateTime.now());
+        pool.setAttentionTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         return attentionPoolDao.insert(pool);
     }
 
@@ -165,7 +166,7 @@ public class AttentionPoolServiceImpl implements AttentionPoolService {
             pool.setBrandName("");
         }
         pool.setUserId(userId);
-        pool.setAttentionTime(LocalDateTime.now());
+        pool.setAttentionTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         return attentionPoolDao.insert(pool);
     }
 

+ 2 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/BusinessOpportunitiesServiceImpl.java

@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
@@ -84,7 +85,7 @@ public class BusinessOpportunitiesServiceImpl implements BusinessOpportunitiesSe
         record.setFollowPerson(addVo.getPerson());
         record.setFollowWay(addVo.getWay());
         record.setUserId(userId);
-        record.setFollowTime(LocalDateTime.now());
+        record.setFollowTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         if (followUpDao.insert(record) == 1){
             return businessOpportunitiesDao.updateFollowUpCountByClueIdAndUserId(clue.getClueId(), clue.getFollowUpCount() + 1, userId);
         }

+ 66 - 17
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/DatabackServiceImpl.java

@@ -1,8 +1,13 @@
 package com.ruoyi.demo.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.demo.entity.AttentionPool;
 import com.ruoyi.demo.entity.AttentionPoolStatistics;
+import com.ruoyi.demo.entity.BusinessOpportunitiesClue;
+import com.ruoyi.demo.entity.FollowUpRecord;
 import com.ruoyi.demo.entity.bo.AttentionPoolStatisticsBo;
+import com.ruoyi.demo.entity.bo.WorkTableBo;
 import com.ruoyi.demo.mapper.AttentionPoolDao;
 import com.ruoyi.demo.mapper.AttentionPoolStatisticsDao;
 import com.ruoyi.demo.mapper.BusinessOpportunitiesDao;
@@ -11,6 +16,7 @@ import com.ruoyi.demo.service.DatabackService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -26,11 +32,53 @@ public class DatabackServiceImpl implements DatabackService {
     FollowUpDao followUpDao;
 
     @Override
-    public AttentionPoolStatisticsBo searchAbout(String userId) {
-        int attentionCount = attentionPoolDao.searchCountByUserId(userId);
-        int clueCount = businessOpportunitiesDao.searchCountByUserId(userId);
-        int onlineCount = followUpDao.searchCountByUserIdAndWay(userId, "线上电话");
-        int offlineCount = followUpDao.searchCountByUserIdAndWay(userId, "线下实地");
+    public AttentionPoolStatisticsBo searchAbout(String userId, WorkTableBo vo) {
+        int attentionCount = 0;
+        QueryWrapper<AttentionPool> attentionPoolQueryWrapper = new QueryWrapper<>();
+        attentionPoolQueryWrapper.eq("user_id",userId);
+        if (vo.getStartTime() != null)
+            attentionPoolQueryWrapper.apply("DATE_FORMAT(`attention_time`,'%Y-%m-%d %H:%i:%s') >= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",vo.getStartTime());
+        if (vo.getEndTime() != null)
+            attentionPoolQueryWrapper.apply("DATE_FORMAT(`attention_time`,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",vo.getEndTime());
+        List<AttentionPool> attentionPools = attentionPoolDao.selectList(attentionPoolQueryWrapper);
+        if (attentionPools != null)
+            attentionCount = attentionPools.size();
+
+        int clueCount = 0;
+        QueryWrapper<BusinessOpportunitiesClue> businessOpportunitiesClueQueryWrapper = new QueryWrapper<>();
+        businessOpportunitiesClueQueryWrapper.eq("user_id",userId);
+        if (vo.getStartTime() != null)
+            businessOpportunitiesClueQueryWrapper.apply("DATE_FORMAT(`create_time`,'%Y-%m-%d %H:%i:%s') >= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",vo.getStartTime());
+        if (vo.getEndTime() != null)
+            businessOpportunitiesClueQueryWrapper.apply("DATE_FORMAT(`create_time`,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",vo.getEndTime());
+        List<BusinessOpportunitiesClue> businessOpportunitiesClues = businessOpportunitiesDao.selectList(businessOpportunitiesClueQueryWrapper);
+        if (businessOpportunitiesClues != null)
+            clueCount = businessOpportunitiesClues.size();
+
+        int onlineCount = 0;
+        QueryWrapper<FollowUpRecord> followUpRecordQueryWrapper = new QueryWrapper<>();
+        followUpRecordQueryWrapper.eq("user_id",userId);
+        followUpRecordQueryWrapper.eq("follow_way","线上电话");
+        if (vo.getStartTime() != null)
+            followUpRecordQueryWrapper.apply("DATE_FORMAT(`follow_time`,'%Y-%m-%d %H:%i:%s') >= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",vo.getStartTime());
+        if (vo.getEndTime() != null)
+            followUpRecordQueryWrapper.apply("DATE_FORMAT(`follow_time`,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",vo.getEndTime());
+        List<FollowUpRecord> followUpRecords = followUpDao.selectList(followUpRecordQueryWrapper);
+        if (followUpRecords != null)
+            onlineCount = followUpRecords.size();
+
+        int offlineCount = 0;
+        QueryWrapper<FollowUpRecord> followUpRecordQueryWrapper1 = new QueryWrapper<>();
+        followUpRecordQueryWrapper1.eq("user_id",userId);
+        followUpRecordQueryWrapper1.eq("follow_way","线下实地");
+        if (vo.getStartTime() != null)
+            followUpRecordQueryWrapper1.apply("DATE_FORMAT(`follow_time`,'%Y-%m-%d %H:%i:%s') >= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",vo.getStartTime());
+        if (vo.getEndTime() != null)
+            followUpRecordQueryWrapper1.apply("DATE_FORMAT(`follow_time`,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",vo.getEndTime());
+        List<FollowUpRecord> followUpRecords1 = followUpDao.selectList(followUpRecordQueryWrapper1);
+        if (followUpRecords1 != null)
+            offlineCount = followUpRecords1.size();
+
         AttentionPoolStatisticsBo bo = new AttentionPoolStatisticsBo();
         bo.setAttentionCount(attentionCount);
         bo.setClueCount(clueCount);
@@ -40,18 +88,19 @@ public class DatabackServiceImpl implements DatabackService {
     }
 
     @Override
-    public List<AttentionPoolStatisticsBo> searchTrand(String userId) {
-        List<AttentionPoolStatistics> list = attentionPoolStatisticsDao.searchAllByUserId(userId);
-        List<AttentionPoolStatisticsBo> boList = new ArrayList<>();
-        for (AttentionPoolStatistics aps : list){
-            AttentionPoolStatisticsBo apsb = new AttentionPoolStatisticsBo();
-            apsb.setAttentionCount(aps.getAttentionCount());
-            apsb.setClueCount(aps.getClueCount());
-            apsb.setOnlineCount(aps.getOnlineCount());
-            apsb.setOfflineCount(aps.getOfflineCount());
-            apsb.setTime(aps.getStatTime());
-            boList.add(apsb);
+    public List<AttentionPoolStatisticsBo> searchTrand(String userId,String condition) {
+        if (condition == null)
+            condition = "day";
+        List<AttentionPoolStatisticsBo> list = new ArrayList<>();
+        if (condition != null){
+            if (condition.equals("day"))
+                list = attentionPoolStatisticsDao.selectAllByUserIdAndDay(userId);
+            if (condition.equals("month"))
+                list = attentionPoolStatisticsDao.selectAllByUserIdAndMonth(userId);
+            if (condition.equals("year"))
+                list = attentionPoolStatisticsDao.selectAllByUserIdAndYear(userId);
         }
-        return boList;
+//        List<AttentionPoolStatistics> list = attentionPoolStatisticsDao.searchAllByUserId(userId);
+        return list;
     }
 }

+ 3 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/WdInfoServiceImpl.java

@@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
@@ -35,7 +36,7 @@ public class WdInfoServiceImpl implements WdInfoService {
         List<String> addrs = new ArrayList<>();
         List<String> times = new ArrayList<>();
         for (int i = 0; i < 12; i++){
-            times.add(LocalDateTime.now().plusMonths(-i).format(DateTimeFormatter.ofPattern("yyyy-MM")));
+            times.add(LocalDateTime.now(ZoneId.of("Asia/Shanghai")).plusMonths(-i).format(DateTimeFormatter.ofPattern("yyyy-MM")));
         }
         if (addrCodes != null){
             for (String s : addrCodes){
@@ -59,7 +60,7 @@ public class WdInfoServiceImpl implements WdInfoService {
         List<WdOpcloseVo> vos = new ArrayList<>();
         if (addrCodes != null){
             for (String s : addrCodes){
-                WdOpclose opclose = wdOpcloseDao.selectListByAddrCodeAndWdTypeCodes(categoryUtil.whatis(s), wdTypeCodes, LocalDateTime.now().plusMonths(-1));
+                WdOpclose opclose = wdOpcloseDao.selectListByAddrCodeAndWdTypeCodes(categoryUtil.whatis(s), wdTypeCodes, LocalDateTime.now(ZoneId.of("Asia/Shanghai")).plusMonths(-1));
                 if (opclose != null){
                     WdOpcloseVo vo = new WdOpcloseVo(s,opclose);
                     vo.setAddrName(categoryUtil.addrMap.get(s));

+ 49 - 0
ruoyi-demo/src/main/resources/mapper/demo/AttentionPoolStatisticsMapper.xml

@@ -12,6 +12,13 @@
         <result property="userId" column="user_id"/>
         <result property="statTime" column="stat_time"/>
     </resultMap>
+    <resultMap type="com.ruoyi.demo.entity.bo.AttentionPoolStatisticsBo" id="StatisticsBoResult">
+        <result property="attentionCount" column="attention_count"/>
+        <result property="clueCount" column="clue_count"/>
+        <result property="onlineCount" column="online_count"/>
+        <result property="offlineCount" column="offline_count"/>
+        <result property="time" column="stat_time"/>
+    </resultMap>
     <select id="searchAllByUserId" resultMap="StatisticsResult">
         select * from `bl_attention_pool_statistics`
         <where>
@@ -20,4 +27,46 @@
             </if>
         </where>
     </select>
+    <select id="selectAllByUserIdAndDay" resultMap="StatisticsBoResult">
+        SELECT
+            SUM(attention_count) attention_count,
+            SUM(clue_count) clue_count,
+            SUM(online_count) online_count,
+            SUM(offline_count) offline_count,
+            DATE_FORMAT(stat_time,'%Y-%m-%d') stat_time
+        FROM
+            `bl_attention_pool_statistics`
+        WHERE
+            user_id = #{userId}
+        GROUP BY
+            DATE_FORMAT(stat_time,'%Y-%m-%d');
+    </select>
+    <select id="selectAllByUserIdAndMonth" resultMap="StatisticsBoResult">
+        SELECT
+            SUM(attention_count) attention_count,
+            SUM(clue_count) clue_count,
+            SUM(online_count) online_count,
+            SUM(offline_count) offline_count,
+            DATE_FORMAT(stat_time,'%Y-%m') stat_time
+        FROM
+            `bl_attention_pool_statistics`
+        WHERE
+            user_id = #{userId}
+        GROUP BY
+            DATE_FORMAT(stat_time,'%Y-%m');
+    </select>
+    <select id="selectAllByUserIdAndYear" resultMap="StatisticsBoResult">
+        SELECT
+            SUM(attention_count) attention_count,
+            SUM(clue_count) clue_count,
+            SUM(online_count) online_count,
+            SUM(offline_count) offline_count,
+            DATE_FORMAT(stat_time,'%Y') stat_time
+        FROM
+            `bl_attention_pool_statistics`
+        WHERE
+            user_id = #{userId}
+        GROUP BY
+            DATE_FORMAT(stat_time,'%Y');
+    </select>
 </mapper>