From d6aabd981bf80cd57c09819f42b1c4e79f1904f9 Mon Sep 17 00:00:00 2001
From: manailin <261030956@qq.com>
Date: 星期三, 21 九月 2022 10:13:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/sanshuohuitang_dev' into sanshuohuitang_dev

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java |  142 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 142 insertions(+), 0 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
index 577cbdb..64cb835 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
@@ -1,11 +1,16 @@
 package com.panzhihua.service_community.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.panzhihua.common.constants.ReturnMsgConstants;
 import com.panzhihua.common.enums.SanShuoEventStatusEnum;
+import com.panzhihua.common.model.dtos.community.sanshuo.IndexDateDTO;
+import com.panzhihua.common.model.dtos.user.IndexDataDTO;
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.sanshuo.*;
@@ -21,12 +26,16 @@
 import com.panzhihua.service_community.model.dos.ComStreetDO;
 import com.panzhihua.service_community.service.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.time.DateFormatUtils;
 import org.apache.commons.lang3.RandomUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
+
+import static java.util.Objects.nonNull;
 
 /**
  * Description 三说会堂事件表业务层实现类
@@ -56,6 +65,9 @@
 
     @Resource
     private ComSanShuoIndustryCenterService comSanShuoIndustryCenterService;
+
+    @Resource
+    private ComEventMapper comEventMapper;
 
     @Override
     public R pageByComEvent(ComEvent comEvent, Page pagination) {
@@ -286,6 +298,136 @@
         return comEventTransferRecordService.insertComEventTransferRecord(comEventTransferRecord);
     }
 
+    /**
+     * 大屏事件统计
+     * @param indexDataDTO  查询入参
+     * */
+    @Override
+    public R indexData(IndexDateDTO indexDataDTO) {
+        IndexDateVO vo = comEventMapper.dateAnalysis(indexDataDTO,DateUtil.beginOfMonth(new Date()),DateUtil.endOfMonth(new Date()));
+        //计算率
+        if (nonNull(vo.getSuccess()) && !vo.getSuccess().equals(0)){
+            if (nonNull(vo.getAccepted()) && !vo.getAccepted().equals(0)){
+                //计算成功率
+                vo.setSuccessRate(NumberUtil.div(vo.getSuccess(),vo.getAccepted(),2));
+            }
+        }
+        //折线图X轴
+        List<Date> dates = pastTwelveMoth();
+        vo.setX(getYAndM(dates));
+        //新增
+        List<Integer> Y1=new ArrayList<>();
+        List<Integer> Y2=new ArrayList<>();
+        for (Date date : dates) {
+            Y1.add(comEventMapper.dateAnalysisY(date,DateUtil.endOfMonth(date),indexDataDTO));
+            Y2.add(comEventMapper.dateAnalysisYTwo(date,DateUtil.endOfMonth(date),indexDataDTO));
+        }
+        vo.setY1(Y1);
+        vo.setY2(Y2);
+        return R.ok(vo);
+    }
+
+    @Override
+    public R eventIndexData(Integer type) {
+        //获取事件总数
+        Integer eventCount = comEventMapper.selectCount(new QueryWrapper<ComEvent>().notIn("event_process_status", (7), (8)));
+        if (type.equals(1)){
+            //受理级别占比
+            List<EventRateVO> eventRateVOS = comEventMapper.eventRate();
+            for (EventRateVO eventRateVO : eventRateVOS) {
+                if (nonNull(eventRateVO)){
+                    eventRateVO.setName(typeToName(eventRateVO.getType()));
+                    if (nonNull(eventCount) && !eventCount.equals(0)){
+                        //计算占比
+                        eventRateVO.setRate(NumberUtil.div(eventRateVO.getCount(),eventCount,2));
+                    }
+                }
+            }
+            return R.ok(eventRateVOS);
+        }else if (type.equals(2)){
+            //专家级别
+            List<EventRateVO> eventRateVOS = comEventMapper.expertRate();
+            for (EventRateVO eventRateVO : eventRateVOS) {
+                if (nonNull(eventRateVO)){
+                    eventRateVO.setName(typeToNameExpert(eventRateVO.getType()));
+                    if (nonNull(eventCount) && !eventCount.equals(0)){
+                        //计算占比
+                        eventRateVO.setRate(NumberUtil.div(eventRateVO.getCount(),eventCount,2));
+                    }
+                }
+            }
+            return R.ok(eventRateVOS);
+        }else{
+            //事件类型占比
+            List<EventRateVO> eventRateVOS = comEventMapper.mediateTypeRate();
+            for (EventRateVO eventRateVO : eventRateVOS) {
+                if (nonNull(eventRateVO)){
+                    if (nonNull(eventCount) && !eventCount.equals(0)){
+                        //计算占比
+                        eventRateVO.setRate(NumberUtil.div(eventRateVO.getCount(),eventCount,2));
+                    }
+                }
+            }
+            return R.ok(eventRateVOS);
+        }
+    }
+    public String typeToName(Integer type){
+        switch (type){
+            case 1:
+                return "行业分中心受理";
+            case 2:
+                return "街道调解站受理";
+            case 3:
+                return "社区调解站受理";
+            case 4:
+                return "区三说会堂受理";
+        }
+        return null;
+    }
+
+    public String typeToNameExpert(Integer type){
+        switch (type){
+            case 1:
+                return "区三说会堂专家";
+            case 2:
+                return "行业分中心专家";
+            case 3:
+                return "街道调解站专家";
+            case 4:
+                return "社区调解站专家";
+        }
+        return null;
+    }
+
+    /**
+     * 过去12个月的月份
+     * */
+    private List<Date> pastTwelveMoth(){
+        List<Date> list=new ArrayList<>();
+        Date now = new Date();
+        for (int i = 0; i < 12; i++) {
+            //本月
+            DateTime dateTime = DateUtil.beginOfMonth(now);
+            DateUtil.format(dateTime,"yyyy-MM-dd");
+            list.add(dateTime);
+            //减一天进入下一个月
+            now=DateUtil.offsetDay(dateTime,-1);
+        }
+        return list;
+    }
+
+    /**
+     * 截取年,月
+     * */
+    private List<String> getYAndM(List<Date> dateList){
+        List<String> list=new ArrayList<>();
+        for (Date date : dateList) {
+            list.add(DateUtil.format(date,"yyyy-MM").toString());
+        }
+        return list;
+    }
+
+
     private Boolean checkExist(String sn, Long id) {
         ComEvent comEvent = new ComEvent();
         comEvent.setOrderSn(sn);

--
Gitblit v1.7.1