From 0135fa289418c5fd231fa4e7c60ee7b8f06f17a7 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 06 五月 2025 19:29:11 +0800
Subject: [PATCH] Merge branch 'dev-2.0.1' of http://120.76.84.145:10101/gitblit/r/java/zhihuishenqu into dev-2.0.1

---
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintController.java          |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintRejectMapper.xml                                    |   44 ++
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/ComplaintRejectController.java           |   41 ++
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/AnalyticStatisticsQuery.java     |   22 +
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/ComplaintRejectVo.java              |   31 ++
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintRejectServiceImpl.java |   44 ++
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsThreeVo.java      |   15 +
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemLogMapper.java                     |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintAuditRecord.java       |   21 +
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/scheduled/SystemLogTasks.java                |   39 ++
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintReject.java            |   60 ++++
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintRejectService.java         |   26 +
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/AnalyticStatisticsController.java        |   76 +++++
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/ComplaintRejectQuery.java        |   28 +
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Complaint.java                  |    8 
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java       |  260 +++++++++++++++--
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintRejectMapper.java               |   26 +
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemLogMapper.xml                                          |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsOneVo.java        |   43 ++
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsFourVo.java       |   22 +
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java               |   32 +
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemLogServiceImpl.java       |    5 
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemLogService.java               |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsTwoVo.java        |   17 +
 24 files changed, 829 insertions(+), 41 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/AnalyticStatisticsController.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/AnalyticStatisticsController.java
new file mode 100644
index 0000000..26587fc
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/AnalyticStatisticsController.java
@@ -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);
+    }
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/ComplaintRejectController.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/ComplaintRejectController.java
new file mode 100644
index 0000000..b121d84
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/ComplaintRejectController.java
@@ -0,0 +1,41 @@
+package com.panzhihua.sangeshenbian.api;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.sangeshenbian.model.query.ComplaintRejectQuery;
+import com.panzhihua.sangeshenbian.model.vo.ComplaintRejectVo;
+import com.panzhihua.sangeshenbian.service.IComplaintRejectService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ * 诉求驳回表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2025-04-30
+ */
+@RestController
+@RequestMapping("/complaint-reject")
+@Api
+public class ComplaintRejectController {
+    @Resource
+    private IComplaintRejectService complaintRejectService;
+
+
+    @GetMapping("/list")
+    @ApiOperation(value = "获取问题驳回统计列表", tags = {"三个身边后台-问题驳回统计"})
+    public R<IPage<ComplaintRejectVo>> list(ComplaintRejectQuery query){
+        IPage<ComplaintRejectVo> list  = complaintRejectService.getComplaintRejectList(query);
+        return R.ok(list);
+    }
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintController.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintController.java
index 52eac40..7baf920 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintController.java
+++ b/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();
     }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintRejectMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintRejectMapper.java
new file mode 100644
index 0000000..a83e3cb
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintRejectMapper.java
@@ -0,0 +1,26 @@
+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.panzhihua.sangeshenbian.model.query.ComplaintRejectQuery;
+import com.panzhihua.sangeshenbian.model.vo.ComplaintRejectVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 诉求驳回表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-04-30
+ */
+public interface ComplaintRejectMapper extends BaseMapper<ComplaintReject> {
+
+    IPage<ComplaintRejectVo> getComplaintRejectList(@Param("page") Page<ComplaintRejectVo> page, @Param("applyStartTime") String applyStartTime, @Param("applyEndTime") String applyEndTime, @Param("examineStartTime") String examineStartTime, @Param("examineEndTime") String examineEndTime, @Param("query") ComplaintRejectQuery query);
+
+
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemLogMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemLogMapper.java
index b081014..db7904a 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemLogMapper.java
+++ b/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);
+
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Complaint.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Complaint.java
index 405d2f8..1d85d8d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Complaint.java
+++ b/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;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintAuditRecord.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintAuditRecord.java
index c5b09b7..b2fbc23 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintAuditRecord.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintAuditRecord.java
@@ -1,19 +1,18 @@
 package com.panzhihua.sangeshenbian.model.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
-import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-import java.util.Date;
-
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -123,4 +122,14 @@
     @ApiModelProperty("审核人联系方式")
     @TableField("auditor_phone")
     private String auditorPhone;
+
+    @ApiModelProperty("申请人id")
+    @TableField("apply_id")
+    private Long applyId;
+
+    @ApiModelProperty("申请人id名称")
+    @TableField("apply_name")
+    private String applyName;
+
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintReject.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintReject.java
new file mode 100644
index 0000000..47b0a9d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintReject.java
@@ -0,0 +1,60 @@
+package com.panzhihua.sangeshenbian.model.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 诉求驳回表
+ * </p>
+ *
+ * @author 
+ * @since 2025-04-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("sgsb_complaint_reject")
+@ApiModel(value="ComplaintReject对象", description="诉求驳回表")
+public class ComplaintReject implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "诉求id")
+    private Long complaintId;
+
+    @ApiModelProperty(value = "1上级 2党员")
+    private Integer userType;
+
+    @ApiModelProperty(value = "审批人id")
+    private Long userId;
+
+    @ApiModelProperty(value = "驳回理由")
+    private String remark;
+
+    @ApiModelProperty(value = "流转类型 0-上报 1-下派")
+    private Boolean type;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "1上报驳回 2延期驳回")
+    private Boolean complaintType;
+
+    @ApiModelProperty(value = "申请驳回记录id ")
+    private Long complaintAuditId;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/AnalyticStatisticsQuery.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/AnalyticStatisticsQuery.java
new file mode 100644
index 0000000..2d8bf4d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/AnalyticStatisticsQuery.java
@@ -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;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/ComplaintRejectQuery.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/ComplaintRejectQuery.java
new file mode 100644
index 0000000..0d81b7f
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/ComplaintRejectQuery.java
@@ -0,0 +1,28 @@
+package com.panzhihua.sangeshenbian.model.query;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("问题驳回统计查询对象")
+public class ComplaintRejectQuery extends BasePage{
+    @ApiModelProperty("诉求号")
+    private String serialNumber;
+    @ApiModelProperty("录入人")
+    private String reportUserName;
+    @ApiModelProperty("录入人联系方式")
+    private String reportUserPhone;
+    @ApiModelProperty("申请人")
+    private String applyUserName;
+    @ApiModelProperty("审批人")
+    private String examineUserName;
+    @ApiModelProperty("申请时间 2022-02-02 - 2022-03-03")
+    private String applyTime;
+    @ApiModelProperty("审批时间 2022-02-02 - 2022-03-03")
+    private String examineTime;
+    @ApiModelProperty("诉求状态 0-正在办理 1-延期办理 2-超时办理 3-已办结 4-群众撤销 5-上报待审核 6-上级驳回 7-延期待审核 8-已评价 9-延期驳回")
+    private Integer status;
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsFourVo.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsFourVo.java
new file mode 100644
index 0000000..652d57b
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsFourVo.java
@@ -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;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsOneVo.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsOneVo.java
new file mode 100644
index 0000000..7e5b6c6
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsOneVo.java
@@ -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;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsThreeVo.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsThreeVo.java
new file mode 100644
index 0000000..536d828
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsThreeVo.java
@@ -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;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsTwoVo.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsTwoVo.java
new file mode 100644
index 0000000..cf9a87c
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/AnalyticStatisticsTwoVo.java
@@ -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;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/ComplaintRejectVo.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/ComplaintRejectVo.java
new file mode 100644
index 0000000..11ec791
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/ComplaintRejectVo.java
@@ -0,0 +1,31 @@
+package com.panzhihua.sangeshenbian.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("问题驳回Vo")
+public class ComplaintRejectVo {
+    @ApiModelProperty(value = "诉求Id")
+    private Long complaintId;
+    @ApiModelProperty("诉求号")
+    private String serialNumber;
+    @ApiModelProperty("录入人")
+    private String reportUserName;
+    @ApiModelProperty("录入人联系方式")
+    private String reportUserPhone;
+    @ApiModelProperty("申请人")
+    private String applyUserName;
+    @ApiModelProperty("审批人")
+    private String examineUserName;
+    @ApiModelProperty("申请时间 2022-02-02 - 2022-03-03")
+    private String applyTime;
+    @ApiModelProperty("审批时间 2022-02-02 - 2022-03-03")
+    private String examineTime;
+    @ApiModelProperty("驳回理由")
+    private String remark;
+    @ApiModelProperty("诉求状态 0-正在办理 1-延期办理 2-超时办理 3-已办结 4-群众撤销 5-上报待审核 6-上级驳回 7-延期待审核 8-已评价 9-延期驳回")
+    private Integer status;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/scheduled/SystemLogTasks.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/scheduled/SystemLogTasks.java
new file mode 100644
index 0000000..7fa1258
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/scheduled/SystemLogTasks.java
@@ -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));
+
+    }
+
+
+
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintRejectService.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintRejectService.java
new file mode 100644
index 0000000..11981f5
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintRejectService.java
@@ -0,0 +1,26 @@
+package com.panzhihua.sangeshenbian.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.panzhihua.sangeshenbian.model.entity.ComplaintReject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.sangeshenbian.model.query.ComplaintRejectQuery;
+import com.panzhihua.sangeshenbian.model.vo.ComplaintRejectVo;
+
+/**
+ * <p>
+ * 诉求驳回表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-04-30
+ */
+public interface IComplaintRejectService extends IService<ComplaintReject> {
+
+
+    /**
+     * 获取诉求驳回统计列表
+     * @param query
+     * @return
+     */
+    IPage<ComplaintRejectVo> getComplaintRejectList(ComplaintRejectQuery query);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java
index 360408e..6fda0d8 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java
+++ b/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);
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemLogService.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemLogService.java
index 3141180..e003a00 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemLogService.java
+++ b/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);
 
 
+
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintRejectServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintRejectServiceImpl.java
new file mode 100644
index 0000000..17b0bb3
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintRejectServiceImpl.java
@@ -0,0 +1,44 @@
+package com.panzhihua.sangeshenbian.service.impl;
+
+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.dao.ComplaintRejectMapper;
+import com.panzhihua.sangeshenbian.model.entity.ComplaintReject;
+import com.panzhihua.sangeshenbian.model.query.ComplaintRejectQuery;
+import com.panzhihua.sangeshenbian.model.vo.ComplaintRejectVo;
+import com.panzhihua.sangeshenbian.service.IComplaintRejectService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 诉求驳回表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-04-30
+ */
+@Service
+public class ComplaintRejectServiceImpl extends ServiceImpl<ComplaintRejectMapper, ComplaintReject> implements IComplaintRejectService {
+
+    @Override
+    public IPage<ComplaintRejectVo> getComplaintRejectList(ComplaintRejectQuery query) {
+        Page<ComplaintRejectVo> page = new Page<>(query.getPageNum(), query.getPageSize());
+        String applyStartTime=null;
+        String applyEndTime=null;
+        String examineStartTime=null;
+        String examineEndTime=null;
+        if(StringUtils.isNotEmpty(query.getApplyTime())){
+            String[] split = query.getApplyTime().split(" - ");
+            applyStartTime=split[0]+" 00:00:00";
+            applyEndTime=split[1]+" 23:59:59";
+        }
+        if(StringUtils.isNotEmpty(query.getExamineTime())){
+            String[] split = query.getExamineTime().split(" - ");
+            examineStartTime=split[0]+" 00:00:00";
+            examineEndTime=split[1]+" 23:59:59";
+        }
+        return this.baseMapper.getComplaintRejectList(page,applyStartTime,applyEndTime,examineStartTime,examineEndTime,query);
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java
index 73d9ee9..a091857 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java
+++ b/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;
 
@@ -649,6 +651,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);
     }
 
@@ -772,6 +779,7 @@
         complaintAuditRecord.setDepartmentName(departmentName);
         complaintAuditRecord.setReporterLevel(reporterLevel);
         complaintAuditRecord.setReporterId(reporterId);
+        complaintAuditRecord.setApplyName(reporter);
         complaintAuditRecordService.save(complaintAuditRecord);
     }
 
@@ -1027,6 +1035,8 @@
         record1.setSort(count + 1);
         record1.setComment(dto.getComment());
         record1.setDepartmentName(departmentName);
+        // 冗余申请人名称
+        record1.setApplyName(reporter);
         complaintAuditRecordService.save(record1);
     }
 
@@ -1376,28 +1386,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();
+//        }
+//    }
 
 
     /**
@@ -1430,5 +1440,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();
+    }
+
+
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemLogServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemLogServiceImpl.java
index a49251a..995d2ef 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemLogServiceImpl.java
+++ b/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);
     }
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintRejectMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintRejectMapper.xml
new file mode 100644
index 0000000..5021ff2
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintRejectMapper.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.panzhihua.sangeshenbian.dao.ComplaintRejectMapper">
+
+
+
+
+
+
+
+
+    <select id="getComplaintRejectList" resultType="com.panzhihua.sangeshenbian.model.vo.ComplaintRejectVo">
+        select t1.remark,t1.create_time examineTime,t2.id complaintId,t2.serial_number serialNumber,t2.report_user_name reportUserName,t2.status,
+               t2.report_user_phone reportUserPhone,t3.auditor_name examineUserName,t3.create_time applyTime,t3.apply_name applyUserName
+        from sgsb_complaint_reject t1
+        left join sgsb_complaint t2 on t1.complaint_id = t2.id
+        left join sgsb_complaint_audit_record t3 on t1.complaint_audit_id = t3.id
+        <where>
+            <if test="query.serialNumber != null and query.serialNumber != ''">
+                and t2.serial_number = #{query.serialNumber}
+            </if>
+            <if test="query.reportUserName != null and query.reportUserName != ''">
+                and t2.report_user_name like concat("%",#{query.reportUserName},"%")
+            </if>
+            <if test="query.reportUserPhone != null and query.reportUserPhone != ''">
+                and t2.report_user_phone like concat("%",#{query.reportUserPhone},"%")
+            </if>
+            <if test="query.applyUserName != null and query.applyUserName != ''">
+                and t3.apply_name like concat("%",#{query.applyUserName},"%")
+            </if>
+            <if test="query.examineUserName != null and query.examineUserName != ''">
+                and t3.auditor_name like concat("%",#{query.examineUserName},"%")
+            </if>
+            <if test="applyStartTime !=null">
+                and t3.create_time between #{applyStartTime} and #{applyEndTime}
+            </if>
+            <if test="examineStartTime !=null">
+                and t1.create_time between #{applyStartTime} and #{applyEndTime}
+            </if>
+
+        </where>
+        order by t1.create_time desc
+    </select>
+</mapper>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemLogMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemLogMapper.xml
index 8486201..a2ae502 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemLogMapper.xml
+++ b/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>

--
Gitblit v1.7.1