From 2c4ea94474ce8f9eb48b71fb9960a7da45320282 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 06 五月 2025 13:58:46 +0800
Subject: [PATCH] 代码初始化

---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java                 |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerCompanyVO.java         |   22 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/InParkUserDataVO.java              |   35 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java  |  379 +++++++++++++++++++++++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java       |    3 
 server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java                   |   70 +++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java             |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java |   28 +-
 server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java                                   |    9 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java          |   39 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java                |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java  |   32 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java         |   15 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/InParkDataDTO.java                |   26 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java       |   39 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java           |   12 +
 16 files changed, 696 insertions(+), 23 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java b/server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
index 670f20c..0b02a91 100644
--- a/server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
+++ b/server/system_service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -2,6 +2,7 @@
 
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.core.utils.Constants;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import org.apache.poi.ss.usermodel.*;
@@ -359,7 +360,7 @@
     /**
      * 閰嶇疆鍗曞厓鏍艰竟妗�
      */
-    private void configCellBorder (CellStyle style) {
+    private static void configCellBorder(CellStyle style) {
         style.setBorderTop(BorderStyle.THIN);
         style.setBorderRight(BorderStyle.THIN);
         style.setBorderBottom(BorderStyle.THIN);
@@ -428,4 +429,71 @@
         private Field field;
     }
 
+    /**
+     * 瀵煎嚭鍒版寚瀹氳緭鍑烘祦
+     * @param os 杈撳嚭娴�
+     */
+    public static void exportList (List<List<String>> dataList ,String sheetName, OutputStream os) {
+        SXSSFWorkbook sxssfWorkbook;
+        try {
+            sxssfWorkbook = new SXSSFWorkbook();
+            Sheet sheet = sxssfWorkbook.createSheet(sheetName);
+            // 鍒涘缓鍒楀ご
+            sheet.createFreezePane(0, 1);
+            Row header = sheet.createRow(0);
+            CellStyle hstyle = configHeaderCellStatic(sxssfWorkbook);
+            for (int i = 0; i < dataList.size(); i++) {
+                Cell cell = header.createCell(i);
+                cell.setCellValue(dataList.get(i).get(Constants.ZERO));
+                // 鍒楀璁剧疆
+                sheet.setColumnWidth(i, dataList.get(i).get(Constants.ZERO).length() * 2 * 256);
+                // 璁剧疆鍒楀ご鍗曞厓鏍�
+                cell.setCellStyle(hstyle);
+            }
+
+            //鎬昏鏁�
+            Integer rowSize = dataList.get(Constants.ZERO).size();
+            //鎬诲垪鏁�
+            Integer columnSize = dataList.size();
+            for (int i = 1; i < rowSize; i++) {
+                Row row = sheet.createRow(i);
+                for (int j = 0; j < columnSize; j++) {
+                    Cell cell = row.createCell(j);
+                    cell.setCellValue(dataList.get(j).get(i));
+                }
+            }
+            sxssfWorkbook.write(os);
+            os.close();
+        } catch (Exception e) {
+            throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+        } finally {
+            if (os != null) {
+                try {
+                    os.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    private static CellStyle configHeaderCellStatic (SXSSFWorkbook workbook)  {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(HorizontalAlignment.CENTER);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 璁剧疆鑳屾櫙
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        // 瀛椾綋
+        Font font = workbook.createFont();
+        font.setFontHeightInPoints((short) 12);
+        style.setFont(font);
+        // 璁剧疆杈规
+        configCellBorder(style);
+        return style;
+    }
+
+
+
+
 }
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
index 4e27a08..cc3026f 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -3602,4 +3602,13 @@
         gc.setTime(date);
         return gc.get(2) + 1;
     }
+
+    public static int getNowDayNum(){
+        // 鑾峰彇Calendar瀹炰緥
+        Calendar calendar = Calendar.getInstance();
+        return calendar.get(Calendar.DAY_OF_MONTH);
+    }
+
+
+
 }
\ No newline at end of file
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java
index 4cd362a..91bb15c 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java
@@ -5,7 +5,10 @@
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.dto.InParkDataDTO;
 import com.doumee.dao.business.model.InoutRecord;
+import com.doumee.dao.business.vo.GeneralDataVO;
+import com.doumee.dao.business.vo.InParkUserDataVO;
 import com.doumee.service.business.InoutRecordService;
 import com.doumee.service.business.third.model.ApiResponse;
 import com.doumee.service.business.third.model.PageData;
@@ -88,4 +91,40 @@
     public ApiResponse findById(@PathVariable Integer id) {
         return ApiResponse.success(inoutRecordService.findById(id));
     }
+
+    @ApiOperation("鍩虹鏁版嵁")
+    @PostMapping("/getInParkUserData")
+//    @CloudRequiredPermission("business:inoutrecord:query")
+    public ApiResponse<InParkUserDataVO> getInParkUserData (@RequestBody InParkDataDTO inParkDataDTO) {
+        return ApiResponse.success(inoutRecordService.getInParkUserData(inParkDataDTO));
+    }
+
+
+    @ApiOperation("鍗犳瘮鏁版嵁")
+    @PostMapping("/getRataList")
+//    @CloudRequiredPermission("business:inoutrecord:query")
+    public ApiResponse<List<GeneralDataVO>> getRataList (@RequestBody InParkDataDTO inParkDataDTO) {
+        return ApiResponse.success(inoutRecordService.getRataList(inParkDataDTO));
+    }
+
+
+    @ApiOperation("鎶ヨ〃鏁版嵁")
+    @PostMapping("/getReportList")
+//    @CloudRequiredPermission("business:inoutrecord:query")
+    public ApiResponse<List<List<String>>> getReportList (@RequestBody InParkDataDTO inParkDataDTO) {
+        return ApiResponse.success(inoutRecordService.getReportList(inParkDataDTO));
+    }
+
+
+
+    @ApiOperation("鍏ュ洯鏁版嵁鍒嗘瀽-瀵煎嚭Excel")
+    @PostMapping("/reportExportExcel")
+//    @CloudRequiredPermission("business:inoutrecord:query")
+    public void reportExportExcel (@RequestBody InParkDataDTO inParkDataDTO, HttpServletResponse response) {
+        inoutRecordService.excel(inParkDataDTO,response);
+    }
+
+
+
+
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
index 7553e6a..61a0fe9 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
@@ -251,7 +251,6 @@
     public ApiResponse restoreWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
         PlatformJob platformJob = platformJobService.restoreWork(jobOperateDTO);
-        platformJobService.cancelInPark(platformJob);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java
index 24a1925..c0a2647 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java
@@ -40,6 +40,9 @@
     @ApiModelProperty(value = "鍦ㄥ洯闀挎湡鐩稿叧鏂逛汉鏁�")
     private Long inParkLwUserNum;
 
+    @ApiModelProperty(value = "鍦ㄥ洯璐ц繍杞﹁締鍙告満浜烘暟")
+    private Long inParkDriverUserNum;
+
     @ApiModelProperty(value = "鐩稿叧鏂瑰叆鍥汉娆�")
     private Integer lwUserInNum;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java
index cf59378..a738b73 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/InoutRecordMapper.java
@@ -2,11 +2,12 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.InoutRecord;
+import com.github.yulichang.base.MPJBaseMapper;
 
 /**
  * @author 姹熻箘韫�
  * @date 2025/04/28 16:19
  */
-public interface InoutRecordMapper extends BaseMapper<InoutRecord> {
+public interface InoutRecordMapper extends MPJBaseMapper<InoutRecord> {
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/InParkDataDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/InParkDataDTO.java
new file mode 100644
index 0000000..5e24c04
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/InParkDataDTO.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.business.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/20 14:54
+ */
+@Data
+public class InParkDataDTO {
+
+    @ApiModelProperty(value = "鏌ヨ绫诲瀷锛�0杞﹁締 1浜哄憳")
+    private Integer type;
+
+    @ApiModelProperty(value = "浜鸿溅绫诲瀷锛�0=浜烘/杞︽;1=浜哄憳/杞﹁締")
+    private Integer isGroupBy;
+
+    @ApiModelProperty(value = "鏌ヨ鏃ユ湡 骞翠唤鍏� yyyy  鏈堜唤鍏� yyyy-MM")
+    private String dateStr;
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java
index f56e68e..222beb8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java
@@ -12,9 +12,15 @@
 @Data
 public class GeneralDataVO{
 
+    @ApiModelProperty(value = "涓氬姟涓婚敭",hidden = true)
+    private Integer id;
+
     @ApiModelProperty(value = "鍚嶇О")
     private String name;
 
+    @ApiModelProperty(value = "鍒嗙被")
+    private String categoryName;
+
     @ApiModelProperty(value = "鏁伴噺")
     private Integer total ;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerCompanyVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerCompanyVO.java
new file mode 100644
index 0000000..c7253b7
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerCompanyVO.java
@@ -0,0 +1,22 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class HiddenDangerCompanyVO {
+
+    @ApiModelProperty(value = "涓氬姟涓婚敭",hidden = true)
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒嗙被")
+    private String categoryName;
+
+    public HiddenDangerCompanyVO(String categoryName, int id) {
+        this.categoryName = categoryName;
+        this.id = id;
+    }
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/InParkUserDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/InParkUserDataVO.java
new file mode 100644
index 0000000..a910424
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/InParkUserDataVO.java
@@ -0,0 +1,35 @@
+package com.doumee.dao.business.vo;
+
+import java.util.List;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class InParkUserDataVO {
+
+    @ApiModelProperty(value = "浠婃棩鎬绘暟")
+    private Integer todayTotal;
+
+    @ApiModelProperty(value = "鏄ㄦ棩鎬绘暟")
+    private Integer yesterdayTotal;
+
+    @ApiModelProperty(value = "鏈懆鎬绘暟")
+    private Integer weekTotal;
+
+    @ApiModelProperty(value = "鏈湀鎬绘暟")
+    private Integer monthTotal;
+
+    @ApiModelProperty(value = "鏈勾鎬绘暟")
+    private Integer yearTotal;
+
+    @ApiModelProperty(value = "鍒嗙被鍗犳瘮 - 鎵囧舰鍥�")
+    List<GeneralDataVO> rataList;
+
+    @ApiModelProperty(value = "鏈勾绱缁熻")
+    List<GeneralDataVO> cumulativeDataList;
+
+    @ApiModelProperty(value = "骞村害鍏ュ洯缁熻鎺掑簭")
+    List<GeneralDataVO> yearSortList;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java
index bd6301b..916bfe0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/InoutRecordService.java
@@ -1,9 +1,13 @@
 package com.doumee.service.business;
 
+import com.doumee.dao.business.dto.InParkDataDTO;
 import com.doumee.dao.business.model.InoutRecord;
+import com.doumee.dao.business.vo.GeneralDataVO;
+import com.doumee.dao.business.vo.InParkUserDataVO;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -95,4 +99,12 @@
      * @return long
      */
     long count(InoutRecord inoutRecord);
+
+    InParkUserDataVO getInParkUserData(InParkDataDTO inParkDataDTO);
+
+    List<GeneralDataVO> getRataList(InParkDataDTO inParkDataDTO);
+
+    List<List<String>> getReportList(InParkDataDTO inParkDataDTO);
+
+    void excel(InParkDataDTO inParkDataDTO, HttpServletResponse response);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
index 5fed85e..cc6c81d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -355,11 +355,26 @@
 
     @Override
     public List<Cars> findList(Cars cars) {
+        if(Objects.nonNull(cars)
+        && Constants.equalsInteger(Constants.ZERO,cars.getType())){
+            return this.getGwCar();
+        }
         QueryWrapper<Cars> wrapper = new QueryWrapper<>(cars);
         wrapper.lambda().eq(Cars::getIsdeleted,Constants.ZERO);
         return carsMapper.selectList(wrapper);
     }
 
+    public List<Cars> getGwCar(){
+        List<Cars> list  = carsMapper.selectJoinList(Cars.class,
+                new MPJLambdaWrapper<Cars>().selectAll(Cars.class)
+                        .leftJoin(Category.class,Category::getId,Cars::getCateId)
+                        .eq(Category::getBizType,Constants.FOUR)
+                        .eq(Cars::getIsdeleted,Constants.ZERO)
+        );
+        return list;
+    }
+
+
     @Override
     public PageData<Cars> findPage(PageWrap<Cars> pageWrap) {
         IPage<Cars> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
index 903d114..3f52538 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -10,6 +10,7 @@
 import com.doumee.core.exception.BusinessException;
 import com.doumee.dao.business.dao.*;
 import com.doumee.dao.business.vo.GeneralDataVO;
+import com.doumee.dao.business.vo.HiddenDangerCompanyVO;
 import com.doumee.dao.business.vo.HiddenDangerDataVO;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
@@ -793,33 +794,30 @@
     @Override
     public HiddenDangerDataVO hiddenDangerData(HiddenDanger hiddenDanger){
         HiddenDangerDataVO hiddenDangerDataVO = new HiddenDangerDataVO();
-        List<HiddenDanger> hiddenDangerYearList = hiddenDangerMapper.selectJoinList(HiddenDanger.class,
+        List<HiddenDanger> hiddenDangerAllList = hiddenDangerMapper.selectJoinList(HiddenDanger.class,
                 new MPJLambdaWrapper<HiddenDanger>()
                         .selectAll(HiddenDanger.class)
                 .selectAs(HiddenDangerParam::getCompanyId, HiddenDanger::getAreaCompanyId)
                 .leftJoin(HiddenDangerParam.class,HiddenDangerParam::getId,HiddenDanger::getAreaId) //闅愭偅鍖哄煙
                 .eq(HiddenDanger::getIsdeleted,Constants.ZERO)
                 .eq(Objects.nonNull(hiddenDanger.getStatus()),HiddenDanger::getStatus,hiddenDanger.getStatus())
-                        .apply(" ( DATE_FORMAT(CREATE_DATE, '%Y') = DATE_FORMAT(now(), '%Y') ) ")
+                        .apply(" ( DATE_FORMAT(t.CREATE_DATE, '%Y') = DATE_FORMAT(now(), '%Y') ) ")
                 .ge(Objects.nonNull(hiddenDanger.getQueryStartTime()), HiddenDanger::getCreateDate,hiddenDanger.getQueryStartTime())
                 .le(Objects.nonNull(hiddenDanger.getQueryEndTime()),HiddenDanger::getCreateDate,hiddenDanger.getQueryEndTime())
         );
         List<GeneralDataVO> yearDataList = new ArrayList<>();
-        if(CollectionUtils.isEmpty(hiddenDangerYearList)){
+        if(CollectionUtils.isEmpty(hiddenDangerAllList)){
             return hiddenDangerDataVO;
         }
         for (int i = 1; i <=12 ; i++) {
             GeneralDataVO generalDataVO = new GeneralDataVO();
             generalDataVO.setName(Integer.toString(i));
-            generalDataVO.setTotal(hiddenDangerYearList.stream().filter(j->Constants.equalsInteger(Integer.valueOf(generalDataVO.getName()),Integer.valueOf(DateUtil.formatDate(j.getCreateDate(),"MM")))).collect(Collectors.toList()).size());
+            generalDataVO.setTotal(hiddenDangerAllList.stream().filter(j->Constants.equalsInteger(Integer.valueOf(generalDataVO.getName()),Integer.valueOf(DateUtil.formatDate(j.getCreateDate(),"MM")))).collect(Collectors.toList()).size());
+            generalDataVO.setName(generalDataVO.getName()+"鏈�");
             yearDataList.add(generalDataVO);
         }
         hiddenDangerDataVO.setYearList(yearDataList);
 
-        List<HiddenDanger> hiddenDangerAllList = hiddenDangerYearList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(DateUtil.formatDate(new Date(),"yyyy-MM-dd"))).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty(hiddenDangerAllList)){
-            return hiddenDangerDataVO;
-        }
         
         
         hiddenDangerDataVO.setTotal(hiddenDangerAllList.size());
@@ -859,22 +857,26 @@
             }
             //鍏ㄩ儴闅愭偅鍖哄煙閮ㄩ棬鏁版嵁
             List<Integer> companyIdList =  hiddenDangerAllList.stream().map(i->i.getAreaCompanyId()).collect(Collectors.toList());
-            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(companyIdList)){
+            List<HiddenDangerCompanyVO> hiddenDangerCompanyVOList =  hiddenDangerAllList.stream().map(i->new HiddenDangerCompanyVO(i.getAreaName(),i.getAreaCompanyId())).collect(Collectors.toList());
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(hiddenDangerCompanyVOList)){
                 List<GeneralDataVO> companyGeneralDataList = new ArrayList<>();
-                Set<Integer> companyIdSetList = new HashSet<>(companyIdList);
+                Set<HiddenDangerCompanyVO> companyIdSetList = new HashSet<>(hiddenDangerCompanyVOList);
                 List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>()
                         .lambda().eq(Company::getIsdeleted,Constants.ZERO));
-                for (Integer companyId:companyIdSetList) {
-                    if(Objects.isNull(companyId)){
+                for (HiddenDangerCompanyVO hiddenDangerCompanyVO:companyIdSetList) {
+                    if(Objects.isNull(hiddenDangerCompanyVO)
+                    || Objects.isNull(hiddenDangerCompanyVO.getId())
+                    || StringUtils.isBlank(hiddenDangerCompanyVO.getCategoryName())){
                         continue;
                     }
-                    Optional<Company> optionalCompany = companyList.stream().filter(i->Constants.equalsInteger(i.getId(),companyId)).findAny();
+                    Optional<Company> optionalCompany = companyList.stream().filter(i->Constants.equalsInteger(i.getId(),hiddenDangerCompanyVO.getId())).findAny();
                     if(optionalCompany.isPresent()){
                         GeneralDataVO generalDataVO = new GeneralDataVO();
                         Company company = optionalCompany.get();
                         Integer total = hiddenDangerAllList.stream().filter(i->Constants.equalsInteger(i.getAreaCompanyId(),company.getId())).collect(Collectors.toList()).size();
                         generalDataVO.setName(company.getName());
                         generalDataVO.setTotal(total);
+                        generalDataVO.setCategoryName(hiddenDangerCompanyVO.getCategoryName());
                         companyGeneralDataList.add(generalDataVO);
                     }
                 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java
index 6179758..d173f98 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java
@@ -1,8 +1,18 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CategoryMapper;
 import com.doumee.dao.business.InoutRecordMapper;
+import com.doumee.dao.business.dto.InParkDataDTO;
+import com.doumee.dao.business.model.Category;
 import com.doumee.dao.business.model.InoutRecord;
+import com.doumee.dao.business.vo.GeneralDataVO;
+import com.doumee.dao.business.vo.InParkUserDataVO;
 import com.doumee.service.business.InoutRecordService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -10,11 +20,26 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
+import org.apache.commons.lang.StringUtils;
+import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
+import java.text.DecimalFormat;
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 鍑哄叆鍦轰汉娆¤溅娆℃瘡鏃ョ粺璁¤〃Service瀹炵幇
@@ -26,6 +51,9 @@
 
     @Autowired
     private InoutRecordMapper inoutRecordMapper;
+
+    @Autowired
+    private CategoryMapper categoryMapper;
 
     @Override
     public Integer create(InoutRecord inoutRecord) {
@@ -172,4 +200,353 @@
         QueryWrapper<InoutRecord> wrapper = new QueryWrapper<>(inoutRecord);
         return inoutRecordMapper.selectCount(wrapper);
     }
+
+
+    //浜哄憳鍒嗙被  鍗曠嫭澶勭悊浜哄憳鏁版嵁  0鍔冲姟璁垮 1鏅�氳瀹� 2鍐呴儴鍛樺伐 3杞﹁締淇℃伅 4鐩稿叧鏂逛汉鍛� 5璐ц繍鍙告満
+    private static String[] userTypeList = new String[]{"","鏅�氳瀹�","鍐呴儴浜哄憳","","鐩稿叧鏂逛汉鍛�","璐ц繍鍙告満"};
+
+
+    /**
+     *  鏌ヨ鍩虹鏁版嵁
+     * @return
+     */
+    @Override
+    public InParkUserDataVO getInParkUserData(InParkDataDTO inParkDataDTO){
+        if(Objects.isNull(inParkDataDTO)
+        || Objects.isNull(inParkDataDTO.getType())
+        || Objects.isNull(inParkDataDTO.getIsGroupBy())
+        || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) ))
+        || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) ))
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        //鏌ヨ鏈懆鐨勫紑濮嬫棩鏈熷拰缁撴潫鏃ユ湡
+        Long weekStart = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli();
+        InParkUserDataVO inParkUserDataVO = new InParkUserDataVO();
+        List<InoutRecord> yearList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>()
+                .selectAll(InoutRecord.class)
+                .eq(InoutRecord::getIsdeleted,Constants.ZERO)
+                .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode)
+                .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone)
+                .apply(" ( DATE_FORMAT(CREATE_DATE, '%Y') = DATE_FORMAT(now(), '%Y') ) ")
+        );
+        List<InoutRecord> monthList = yearList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(DateUtil.formatDate(new Date(),"yyyy-MM"))).collect(Collectors.toList());
+        List<InoutRecord> weekList = yearList.stream().filter(i->i.getCreateDate().getTime()>=weekStart).collect(Collectors.toList());
+        List<InoutRecord> todayList = weekList.stream().filter(i-> DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(DateUtil.formatDate(new Date(),"yyyy-MM-dd"))).collect(Collectors.toList());
+        List<InoutRecord> yesterdayList = yearList.stream().filter(i-> DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(DateUtil.getBeforDay(new Date(),1))).collect(Collectors.toList());
+
+        if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO)){
+            inParkUserDataVO.setYearTotal(yearList.size());
+            inParkUserDataVO.setMonthTotal(monthList.size());
+            inParkUserDataVO.setTodayTotal(todayList.size());
+            inParkUserDataVO.setWeekTotal(weekList.size());
+            inParkUserDataVO.setYesterdayTotal(yesterdayList.size());
+        }else{
+            yearList = this.getListByType(yearList,inParkDataDTO.getType());
+            monthList = this.getListByType(monthList,inParkDataDTO.getType());
+            weekList = this.getListByType(weekList,inParkDataDTO.getType());
+            todayList = this.getListByType(todayList,inParkDataDTO.getType());
+            yesterdayList = this.getListByType(yesterdayList,inParkDataDTO.getType());
+            inParkUserDataVO.setYearTotal(yearList.size());
+            inParkUserDataVO.setMonthTotal(monthList.size());
+            inParkUserDataVO.setTodayTotal(todayList.size());
+            inParkUserDataVO.setWeekTotal(weekList.size());
+            inParkUserDataVO.setYesterdayTotal(yesterdayList.size());
+        }
+        //澶勭悊骞村害鎶樼嚎鍥炬暟鎹�
+        List<GeneralDataVO> cumulativeDataList = new ArrayList<>();
+        for (int i = 1; i <=12 ; i++) {
+            GeneralDataVO generalDataVO = new GeneralDataVO();
+            generalDataVO.setName(Integer.toString(i));
+            generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(Integer.valueOf(generalDataVO.getName()),Integer.valueOf(DateUtil.formatDate(j.getCreateDate(),"MM")))).collect(Collectors.toList()).size());
+            generalDataVO.setName(generalDataVO.getName()+"鏈�");
+            cumulativeDataList.add(generalDataVO);
+        }
+        inParkUserDataVO.setCumulativeDataList(cumulativeDataList);
+        //澶勭悊鍒嗙被鏁版嵁
+        List<GeneralDataVO> yearSortList = new ArrayList<>();
+        if(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){
+            for (int i = 0; i < userTypeList.length; i++) {
+                if(StringUtils.isBlank(userTypeList[i])){
+                    continue;
+                }
+                GeneralDataVO generalDataVO = new GeneralDataVO();
+                generalDataVO.setName(userTypeList[i]);
+                int index = i;
+                generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(j.getType(), index)).collect(Collectors.toList()).size());
+                yearSortList.add(generalDataVO);
+            }
+        }else{
+            List<String> categoryNameList = yearList.stream().filter(i-> StringUtils.isNotBlank(i.getCategoryName())).map(i->i.getCategoryName()).collect(Collectors.toList());
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryNameList)){
+                Set<String> setList = new HashSet<>(categoryNameList);
+                for (String categoryName:setList) {
+                    GeneralDataVO generalDataVO = new GeneralDataVO();
+                    generalDataVO.setName(categoryName);
+                    generalDataVO.setTotal(yearList.stream().filter(j->StringUtils.isNotBlank(j.getCategoryName())&&j.getCategoryName().equals(categoryName)).collect(Collectors.toList()).size());
+                    yearSortList.add(generalDataVO);
+                }
+            }
+        }
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(yearSortList)){
+            Collections.sort(yearSortList, new Comparator<GeneralDataVO>() {
+                @Override
+                public int compare(GeneralDataVO o1, GeneralDataVO o2) {
+                    // 杩斿洖鍊间负int绫诲瀷锛屽ぇ浜�0琛ㄧず姝e簭锛屽皬浜�0琛ㄧず閫嗗簭
+                    return o2.getTotal() - o1.getTotal();
+                }
+            });
+            inParkUserDataVO.setYearSortList(yearSortList);
+        }
+        return inParkUserDataVO;
+    }
+
+
+    /**
+     * 鏌ヨ鍗犳瘮鏁版嵁
+     * @return
+     */
+    @Override
+    public List<GeneralDataVO> getRataList(InParkDataDTO inParkDataDTO){
+        if(Objects.isNull(inParkDataDTO)
+            || Objects.isNull(inParkDataDTO.getType())
+            || Objects.isNull(inParkDataDTO.getIsGroupBy())
+            || StringUtils.isBlank(inParkDataDTO.getDateStr())
+            || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) ))
+            || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) ))
+            || !( Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4) || Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7) )
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        List<GeneralDataVO> rataList = new ArrayList<>();
+        List<InoutRecord> yearList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>()
+                .selectAll(InoutRecord.class)
+                .eq(InoutRecord::getIsdeleted,Constants.ZERO)
+                .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode)
+                .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone)
+                .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') =  '"+inParkDataDTO.getDateStr()+"' ) ")
+                .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') =  '"+inParkDataDTO.getDateStr()+"' ) ")
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(yearList)){
+            return rataList;
+        }
+        if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE)){
+            yearList = this.getListByType(yearList,inParkDataDTO.getType());
+        }
+
+        if(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){
+            for (int i = 0; i < userTypeList.length; i++) {
+                if(StringUtils.isBlank(userTypeList[i])){
+                    continue;
+                }
+                GeneralDataVO generalDataVO = new GeneralDataVO();
+                generalDataVO.setName(userTypeList[i]);
+                int index = i;
+                generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(j.getType(), index)).collect(Collectors.toList()).size());
+                generalDataVO.setRata(new BigDecimal(generalDataVO.getTotal().toString()).divide(new BigDecimal(yearList.size()+""),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")));
+                rataList.add(generalDataVO);
+            }
+        }else{
+            List<String> categoryNameList = yearList.stream().filter(i-> StringUtils.isNotBlank(i.getCategoryParentName())).map(i->i.getCategoryParentName()).collect(Collectors.toList());
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryNameList)){
+                Set<String> setList = new HashSet<>(categoryNameList);
+                for (String categoryName:setList) {
+                    GeneralDataVO generalDataVO = new GeneralDataVO();
+                    generalDataVO.setName(categoryName);
+                    generalDataVO.setTotal(yearList.stream().filter(j->StringUtils.isNotBlank(j.getCategoryParentName())&&j.getCategoryName().equals(categoryName)).collect(Collectors.toList()).size());
+                    generalDataVO.setRata(new BigDecimal(generalDataVO.getTotal().toString()).divide(new BigDecimal(yearList.size()+""),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")));
+                    rataList.add(generalDataVO);
+                }
+            }
+        }
+        return rataList;
+    }
+
+    @Override
+    public List<List<String>> getReportList(InParkDataDTO inParkDataDTO){
+        if(Objects.isNull(inParkDataDTO)
+                || Objects.isNull(inParkDataDTO.getType())
+                || Objects.isNull(inParkDataDTO.getIsGroupBy())
+                || StringUtils.isBlank(inParkDataDTO.getDateStr())
+                || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) ))
+                || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) ))
+                || !( Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4) || Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7) )
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        List<InoutRecord> allList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>()
+                .selectAll(InoutRecord.class)
+                .eq(InoutRecord::getIsdeleted,Constants.ZERO)
+                .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode)
+                .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone)
+                .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') =  '"+inParkDataDTO.getDateStr()+"' ) ")
+                .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') =  '"+inParkDataDTO.getDateStr()+"' ) ")
+        );
+        List<List<String>>  resultList = new ArrayList<>();
+        if(CollectionUtils.isEmpty(allList)){
+            return resultList;
+        }
+        if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE)){
+            allList = this.getListByType(allList,inParkDataDTO.getType());
+        }
+
+        List<String> dateList = new ArrayList<>();
+        //骞翠唤
+        if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)){
+            Integer maxMonth = 12;
+            if(Constants.equalsInteger(DateUtil.getNowYearNum(),Integer.valueOf(inParkDataDTO.getDateStr()))){
+                maxMonth =  DateUtil.getNowMonthNum();
+            }
+            for (int i = 1; i <= maxMonth; i++) {
+                dateList.add(DateUtil.getNowYearNum()+"-"+ StringUtils.leftPad(i+"",2,"0"));
+            }
+        }else {
+            //鏃ユ湡
+            Integer year  = Integer.valueOf(inParkDataDTO.getDateStr().substring(0,4));
+            Integer month = Integer.valueOf(inParkDataDTO.getDateStr().substring(5,6));
+            Integer today = DateUtil.getNowDayNum();
+            YearMonth yearMonth = YearMonth.of(year, month);
+            // 鑾峰彇璇ユ湀鐨勬渶鍚庝竴澶�
+            LocalDate lastDayDate = yearMonth.atEndOfMonth();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            Integer lastDay = Integer.valueOf(lastDayDate.format(formatter));
+            if(Constants.equalsInteger(year,DateUtil.getNowYearNum()) && Constants.equalsInteger(month,DateUtil.getNowMonthNum())){
+                if(today <  lastDay){
+                    lastDay = today;
+                }
+            }
+            for (int i = 1; i <= lastDay; i++) {
+                dateList.add(year + "-" + StringUtils.leftPad(month.toString(),2,"0") + "-" + StringUtils.leftPad(lastDay.toString(),2,"0"));
+            }
+        }
+        return this.dealResultData(allList,dateList,inParkDataDTO.getType(),inParkDataDTO.getDateStr());
+    }
+
+
+    public List<List<String>> dealResultData(List<InoutRecord> allList,List<String> dataList ,Integer type,String dateStr){
+        List<List<String>>  resultList = new ArrayList<>();
+        List<String> totalString = new ArrayList<>();
+        totalString.add("鏃ユ湡");
+        if(Constants.equalsInteger(type,Constants.ZERO)){
+            List<String> categoryNameList = allList.stream().filter(j-> StringUtils.isNotBlank(j.getCategoryName())).map(j->j.getCategoryName()).collect(Collectors.toList());
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(categoryNameList)){
+                return resultList;
+            }
+            Set<String> setList = new HashSet<>(categoryNameList);
+            for (String categoryName:setList) {
+                totalString.add(categoryName);
+            }
+            totalString.add("鍚堣");
+            resultList.add(totalString);
+            Integer total = 0;
+            for (String str:dataList) {
+                for (String categoryName:setList) {
+                    List<String> dataChildList = new ArrayList<>();
+                    dataChildList.add(str);
+                    if(Constants.equalsInteger(dateStr.length(),4)){
+                        Integer childNum = allList.stream().filter(i->categoryName.equals(i.getCategoryName())
+                                && DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(str)).collect(Collectors.toList()).size();
+                        dataChildList.add(
+                                Integer.toString(childNum)
+                        );
+                        total = total + childNum;
+                    }else if(Constants.equalsInteger(dateStr.length(),7)){
+                        Integer childNum = allList.stream().filter(i->categoryName.equals(i.getCategoryName())
+                                &&DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(str)).collect(Collectors.toList()).size();
+                        dataChildList.add(
+                                Integer.toString(childNum)
+                        );
+                        total = total + childNum;
+                    }
+                    dataChildList.add(Integer.toString(total));
+                    resultList.add(dataChildList);
+                }
+            }
+        }else{
+            for (int j = 0; j < userTypeList.length; j++) {
+                if(StringUtils.isBlank(userTypeList[j])){
+                    continue;
+                }
+                totalString.add(userTypeList[j]);
+                totalString.add("鍚堣");
+                resultList.add(totalString);
+            }
+            Integer total = 0;
+            for (String str:dataList) {
+                for (String typeName:userTypeList) {
+                    List<String> dataChildList = new ArrayList<>();
+                    dataChildList.add(str);
+                    if(Constants.equalsInteger(dateStr.length(),4)){
+                        Integer childNum = allList.stream().filter(i->typeName.equals(i.getCategoryName())
+                                && DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(str)).collect(Collectors.toList()).size();
+                        dataChildList.add(
+                                Integer.toString(childNum)
+                        );
+                        total = total + childNum;
+                    }else if(Constants.equalsInteger(dateStr.length(),7)){
+                        Integer childNum = allList.stream().filter(i->typeName.equals(i.getCategoryName())
+                                &&DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(str)).collect(Collectors.toList()).size();
+                        dataChildList.add(
+                                Integer.toString(childNum)
+                        );
+                        total = total + childNum;
+                    }
+                    dataChildList.add(Integer.toString(total));
+                    resultList.add(dataChildList);
+                }
+            }
+        }
+        return resultList;
+    }
+
+
+
+
+
+
+    public List<InoutRecord> getListByType(List<InoutRecord> list,Integer type){
+        return Constants.equalsInteger(type,Constants.ONE)?this.getDataByMemberPhoneSize(list):this.getDataByCarCodeSize(list);
+    }
+
+
+    public List<InoutRecord> getDataByMemberPhoneSize(List<InoutRecord> list){
+        Map<String, InoutRecord> uniqueByMemberPhone = list.stream()
+                .collect(Collectors.toMap(
+                        InoutRecord::getMemberPhone,
+                        person -> person,
+                        (existing, replacement) -> existing
+                ));
+
+        List<InoutRecord> uniqueList = new ArrayList<>(uniqueByMemberPhone.values());
+        return uniqueList;
+    }
+
+    public List<InoutRecord> getDataByCarCodeSize(List<InoutRecord> list){
+        Map<String, InoutRecord> uniqueByCarCode = list.stream()
+                .collect(Collectors.toMap(
+                        InoutRecord::getCarCode,
+                        person -> person,
+                        (existing, replacement) -> existing
+                ));
+
+        List<InoutRecord> uniqueList = new ArrayList<>(uniqueByCarCode.values());
+        return uniqueList;
+    }
+
+
+    @Override
+    public void excel(InParkDataDTO inParkDataDTO, HttpServletResponse response){
+        List<List<String>> data = this.getReportList(inParkDataDTO);
+        try {
+            String fileName = Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)?"鍏ュ洯杞﹁締缁熻琛╛":"鍏ュ洯浜哄憳缁熻琛╛"+System.currentTimeMillis();
+            String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
+            response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+            response.setContentType("application/octet-stream");
+            response.setHeader("eva-opera-type", "download");
+            response.setHeader("eva-download-filename", encodeFileName);
+            ExcelExporter.exportList(data, fileName, response.getOutputStream());
+        } catch (IOException e) {
+            throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+        }
+    }
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index dbd6259..b3b083b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -2472,5 +2472,37 @@
 
     }
 
+    @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+    public PlatformJob restoreWork(JobOperateDTO jobOperateDTO){
+        if(Objects.isNull(jobOperateDTO)
+                || Objects.isNull(jobOperateDTO.getJobId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,涓氬姟鐘舵�佸凡娴佽浆锛�");
+        }
+        Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId());
+        if(Objects.isNull(platform)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
+        }
+        PlatformJob oldPlatformJob = new PlatformJob();
+        BeanUtils.copyProperties(platformJob,oldPlatformJob);
+        if(Objects.isNull(platformJob.getStartDate())){
+            platformJob.setStartDate(new Date());
+        }
+        platformJob.setStatus(Constants.PlatformJobStatus.WORKING.getKey());
+        platformJob.setEditDate(new Date());
+        platformJobMapper.updateById(platformJob);
+
+        //瀛樺偍鎿嶄綔鏃ュ織
+        savePlatformLog(Constants.PlatformJobLogType.WORKING.getKey(),oldPlatformJob,platformJob,
+                Constants.PlatformJobLogType.WORKING.getInfo().replace("{data}",platform.getName()));
+        return platformJob;
+    }
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 53983ed..8cf3245 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -128,6 +128,8 @@
     @Autowired
     private InoutDayCountMapper inoutDayCountMapper;
     @Autowired
+    private InoutRecordMapper inoutRecordMapper;
+    @Autowired
     private CarEventMapper carEventMapper;
 
     @Autowired
@@ -1809,10 +1811,14 @@
                     .apply(" DATE(TIME_INFO) = CURDATE()  ")
                     .last(" limit 1 ")
             );
-
+ 
             //浠婃棩鍦ㄥ洯浜烘暟
             pcWorkPlatformDataVO.setTodayInParkUserNum(
-                    retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count()
+                    inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda()
+                            .isNotNull(InoutRecord::getMemberPhone)
+                            .isNull(InoutRecord::getCarCode)
+                            .apply( " DATE(TIME_INFO) = CURDATE() " ))
+                    //retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count()
             );
 
             pcWorkPlatformDataVO.setTodayInUserNum(Constants.ZERO);
@@ -1820,8 +1826,13 @@
 
             //鍦ㄥ洯闀挎湡鐩稿叧鏂逛汉鏁�
             pcWorkPlatformDataVO.setInParkLwUserNum(
-                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)
-                            && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count()
+                    inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda()
+                            .eq(InoutRecord::getMemberType,Constants.TWO)
+                            .isNotNull(InoutRecord::getMemberPhone)
+                            .isNull(InoutRecord::getCarCode)
+                            .apply( " DATE(TIME_INFO) = CURDATE() " ))
+//                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)
+//                            && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count()
             );
             pcWorkPlatformDataVO.setLwUserInNum(Constants.ZERO);
             pcWorkPlatformDataVO.setLwUserOutNum(Constants.ZERO);
@@ -1829,14 +1840,30 @@
 
             //鍦ㄥ洯璁垮鏁伴噺
             pcWorkPlatformDataVO.setInParkVisitUserNum(
-                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count()
+                    inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda()
+                            .eq(InoutRecord::getMemberType,Constants.ZERO)
+                            .isNotNull(InoutRecord::getMemberPhone)
+                            .isNull(InoutRecord::getCarCode)
+                            .apply( " DATE(TIME_INFO) = CURDATE() " ))
+                    //retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count()
             );
             pcWorkPlatformDataVO.setVisitUserNum(Constants.ZERO);
             pcWorkPlatformDataVO.setSignLevelNum(Constants.ZERO);
 
+            //鍦ㄥ洯璐ц繍杞﹁締鍙告満
+            pcWorkPlatformDataVO.setInParkDriverUserNum(inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda()
+                    .eq(InoutRecord::getMemberType,Constants.THREE)
+                    .isNotNull(InoutRecord::getMemberPhone)
+                    .isNull(InoutRecord::getCarCode)
+                    .apply( " DATE(TIME_INFO) = CURDATE() " )));
+
             //鍦ㄥ洯杞﹁締
             pcWorkPlatformDataVO.setTodayInParkCarNum(
-                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count()
+                    inoutRecordMapper.selectCount(new QueryWrapper<InoutRecord>().lambda()
+                            .isNotNull(InoutRecord::getCarCode)
+                            .isNull(InoutRecord::getMemberPhone)
+                            .apply( " DATE(TIME_INFO) = CURDATE() " ))
+                    //retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count()
             );
             pcWorkPlatformDataVO.setTodayInCarNum(Constants.ZERO);
             pcWorkPlatformDataVO.setTodayOutCarNum(Constants.ZERO);

--
Gitblit v1.9.3