diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/StatisticsIndicatorPart.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/StatisticsIndicatorPart.java index bf79e3c5..78666fb1 100644 --- a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/StatisticsIndicatorPart.java +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/StatisticsIndicatorPart.java @@ -38,4 +38,7 @@ public class StatisticsIndicatorPart extends BaseDomain { */ private String month; + private String beginTime; + private String endTime; + } diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/StatisticalPaneService.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/StatisticalPaneService.java index 904a6732..ff6e7a52 100644 --- a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/StatisticalPaneService.java +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/StatisticalPaneService.java @@ -1,4 +1,8 @@ package com.zdxt.code.service; +import com.zdxt.code.domain.StatisticsIndicatorPart; + public interface StatisticalPaneService { + + StatisticsIndicatorPart complaint(StatisticsIndicatorPart statisticsIndicatorPart); } diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/StatisticalPaneImpl.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/StatisticalPaneImpl.java index c5278e3b..63ee45bc 100644 --- a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/StatisticalPaneImpl.java +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/StatisticalPaneImpl.java @@ -1,8 +1,141 @@ package com.zdxt.code.service.impl; +import com.zdxt.code.domain.ComplaintStatistics; +import com.zdxt.code.domain.EnterpriseComplaint; +import com.zdxt.code.domain.StatisticsIndicatorPart; +import com.zdxt.code.service.ComplaintStatisticsService; +import com.zdxt.code.service.IEnterpriseComplaintService; import com.zdxt.code.service.StatisticalPaneService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + @Service public class StatisticalPaneImpl implements StatisticalPaneService { + @Autowired + private ComplaintStatisticsService complaintStatisticsService; + @Override + /** + * 年度:year!==null,quarter==null,month==null + * 季度:year!==null,quarter!==null,month==null + * 月度:year!==null,quarter!==null,month!==null + */ + public StatisticsIndicatorPart complaint(StatisticsIndicatorPart statisticsIndicatorPart){ + StatisticsIndicatorPart sNow=nowDataMake(statisticsIndicatorPart); + StatisticsIndicatorPart sLast=lastDataMake(statisticsIndicatorPart,sNow.getBeginTime()); + ComplaintStatistics complaintStatisticsNow=new ComplaintStatistics(); + ComplaintStatistics complaintStatisticsLast=new ComplaintStatistics(); + complaintStatisticsNow.setBeginTime(sNow.getBeginTime()); + complaintStatisticsNow.setEndTime(sNow.getEndTime()); + complaintStatisticsLast.setBeginTime(sLast.getBeginTime()); + complaintStatisticsLast.setEndTime(sLast.getEndTime()); + List complaintStatisticsListNow=complaintStatisticsService.selectComplaintStatisticsList(complaintStatisticsNow); + List complaintStatisticsListLast=complaintStatisticsService.selectComplaintStatisticsList(complaintStatisticsLast); + StatisticsIndicatorPart p1=new StatisticsIndicatorPart(); + p1.setName("执法投诉数量"); + p1.setTotal(complaintStatisticsListNow.size()); + p1.setHuan(complaintStatisticsListNow.size()-complaintStatisticsListLast.size()); + List rqbsmNow=complaintStatisticsListNow.stream().filter(item->item.getComplaintType()==3).collect(Collectors.toList()); + List rqbsmLast=complaintStatisticsListLast.stream().filter(item->item.getComplaintType()==3).collect(Collectors.toList()); + StatisticsIndicatorPart p2=new StatisticsIndicatorPart(); + p2.setName("入企不扫码"); + p2.setTotal(rqbsmNow.size()); + p2.setHuan(rqbsmNow.size()-rqbsmLast.size()); + Map btsbmNow=complaintStatisticsListNow.stream().collect(Collectors.groupingBy(ComplaintStatistics::getComplaintDepartmentId,Collectors.counting())); + Map btsbmLast=complaintStatisticsListLast.stream().collect(Collectors.groupingBy(ComplaintStatistics::getComplaintDepartmentId,Collectors.counting())); + StatisticsIndicatorPart p3=new StatisticsIndicatorPart(); + p3.setName("入企不扫码"); + p3.setTotal(btsbmNow.size()); + p3.setHuan(btsbmNow.size()-btsbmLast.size()); + StatisticsIndicatorPart p=new StatisticsIndicatorPart(); + List statisticsIndicatorPartList=new ArrayList<>(); + p.setName("执法投诉"); + statisticsIndicatorPartList.add(p1); + statisticsIndicatorPartList.add(p2); + statisticsIndicatorPartList.add(p2); + p.setStatisticsIndicatorPartList(statisticsIndicatorPartList); + return p; + } + + /** + * 当前时间处理--转换成beginTime和endTime的形式 + */ + public StatisticsIndicatorPart nowDataMake(StatisticsIndicatorPart sip){ + LocalDate localDate=LocalDate.now(); + DateTimeFormatter str=DateTimeFormatter.ofPattern("yyyy-MM-dd"); + StatisticsIndicatorPart statisticsIndicatorPart=new StatisticsIndicatorPart(); + if(sip.getYear()==null||"".equals(sip.getYear())){ + sip.setYear(localDate.getYear()+""); + } + if(sip.getMonth()!=null&&!"".equals(sip.getMonth())) { + LocalDate beginTime = localDate.withYear(Integer.valueOf(sip.getYear())).withMonth(Integer.valueOf(sip.getMonth())).withDayOfMonth(1); + LocalDate endTime = beginTime.with(TemporalAdjusters.lastDayOfMonth()); + statisticsIndicatorPart.setBeginTime(str.format(beginTime)); + statisticsIndicatorPart.setEndTime(str.format(endTime)); + }else if(sip.getQuarter()!=null&&!"".equals(sip.getQuarter())){ + LocalDate beginTime=LocalDate.now(); + LocalDate endTime=LocalDate.now(); + switch (sip.getQuarter()) { + case 1: + beginTime = localDate.withYear(Integer.valueOf(sip.getYear())).withMonth(1).withDayOfMonth(1); + endTime = beginTime.withMonth(3).with(TemporalAdjusters.lastDayOfMonth()); + break; + case 2: + beginTime = localDate.withYear(Integer.valueOf(sip.getYear())).withMonth(4).withDayOfMonth(1); + endTime = beginTime.withMonth(6).with(TemporalAdjusters.lastDayOfMonth()); + break; + case 3: + beginTime = localDate.withYear(Integer.valueOf(sip.getYear())).withMonth(7).withDayOfMonth(1); + endTime = beginTime.withMonth(9).with(TemporalAdjusters.lastDayOfMonth()); + break; + case 4: + beginTime = localDate.withYear(Integer.valueOf(sip.getYear())).withMonth(10).withDayOfMonth(1); + endTime = beginTime.withMonth(12).with(TemporalAdjusters.lastDayOfMonth()); + break; + } + statisticsIndicatorPart.setBeginTime(str.format(beginTime)); + statisticsIndicatorPart.setEndTime(str.format(endTime)); + }else { + LocalDate beginTime=localDate.withYear(Integer.valueOf(sip.getYear())).withMonth(1).withDayOfMonth(1); + LocalDate endTime = localDate.withYear(Integer.valueOf(sip.getYear())).withMonth(12).with(TemporalAdjusters.lastDayOfMonth()); + statisticsIndicatorPart.setBeginTime(str.format(beginTime)); + statisticsIndicatorPart.setEndTime(str.format(endTime)); + } + return statisticsIndicatorPart; + } + /** + * 上一时间处理--转换成beginTime和endTime的形式 + */ + public StatisticsIndicatorPart lastDataMake(StatisticsIndicatorPart sip,String nowBeginData){ + DateTimeFormatter str3=DateTimeFormatter.ofPattern("MM"); + DateTimeFormatter str=DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate localDate= LocalDate.parse(nowBeginData, str); + StatisticsIndicatorPart statisticsIndicatorPart=new StatisticsIndicatorPart(); + if(sip.getMonth()!=null&&!"".equals(sip.getMonth())) { + LocalDate beginTime=localDate.minusMonths(1).withDayOfMonth(1); + LocalDate endTime = localDate.minusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); + sip.setBeginTime(str.format(beginTime)); + sip.setEndTime(str.format(endTime)); + }else if(sip.getQuarter()!=null&&!"".equals(sip.getQuarter())){ + localDate=localDate.minusMonths(3); + int quarter=(int)Math.ceil(Double.valueOf(str3.format(localDate))/3); + LocalDate beginTime=localDate.withMonth(quarter*3-2).withDayOfMonth(1); + LocalDate endTime=localDate.withMonth(quarter*3).with(TemporalAdjusters.lastDayOfMonth()); + sip.setBeginTime(str.format(beginTime)); + sip.setEndTime(str.format(endTime)); + }else { + LocalDate beginTime=localDate.minusYears(1).withMonth(1).withDayOfMonth(1); + LocalDate endTime=localDate.minusYears(1).withMonth(12).with(TemporalAdjusters.lastDayOfMonth()); + sip.setBeginTime(str.format(beginTime)); + sip.setEndTime(str.format(endTime)); + } + return statisticsIndicatorPart; + } }