liujie
2025-05-06 6478880833f9426f715ab68aff9cb44dcbec220b
数据统计
10个文件已修改
7个文件已添加
559 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/AnalyticStatisticsController.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintRejectMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemLogMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Complaint.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/AnalyticStatisticsQuery.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsFourVo.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsOneVo.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsThreeVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsTwoVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/scheduled/SystemLogTasks.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemLogService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java 257 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemLogServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintRejectMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemLogMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>