From 76ed3735c23da4b7ef97b8a0f365facbc14f6903 Mon Sep 17 00:00:00 2001
From: manailin <261030956@qq.com>
Date: 星期日, 27 六月 2021 16:05:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/test' into test

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java |  174 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 111 insertions(+), 63 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java
index 4addef6..1ac8cdb 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java
@@ -2,16 +2,22 @@
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.panzhihua.common.model.dtos.partybuilding.ComPbActivityDTO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.screen.*;
 import com.panzhihua.common.utlis.DateUtils;
 import com.panzhihua.common.utlis.StringUtils;
 import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.ComActDO;
+import com.panzhihua.service_community.model.dos.ComActDynDO;
 import com.panzhihua.service_community.service.ScreenWorkService;
+import org.apache.commons.net.ntp.TimeStamp;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -26,20 +32,19 @@
     private static final Integer pageSize = 200;
 
     @Resource
+    private ComActDAO comActDAO;
+    @Resource
     private ComActNeighborCircleDAO comActNeighborCircleDAO;
-
+    @Resource
+    private ComActDynDAO comActDynDAO;
     @Resource
     private ComActMicroWishDAO comActMicroWishDAO;
-
     @Resource
     private ComActActivityDAO actActivityDAO;
-
     @Resource
     private ComActDiscussDAO comActDiscussDAO;
-
     @Resource
     private ComPbDynDAO comPbDynDAO;
-
     @Resource
     private ComActEasyPhotoDAO comActEasyPhotoDAO;
 
@@ -209,9 +214,6 @@
         return R.ok(comActEasyPhotoScreenVO);
     }
 
-
-
-
     private List<EasyPhotoPointVO> getList(Map<String, Long> dealMap) {
         Set<Map.Entry<String,Long>> entrySet = dealMap.entrySet();
 
@@ -229,63 +231,109 @@
     @Override
     public R workCount(Long communityId) {
         ComActWorkScreenVO comActWorkScreenVO = new ComActWorkScreenVO();
-        comActWorkScreenVO.setAvgTime("1小时");
-        comActWorkScreenVO.setTotalCompletedPoint(70);
-        comActWorkScreenVO.setEveryDayNum("0.3");
-        List<ActWorkCountVO> completetPoint = new ArrayList<>();
-        ActWorkCountVO easyPhoto = new ActWorkCountVO();
-        easyPhoto.setName("随手拍");
-        easyPhoto.setNum(10);
-        completetPoint.add(easyPhoto);
-        ActWorkCountVO wish = new ActWorkCountVO();
-        wish.setName("微心愿");
-        wish.setNum(23);
-        completetPoint.add(wish);
-        ActWorkCountVO discuss = new ActWorkCountVO();
-        discuss.setName("一起议");
-        discuss.setNum(33);
-        completetPoint.add(discuss);
-        ActWorkCountVO neighbor = new ActWorkCountVO();
-        neighbor.setName("邻里圈");
-        neighbor.setNum(43);
-        completetPoint.add(neighbor);
-        ActWorkCountVO pbWork = new ActWorkCountVO();
-        pbWork.setName("党建工作");
-        pbWork.setNum(13);
-        completetPoint.add(pbWork);
-        ActWorkCountVO activity = new ActWorkCountVO();
-        activity.setName("社区活动");
-        activity.setNum(63);
-        completetPoint.add(activity);
-        comActWorkScreenVO.setCompletetPoint(completetPoint);
+        //已完成
+        comActWorkScreenVO.setCompletetList(comActNeighborCircleDAO.countAllCompletedWorkByCommunityId(communityId));
 
-        List<ActWorkCountVO> completetPoint2 = new ArrayList<>();
-        ActWorkCountVO easyPhoto2 = new ActWorkCountVO();
-        easyPhoto2.setName("随手拍");
-        easyPhoto2.setNum(10);
-        completetPoint2.add(easyPhoto2);
-        ActWorkCountVO wish2 = new ActWorkCountVO();
-        wish2.setName("微心愿");
-        wish2.setNum(23);
-        completetPoint2.add(wish2);
-        ActWorkCountVO discuss2 = new ActWorkCountVO();
-        discuss2.setName("一起议");
-        discuss2.setNum(33);
-        completetPoint2.add(discuss2);
-        ActWorkCountVO neighbor2 = new ActWorkCountVO();
-        neighbor2.setName("邻里圈");
-        neighbor2.setNum(43);
-        completetPoint2.add(neighbor2);
-        ActWorkCountVO pbWork2 = new ActWorkCountVO();
-        pbWork2.setName("党建工作");
-        pbWork2.setNum(13);
-        completetPoint2.add(pbWork2);
-        ActWorkCountVO activity2 = new ActWorkCountVO();
-        activity2.setName("社区活动");
-        activity2.setNum(63);
-        completetPoint2.add(activity2);
-        comActWorkScreenVO.setNonePoint(completetPoint2);
+        //未完成
+        comActWorkScreenVO.setNoneList(comActNeighborCircleDAO.countAllNoneCompletedWorkByCommunityId(communityId));
+        comActWorkScreenVO.setTotalCompleted(comActWorkScreenVO.getCompletetList().stream().mapToInt(PieElementVO::getNum).sum());
+        comActWorkScreenVO.setTotalNoneCompleted(comActWorkScreenVO.getNoneList().stream().mapToInt(PieElementVO::getNum).sum());
+
+        //统计平均耗时、平均每天完成个数
+        Map<String,Object> avgMap = comActNeighborCircleDAO.countAvgByCommunityId(communityId);
+        comActWorkScreenVO.setAvgTime(avgMap.get("avgTime") == null?"0h":convertTimeStr(Double.valueOf(avgMap.get("avgTime").toString()).intValue()));
+
+        ComActDO comActDO = comActDAO.selectById(communityId);
+        BigDecimal days = new BigDecimal(DateUtil.betweenDay(comActDO.getCreateAt(),new Date(),false));
+        BigDecimal num = new BigDecimal(comActWorkScreenVO.getTotalCompleted());
+        BigDecimal rt = num.divide(days,1, RoundingMode.HALF_UP);
+        comActWorkScreenVO.setEveryDayNum(rt.toString());
         return R.ok(comActWorkScreenVO);
     }
 
+    private String convertTimeStr(int minute) {
+        int hour = minute/60;
+        int min = minute%60;
+        StringBuilder timestr = new StringBuilder();
+        if(hour > 0){
+            timestr.append(hour).append("h");
+        }
+        if(min > 0){
+            timestr.append(min).append("min");
+        }
+        return timestr.toString();
+    }
+
+    @Override
+    public R dynamicWork(Long communityId){
+        ComDynamicWorkScreenVO workScreenVO = new ComDynamicWorkScreenVO();
+        String date = DateUtils.getDateFormatString(new Date(),moth_format_str);
+        Map<String,Long> countMap = comActDynDAO.countByCommunityId(communityId,date);
+        if(!countMap.isEmpty()){
+            workScreenVO.setTotalNum(countMap.get("dynTotal")== null ? 0L : Long.valueOf(countMap.get("dynTotal").toString()));
+            workScreenVO.setCurrentNum(countMap.get("currentNum")== null ? 0L : Long.valueOf(countMap.get("currentNum").toString()));
+        }
+
+        //计算平均每天动态
+        DateScreenVO countAvg = comActDynDAO.countByAvgCommunityId(communityId);
+        if(countAvg != null){
+            int day = DateUtils.differentDays(countAvg.getStartTime(),countAvg.getEndTime());
+            if(day > 0){
+                workScreenVO.setCurrentAvgNum(workScreenVO.getTotalNum().intValue()/day);
+            }
+        }
+
+        //查询最新的10条社区动态
+        List<String> dynList = new ArrayList<>();
+        List<ComActDynDO> actDynDOList = comActDynDAO.selectList(new QueryWrapper<ComActDynDO>().lambda().eq(ComActDynDO::getCommunityId,communityId).orderByDesc(ComActDynDO::getCreateAt).last("limit 10"));
+        if(!actDynDOList.isEmpty()){
+            actDynDOList.forEach(actDyn -> {
+                dynList.add(actDyn.getTitle());
+            });
+        }
+        workScreenVO.setDynList(dynList);
+
+        //统计近半年数据
+        List<DynamicWorkVO> list = new ArrayList<>();
+        for(DynamicWorkVO dynamicWorkVO: listHalfYearByDyn()){
+            DynamicWorkVO result = comActDynDAO.countByTime(dynamicWorkVO.getStart(),dynamicWorkVO.getEnd(),communityId);
+            result.setMonth(dynamicWorkVO.getMonth());
+            list.add(result);
+        }
+        workScreenVO.setList(list);
+
+        return R.ok(workScreenVO);
+    }
+
+    private List<DynamicWorkVO> listHalfYearByDyn() {
+        List<DynamicWorkVO> dateList = new ArrayList<>();
+        Date now  = new Date();
+        for(int i= 6;i>=1;i--){
+            Date date = DateUtils.getDateM(now,-i);
+            DateTime endDay = DateUtil.endOfMonth(date);
+
+            int m = DateUtil.month(endDay);
+//            if(m == 0){
+//                m = 12;
+//            }
+//            m--;
+            int day = DateUtil.dayOfMonth(endDay);
+            int half = day/2;
+            String month = DateUtil.format(date,moth_format_str);
+            DynamicWorkVO dynamicWorkVO = new DynamicWorkVO();
+            dynamicWorkVO.setMonth(monthStr[m]+"月上旬");
+            dynamicWorkVO.setStart(month+ "-01 00:00:00");
+            dynamicWorkVO.setEnd(month+ "-"+half+" 23:59:58");
+            dateList.add(dynamicWorkVO);
+            DynamicWorkVO dynamicWorkVO1 = new DynamicWorkVO();
+            dynamicWorkVO1.setMonth(monthStr[m]+"月下旬");
+            dynamicWorkVO1.setStart(month+ "-"+half+" 23:59:58");
+            dynamicWorkVO1.setEnd(DateUtils.getDateFormatString(endDay,"yyyy-MM-dd HH:mm:ss"));
+            dateList.add(dynamicWorkVO1);
+        }
+        return dateList;
+
+    }
+
+
 }

--
Gitblit v1.7.1