| | |
| | | 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.*; |
| | |
| | | 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 三说会堂事件表业务层实现类 |
| | |
| | | |
| | | @Resource |
| | | private ComSanShuoIndustryCenterService comSanShuoIndustryCenterService; |
| | | |
| | | @Resource |
| | | private ComEventMapper comEventMapper; |
| | | |
| | | @Override |
| | | public R pageByComEvent(ComEvent comEvent, Page pagination) { |
| | |
| | | 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); |