wxg 2 лет назад
Родитель
Сommit
b423239a6b
27 измененных файлов с 597 добавлено и 217 удалено
  1. 24 8
      src/main/java/com/metro/controller/WarFruitController.java
  2. 2 2
      src/main/java/com/metro/entity/enums/DataShowTopEnum.java
  3. 20 0
      src/main/java/com/metro/entity/enums/WarFruitEnum.java
  4. 35 0
      src/main/java/com/metro/entity/excel/PoliceStationWarFruitExcel.java
  5. 39 0
      src/main/java/com/metro/entity/excel/PoliceWarFruitExcel.java
  6. 1 1
      src/main/java/com/metro/entity/excel/WarningExcel.java
  7. 6 0
      src/main/java/com/metro/entity/po/DataShow.java
  8. 20 20
      src/main/java/com/metro/entity/po/WarFruit.java
  9. 6 1
      src/main/java/com/metro/entity/search/PoliceSearch.java
  10. 33 0
      src/main/java/com/metro/entity/search/WarFruitSearch.java
  11. 10 10
      src/main/java/com/metro/entity/vo/DataShowTopVO.java
  12. 37 0
      src/main/java/com/metro/entity/vo/NewPassreCordsWarFruitVO.java
  13. 4 0
      src/main/java/com/metro/entity/vo/PassreCordsLessVO.java
  14. 11 11
      src/main/java/com/metro/entity/vo/WarFruitVO.java
  15. 2 1
      src/main/java/com/metro/mapper/DataShowMapper.java
  16. 3 4
      src/main/java/com/metro/mapper/PassreCordsMapper.java
  17. 9 2
      src/main/java/com/metro/service/WarFruitService.java
  18. 28 13
      src/main/java/com/metro/service/impl/DataShowServiceImpl.java
  19. 1 1
      src/main/java/com/metro/service/impl/PassreCordsServiceImpl.java
  20. 114 32
      src/main/java/com/metro/service/impl/WarFruitServiceImpl.java
  21. 46 20
      src/main/java/com/metro/service/job/AdminDataShowTask.java
  22. 4 4
      src/main/java/com/metro/service/job/AdminDataShowTodayTask.java
  23. 21 20
      src/main/java/com/metro/service/job/WarFruitTask.java
  24. 19 18
      src/main/java/com/metro/service/job/WarFruitTodayTask.java
  25. 34 21
      src/main/resources/mapper/DataShowMapper.xml
  26. 34 2
      src/main/resources/mapper/PassreCordsMapper.xml
  27. 34 26
      src/main/resources/mapper/WarFruitMapper.xml

+ 24 - 8
src/main/java/com/metro/controller/WarFruitController.java

@@ -5,13 +5,20 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.metro.baseRe.BaseResponse;
 import com.metro.entity.search.PoliceSearch;
+import com.metro.entity.search.WarFruitSearch;
 import com.metro.entity.vo.WarFruitTopVO;
 import com.metro.entity.vo.WarFruitVO;
 import com.metro.service.WarFruitService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+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.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 
 /**
  * <p>
@@ -31,15 +38,15 @@ public class WarFruitController {
 
     @ApiOperation("派出所top10")
     @ApiOperationSupport(order = 1)
-    @GetMapping("/polliceOfficeTop10")
-    public BaseResponse<WarFruitTopVO> polliceOfficeTop10() {
-        return BaseResponse.ok(warFruitService.polliceOfficeTop10());
+    @PostMapping("/polliceOfficeTop10")
+    public BaseResponse<WarFruitTopVO> polliceOfficeTop10(@RequestBody WarFruitSearch warFruitSearch) {
+        return BaseResponse.ok(warFruitService.polliceOfficeTop10(warFruitSearch));
     }
     @ApiOperation("民警top10")
     @ApiOperationSupport(order = 2)
-    @GetMapping("/policeTop10")
-    public BaseResponse<WarFruitTopVO> policeTop10() {
-        return BaseResponse.ok(warFruitService.policeTop10());
+    @PostMapping("/policeTop10")
+    public BaseResponse<WarFruitTopVO> policeTop10(@RequestBody WarFruitSearch warFruitSearch) {
+        return BaseResponse.ok(warFruitService.policeTop10(warFruitSearch));
     }
     @ApiOperation("民警列表")
     @ApiOperationSupport(order = 3)
@@ -47,5 +54,14 @@ public class WarFruitController {
     public BaseResponse<IPage<WarFruitVO>> policePageList(@RequestBody PoliceSearch policeSearch) {
         return BaseResponse.ok(warFruitService.policePageList(policeSearch));
     }
-
+    @PostMapping("/excelPolicePageList")
+    @ApiOperation("excel导出民警列表")
+    public void  excelPolicePageList(@Valid @RequestBody PoliceSearch policeSearch, HttpServletResponse response) {
+        warFruitService.excelWarningPageList(policeSearch,response);
+    }
+    @PostMapping("/excelPoliceStationPageList")
+    @ApiOperation("excel导出派出所列表")
+    public void  excelPoliceStationPageList(@Valid @RequestBody WarFruitSearch warFruitSearch, HttpServletResponse response) {
+        warFruitService.excelPoliceStationPageList(warFruitSearch,response);
+    }
 }

+ 2 - 2
src/main/java/com/metro/entity/enums/DataShowTopEnum.java

@@ -5,11 +5,11 @@ import lombok.Getter;
 @Getter
 public enum DataShowTopEnum {
     BERFORE_NUMBER(1, "今日之前的盘查人数"),
-    BERFOR_WARNING_NUMBER(2, "今日之前的预警人数"),
+    BERFOR_EXCEPTION_NUMBER(2, "今日之前的异常人数"),
     BERFOR_DOUBT_NUMBER(3, "今日之前的存疑人数"),
     BERFOR_ARREST_NUMBER(4, "今日之前的抓铺人数"),
     TODAY_NUMBER(5, "站点今日盘查人数"),
-    TODAY_WARNING_NUMBER(6, "站点今日预警人数"),
+    TODAY_EXCEPTION_NUMBER(6, "站点今日异常人数"),
     TODAY_DOUBT_NUMBER(7, "站点今日存疑人数"),
     TODAY_ARREST_NUMBER(8, "站点今日抓铺人数");
     DataShowTopEnum(Integer type, String name) {

+ 20 - 0
src/main/java/com/metro/entity/enums/WarFruitEnum.java

@@ -0,0 +1,20 @@
+package com.metro.entity.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum WarFruitEnum {
+    NUMBER(1, "盘查人数"),
+    WARNING_NUMBER(2, "预警人数"),
+    DOUBT_NUMBER(3, "存疑人数"),
+    ARREST_NUMBER(4, "抓铺人数"),;
+    WarFruitEnum(Integer type, String name) {
+        this.type = type;
+        this.name = name;
+    }
+
+    private Integer type;
+    private String name;
+
+
+}

+ 35 - 0
src/main/java/com/metro/entity/excel/PoliceStationWarFruitExcel.java

@@ -0,0 +1,35 @@
+package com.metro.entity.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @description:
+ * @ClassName PoliceWarFruitExcel
+ * @Author WXG
+ * @Date 2022/7/14 11:41
+ */
+@ApiModel("民警战果Excel model")
+@Data
+public class PoliceStationWarFruitExcel {
+
+    @ExcelProperty(value = "所属派出所名",index = 0)
+    private String companyName;
+
+    @ExcelProperty(value = "盘查总人数",index = 1)
+    private Integer number;
+
+    @ExcelProperty(value = "抓捕人数",index = 2)
+    private Integer arrestNumber;
+
+    @ExcelProperty(value = "存疑人数",index = 3)
+    private Integer doubtNumber;
+
+    @ExcelProperty(value = "通过人数",index = 4)
+    private Integer passNumber;
+
+    @ExcelProperty(value = "异常人数",index = 5)
+    private Integer exceptionNumber;
+
+}

+ 39 - 0
src/main/java/com/metro/entity/excel/PoliceWarFruitExcel.java

@@ -0,0 +1,39 @@
+package com.metro.entity.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @description:
+ * @ClassName PoliceWarFruitExcel
+ * @Author WXG
+ * @Date 2022/7/14 11:41
+ */
+@ApiModel("民警战果Excel model")
+@Data
+public class PoliceWarFruitExcel {
+
+    @ExcelProperty(value = "姓名",index = 0)
+    private String xm;
+
+    @ExcelProperty(value = "所属派出所名",index = 1)
+    private String companyName;
+
+    @ExcelProperty(value = "盘查总人数",index = 2)
+    private Integer number;
+
+    @ExcelProperty(value = "抓捕人数",index = 3)
+    private Integer arrestNumber;
+
+    @ExcelProperty(value = "存疑人数",index = 4)
+    private Integer doubtNumber;
+
+    @ExcelProperty(value = "通过人数",index = 5)
+    private Integer passNumber;
+
+    @ExcelProperty(value = "异常人数",index = 6)
+    private Integer exceptionNumber;
+
+
+}

+ 1 - 1
src/main/java/com/metro/entity/WarningExcel.java → src/main/java/com/metro/entity/excel/WarningExcel.java

@@ -1,4 +1,4 @@
-package com.metro.entity;
+package com.metro.entity.excel;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;

+ 6 - 0
src/main/java/com/metro/entity/po/DataShow.java

@@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.metro.entity.enums.DataShowTopEnum;
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
 @TableName("data_show")
 public class DataShow {
@@ -35,4 +37,8 @@ public class DataShow {
     * 数量
     * */
     private Integer number;
+    /*
+     * 数量
+     * */
+    private Date date;
 }

+ 20 - 20
src/main/java/com/metro/entity/po/WarFruit.java

@@ -8,6 +8,8 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 战果统计表
@@ -37,39 +39,37 @@ public class WarFruit implements Serializable {
     private String cardId;
 
     /**
-     * 盘查人数 记录每天0天之前的数据
+     * 人数
      */
-    @TableField("total_number")
-    private Integer totalNumber;
-
+    @TableField("number")
+    private Integer number;
     /**
-     * 总存疑人数
+     * 日期
      */
-    @TableField("total_doubt_number")
-    private Integer totalDoubtNumber;
+    @TableField("date")
+    private Date date;
 
     /**
-     * 抓捕人数
+     * 抓捕人数
      */
-    @TableField("total_arrest_number")
-    private Integer totalArrestNumber;
+    @TableField("arrest_number")
+    private Integer arrestNumber;
 
     /**
-     * 今日盘查人数
+     * 存疑人数
      */
-    @TableField("today_number")
-    private Integer todayNumber;
+    @TableField("doubt_number")
+    private Integer doubtNumber;
 
     /**
-     * 今日存疑人数
+     * 正常通过人数
      */
-    @TableField("today_doubt_number")
-    private Integer todayDoubtNumber;
+    @TableField("pass_number")
+    private Integer passNumber;
 
     /**
-     * 今日抓捕人数
+     * 异常人数
      */
-    @TableField("today_arrest_number")
-    private Integer todayArrestNumber;
-
+    @TableField("exception_number")
+    private Integer exceptionNumber;
 }

+ 6 - 1
src/main/java/com/metro/entity/search/PoliceSearch.java

@@ -16,7 +16,7 @@ import java.io.Serializable;
 public class PoliceSearch extends BaseEntity implements Serializable {
 
 
-    @ApiModelProperty(hidden = true)
+    @ApiModelProperty(value = "派出所Id")
     private String companyId;
 
     @ApiModelProperty(hidden = true)
@@ -29,4 +29,9 @@ public class PoliceSearch extends BaseEntity implements Serializable {
     @ApiModelProperty(hidden = true)
     private String cardId;
 
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
 }

+ 33 - 0
src/main/java/com/metro/entity/search/WarFruitSearch.java

@@ -0,0 +1,33 @@
+package com.metro.entity.search;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.metro.baseRe.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel("战果统计查询")
+public class WarFruitSearch extends BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "开始时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    @ApiModelProperty(value = "派出所")
+    private String companyId;
+
+    @ApiModelProperty(value = "查询数量",hidden = true)
+    private Integer limitNumber;
+}

+ 10 - 10
src/main/java/com/metro/entity/vo/DataShowTopVO.java

@@ -15,28 +15,28 @@ import lombok.experimental.Accessors;
 public class DataShowTopVO {
 
     @ApiModelProperty("盘查总人数")
-    private Integer totalNumber;
+    private Integer totalNumber = 0;
 
     @ApiModelProperty("今日盘查人数")
-    private Integer todayNumber;
+    private Integer todayNumber = 0;
 
-    @ApiModelProperty("总预警人数 = 总存疑人数 + 总抓捕人数")
-    private Integer totalWarningNumber;
+    @ApiModelProperty("总预警人数")
+    private Integer totalWarningNumber = 0;
 
     @ApiModelProperty("总存疑人数")
-    private Integer totalDoubtNumber;
+    private Integer totalDoubtNumber = 0;
 
     @ApiModelProperty("总抓捕人数")
-    private Integer totalArrestNumber;
+    private Integer totalArrestNumber = 0;
 
-    @ApiModelProperty("今日预警人数 = 今日存疑人数 + 今日抓捕人数")
-    private Integer todayWarningNumber;
+    @ApiModelProperty("今日预警人数")
+    private Integer todayWarningNumber = 0;
 
     @ApiModelProperty("今日存疑人数")
-    private Integer todayDoubtNumber;
+    private Integer todayDoubtNumber = 0;
 
     @ApiModelProperty("今日抓捕人数")
-    private Integer todayArrestNumber;
+    private Integer todayArrestNumber = 0;
 
     @ApiModelProperty("总站点数")
     private Integer totalSiteNumber;

+ 37 - 0
src/main/java/com/metro/entity/vo/NewPassreCordsWarFruitVO.java

@@ -0,0 +1,37 @@
+package com.metro.entity.vo;/*
+ * @Description
+ * @Date 2022/7/13 15:20
+ * @Author wxg
+ * */
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Data
+@ApiModel("新的民警")
+@Accessors(chain = true)
+public class NewPassreCordsWarFruitVO {
+
+    @ApiModelProperty("民警身份证号")
+    private String cardId;
+
+    @ApiModelProperty("日期")
+    private Date date;
+
+    @ApiModelProperty("抓捕人数")
+    private Integer arrestNumber;
+
+    @ApiModelProperty("存疑人数")
+    private Integer doubtNumber;
+
+    @ApiModelProperty("通过人数")
+    private Integer passNumber;
+
+    @ApiModelProperty("异常人数")
+    private Integer exceptionNumber;
+
+}

+ 4 - 0
src/main/java/com/metro/entity/vo/PassreCordsLessVO.java

@@ -9,6 +9,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.util.Date;
+
 @Data
 @ApiModel
 @Accessors(chain = true)
@@ -20,5 +22,7 @@ public class PassreCordsLessVO {
     @ApiModelProperty("人数")
     private Integer number;
 
+    @ApiModelProperty("日期")
+    private Date date;
 
 }

+ 11 - 11
src/main/java/com/metro/entity/vo/WarFruitVO.java

@@ -30,20 +30,20 @@ public class WarFruitVO {
     private String phone;
 
     @ApiModelProperty("盘查总人数")
-    private Integer totalNumber;
+    private Integer number = 0;
 
-    @ApiModelProperty("今日盘查人数")
-    private Integer todayNumber;
+    @ApiModelProperty("抓捕人数")
+    private Integer arrestNumber = 0;
 
-    @ApiModelProperty("存疑人数")
-    private Integer totalDoubtNumber;
+    @ApiModelProperty("存疑人数")
+    private Integer doubtNumber = 0;
 
-    @ApiModelProperty("总抓捕人数")
-    private Integer totalArrestNumber;
+    @ApiModelProperty("通过人数")
+    private Integer passNumber = 0;
 
-    @ApiModelProperty("今日存疑人数")
-    private Integer todayDoubtNumber;
+    @ApiModelProperty("异常人数")
+    private Integer exceptionNumber = 0;
 
-    @ApiModelProperty("今日抓捕人数")
-    private Integer todayArrestNumber;
+    @ApiModelProperty(value = "派出所",hidden = true)
+    private String companyId;
 }

+ 2 - 1
src/main/java/com/metro/mapper/DataShowMapper.java

@@ -2,6 +2,7 @@ package com.metro.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.metro.entity.po.DataShow;
+import com.metro.entity.search.WarFruitSearch;
 import com.metro.entity.vo.DataShowTopVO;
 import com.metro.entity.vo.JPersonVO;
 import org.apache.ibatis.annotations.Param;
@@ -14,5 +15,5 @@ public interface DataShowMapper extends BaseMapper<DataShow> {
     /*根据条件进行分组查询*/
     List<DataShow> getDataShowListByCompanyIdAndBranchId(@Param("jPersonVO")JPersonVO jPersonVO,@Param("typeList") List<Integer> typeList);
     /*派出所盘查top10*/
-    List<DataShowTopVO> polliceOfficeTop10();
+    List<DataShowTopVO> polliceOfficeTop10(WarFruitSearch warFruitSearch);
 }

+ 3 - 4
src/main/java/com/metro/mapper/PassreCordsMapper.java

@@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.metro.entity.po.Company;
 import com.metro.entity.po.PassreCords;
 import com.metro.entity.search.WarningSearch;
-import com.metro.entity.vo.PassreCordsGroupByTimeVO;
-import com.metro.entity.vo.PassreCordsLessVO;
-import com.metro.entity.vo.PassreCordsWarFruitVO;
-import com.metro.entity.vo.WarningVO;
+import com.metro.entity.vo.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -34,4 +31,6 @@ public interface PassreCordsMapper  extends BaseMapper<PassreCords> {
     List<PassreCordsWarFruitVO> getWarFruit(Integer type);
 
     List<PassreCords> selectByIdList(List<Integer> idList);
+
+    List<NewPassreCordsWarFruitVO> getWarFruitNew(Integer type);
 }

+ 9 - 2
src/main/java/com/metro/service/WarFruitService.java

@@ -2,9 +2,12 @@ package com.metro.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.metro.entity.search.PoliceSearch;
+import com.metro.entity.search.WarFruitSearch;
 import com.metro.entity.vo.WarFruitTopVO;
 import com.metro.entity.vo.WarFruitVO;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * <p>
  * 战果统计表 服务类
@@ -15,9 +18,13 @@ import com.metro.entity.vo.WarFruitVO;
  */
 public interface WarFruitService{
     /*派出所盘查top10*/
-    WarFruitTopVO polliceOfficeTop10();
+    WarFruitTopVO polliceOfficeTop10(WarFruitSearch warFruitSearch);
     /*民警盘查top10*/
-    WarFruitTopVO policeTop10();
+    WarFruitTopVO policeTop10(WarFruitSearch warFruitSearch);
     /*民警分页*/
     IPage<WarFruitVO> policePageList(PoliceSearch policeSearch);
+
+    void excelWarningPageList(PoliceSearch policeSearch, HttpServletResponse response);
+
+    void excelPoliceStationPageList(WarFruitSearch warFruitSearch, HttpServletResponse response);
 }

+ 28 - 13
src/main/java/com/metro/service/impl/DataShowServiceImpl.java

@@ -30,10 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -78,7 +75,6 @@ public class DataShowServiceImpl implements DataShowService {
         List<Integer> list = new ArrayList<>();
         Collections.addAll(list,
                 DataShowTopEnum.BERFORE_NUMBER.getType(),
-                DataShowTopEnum.BERFOR_WARNING_NUMBER.getType(),
                 DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType(),
                 DataShowTopEnum.BERFOR_ARREST_NUMBER.getType()
         );
@@ -92,7 +88,8 @@ public class DataShowServiceImpl implements DataShowService {
             throw new ServiceException("无权操作");
         }
         if (dataShows != null)
-            dataShowMap = dataShows.stream().collect(Collectors.toMap(DataShow::getType, DataShow::getNumber));
+            dataShowMap =getByDataShows(dataShows);
+//            dataShowMap = dataShows.stream().collect(Collectors.toMap(DataShow::getType, DataShow::getNumber));
 
         /*2.获取数据库中,今日0点之后的数据*/
         Integer todayNumber = 0;//今日盘查人数
@@ -103,18 +100,18 @@ public class DataShowServiceImpl implements DataShowService {
         List<PassreCordsLessVO> passreCordsLessVOS = passreCordsMapper.selectTodayDataNumber(jPersonVO.getCompanyId() == null ? null:jPersonVO.getCompanyId(),null);
 
         todayNumber = passreCordsLessVOS.stream().mapToInt(PassreCordsLessVO::getNumber).sum();
-        todayDoubtNumber = passreCordsLessVOS.stream().filter(p -> p.getPass() == 1 || p.getPass() == 3).mapToInt(PassreCordsLessVO::getNumber).sum();
+        todayDoubtNumber = passreCordsLessVOS.stream().filter(p -> p.getPass() == 1).mapToInt(PassreCordsLessVO::getNumber).sum();
         todayArrestNumber = passreCordsLessVOS.stream().filter(p -> p.getPass() == 0).mapToInt(PassreCordsLessVO::getNumber).sum();
         todayWarningNumber = todayDoubtNumber + todayArrestNumber;
 
         if (dataShowMap != null) {
             totalNumber = todayNumber + (dataShowMap.get(DataShowTopEnum.BERFORE_NUMBER.getType()) != null ? dataShowMap.get(DataShowTopEnum.BERFORE_NUMBER.getType()) : 0);
-            totalWarningNumber = todayWarningNumber + (dataShowMap.get(DataShowTopEnum.BERFOR_WARNING_NUMBER.getType()) != null ? dataShowMap.get(DataShowTopEnum.BERFOR_WARNING_NUMBER.getType()) : 0);
             totalDoubtNumber = todayDoubtNumber + (dataShowMap.get(DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType()) != null ? dataShowMap.get(DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType()) : 0);
             totalArrestNumber = todayArrestNumber + (dataShowMap.get(DataShowTopEnum.BERFOR_ARREST_NUMBER.getType()) != null ? dataShowMap.get(DataShowTopEnum.BERFOR_ARREST_NUMBER.getType()) : 0);
+            totalWarningNumber = totalDoubtNumber + totalArrestNumber;
         }else {
             totalNumber = todayNumber;
-            totalWarningNumber = todayWarningNumber;
+            totalWarningNumber = todayDoubtNumber + todayArrestNumber;
             totalDoubtNumber = todayDoubtNumber;
             totalArrestNumber = todayArrestNumber;
         }
@@ -140,6 +137,21 @@ public class DataShowServiceImpl implements DataShowService {
 
         return BaseResponse.ok(dataShowTopVO);
     }
+    private Map<Integer, Integer> getByDataShows(List<DataShow> dataShows){
+        Map<Integer, Integer> map = new HashMap<>();
+        int totalNumber = 0;
+        int totalDoubtNumber = 0;
+        int totalArrestNumber = 0;
+        for (DataShow dataShow : dataShows) {
+            if(dataShow.getType().equals(DataShowTopEnum.BERFORE_NUMBER.getType())) totalNumber+=dataShow.getNumber();
+            else if(dataShow.getType().equals(DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType())) {totalDoubtNumber+=dataShow.getNumber();}
+            else if(dataShow.getType().equals(DataShowTopEnum.BERFOR_ARREST_NUMBER.getType())){ totalArrestNumber+=dataShow.getNumber();}
+        }
+        map.put(DataShowTopEnum.BERFORE_NUMBER.getType(),totalNumber);
+        map.put(DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType(),totalDoubtNumber);
+        map.put(DataShowTopEnum.BERFOR_ARREST_NUMBER.getType(),totalArrestNumber);
+        return map;
+    }
 
     @Override
     public BaseResponse<DataShowMiddleVO> selectDataShowMiddler(DataShowMiddlerDTO dataShowMiddlerDTO) {
@@ -159,8 +171,10 @@ public class DataShowServiceImpl implements DataShowService {
         /*2.全部 +预警*/
         else if(timeType == 1 && passType == 2){
             Collections.addAll(list,
-                    DataShowTopEnum.BERFOR_WARNING_NUMBER.getType(),
-                    DataShowTopEnum.TODAY_WARNING_NUMBER.getType()
+                    DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType(),
+                    DataShowTopEnum.BERFOR_ARREST_NUMBER.getType(),
+                    DataShowTopEnum.TODAY_DOUBT_NUMBER.getType(),
+                    DataShowTopEnum.TODAY_ARREST_NUMBER.getType()
             );
         }
         /*3.今日 +盘查*/
@@ -172,7 +186,8 @@ public class DataShowServiceImpl implements DataShowService {
         /*4.今日 +预警*/
         else if(timeType == 2 && passType == 2){
             Collections.addAll(list,
-                    DataShowTopEnum.TODAY_WARNING_NUMBER.getType()
+                    DataShowTopEnum.TODAY_DOUBT_NUMBER.getType(),
+                    DataShowTopEnum.TODAY_ARREST_NUMBER.getType()
             );
         }else{throw new ServiceException("数据有误");}
 
@@ -235,7 +250,7 @@ public class DataShowServiceImpl implements DataShowService {
         companyWrapper.eq(StringUtils.isNotEmpty(jPersonVO.getBranchId()), Company::getBranchId, jPersonVO.getBranchId());
         List<Company> companyList = companysMapper.selectList(companyWrapper);
         return companyList.stream().map(p ->
-                new SiteVO().setId(p.getId()).setName(p.getCompanyName() + "-" + p.getBranchName())
+                new SiteVO().setId(p.getId()).setName(p.getCompanyName() + "-" + (StringUtils.isEmpty(p.getBranchName())?"":p.getBranchName()))
         ).collect(Collectors.toList());
     }
 

+ 1 - 1
src/main/java/com/metro/service/impl/PassreCordsServiceImpl.java

@@ -4,7 +4,7 @@ import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.metro.entity.WarningExcel;
+import com.metro.entity.excel.WarningExcel;
 import com.metro.entity.po.Company;
 import com.metro.entity.po.JDevices;
 import com.metro.entity.po.JDevicesMetro;

+ 114 - 32
src/main/java/com/metro/service/impl/WarFruitServiceImpl.java

@@ -1,11 +1,18 @@
 package com.metro.service.impl;
 
 
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.metro.entity.excel.PoliceStationWarFruitExcel;
+import com.metro.entity.excel.PoliceWarFruitExcel;
 import com.metro.entity.po.Company;
 import com.metro.entity.search.PoliceSearch;
-import com.metro.entity.vo.*;
+import com.metro.entity.search.WarFruitSearch;
+import com.metro.entity.vo.DataShowTopVO;
+import com.metro.entity.vo.JPersonVO;
+import com.metro.entity.vo.WarFruitTopVO;
+import com.metro.entity.vo.WarFruitVO;
 import com.metro.mapper.CompanysMapper;
 import com.metro.mapper.DataShowMapper;
 import com.metro.mapper.WarFruitMapper;
@@ -13,10 +20,15 @@ import com.metro.restful.ServiceException;
 import com.metro.service.CompanyService;
 import com.metro.service.JPersonsService;
 import com.metro.service.WarFruitService;
+import com.metro.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -42,14 +54,15 @@ public class WarFruitServiceImpl implements WarFruitService {
     @Resource
     private DataShowMapper dataShowMapper;
     @Override
-    public WarFruitTopVO polliceOfficeTop10() {
+    public WarFruitTopVO polliceOfficeTop10(WarFruitSearch warFruitSearch) {
         JPersonVO jPersonVO = this.rootTrue();
         if(jPersonVO.getType() == 2)throw new ServiceException("没有权限");
-        List<DataShowTopVO> dataShowList = dataShowMapper.polliceOfficeTop10();
+        warFruitSearch.setLimitNumber(10);
+        List<DataShowTopVO> dataShowList = dataShowMapper.polliceOfficeTop10(warFruitSearch);
         Map<String, Company> companyMap = companyService.getCompanyMapByList(dataShowList, DataShowTopVO::getCompanyId);
         List<String> siteList = new ArrayList<>();//横坐标
         List<Integer> numberList = new ArrayList<>();//盘查人数
-        List<Integer> doubtList = new ArrayList<>();//异常人数
+        List<Integer> doubtList = new ArrayList<>();//存疑人数
         List<Integer> arrestList = new ArrayList<>();//抓捕人数
         for (DataShowTopVO dataShowTopVO : dataShowList) {
             siteList.add(companyMap.get(dataShowTopVO.getCompanyId()) == null?"" : companyMap.get(dataShowTopVO.getCompanyId()).getCompanyName());
@@ -60,7 +73,7 @@ public class WarFruitServiceImpl implements WarFruitService {
             Integer totalArrestNumber = dataShowTopVO.getTotalArrestNumber() == null ? 0 : dataShowTopVO.getTotalArrestNumber();
             Integer todayArrestNumber = dataShowTopVO.getTodayArrestNumber() == null ? 0 : dataShowTopVO.getTodayArrestNumber();
             numberList.add(totalNumber + todayNumber);//之前盘查 + 今日
-            doubtList.add(totalDoubtNumber + todayDoubtNumber);//之前异常 + 今日
+            doubtList.add(totalDoubtNumber + todayDoubtNumber);//之前存疑 + 今日
             arrestList.add(totalArrestNumber + todayArrestNumber);//之前抓捕 + 今日
         }
         WarFruitTopVO warFruitTopVO = new WarFruitTopVO();
@@ -73,31 +86,33 @@ public class WarFruitServiceImpl implements WarFruitService {
     }
 
     @Override
-    public WarFruitTopVO policeTop10() {
+    public WarFruitTopVO policeTop10(WarFruitSearch warFruitSearch) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         JPersonVO jPersonVO = this.rootTrue();
         PoliceSearch policeSearch = new PoliceSearch();
         policeSearch.setPageNum(0);
         policeSearch.setPageSize(10);
+        policeSearch.setStartTime(warFruitSearch.getStartTime() == null?null:sdf.format(warFruitSearch.getStartTime()));
+        policeSearch.setEndTime(warFruitSearch.getEndTime() == null?null:sdf.format(warFruitSearch.getStartTime()));
         policeSearch.setCompanyId(jPersonVO.getCompanyId() !=null ? jPersonVO.getCompanyId() : null);
         policeSearch.setBranchId(jPersonVO.getBranchId() !=null ? jPersonVO.getBranchId() : null);
+        /*如果是一级账号的话 可以传入派出所*/
+        if(jPersonVO.getType() == 1 && StringUtils.isNotEmpty(warFruitSearch.getCompanyId())){
+            policeSearch.setCompanyId(warFruitSearch.getCompanyId());
+        }
+
         Page<WarFruitVO> page = new Page<>(policeSearch.getPageNum(),policeSearch.getPageSize());
         IPage<WarFruitVO>  pageList =warFruitMapper.policePageList(page,policeSearch);
         List<WarFruitVO> list = pageList.getRecords();
         List<String> siteList = new ArrayList<>();//横坐标
         List<Integer> numberList = new ArrayList<>();//盘查人数
-        List<Integer> doubtList = new ArrayList<>();//异常人数
+        List<Integer> doubtList = new ArrayList<>();//存起人数
         List<Integer> arrestList = new ArrayList<>();//抓捕人数
         for (WarFruitVO warFruitVO : list) {
             siteList.add(warFruitVO.getXm() != null ?warFruitVO.getXm() :"");
-            Integer totalNumber = warFruitVO.getTotalNumber() == null ? 0 : warFruitVO.getTotalNumber();
-            Integer todayNumber = warFruitVO.getTodayNumber() == null ? 0 : warFruitVO.getTodayNumber();
-            Integer totalDoubtNumber = warFruitVO.getTotalDoubtNumber() == null ? 0 : warFruitVO.getTotalDoubtNumber();
-            Integer todayDoubtNumber = warFruitVO.getTodayDoubtNumber() == null ? 0 : warFruitVO.getTodayDoubtNumber();
-            Integer totalArrestNumber = warFruitVO.getTotalArrestNumber() == null ? 0 : warFruitVO.getTotalArrestNumber();
-            Integer todayArrestNumber = warFruitVO.getTodayArrestNumber() == null ? 0 : warFruitVO.getTodayArrestNumber();
-            numberList.add(totalNumber + todayNumber);//之前盘查 + 今日
-            doubtList.add(totalDoubtNumber + todayDoubtNumber);//之前异常 + 今日
-            arrestList.add(totalArrestNumber + todayArrestNumber);//之前抓捕 + 今日
+            numberList.add(warFruitVO.getNumber());//盘查
+            doubtList.add(warFruitVO.getDoubtNumber());//存疑
+            arrestList.add(warFruitVO.getArrestNumber());//抓捕
         }
         WarFruitTopVO warFruitTopVO = new WarFruitTopVO();
         warFruitTopVO.setSiteList(siteList);
@@ -109,27 +124,94 @@ public class WarFruitServiceImpl implements WarFruitService {
 
     @Override
     public IPage<WarFruitVO> policePageList(PoliceSearch policeSearch) {
-        JPersonVO jPersonVO = jPersonsService.getUserInfo();
+        return this.policePageListType(policeSearch,1);
+    }
+    private IPage<WarFruitVO> policePageListType(PoliceSearch policeSearch ,Integer type){
+         JPersonVO jPersonVO = jPersonsService.getUserInfo();
         if(jPersonVO.getType() == 3)policeSearch.setCardId(jPersonVO.getCardId());
-        policeSearch.setCompanyId(jPersonVO.getCompanyId() !=null ? jPersonVO.getCompanyId() : null);
+        if(jPersonVO.getType() == 1 && StringUtils.isNotEmpty(policeSearch.getCompanyId())){
+
+        }
+        else{
+            policeSearch.setCompanyId(jPersonVO.getCompanyId() !=null ? jPersonVO.getCompanyId() : null);
+        }
         policeSearch.setBranchId(jPersonVO.getBranchId() !=null ? jPersonVO.getBranchId() : null);
-        policeSearch.setType(1);
+        policeSearch.setType(type);//需要照片
+
         Page<WarFruitVO> page = new Page<>(policeSearch.getPageNum(),policeSearch.getPageSize());
-        IPage<WarFruitVO>  pageList =warFruitMapper.policePageList(page,policeSearch);
-        List<WarFruitVO> list = pageList.getRecords();
-        for (WarFruitVO warFruitVO : list) {
-            Integer totalNumber = warFruitVO.getTotalNumber() == null ? 0 : warFruitVO.getTotalNumber();
-            Integer todayNumber = warFruitVO.getTodayNumber() == null ? 0 : warFruitVO.getTodayNumber();
-            Integer totalDoubtNumber = warFruitVO.getTotalDoubtNumber() == null ? 0 : warFruitVO.getTotalDoubtNumber();
-            Integer todayDoubtNumber = warFruitVO.getTodayDoubtNumber() == null ? 0 : warFruitVO.getTodayDoubtNumber();
-            Integer totalArrestNumber = warFruitVO.getTotalArrestNumber() == null ? 0 : warFruitVO.getTotalArrestNumber();
-            Integer todayArrestNumber = warFruitVO.getTodayArrestNumber() == null ? 0 : warFruitVO.getTodayArrestNumber();
-            warFruitVO.setTotalNumber(totalNumber + todayNumber);//之前盘查 + 今日
-            warFruitVO.setTotalDoubtNumber(totalDoubtNumber + todayDoubtNumber);//之前异常 + 今日
-            warFruitVO.setTotalArrestNumber(totalArrestNumber + todayArrestNumber);//之前抓捕 + 今日
+        IPage<WarFruitVO> warFruitVOIPage = warFruitMapper.policePageList(page, policeSearch);
+        return warFruitVOIPage;
+    }
+    @Override
+    public void excelWarningPageList(PoliceSearch policeSearch, HttpServletResponse response) {
+        policeSearch.setPageSize(100000);
+        IPage<WarFruitVO> warFruitVOIPage = this.policePageListType(policeSearch, 0);
+        List<WarFruitVO> records = warFruitVOIPage.getRecords();
+        List<PoliceWarFruitExcel> list = new ArrayList<>(records.size());
+        Map<String, Company> companyMap = companyService.getCompanyMapByList(records, WarFruitVO::getCompanyId);
+        for (WarFruitVO record : records) {
+            PoliceWarFruitExcel policeWarFruitExcel = new PoliceWarFruitExcel();
+            BeanUtils.copyProperties(record,policeWarFruitExcel);
+            policeWarFruitExcel.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
+            list.add(policeWarFruitExcel);
+        }
+        try {
+            String fileName = "民警战果统计-" + System.currentTimeMillis() + ".xlsx";
+            response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
+            response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            EasyExcel.write(response.getOutputStream(), PoliceWarFruitExcel.class)
+                    // 导出文件名
+                    .autoCloseStream(Boolean.TRUE).sheet("民警战果统计")
+                    .doWrite(list);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void excelPoliceStationPageList(WarFruitSearch warFruitSearch, HttpServletResponse response) {
+        JPersonVO jPersonVO = this.rootTrue();
+        warFruitSearch.setLimitNumber(1000000);
+        if(jPersonVO.getType() == 2){warFruitSearch.setCompanyId(jPersonVO.getCompanyId());}
+        List<DataShowTopVO> dataShowList = dataShowMapper.polliceOfficeTop10(warFruitSearch);
+        Map<String, Company> companyMap = companyService.getCompanyMapByList(dataShowList, DataShowTopVO::getCompanyId);
+        List<PoliceStationWarFruitExcel> list = new ArrayList<>();
+        for (DataShowTopVO record : dataShowList) {
+            PoliceStationWarFruitExcel policeWarFruitExcel = new PoliceStationWarFruitExcel();
+            policeWarFruitExcel.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
+            Integer totalNumber = record.getTotalNumber();
+            Integer todayNumber = record.getTodayNumber();
+            Integer totalDoubtNumber = record.getTotalDoubtNumber();
+            Integer todayDoubtNumber = record.getTodayDoubtNumber();
+            Integer totalArrestNumber = record.getTotalArrestNumber();
+            Integer todayArrestNumber = record.getTodayArrestNumber();
+            Integer totalExceptionNumber = record.getTotalWarningNumber();
+            Integer todayExceptionNumber = record.getTotalWarningNumber();
+            policeWarFruitExcel.setNumber(totalNumber + todayNumber);
+            policeWarFruitExcel.setDoubtNumber(totalDoubtNumber + todayDoubtNumber);
+            policeWarFruitExcel.setArrestNumber(totalArrestNumber + todayArrestNumber);
+            policeWarFruitExcel.setExceptionNumber(totalExceptionNumber + todayExceptionNumber);
+            policeWarFruitExcel.setPassNumber(totalNumber + todayNumber
+                    - totalDoubtNumber - todayArrestNumber
+                    - totalArrestNumber - todayArrestNumber
+                    - totalExceptionNumber -  todayExceptionNumber);
+            list.add(policeWarFruitExcel);
+        }
+        try {
+            String fileName = "派出所统计-" + System.currentTimeMillis() + ".xlsx";
+            response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
+            response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            EasyExcel.write(response.getOutputStream(), PoliceStationWarFruitExcel.class)
+                    // 导出文件名
+                    .autoCloseStream(Boolean.TRUE).sheet("派出所统计")
+                    .doWrite(list);
+        } catch (Exception e) {
+            e.printStackTrace();
         }
-        return pageList;
     }
+
     private JPersonVO rootTrue(){
         JPersonVO jPersonVO = jPersonsService.getUserInfo();
         Integer adminType = jPersonVO.getType();

+ 46 - 20
src/main/java/com/metro/service/job/AdminDataShowTask.java

@@ -20,7 +20,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -62,39 +62,64 @@ public class AdminDataShowTask {
         companyList.add(new Company().setCompanyId("").setBranchId(""));
 
         for (Company company : companyList) {
-            Integer totalNumber = 0;//今日之前的盘查人数
-            Integer totalWarningNumber = 0;//今日之前的预警人数
-            Integer totalDoubtNumber = 0;//今日之前的存疑人数
-            Integer totalArrestNumber = 0;//今日之前的抓铺人数
+
             List<PassreCordsLessVO> passreCordsLessVO = passreCordsMapper.selectBeforDataNumber(company);
+            Map<Date, List<PassreCordsLessVO>> dateListMap = this.dataChange(passreCordsLessVO);
+            for (Date date : dateListMap.keySet()){
+                List<PassreCordsLessVO> list = dateListMap.get(date);
+//                Integer totalNumber = 0;//date的盘查人数
+//                Integer totalWarningNumber = 0;//date的异常人数
+//                Integer totalDoubtNumber = 0;//date的存疑人数
+//                Integer totalArrestNumber = 0;//date的抓铺人数
+                int totalNumber = list.stream().mapToInt(PassreCordsLessVO::getNumber).sum();
+                int totalDoubtNumber = list.stream().filter(p -> p.getPass() == 1 /*|| p.getPass() == 3*/).mapToInt(PassreCordsLessVO::getNumber).sum();
+                int totalArrestNumber = list.stream().filter(p -> p.getPass() == 0).mapToInt(PassreCordsLessVO::getNumber).sum();
+                int totalWarningNumber = list.stream().filter(p -> p.getPass() == 3).mapToInt(PassreCordsLessVO::getNumber).sum();
+
+                DataShow dataShow1 = selectByCompanyIdAndType(date,company,DataShowTopEnum.BERFORE_NUMBER.getType());
+                DataShow dataShow2 = selectByCompanyIdAndType(date,company,DataShowTopEnum.BERFOR_EXCEPTION_NUMBER.getType());
+                DataShow dataShow3 = selectByCompanyIdAndType(date,company,DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType());
+                DataShow dataShow4 = selectByCompanyIdAndType(date,company,DataShowTopEnum.BERFOR_ARREST_NUMBER.getType());
+                new Thread(()->{
+                    DataShowEdit(date,dataShow1,DataShowTopEnum.BERFORE_NUMBER.getType(), totalNumber,company);
+                    DataShowEdit(date,dataShow2,DataShowTopEnum.BERFOR_EXCEPTION_NUMBER.getType(), totalWarningNumber,company);
+                    DataShowEdit(date,dataShow3,DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType(), totalDoubtNumber,company);
+                    DataShowEdit(date,dataShow4,DataShowTopEnum.BERFOR_ARREST_NUMBER.getType(), totalArrestNumber,company);
+                }).start();
+            }
+
+
 
-            totalNumber = passreCordsLessVO.stream().mapToInt(PassreCordsLessVO::getNumber).sum();
-            totalDoubtNumber = passreCordsLessVO.stream().filter(p -> p.getPass() == 1 /*|| p.getPass() == 3*/).mapToInt(PassreCordsLessVO::getNumber).sum();
-            totalArrestNumber = passreCordsLessVO.stream().filter(p -> p.getPass() == 0).mapToInt(PassreCordsLessVO::getNumber).sum();
-            totalWarningNumber = totalDoubtNumber + totalArrestNumber;
-
-            DataShow dataShow1 = selectByCompanyIdAndType(company,DataShowTopEnum.BERFORE_NUMBER.getType());
-            DataShow dataShow2 = selectByCompanyIdAndType(company,DataShowTopEnum.BERFOR_WARNING_NUMBER.getType());
-            DataShow dataShow3 = selectByCompanyIdAndType(company,DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType());
-            DataShow dataShow4 = selectByCompanyIdAndType(company,DataShowTopEnum.BERFOR_ARREST_NUMBER.getType());
-            DataShowEdit(dataShow1,DataShowTopEnum.BERFORE_NUMBER.getType(),totalNumber,company);
-            DataShowEdit(dataShow2,DataShowTopEnum.BERFOR_WARNING_NUMBER.getType(),totalWarningNumber,company);
-            DataShowEdit(dataShow3,DataShowTopEnum.BERFOR_DOUBT_NUMBER.getType(),totalDoubtNumber,company);
-            DataShowEdit(dataShow4,DataShowTopEnum.BERFOR_ARREST_NUMBER.getType(),totalArrestNumber,company);
         }
 
 
         log.info("----------完成------每日数据统计-------------");
     }
-    private DataShow selectByCompanyIdAndType(Company company, Integer type){
+    /*数据转换*/
+    private Map<Date,List<PassreCordsLessVO>> dataChange(List<PassreCordsLessVO> passreCordsLessVO){
+        Map<Date,List<PassreCordsLessVO>> map = new HashMap<>();
+        for (PassreCordsLessVO cordsLessVO : passreCordsLessVO) {
+            List<PassreCordsLessVO> list = null;
+            if(map.containsKey(cordsLessVO.getDate())){
+                list = map.get(cordsLessVO.getDate());
+            }else {
+                list = new ArrayList<>();
+            }
+            list.add(cordsLessVO);
+            map.put(cordsLessVO.getDate(),list);
+        }
+        return map;
+    }
+    private DataShow selectByCompanyIdAndType(Date date ,Company company, Integer type){
         LambdaQueryWrapper<DataShow> dataShow = new LambdaQueryWrapper<>();
         dataShow.eq(DataShow::getType, type);
         dataShow.eq(StringUtils.isNotNull(company.getCompanyId()),DataShow::getCompanyId, company.getCompanyId());
         dataShow.eq(StringUtils.isNotNull(company.getBranchId()),DataShow::getBranchId, company.getBranchId());
+        dataShow.eq(DataShow::getDate, date);
         return dataShowMapper.selectOne(dataShow);
     }
 
-    private void DataShowEdit(DataShow dataShow , Integer type ,Integer number,Company company){
+    private void DataShowEdit(Date date,DataShow dataShow , Integer type ,Integer number,Company company){
         if(dataShow != null){
             dataShow.setNumber(number);
             dataShowMapper.updateById(dataShow);
@@ -104,6 +129,7 @@ public class AdminDataShowTask {
             dataShow.setNumber(number);
             dataShow.setCompanyId(company.getCompanyId());
             dataShow.setBranchId(company.getBranchId());
+            dataShow.setDate(date);
             dataShowMapper.insert(dataShow);
         }
     }

+ 4 - 4
src/main/java/com/metro/service/job/AdminDataShowTodayTask.java

@@ -58,21 +58,21 @@ public class AdminDataShowTodayTask {
 
             /*2.获取数据库中,今日0点之后的数据*/
             Integer todayNumber = 0;//今日盘查人数
-            Integer todayWarningNumber = 0;//今日预警人数 = 今日存疑人数 + 今日抓捕人数
+            Integer todayWarningNumber = 0;//今日异常人数
             Integer todayDoubtNumber = 0;//今日存疑人数
             Integer todayArrestNumber = 0;//今日抓捕人数
             todayNumber = passreCordsLessVOS.stream().mapToInt(PassreCordsLessVO::getNumber).sum();
             todayDoubtNumber = passreCordsLessVOS.stream().filter(p -> p.getPass() == 1 /*|| p.getPass() == 3*/).mapToInt(PassreCordsLessVO::getNumber).sum();
             todayArrestNumber = passreCordsLessVOS.stream().filter(p -> p.getPass() == 0).mapToInt(PassreCordsLessVO::getNumber).sum();
-            todayWarningNumber = todayDoubtNumber + todayArrestNumber;
+            int totalWarningNumber = passreCordsLessVOS.stream().filter(p -> p.getPass() == 3).mapToInt(PassreCordsLessVO::getNumber).sum();
 
             DataShow dataShow5 = selectByCompanyIdAndType(company, DataShowTopEnum.TODAY_NUMBER.getType());
-            DataShow dataShow6 = selectByCompanyIdAndType(company, DataShowTopEnum.TODAY_WARNING_NUMBER.getType());
+            DataShow dataShow6 = selectByCompanyIdAndType(company, DataShowTopEnum.TODAY_EXCEPTION_NUMBER.getType());
             DataShow dataShow7 = selectByCompanyIdAndType(company, DataShowTopEnum.TODAY_DOUBT_NUMBER.getType());
             DataShow dataShow8 = selectByCompanyIdAndType(company, DataShowTopEnum.TODAY_ARREST_NUMBER.getType());
 
             DataShowEdit(dataShow5,DataShowTopEnum.TODAY_NUMBER.getType(),todayNumber,company);
-            DataShowEdit(dataShow6,DataShowTopEnum.TODAY_WARNING_NUMBER.getType(),todayWarningNumber,company);
+            DataShowEdit(dataShow6,DataShowTopEnum.TODAY_EXCEPTION_NUMBER.getType(),todayWarningNumber,company);
             DataShowEdit(dataShow7,DataShowTopEnum.TODAY_DOUBT_NUMBER.getType(),todayDoubtNumber,company);
             DataShowEdit(dataShow8,DataShowTopEnum.TODAY_ARREST_NUMBER.getType(),todayArrestNumber,company);
 

+ 21 - 20
src/main/java/com/metro/service/job/WarFruitTask.java

@@ -2,13 +2,12 @@ package com.metro.service.job;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.metro.entity.po.WarFruit;
-import com.metro.entity.vo.PassreCordsWarFruitVO;
+import com.metro.entity.vo.NewPassreCordsWarFruitVO;
 import com.metro.mapper.PassreCordsMapper;
 import com.metro.mapper.WarFruitMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.DependsOn;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -32,10 +31,8 @@ import java.util.List;
 public class WarFruitTask {
 
     @Resource
-    @Lazy
     private PassreCordsMapper passreCordsMapper;
     @Resource
-    @Lazy
     private WarFruitMapper warFruitMapper;
     /*
     * 每天0点 民警的每日数据统计
@@ -46,32 +43,36 @@ public class WarFruitTask {
     public void dailyDataStatistics() {
         log.info("----------开始------民警每日数据统计-------------");
         /*1.查出需要的数据*/
-        List<PassreCordsWarFruitVO> passreCordsWarFruitVOList = passreCordsMapper.getWarFruit(1);
-        for (PassreCordsWarFruitVO passreCordsWarFruitVO : passreCordsWarFruitVOList) {
-            WarFruitEdit(passreCordsWarFruitVO);
+//        List<PassreCordsWarFruitVO> passreCordsWarFruitVOList = passreCordsMapper.getWarFruit(1);
+        List<NewPassreCordsWarFruitVO> list = passreCordsMapper.getWarFruitNew(1);
+
+        for (NewPassreCordsWarFruitVO vo : list) {
+            this.warFruitEdit(vo);
         }
         log.info("----------完成------民警每日数据统计-------------");
     }
 
-    private void WarFruitEdit(PassreCordsWarFruitVO pcv){
+    private void warFruitEdit(NewPassreCordsWarFruitVO vo){
         LambdaQueryWrapper<WarFruit> warFruitWrapper = new LambdaQueryWrapper<>();
-        warFruitWrapper.eq(WarFruit::getCardId,pcv.getCardId());
+        warFruitWrapper.eq(WarFruit::getCardId,vo.getCardId());
+        warFruitWrapper.eq(WarFruit::getDate,vo.getDate());
         WarFruit warFruit = warFruitMapper.selectOne(warFruitWrapper);
-        Integer type = 0;// 1-insert 0=update
+        int type = 0;// 1-insert 0=update
         if(warFruit == null){
             warFruit = new WarFruit();
             type = 1;
         }
-        Integer normalNumber = pcv.getNormalNumber() == null ? 0 : pcv.getNormalNumber();
-        Integer doubtNumber = pcv.getDoubtNumber() == null ? 0 : pcv.getDoubtNumber();
-        Integer arrestNumber = pcv.getArrestNumber() == null ? 0 : pcv.getArrestNumber();
-        warFruit.setCardId(pcv.getCardId());
-        warFruit.setTotalNumber(normalNumber + doubtNumber + arrestNumber);
-        warFruit.setTotalDoubtNumber(doubtNumber);
-        warFruit.setTotalArrestNumber(arrestNumber);
-        warFruit.setTodayNumber(0);
-        warFruit.setTodayDoubtNumber(0);
-        warFruit.setTodayArrestNumber(0);
+        Integer arrestNumber = vo.getArrestNumber() == null? 0 : vo.getArrestNumber();
+        Integer doubtNumber = vo.getDoubtNumber() == null? 0 : vo.getDoubtNumber();
+        Integer passNumber = vo.getPassNumber() == null? 0 : vo.getPassNumber();
+        Integer exceptionNumber = vo.getExceptionNumber() == null? 0 : vo.getExceptionNumber();
+        warFruit.setCardId(vo.getCardId());
+        warFruit.setDate(vo.getDate());
+        warFruit.setArrestNumber(arrestNumber);
+        warFruit.setDoubtNumber(doubtNumber);
+        warFruit.setPassNumber(passNumber);
+        warFruit.setExceptionNumber(exceptionNumber);
+        warFruit.setNumber(arrestNumber + doubtNumber + passNumber + exceptionNumber);
         if(type == 1 ){
             warFruitMapper.insert(warFruit);
         }else {

+ 19 - 18
src/main/java/com/metro/service/job/WarFruitTodayTask.java

@@ -2,7 +2,7 @@ package com.metro.service.job;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.metro.entity.po.WarFruit;
-import com.metro.entity.vo.PassreCordsWarFruitVO;
+import com.metro.entity.vo.NewPassreCordsWarFruitVO;
 import com.metro.mapper.PassreCordsMapper;
 import com.metro.mapper.WarFruitMapper;
 import lombok.extern.slf4j.Slf4j;
@@ -42,33 +42,34 @@ public class WarFruitTodayTask {
     public void dailyDataStatistics() {
         log.info("----------开始------民警每10分钟数据统计-------------");
         /*1.查出需要的数据*/
-        List<PassreCordsWarFruitVO> passreCordsWarFruitVOList = passreCordsMapper.getWarFruit(2);
-        for (PassreCordsWarFruitVO passreCordsWarFruitVO : passreCordsWarFruitVOList) {
-            WarFruitEdit(passreCordsWarFruitVO);
+        List<NewPassreCordsWarFruitVO> list = passreCordsMapper.getWarFruitNew(2);
+        for (NewPassreCordsWarFruitVO vo : list) {
+            warFruitEdit(vo);
         }
         log.info("----------完成------民警每10分钟数据统计-------------");
     }
 
-    private void WarFruitEdit(PassreCordsWarFruitVO pcv){
+    private void warFruitEdit(NewPassreCordsWarFruitVO vo){
         LambdaQueryWrapper<WarFruit> warFruitWrapper = new LambdaQueryWrapper<>();
-        warFruitWrapper.eq(WarFruit::getCardId,pcv.getCardId());
+        warFruitWrapper.eq(WarFruit::getCardId,vo.getCardId());
+        warFruitWrapper.eq(WarFruit::getDate,vo.getDate());
         WarFruit warFruit = warFruitMapper.selectOne(warFruitWrapper);
-        Integer type = 0;// 1-insert 0=update
+        int type = 0;// 1-insert 0=update
         if(warFruit == null){
             warFruit = new WarFruit();
             type = 1;
-            warFruit.setTotalNumber(0);
-            warFruit.setTotalDoubtNumber(0);
-            warFruit.setTotalArrestNumber(0);
         }
-        Integer normalNumber = pcv.getNormalNumber() == null ? 0 : pcv.getNormalNumber();
-        Integer doubtNumber = pcv.getDoubtNumber() == null ? 0 : pcv.getDoubtNumber();
-        Integer arrestNumber = pcv.getArrestNumber() == null ? 0 : pcv.getArrestNumber();
-
-        warFruit.setCardId(pcv.getCardId());
-        warFruit.setTodayNumber(normalNumber + doubtNumber + arrestNumber);
-        warFruit.setTodayDoubtNumber(doubtNumber);
-        warFruit.setTodayArrestNumber(arrestNumber);
+        Integer arrestNumber = vo.getArrestNumber() == null? 0 : vo.getArrestNumber();
+        Integer doubtNumber = vo.getDoubtNumber() == null? 0 : vo.getDoubtNumber();
+        Integer passNumber = vo.getPassNumber() == null? 0 : vo.getPassNumber();
+        Integer exceptionNumber = vo.getExceptionNumber() == null? 0 : vo.getExceptionNumber();
+        warFruit.setCardId(vo.getCardId());
+        warFruit.setDate(vo.getDate());
+        warFruit.setArrestNumber(arrestNumber);
+        warFruit.setDoubtNumber(doubtNumber);
+        warFruit.setPassNumber(passNumber);
+        warFruit.setExceptionNumber(exceptionNumber);
+        warFruit.setNumber(arrestNumber + doubtNumber + passNumber + exceptionNumber);
         if(type == 1 ){
             warFruitMapper.insert(warFruit);
         }else {

+ 34 - 21
src/main/resources/mapper/DataShowMapper.xml

@@ -46,27 +46,40 @@
         limit 20
     </select>
     <select id="polliceOfficeTop10" resultType="com.metro.entity.vo.DataShowTopVO">
-        SELECT
-            t.company_id,
-            Max(if(t.type = 1,t.number,0)) as totalNumber,
-            MAX(if(t.type = 2,t.number,0)) as totalWarningNumber,
-            MAX(if(t.type = 3,t.number,0)) as totalDoubtNumber,
-            MAX(if(t.type = 4,t.number,0)) as totalArrestNumber,
-            MAX(if(t.type = 5,t.number,0)) as todayNumber,
-            MAX(if(t.type = 6,t.number,0)) as todayWarningNumber,
-            MAX(if(t.type = 7,t.number,0)) as todayDoubtNumber,
-            MAX(if(t.type = 8,t.number,0)) as todayArrestNumber
-        from (
-                 select
-                     company_id,
-                     type,
-                     sum(number) as number
-                 from data_show
-                 where company_id is not null and company_id !=''
-                 GROUP BY company_id,type
-             )t
-        GROUP BY t.company_id
+        SELECT * from(
+                         SELECT
+                             t.company_id,
+                             SUM(if(t.type = 1,t.number,0)) as totalNumber,
+                             SUM(if(t.type = 2,t.number,0)) as totalWarningNumber,
+                             SUM(if(t.type = 3,t.number,0)) as totalDoubtNumber,
+                             SUM(if(t.type = 4,t.number,0)) as totalArrestNumber,
+                             SUM(if(t.type = 5,t.number,0)) as todayNumber,
+                             SUM(if(t.type = 6,t.number,0)) as todayWarningNumber,
+                             SUM(if(t.type = 7,t.number,0)) as todayDoubtNumber,
+                             SUM(if(t.type = 8,t.number,0)) as todayArrestNumber
+                         from (
+                                  select
+                                      company_id,
+                                      type,
+                                      sum(number) as number
+                                  from data_show
+                                  where company_id is not null and company_id !=''
+                                  <if test="companyId != null and companyId !=''">
+                                      and company_id = #{companyId}
+                                  </if>
+                                  <if test="startTime != null and startTime != ''">
+                                      AND  <![CDATA[ date >= #{startTime}]]>
+                                  </if>
+                                  <if test="endTime != null and endTime != '' ">
+                                      AND  <![CDATA[ date <= #{endTime}]]>
+                                  </if>
+                                  GROUP BY company_id,type
+                              )t
+                         GROUP BY t.company_id
+                     )d
         ORDER BY (totalNumber + todayNumber) desc
-        limit 10
+        <if test="limitNumber != null">
+        limit #{limitNumber}
+        </if>
     </select>
 </mapper>

+ 34 - 2
src/main/resources/mapper/PassreCordsMapper.xml

@@ -37,7 +37,8 @@
     <select id="selectBeforDataNumber" resultType="com.metro.entity.vo.PassreCordsLessVO">
         select
         pass,
-        count(1) as number
+        count(1) as number,
+        LEFT(pass_time,10) as date
         from
         j_passrecords
         <where>
@@ -49,7 +50,8 @@
                 AND branch_id = #{branchId}
             </if>
         </where>
-        group by pass
+        group by pass,date
+        order by date,pass
     </select>
     <select id="selectTodayDataNumber" resultType="com.metro.entity.vo.PassreCordsLessVO">
         select
@@ -164,4 +166,34 @@
         </foreach>
 
     </select>
+    <select id="getWarFruitNew" resultType="com.metro.entity.vo.NewPassreCordsWarFruitVO">
+
+        SELECT
+        cardId,
+        date,
+        Max(If(pass=0,number,0)) AS arrestNumber,
+        Max(If(pass=1,number,0)) AS doubtNumber,
+        Max(If(pass=2,number,0)) AS passNumber,
+        Max(If(pass=3,number,0)) AS exceptionNumber
+        from (
+            select
+            staff_card_id as cardId,
+            pass,
+            count(1) as number,
+            LEFT(pass_time,10) as date
+            from
+            j_passrecords
+            <where>
+                <if test="type == 1 ">
+                    and pass_time &lt; (SELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'))
+                </if>
+                <if test="type == 2 ">
+                    and pass_time &gt;= (SELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'))
+                </if>
+            </where>
+            group by staff_card_id,pass,date
+            order by staff_card_id,date,pass
+        )d
+        GROUP BY cardId,date
+    </select>
 </mapper>

+ 34 - 26
src/main/resources/mapper/WarFruitMapper.xml

@@ -1,36 +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.metro.mapper.WarFruitMapper">
-
-
     <select id="policePageList" resultType="com.metro.entity.vo.WarFruitVO">
         select
-        p.id,
-        p.xm,
-        p.card_id,
-        p.phone,
-        <if test="policeSearch.type != null and policeSearch.type == 1">
+            p.xm,
+            p.card_id,
+            p.phone,
+            p.company_id,
+        <if test="policeSearch.type == 1">
             p.photo,
         </if>
-        w.total_number as totalNumber,
-        w.total_doubt_number,
-        w.total_arrest_number,
-        w.today_number as todayNumber,
-        w.today_doubt_number,
-        w.today_arrest_number
+            b.number,
+            b.arrestNumber,
+            b.doubtNumber,
+            b.exceptionNumber
         from j_persons p
-        left join war_fruit w on w.card_id = p.card_id
-        <where>
-            p.company_id is not null and p.company_id !=''
-            and p.branch_id is not null and p.branch_id !=''
-            <if test="policeSearch.companyId != null and policeSearch.companyId != '' ">
-                AND  p.company_id = #{policeSearch.companyId}
-            </if>
-            <if test="policeSearch.cardId != null and policeSearch.cardId != '' ">
-                AND  p.card_id = #{policeSearch.cardId}
-            </if>
-        </where>
-        ORDER BY (totalNumber + todayNumber) desc
-
+        LEFT JOIN (
+            SELECT
+            card_id,
+            SUM(number) as number,
+            SUM(arrest_number) as arrestNumber,
+            SUM(doubt_number) as doubtNumber,
+            SUM(pass_number) as passNumber,
+            SUM(exception_number) as exceptionNumber
+            FROM war_fruit
+            <where>
+                <if test="policeSearch.startTime !=null and policeSearch.startTime !=''">
+                    AND  <![CDATA[ date >= #{policeSearch.startTime}]]>
+                </if>
+                <if test="policeSearch.endTime !=null and policeSearch.endTime !=''">
+                    AND  <![CDATA[ date >= #{policeSearch.endTime}]]>
+                </if>
+            </where>
+            group by card_id
+        )b on p.card_id = b.card_id
+        where
+        p.company_id !='' and p.branch_id !=''
+        <if test="policeSearch.companyId != null and policeSearch.companyId != '' ">
+            AND  p.company_id = #{policeSearch.companyId}
+        </if>
+        ORDER BY b.number desc
     </select>
 </mapper>