springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/AnalyticStatisticsController.java
New file @@ -0,0 +1,76 @@ package com.panzhihua.sangeshenbian.api; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.sangeshenbian.model.entity.Complaint; import com.panzhihua.sangeshenbian.model.query.AnalyticStatisticsQuery; import com.panzhihua.sangeshenbian.model.vo.AnalyticStatisticsOneVo; import com.panzhihua.sangeshenbian.model.vo.AnalyticStatisticsThreeVo; import com.panzhihua.sangeshenbian.model.vo.AnalyticStatisticsTwoVo; import com.panzhihua.sangeshenbian.service.IComplaintService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.text.SimpleDateFormat; import java.util.List; /** * <p> * 分析统计 前端控制器 * </p> * * @author * @since 2025-04-28 */ @RestController @RequestMapping("/analytic-statistics") @Validated public class AnalyticStatisticsController { @Autowired private IComplaintService complaintService; @PostMapping("/data") @ApiOperation(value = "分析统计", tags = {"三个身边后台-分析统计"}) public R<?> data(@Valid @RequestBody AnalyticStatisticsQuery query){ // TODO 判断当前账号的层级 如果包含市级 可以查看所有 包含区县多个 包含镇多个 包含村多个 LambdaQueryWrapper<Complaint> wrapper = new LambdaQueryWrapper<Complaint>().eq(Complaint::getCityCode, query.getCityCode()); if(query.getDistrictCode()!=null){ wrapper.eq(Complaint::getDistrictsCode, query.getDistrictCode()); } if(query.getStreetId()!=null){ wrapper.eq(Complaint::getStreetId, query.getStreetId()); } if(query.getCommunityId()!=null){ wrapper.eq(Complaint::getCommunityId, query.getCommunityId()); } SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<Complaint> complaints =complaintService.list(wrapper); // 第一部分数据 AnalyticStatisticsOneVo analyticStatisticsOneVo = complaintService.analyticStatisticsOne(query,complaints,simpleDateFormat); // 第二部分数据 List<AnalyticStatisticsTwoVo> analyticStatisticsTwoVos =complaintService.analyticStatisticsTwo(query,complaints,simpleDateFormat); // 第三部分数据 List<AnalyticStatisticsThreeVo> analyticStatisticsThreeVos =complaintService.analyticStatisticsThree(query,complaints); return R.ok(analyticStatisticsThreeVos); } public static void main(String[] args) { String beforeDay = DateUtils.getBeforeDay(6); System.out.println(beforeDay); } } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintController.java
@@ -142,6 +142,7 @@ return R.ok(); } /** * 诉求下派 */ @@ -215,6 +216,7 @@ complaintCommentService.save(complaintComment); Complaint complaint = complaintService.getById(complaintComment.getComplaintId()); complaint.setStatus(8); complaint.setCommentRate(complaintComment.getRate()); complaintService.updateById(complaint); return R.ok(); } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintRejectMapper.java
@@ -1,9 +1,9 @@ package com.panzhihua.sangeshenbian.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.sangeshenbian.model.entity.ComplaintReject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.sangeshenbian.model.query.ComplaintRejectQuery; import com.panzhihua.sangeshenbian.model.vo.ComplaintRejectVo; import org.apache.ibatis.annotations.Param; springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemLogMapper.java
@@ -18,4 +18,6 @@ IPage<SystemLog> getLogList(@Param("page") Page page, @Param("sTime") String sTime, @Param("eTime") String eTime, @Param("operatorName") String operatorName, @Param("operatorPhone") String operatorPhone, @Param("operatorCategory") String operatorCategory, @Param("ip") String ip); } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Complaint.java
@@ -203,4 +203,12 @@ @ApiModelProperty(value = "语音文件") @TableField("voice_file") private String voiceFile; @ApiModelProperty(value = "处理天数") @TableField("handling_day") private Double handlingDay; @ApiModelProperty(value = "评价") @TableField("comment_rate") private Integer commentRate; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/AnalyticStatisticsQuery.java
New file @@ -0,0 +1,22 @@ package com.panzhihua.sangeshenbian.model.query; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("数据统计数据传输对象") public class AnalyticStatisticsQuery { @ApiModelProperty("城市编码") private Integer cityCode; @ApiModelProperty("区县编码") private Integer districtCode; @ApiModelProperty("街道id") private Long streetId; @ApiModelProperty("社区id") private Long communityId; @ApiModelProperty("2022-02-02 - 2023-02-02") private String time; @ApiModelProperty("5 10 不传是所有") private Integer rank; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsFourVo.java
New file @@ -0,0 +1,22 @@ package com.panzhihua.sangeshenbian.model.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("数据统计第四部分Vo") public class AnalyticStatisticsFourVo { @ApiModelProperty("非常满意") private Double greatSatisfactionRate; @ApiModelProperty("满意") private Double satisfactionRate; @ApiModelProperty("一般") private Double generalSatisfactionRate; @ApiModelProperty("不满意") private Double dissatisfactionRate; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsOneVo.java
New file @@ -0,0 +1,43 @@ package com.panzhihua.sangeshenbian.model.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("数据统计第一部分Vo") public class AnalyticStatisticsOneVo { @ApiModelProperty("诉求单量总计") private Integer allTotal; @ApiModelProperty("诉求单量本月") private Integer thisMonthTotal; @ApiModelProperty("诉求单量同比上月") private Integer lastMonthCompareTotal; @ApiModelProperty("正在办理") private Integer nowTransactTotal; @ApiModelProperty("审核中") private Integer auditTransactTotal; @ApiModelProperty("延期办理") private Integer postponeTransactTotal; @ApiModelProperty("已办结") private Integer completeTransactTotal; @ApiModelProperty("超时办理总量") private Integer overtimeTransactTotal; @ApiModelProperty("超时办理本月") private Integer thisMonthOvertimeTransactTotal; @ApiModelProperty("超时办理同比上月") private Integer lastMonthOvertimeTransactCompareTotal; @ApiModelProperty("平均处理时长") private Double averageTime=0.0; @ApiModelProperty("处理时长本月") private Double thisMonthAverageTime=0.0; @ApiModelProperty("处理时长同比上月") private Double lastMonthCompareAverageTime=0.0; @ApiModelProperty("总体满意率") private Double satisfactionRate=0.0; @ApiModelProperty("满意率本月") private Double thisMonthSatisfactionRate=0.0; @ApiModelProperty("满意率同比上月") private Double lastMonthCompareSatisfactionRate=0.0; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsThreeVo.java
New file @@ -0,0 +1,15 @@ package com.panzhihua.sangeshenbian.model.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("数据统计第三部分Vo") public class AnalyticStatisticsThreeVo { @ApiModelProperty("类型名称") private String name; @ApiModelProperty("诉求数量") private Integer allTotal; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsTwoVo.java
New file @@ -0,0 +1,17 @@ package com.panzhihua.sangeshenbian.model.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("数据统计第二部分Vo") public class AnalyticStatisticsTwoVo { @ApiModelProperty("诉求单量") private Integer allTotal; @ApiModelProperty("诉求办结数") private Integer completeTotal; @ApiModelProperty("时间") private String time; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/scheduled/SystemLogTasks.java
New file @@ -0,0 +1,39 @@ package com.panzhihua.sangeshenbian.scheduled; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.panzhihua.sangeshenbian.model.entity.SystemLog; import com.panzhihua.sangeshenbian.service.ISystemLogService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.time.LocalDate; @Component @RequiredArgsConstructor @Slf4j public class SystemLogTasks { @Autowired private ISystemLogService systemLogService; /** * 每周一凌晨1点删除一年前的数据 */ @Scheduled(cron = "0 0 1 ? * 1") public void SystemLogDelTasks() { log.info("开始删除系统日志"); // 获取当前时间一年前的时间 String oneYearAgo = LocalDate.now().minusYears(1)+" 00:00:00"; systemLogService.remove(new LambdaQueryWrapper<SystemLog>().le(SystemLog::getCreateTime,oneYearAgo)); } } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java
@@ -10,15 +10,15 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.panzhihua.sangeshenbian.model.entity.ComplaintAuditRecord; import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress; import com.panzhihua.sangeshenbian.model.query.AnalyticStatisticsQuery; import com.panzhihua.sangeshenbian.model.query.BasePage; import com.panzhihua.sangeshenbian.model.query.ComplaintQuery; import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO; import com.panzhihua.sangeshenbian.model.vo.ComplaintVO; import com.panzhihua.sangeshenbian.model.vo.DispatchVO; import com.panzhihua.sangeshenbian.model.vo.*; import com.panzhihua.sangeshenbian.warpper.MgtComplaintQuery; import javax.validation.Valid; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.List; /** @@ -176,4 +176,30 @@ */ void delProgress(Long id); /** * 数据统计第一部分 * @param query * @return */ AnalyticStatisticsOneVo analyticStatisticsOne(AnalyticStatisticsQuery query,List<Complaint> complaints, SimpleDateFormat simpleDateFormat); /** * 数据统计第二部分 * @param query * @param complaints * @param simpleDateFormat * @return */ List<AnalyticStatisticsTwoVo> analyticStatisticsTwo(@Valid AnalyticStatisticsQuery query, List<Complaint> complaints, SimpleDateFormat simpleDateFormat); /**+ * 数据统计第三部分 * @param query * @param complaints * @return */ List<AnalyticStatisticsThreeVo> analyticStatisticsThree(@Valid AnalyticStatisticsQuery query, List<Complaint> complaints); } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemLogService.java
@@ -33,4 +33,6 @@ void addLogInfo(Long operatorId, String operatorCategory, String targetName,String ip,String operatorInto); } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java
@@ -12,22 +12,18 @@ import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo; import com.panzhihua.common.redis.RedisUtils; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.utlis.StringUtils; import com.panzhihua.sangeshenbian.config.AutoColumnWidthStrategy; import com.panzhihua.sangeshenbian.dao.ComplaintMapper; import com.panzhihua.sangeshenbian.enums.AuditStatusEnum; import com.panzhihua.sangeshenbian.enums.ComplaintExportEnum; import com.panzhihua.sangeshenbian.enums.ProcessStatusEnum; import com.panzhihua.sangeshenbian.enums.RateEnum; import com.panzhihua.sangeshenbian.enums.ReportTypeEnum; import com.panzhihua.sangeshenbian.enums.*; import com.panzhihua.sangeshenbian.model.dto.*; import com.panzhihua.sangeshenbian.model.entity.*; import com.panzhihua.sangeshenbian.model.excel.ComplaintExcel; import com.panzhihua.sangeshenbian.model.query.AnalyticStatisticsQuery; import com.panzhihua.sangeshenbian.model.query.BasePage; import com.panzhihua.sangeshenbian.model.query.ComplaintQuery; import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO; import com.panzhihua.sangeshenbian.model.vo.ComplaintVO; import com.panzhihua.sangeshenbian.model.vo.DispatchVO; import com.panzhihua.sangeshenbian.model.vo.*; import com.panzhihua.sangeshenbian.service.*; import com.panzhihua.sangeshenbian.warpper.IdentityInformation; import com.panzhihua.sangeshenbian.warpper.MgtComplaintQuery; @@ -43,9 +39,15 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Duration; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; import static cn.hutool.core.util.ObjectUtil.isNull; @@ -611,6 +613,11 @@ complaint.setCompletionUserPhone(loginUserInfoVO.getPhone()); complaint.setCompletionTime(new Date()); complaint.setCompletionUserLevel(accountLevel); // 计算处理时间 Date createTime = complaint.getCreateTime(); long l = Duration.between(createTime.toInstant(), complaint.getCompletionTime().toInstant()).getSeconds() / 3600; double handlingDay = new BigDecimal(l).divide(new BigDecimal("24"), 2, RoundingMode.HALF_UP).doubleValue(); complaint.setHandlingDay(handlingDay); this.updateById(complaint); } @@ -1334,28 +1341,28 @@ } public static void main(String[] args) { try { /*文本*/ Map<String, Object> map = new HashMap<>(); map.put("community", "社区社区"); map.put("problemType", "就业"); map.put("descriptionContent", "描述内容"); map.put("reportType", "党员"); map.put("partyOrganization", "石羊党群"); map.put("name", "张三"); map.put("contactNumber", "1888888888"); map.put("nickname", "李四"); map.put("phone", "17777777777"); // 在文本中直接使用换行符 String content = "第一行内容\n第二行内容\n第三行内容"; map.put("complaintProgress", content); map.put("status", "处理中"); XWPFTemplate.compile("F:\\DeskTop\\zhihuishequ\\springcloud_k8s_panzhihuazhihuishequ\\service_sangeshenbian\\src\\main\\resources\\template\\community_question.docx").render(map).writeToFile("F:\\DeskTop\\社区.docx"); } catch (IOException e) { e.printStackTrace(); } } // public static void main(String[] args) { // try { // /*文本*/ // Map<String, Object> map = new HashMap<>(); // map.put("community", "社区社区"); // map.put("problemType", "就业"); // map.put("descriptionContent", "描述内容"); // map.put("reportType", "党员"); // map.put("partyOrganization", "石羊党群"); // map.put("name", "张三"); // map.put("contactNumber", "1888888888"); // map.put("nickname", "李四"); // map.put("phone", "17777777777"); // // 在文本中直接使用换行符 // String content = "第一行内容\n第二行内容\n第三行内容"; // map.put("complaintProgress", content); // map.put("status", "处理中"); // XWPFTemplate.compile("F:\\DeskTop\\zhihuishequ\\springcloud_k8s_panzhihuazhihuishequ\\service_sangeshenbian\\src\\main\\resources\\template\\community_question.docx").render(map).writeToFile("F:\\DeskTop\\社区.docx"); // } catch (IOException e) { // e.printStackTrace(); // } // } /** @@ -1388,5 +1395,195 @@ complaintProgressService.removeById(id); } @Override public AnalyticStatisticsOneVo analyticStatisticsOne(AnalyticStatisticsQuery query,List<Complaint> complaints, SimpleDateFormat simpleDateFormat) { String nowYearMonth; String lastYearMonth; int value = LocalDate.now().getMonth().getValue(); if(value<10){ nowYearMonth = LocalDate.now().getYear() + "-0" + LocalDate.now().getMonth().getValue(); }else { nowYearMonth = LocalDate.now().getYear() + "-" + LocalDate.now().getMonth().getValue(); } int value1 = LocalDate.now().minusMonths(1).getMonth().getValue(); if(value1<10){ lastYearMonth = LocalDate.now().minusMonths(1).getYear() + "-0" + LocalDate.now().minusMonths(1).getMonth().getValue(); }else { lastYearMonth = LocalDate.now().minusMonths(1).getYear() + "-" + LocalDate.now().minusMonths(1).getMonth().getValue(); } AnalyticStatisticsOneVo vo = new AnalyticStatisticsOneVo(); // 诉求单量总计 vo.setAllTotal(complaints.size()); // 诉求单量本月 int thisMonthTotal = (int)complaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(nowYearMonth)).count(); vo.setThisMonthTotal( thisMonthTotal); // 诉求单量同比上月 int lastMonthTotal = (int)complaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(lastYearMonth)).count(); vo.setLastMonthCompareTotal(thisMonthTotal- lastMonthTotal); // 正在办理 int nowTransactTotal = (int) complaints.stream().filter(e -> e.getStatus() == 0).count(); vo.setNowTransactTotal(nowTransactTotal); // 审核中 int auditTransactTotal = (int) complaints.stream().filter(e -> e.getStatus() == 5 || e.getStatus() == 7).count(); vo.setAuditTransactTotal(auditTransactTotal); // 延期办理 int postponeTransactTotal = (int) complaints.stream().filter(e -> e.getStatus() == 1).count(); vo.setPostponeTransactTotal(postponeTransactTotal); // 已办结 int completeTransactTotal = (int) complaints.stream().filter(e -> e.getStatus() == 3).count(); vo.setCompleteTransactTotal(completeTransactTotal); // 超时办理总量 List<Complaint> overtimeComplaints = complaints.stream().filter(e -> e.getStatus() == 2).collect(Collectors.toList()); vo.setOvertimeTransactTotal(overtimeComplaints.size()); // 超时办理本月 int thisMonthOvertimeTransactTotal = (int) overtimeComplaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(nowYearMonth)).count(); vo.setThisMonthOvertimeTransactTotal(thisMonthOvertimeTransactTotal); // 超时办理同比上月 int lastMonthOvertimeTransactTotal = (int) overtimeComplaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(lastYearMonth)).count(); vo.setLastMonthOvertimeTransactCompareTotal(thisMonthOvertimeTransactTotal-lastMonthOvertimeTransactTotal); // 平均处理时长 if(complaints.size()>0) { double averageDay = complaints.stream().mapToDouble(v -> v.getHandlingDay() == null ? 0 : v.getHandlingDay()).average().getAsDouble(); averageDay = BigDecimal.valueOf(averageDay).setScale(2, RoundingMode.HALF_UP).doubleValue(); vo.setAverageTime(averageDay); List<Complaint> thisMonthAverageTimeComplaints = complaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(nowYearMonth)).collect(Collectors.toList()); if(thisMonthAverageTimeComplaints.size()>0){ double thisMonthAverageTime = thisMonthAverageTimeComplaints.stream().mapToDouble(v -> v.getHandlingDay() == null ? 0 : v.getHandlingDay()).average().getAsDouble(); thisMonthAverageTime = BigDecimal.valueOf(thisMonthAverageTime).setScale(2, RoundingMode.HALF_UP).doubleValue(); vo.setThisMonthAverageTime(thisMonthAverageTime); } List<Complaint> lastMonthAverageTimeComplaints = complaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(lastYearMonth)).collect(Collectors.toList()); if(lastMonthAverageTimeComplaints.size()>0){ double lastMonthAverageTime = lastMonthAverageTimeComplaints.stream().mapToDouble(v -> v.getHandlingDay() == null ? 0 : v.getHandlingDay()).average().getAsDouble(); lastMonthAverageTime = BigDecimal.valueOf(lastMonthAverageTime).setScale(2, RoundingMode.HALF_UP).doubleValue(); vo.setAverageTime(vo.getThisMonthAverageTime() - lastMonthAverageTime); } } // 获取评价了的诉求 List<Complaint> commentRateComplaints = complaints.stream().filter(e -> e.getCommentRate() != null).collect(Collectors.toList()); long count = commentRateComplaints.stream().filter(e -> e.getCommentRate() > 1).count(); int size = commentRateComplaints.size(); if(size>0){ BigDecimal multiply = BigDecimal.valueOf(count).divide(new BigDecimal(size), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")); vo.setSatisfactionRate(multiply.doubleValue()); List<Complaint> nowMonth = commentRateComplaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(nowYearMonth)).collect(Collectors.toList()); // 当月满意 long count1 = nowMonth.stream().filter(e -> e.getCommentRate() > 1).count(); // 当月的评价数 int nowMonthSize = nowMonth.size(); if(nowMonthSize>0){ BigDecimal multiply1 = BigDecimal.valueOf(count1).divide(new BigDecimal(nowMonthSize), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")); vo.setThisMonthSatisfactionRate(multiply1.doubleValue()); } List<Complaint> lastMonth = commentRateComplaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(nowYearMonth)).collect(Collectors.toList()); // 当月满意 long count2 = lastMonth.stream().filter(e -> e.getCommentRate() > 1).count(); // 当月的评价数 int lastMonthSize = lastMonth.size(); if(lastMonthSize>0){ BigDecimal multiply2 = BigDecimal.valueOf(count2).divide(new BigDecimal(lastMonthSize), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")); vo.setLastMonthCompareSatisfactionRate(vo.getThisMonthSatisfactionRate()-multiply2.doubleValue()); } } return vo; } @Override public List<AnalyticStatisticsTwoVo> analyticStatisticsTwo(AnalyticStatisticsQuery query, List<Complaint> complaints, SimpleDateFormat simpleDateFormat) { ArrayList<AnalyticStatisticsTwoVo> list = new ArrayList<>(); try { if (StringUtils.isNotEmpty(query.getTime())) { String[] split = query.getTime().split(" - "); Date parse = simpleDateFormat.parse(split[0] + " 00:00:00"); Date parse1 = simpleDateFormat.parse(split[1] + " 23:59:59"); complaints = complaints.stream().filter(e -> e.getCreateTime().getTime() <= parse1.getTime() && e.getCreateTime().getTime() >= parse.getTime()).collect(Collectors.toList()); int day = DateUtils.getDay(parse, parse1); for (int i = 0; i <= day; i++) { AnalyticStatisticsTwoVo analyticStatisticsTwoVo = new AnalyticStatisticsTwoVo(); if(i==0){ List<Complaint> collect = complaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(split[0])).collect(Collectors.toList()); analyticStatisticsTwoVo.setTime(split[0]); analyticStatisticsTwoVo.setAllTotal(collect.size()); int count = (int) collect.stream().filter(e -> e.getStatus() == 3).count(); analyticStatisticsTwoVo.setCompleteTotal(count); list.add(analyticStatisticsTwoVo); }else { String nextDay = DateUtils.getNextDay(parse, i); List<Complaint> collect = complaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(nextDay)).collect(Collectors.toList()); analyticStatisticsTwoVo.setTime(nextDay); analyticStatisticsTwoVo.setAllTotal(collect.size()); int count = (int) collect.stream().filter(e -> e.getStatus() == 3).count(); analyticStatisticsTwoVo.setCompleteTotal(count); list.add(analyticStatisticsTwoVo); } } } else { String time = DateUtils.getBeforeDay(6) + " 00:00:00"; Date parse = simpleDateFormat.parse(time); // 近7天数据 complaints = complaints.stream().filter(e -> e.getCreateTime().getTime() <= new Date().getTime() && e.getCreateTime().getTime() >= parse.getTime()).collect(Collectors.toList()); for (int i = 6; i > 0; i--) { // 获取前7天的时间 String day = DateUtils.getBeforeDay(i); List<Complaint> complaintList = complaints.stream().filter(e -> simpleDateFormat.format(e.getCreateTime()).contains(day)).collect(Collectors.toList()); AnalyticStatisticsTwoVo analyticStatisticsTwoVo = new AnalyticStatisticsTwoVo(); analyticStatisticsTwoVo.setTime(day); analyticStatisticsTwoVo.setAllTotal(complaintList.size()); int count = (int) complaintList.stream().filter(e -> e.getStatus() == 3).count(); analyticStatisticsTwoVo.setCompleteTotal(count); list.add(analyticStatisticsTwoVo); } } } catch (ParseException e) { throw new RuntimeException(e); } return list; } @Override public List<AnalyticStatisticsThreeVo> analyticStatisticsThree(AnalyticStatisticsQuery query, List<Complaint> complaints) { Map<String, List<Complaint>> groupedByProblemType = complaints.stream() .collect(Collectors.groupingBy(Complaint::getProblemType)); List<AnalyticStatisticsThreeVo> analyticStatisticsThreeVos = groupedByProblemType.entrySet().stream() .map(entry -> { AnalyticStatisticsThreeVo analyticStatisticsThreeVo = new AnalyticStatisticsThreeVo(); analyticStatisticsThreeVo.setName(entry.getKey()); analyticStatisticsThreeVo.setAllTotal(entry.getValue().size()); return analyticStatisticsThreeVo; }) .collect(Collectors.toList()); analyticStatisticsThreeVos = analyticStatisticsThreeVos.stream().sorted(Comparator.comparing(AnalyticStatisticsThreeVo::getAllTotal).reversed()).collect(Collectors.toList()); if(query.getRank()==null){ return analyticStatisticsThreeVos; }else if(query.getRank()==5){ return analyticStatisticsThreeVos.stream().limit(5).collect(Collectors.toList()); }else if(query.getRank()==10){ return analyticStatisticsThreeVos.stream().limit(10).collect(Collectors.toList()); } return Collections.emptyList(); } } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemLogServiceImpl.java
@@ -2,12 +2,12 @@ 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.utlis.StringUtils; import com.panzhihua.sangeshenbian.model.entity.SystemLog; import com.panzhihua.sangeshenbian.dao.SystemLogMapper; import com.panzhihua.sangeshenbian.model.entity.SystemLog; import com.panzhihua.sangeshenbian.model.query.SystemLogQuery; import com.panzhihua.sangeshenbian.service.ISystemLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -47,4 +47,5 @@ systemLog.setOperatorInto(operatorInto); this.save(systemLog); } } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintRejectMapper.xml
@@ -19,16 +19,16 @@ <if test="query.serialNumber != null and query.serialNumber != ''"> and t2.serial_number = #{query.serialNumber} </if> <if test="query.reportUserName != null query.reportUserName != ''"> <if test="query.reportUserName != null and query.reportUserName != ''"> and t2.report_user_name like concat("%",#{query.reportUserName},"%") </if> <if test="query.reportUserPhone != null query.reportUserPhone != ''"> <if test="query.reportUserPhone != null and query.reportUserPhone != ''"> and t2.report_user_phone like concat("%",#{query.reportUserPhone},"%") </if> <if test="query.applyUserName != null query.applyUserName != ''"> <if test="query.applyUserName != null and query.applyUserName != ''"> and t3.apply_name like concat("%",#{query.applyUserName},"%") </if> <if test="query.examineUserName != null query.examineUserName != ''"> <if test="query.examineUserName != null and query.examineUserName != ''"> and t3.auditor_name like concat("%",#{query.examineUserName},"%") </if> <if test="applyStartTime !=null"> @@ -37,9 +37,8 @@ <if test="examineStartTime !=null"> and t1.create_time between #{applyStartTime} and #{applyEndTime} </if> order by t1.create_time desc </where> order by t1.create_time desc </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemLogMapper.xml
@@ -2,6 +2,7 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.sangeshenbian.dao.SystemLogMapper"> <select id="getLogList" resultType="com.panzhihua.sangeshenbian.model.entity.SystemLog"> select t1.id, t1.operator_id, t2.name as operatorName, t2.phone as operatorPhone, t1.operator_category, t1.target_name, t1.ip, t1.create_time, t1.operator_into from sgsb_system_log t1 left join sgsb_system_user t2 on t1.operator_id = t2.id @@ -23,4 +24,7 @@ </if> order by t1.create_time desc </select> </mapper>