From 2f65c9f0c9dae7c192a81a79d94b7eba614c8b23 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 17 十一月 2025 14:59:12 +0800
Subject: [PATCH] 钥匙柜大屏

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java       |   65 ++++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/CabinetBoardController.java               |   98 +++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java             |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java            |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CabinetBoardUseRecordDTO.java      |   25 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardDataVO.java             |   33 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java  |  115 +++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java                |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java           |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningDataVO.java       |   31 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java          |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java                |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java    |   31 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java |   58 +++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardUseRecordVO.java        |   39 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningRataDataVO.java   |   26 ++
 16 files changed, 544 insertions(+), 4 deletions(-)

diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/CabinetBoardController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/CabinetBoardController.java
new file mode 100644
index 0000000..8a88b7d
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/CabinetBoardController.java
@@ -0,0 +1,98 @@
+package com.doumee.cloud.board;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.admin.response.InterestedListVO;
+import com.doumee.dao.business.dto.CabinetBoardUseRecordDTO;
+import com.doumee.dao.business.model.Warning;
+import com.doumee.dao.business.model.WarningEvent;
+import com.doumee.dao.business.vo.CabinetBoardDataVO;
+import com.doumee.dao.business.vo.CabinetBoardUseRecordVO;
+import com.doumee.dao.business.vo.CabinetBoardWaningRataDataVO;
+import com.doumee.dao.web.response.platformReport.OnSitDispatchBoardVO;
+import com.doumee.service.business.*;
+import com.doumee.service.business.third.model.ApiResponse;
+import com.doumee.service.business.third.model.PageData;
+import com.doumee.service.business.third.model.PageWrap;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/11/17 9:06
+ */
+@Api(tags = "銆愰挜鍖欐煖銆戠湅鏉垮ぇ灞忔帴鍙�")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/cabinet")
+public class CabinetBoardController extends BaseController {
+
+    @Autowired
+    private JkCabinetService jkCabinetService;
+
+    @Autowired
+    private JkCabinetGridService jkCabinetGridService;
+
+    @Autowired
+    private JkCabinetLogService jkCabinetLogService;
+
+    @Autowired
+    private CarUseBookService carUseBookService;
+
+    @Autowired
+    private WarningService warningService;
+
+    @LoginNoRequired
+    @ApiOperation("涓績鏁版嵁-閽ュ寵鏌滃熀鏈暟鎹�")
+    @GetMapping("/getCabinetGridData")
+    public ApiResponse<CabinetBoardDataVO> getCabinetGridData() {
+        CabinetBoardDataVO data = jkCabinetGridService.getCabinetGridData();
+        return ApiResponse.success(data);
+    }
+
+    @LoginNoRequired
+    @ApiOperation("閽ュ寵棰嗗彇褰掕繕璁板綍")
+    @PostMapping("/getKeyUseRecord")
+    public ApiResponse<List<CabinetBoardUseRecordVO>> getKeyUseRecord(@RequestBody CabinetBoardUseRecordDTO dto) {
+        return ApiResponse.success(jkCabinetLogService.getKeyUseRecord(dto));
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("娲捐溅缁熻")
+    @GetMapping("/getCarUseStatistics")
+    public ApiResponse<List<InterestedListVO>> getCarUseStatistics(@RequestParam Integer type) {
+        return ApiResponse.success(carUseBookService.getCarUseStatistics(type));
+    }
+
+    @LoginNoRequired
+    @ApiOperation("閽ュ寵棰嗗彇褰掕繕璁板綍缁熻")
+    @GetMapping("/getKeyUseStatistics")
+    public ApiResponse<List<InterestedListVO>> getKeyUseStatistics(@RequestParam Integer type) {
+        return ApiResponse.success(jkCabinetLogService.getKeyUseStatistics(type));
+    }
+
+    @LoginNoRequired
+    @ApiOperation("鍛婅璁板綍 - 鏄庣粏")
+    @PostMapping("/getCabinetBoardWarningPage")
+    public ApiResponse<PageData<WarningEvent>> getCabinetBoardWarningPage (@RequestBody PageWrap<WarningEvent> pageWrap) {
+        return ApiResponse.success(warningService.getCabinetBoardWarningPage(pageWrap));
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("鍛婅璁板綍 - 鍒嗗竷")
+    @GetMapping("/getWarningRataData")
+    public ApiResponse<CabinetBoardWaningRataDataVO> getWarningRataData(@RequestParam Integer type) {
+        return ApiResponse.success(warningService.getCabinetBoardWarningRataData(type));
+    }
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java
index 80a4a9a..8c50cd4 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java
@@ -23,4 +23,7 @@
     @ApiModelProperty(value = "鍚嶇О")
     private String name;
 
+    @ApiModelProperty(value = "鏁伴噺2")
+    private Integer nextNum;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CabinetBoardUseRecordDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CabinetBoardUseRecordDTO.java
new file mode 100644
index 0000000..392bd44
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CabinetBoardUseRecordDTO.java
@@ -0,0 +1,25 @@
+package com.doumee.dao.business.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/11 16:01
+ */
+@Data
+public class CabinetBoardUseRecordDTO {
+
+
+    @ApiModelProperty(value = "绫诲瀷锛�0=鏈綊杩橈紱1=宸插綊杩�")
+    private Integer status;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    private String carCode;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java
index 84ed096..3d58cfd 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java
@@ -126,8 +126,14 @@
     @ExcelColumn(name="浜嬩欢绛夌骇",valueMapping = "0=浣�;1=涓�;2=楂�;",width=10,index = 4)
     @TableField(exist = false)
     private Integer warningLevel;
+    @ApiModelProperty(value = "浜嬩欢缂栫爜")
+    @TableField(exist = false)
+    private String warningCode;
 
 
+    @ApiModelProperty(value = "鍒涘缓浜哄悕绉�")
+    @TableField(exist = false)
+    private String createUserName;
 
     @ApiModelProperty(value = "鏌ヨ鏃堕棿寮�濮�  ")
     @TableField(exist = false)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardDataVO.java
new file mode 100644
index 0000000..e5291f6
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardDataVO.java
@@ -0,0 +1,33 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/23 14:56
+ */
+@Data
+public class CabinetBoardDataVO {
+
+    @ApiModelProperty(value = "鏌滄牸鎬绘暟")
+    private Integer gridNum;
+
+    @ApiModelProperty(value = "鍦ㄤ綅閽ュ寵鏁�")
+    private Integer onlineKeyNum;
+
+    @ApiModelProperty(value = "鍊熷嚭鏁伴噺")
+    private Integer outKeyNum;
+
+    @ApiModelProperty(value = "缁翠慨淇濆吇閽ュ寵鏁�")
+    private Integer serviceKeyNum;
+
+    @ApiModelProperty(value = "鏈粦瀹氭煖浣撴暟閲�")
+    private Integer unBindGridNum;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardUseRecordVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardUseRecordVO.java
new file mode 100644
index 0000000..803a749
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardUseRecordVO.java
@@ -0,0 +1,39 @@
+package com.doumee.dao.business.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 閽ュ寵鏌滃紑鍏抽棬璁板綍
+ * @author 姹熻箘韫�
+ * @date 2025/09/28 09:01
+ */
+@Data
+@ApiModel("閽ュ寵鏌滈挜鍖欓鍙栬褰�")
+public class CabinetBoardUseRecordVO {
+
+    @ApiModelProperty(value = "棰嗗彇鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate;
+
+    @ApiModelProperty(value = "褰掕繕鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date returnDate;
+
+    @ApiModelProperty(value = "鐘舵�侊細0=鏈綊杩橈紱1=宸插綊杩橈紱")
+    private Integer status;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "鎿嶄綔浜哄悕绉�", example = "1")
+    private String memberName;
+
+    @ApiModelProperty(value = "澶囨敞", example = "1")
+    private String remark;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningDataVO.java
new file mode 100644
index 0000000..c957fc2
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningDataVO.java
@@ -0,0 +1,31 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/23 14:56
+ */
+@Data
+public class CabinetBoardWaningDataVO {
+
+    @ApiModelProperty(value = "閰掔簿妫�娴嬪憡璀︽暟閲�")
+    private Integer gridNum;
+
+    @ApiModelProperty(value = "鏌滈棬鏈叧闂憡璀︽暟閲�")
+    private Integer onlineKeyNum;
+
+    @ApiModelProperty(value = "瓒呮椂鏈綊杩樺憡璀�")
+    private Integer outKeyNum;
+
+    @ApiModelProperty(value = "缁翠慨淇濆吇閽ュ寵鏁�")
+    private Integer serviceKeyNum;
+
+    @ApiModelProperty(value = "鏈粦瀹氭煖浣撴暟閲�")
+    private Integer unBindGridNum;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningRataDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningRataDataVO.java
new file mode 100644
index 0000000..e5ba8fb
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningRataDataVO.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/23 14:56
+ */
+@Data
+public class CabinetBoardWaningRataDataVO {
+
+    @ApiModelProperty(value = "閰掔簿妫�娴嬫暟閲�")
+    private Integer alcoholNum;
+
+    @ApiModelProperty(value = "鏌滈棬鏈叧闂憡璀︽暟閲�")
+    private Integer unCloseNum;
+
+    @ApiModelProperty(value = "瓒呮椂鏈綊杩樺憡璀�")
+    private Integer timeOutNum;
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
index a4c1537..67be374 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business;
 
+import com.doumee.dao.admin.response.InterestedListVO;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -107,4 +108,6 @@
     void revoke(Integer id, String info, LoginUserInfo loginUserInfo);
 
     void jdyPushCarUseBook(String dataInfo);
+
+    List<InterestedListVO> getCarUseStatistics(Integer type);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
index 294a59d..73cc38d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
@@ -2,6 +2,7 @@
 
 import com.doumee.dao.business.dto.*;
 import com.doumee.dao.business.model.JkCabinetGrid;
+import com.doumee.dao.business.vo.CabinetBoardDataVO;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -147,7 +148,7 @@
     void alcoholTestAlarm(AlcoholTestAlarmDTO dto);
 
 
-
+    CabinetBoardDataVO getCabinetGridData();
 
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java
index 35e17eb..b6a0f54 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java
@@ -1,6 +1,9 @@
 package com.doumee.service.business;
 
+import com.doumee.dao.admin.response.InterestedListVO;
+import com.doumee.dao.business.dto.CabinetBoardUseRecordDTO;
 import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
+import com.doumee.dao.business.vo.CabinetBoardUseRecordVO;
 import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
 import com.doumee.service.business.impl.JkCabinetGridServiceImpl;
 import com.doumee.service.business.third.model.PageData;
@@ -108,4 +111,7 @@
 
     void timeOutUnBackAlarm(JkCabinetGridServiceImpl impl);
 
+    List<CabinetBoardUseRecordVO> getKeyUseRecord(CabinetBoardUseRecordDTO dto);
+
+    List<InterestedListVO> getKeyUseStatistics(Integer type);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java
index c06822a..6a75d98 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java
@@ -1,5 +1,7 @@
 package com.doumee.service.business;
 
+import com.doumee.dao.business.model.WarningEvent;
+import com.doumee.dao.business.vo.CabinetBoardWaningRataDataVO;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -99,4 +101,8 @@
     void updateStatus(Warning param);
 
     void getWeatherInfo();
+
+    PageData<WarningEvent> getCabinetBoardWarningPage(PageWrap<WarningEvent> pageWrap);
+
+    CabinetBoardWaningRataDataVO getCabinetBoardWarningRataData(Integer type);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
index b81ac6f..53ecf86 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -5,6 +5,7 @@
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.admin.response.InterestedListVO;
 import com.doumee.dao.business.dao.UserActionMapper;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
@@ -751,6 +752,36 @@
         }
         carUseBookMapper.insertOrUpdate(carUseBook);
     }
+
+
+
+
+    @Override
+    public List<InterestedListVO> getCarUseStatistics(Integer type){
+        List<String> weekDays = DateUtil.getBeforDays(new Date(),Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15);
+        MPJLambdaWrapper<CarUseBook> wrapper = new MPJLambdaWrapper<CarUseBook>()
+                .selectAll(CarUseBook.class)
+                .eq(CarUseBook::getIsdeleted, Constants.ZERO)
+                .eq(CarUseBook::getStatus,Constants.TWO)
+                .apply("  CREATE_DATE >   CURDATE() - INTERVAL "+(Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15)+" DAY ")
+                .orderByDesc(CarUseBook::getCreateDate);
+        List<CarUseBook> carUseBookList = carUseBookMapper.selectJoinList(CarUseBook.class,wrapper);
+        List<InterestedListVO> list = new ArrayList<>();
+        for (String days:weekDays) {
+            InterestedListVO vo = new InterestedListVO();
+            vo.setName(days);
+            vo.setNum(Constants.ZERO);
+            vo.setNextNum(Constants.ZERO);
+            if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(carUseBookList)) {
+                vo.setNum(
+                        carUseBookList.stream().filter(i->DateUtil.dateToString(i.getCreateDate(),"yyyy-MM-dd").equals(days))
+                                .collect(Collectors.toList()).size()
+                );
+            }
+        }
+        return list;
+    }
+    
     
     
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
index 9140786..3f6f205 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
@@ -14,6 +15,9 @@
 import com.doumee.dao.business.dao.MemberMapper;
 import com.doumee.dao.business.dto.*;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.CabinetBoardDataVO;
+import com.doumee.dao.business.vo.CabinetDetailVO;
+import com.doumee.dao.business.vo.CabinetGridInfoVO;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.third.model.LoginUserInfo;
@@ -738,6 +742,16 @@
     public void timeOutUnCloseAlarm(TimeOutCloseGridDTO dto){
         if(Objects.nonNull(dto)
             && Objects.nonNull(dto.getGridId())){
+
+            SystemUser systemUser =  null;
+            if(Objects.nonNull(dto.getMemberId())){
+                systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
+                        .eq(Objects.nonNull(dto.getMemberId()),SystemUser::getMemberId,dto.getMemberId())
+                        .eq(SystemUser::getDeleted,Constants.ZERO)
+                        .last(" limit 1 ")
+                );
+            }
+
             JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectJoinOne(JkCabinetGrid.class,
                     new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
                             .selectAs(JkCabinet::getName,JkCabinetGrid::getCabinetName)
@@ -746,6 +760,7 @@
                             .eq(JkCabinetGrid::getId,dto.getGridId())
                             .last(" limit 1 ")
             );
+
             if(Objects.nonNull(jkCabinetGrid)){
                 log.error("鏌滄牸寮�闂ㄨ秴鏃舵湭鍏抽棴鍛婅淇℃伅锛歿}"+JSONObject.toJSONString(jkCabinetGrid));
                 //瑙勫垯绫诲瀷
@@ -779,6 +794,7 @@
                     //瀛樺偍鎶ヨ寮傚父璁板綍
                     WarningEvent warningEvent = new WarningEvent();
                     warningEvent.setCreateDate(new Date());
+                    warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                     warningEvent.setWarningId(warning.getId());
                     warningEvent.setTitle(warningConfig.getInfo());
                     warningEvent.setContent(content );
@@ -988,6 +1004,7 @@
                 //瀛樺偍鎶ヨ寮傚父璁板綍
                 WarningEvent warningEvent = new WarningEvent();
                 warningEvent.setCreateDate(new Date());
+                warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                 warningEvent.setWarningId(warning.getId());
                 warningEvent.setTitle(warningConfig.getInfo());
                 warningEvent.setContent(content );
@@ -1038,7 +1055,46 @@
     }
 
 
-
+    @Override
+    public CabinetBoardDataVO getCabinetGridData(){
+        CabinetBoardDataVO cabinetBoardDataVO = new CabinetBoardDataVO();
+        //鎵�鏈夋煖鏍间俊鎭�
+        List<JkCabinetGrid> jkCabinetGridList =
+                jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>()
+                        .selectAll(JkCabinetGrid.class)
+                        .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+                        .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
+                        .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
+                        .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                        .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) 
+                        .orderByAsc(JkCabinetGrid::getCode)
+                );
+        List<CabinetGridInfoVO> cabinetGridInfoVOList = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+            cabinetBoardDataVO.setGridNum(jkCabinetGridList.size());
+            for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                CabinetGridInfoVO cabinetGridInfoVO = new CabinetGridInfoVO();
+                BeanUtil.copyProperties(jkCabinetGrid,cabinetGridInfoVO);
+                cabinetGridInfoVO.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE);
+                cabinetGridInfoVO.setKeyStatus(Objects.isNull(cabinetGridInfoVO.getKeyStatus())?Constants.ZERO:cabinetGridInfoVO.getKeyStatus());
+                cabinetGridInfoVOList.add(cabinetGridInfoVO);
+            }
+            cabinetBoardDataVO.setGridNum(jkCabinetGridList.size());
+            cabinetBoardDataVO.setOnlineKeyNum( //鍦ㄤ綅鏁伴噺
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)).collect(Collectors.toList()).size()
+            );
+            cabinetBoardDataVO.setOutKeyNum( //鍊熷嚭鏁伴噺
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)).collect(Collectors.toList()).size()
+            );
+            cabinetBoardDataVO.setServiceKeyNum( //缁存姢淇濆吇鏁伴噺
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.THREE)).collect(Collectors.toList()).size()
+            );
+            cabinetBoardDataVO.setUnBindGridNum(//绌洪棽鏁伴噺
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getBindStatus(),Constants.ZERO)).collect(Collectors.toList()).size()
+            );
+        }
+        return cabinetBoardDataVO;
+    }
 
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
index 56eae5b..b988651 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
@@ -3,10 +3,16 @@
 import cn.hutool.core.bean.BeanUtil;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.admin.response.InterestedListVO;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dto.CabinetBoardUseRecordDTO;
 import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.CabinetBoardUseRecordVO;
 import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.core.utils.Utils;
@@ -45,6 +51,10 @@
 
     @Autowired
     private WarningPushMapper warningPushMapper;
+
+
+    @Autowired
+    private SystemUserMapper systemUserMapper;
 
     @Autowired
     private WarningEventMapper warningEventMapper;
@@ -234,11 +244,21 @@
                 }
                 for (JkCabinetLog jkCabinetLog:jkCabinetLogs) {
 
+                    SystemUser systemUser =  null;
+                    if(Objects.nonNull(jkCabinetLog.getMemberId())){
+                        systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
+                                .eq(Objects.nonNull(jkCabinetLog.getMemberId()),SystemUser::getMemberId,jkCabinetLog.getMemberId())
+                                .eq(SystemUser::getDeleted,Constants.ZERO)
+                                .last(" limit 1 ")
+                        );
+                    }
+
                     String content = "銆愯溅杈�-"+jkCabinetLog.getCarCode()+"閽ュ寵銆戠敱+"+(StringUtils.isNotBlank(jkCabinetLog.getMemberName())?jkCabinetLog.getMemberName():"鏈煡浜哄憳")+"鍊熷嚭锛岃秴鏃舵湭褰掕繕";
 
                     //瀛樺偍鎶ヨ寮傚父璁板綍
                     WarningEvent warningEvent = new WarningEvent();
                     warningEvent.setCreateDate(new Date());
+                    warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                     warningEvent.setWarningId(warning.getId());
                     warningEvent.setTitle(warningConfig.getInfo());
                     warningEvent.setContent(content );
@@ -280,15 +300,106 @@
                         warningEventMapper.updateById(warningEvent);
                     }
                 }
+            }
+        }
+    }
 
 
+
+
+
+    @Override
+    public List<CabinetBoardUseRecordVO> getKeyUseRecord(CabinetBoardUseRecordDTO dto){
+        MPJLambdaWrapper<JkCabinetLog> wrapper = new MPJLambdaWrapper<JkCabinetLog>()
+                .selectAll(JkCabinetLog.class)
+                .selectAs(Member::getName,JkCabinetLog::getMemberName)
+                .selectAs(Company::getName,JkCabinetLog::getCompanyName)
+                .selectAs(JkCabinet::getName,JkCabinetLog::getCabinetName)
+                .selectAs(JkCabinetGrid::getCode,JkCabinetLog::getGridCode)
+                .selectAs(JkKeys::getCarCode,JkCabinetLog::getCarCode)
+                .select("j.CREATE_DATE",JkCabinetLog::getReturnDate)
+                .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetLog::getCabinetId)
+                .leftJoin(JkCabinetGrid.class,JkCabinetGrid::getId,JkCabinetLog::getGridId)
+                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                .leftJoin(Member.class,Member::getId,JkCabinetLog::getMemberId)
+                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
+                .leftJoin(" jk_cabinet_log j on j.id=t.CLOSE_LOG_ID ")
+                .ge(JkCabinetLog::getCreateDate, Utils.Date.getStart(DateUtil.getCurrentDate()))
+                .le(JkCabinetLog::getCreateDate, Utils.Date.getEnd(Utils.Date.getStart(DateUtil.getCurrentDate())))
+                .eq(JkCabinetLog::getIsdeleted, Constants.ZERO)
+                .eq(JkCabinetLog::getType,Constants.ONE)
+                .eq(JkCabinetLog::getKeyStatus,Constants.TWO)
+                .like(StringUtils.isNotBlank(dto.getCarCode()),JkCabinetLog::getCarCode,dto.getCarCode())
+                .isNotNull(Objects.nonNull(dto.getStatus())&&Constants.equalsInteger(dto.getStatus(),Constants.ONE),JkCabinetLog::getCloseLogId)
+                .isNull(Objects.nonNull(dto.getStatus())&&Constants.equalsInteger(dto.getStatus(),Constants.ZERO),JkCabinetLog::getCloseLogId)
+                .orderByDesc(JkCabinetLog::getCreateDate);
+        List<JkCabinetLog> jkCabinetLogs = jkCabinetLogMapper.selectJoinList(JkCabinetLog.class,wrapper);
+        List<CabinetBoardUseRecordVO> cabinetBoardUseRecordList = new ArrayList<CabinetBoardUseRecordVO>();
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jkCabinetLogs)){
+            for (JkCabinetLog jkCabinetLog:jkCabinetLogs) {
+                CabinetBoardUseRecordVO cabinetBoardUseRecordVO = new CabinetBoardUseRecordVO();
+                BeanUtil.copyProperties(jkCabinetLog,cabinetBoardUseRecordVO);
+                cabinetBoardUseRecordVO.setStatus(Objects.nonNull(jkCabinetLog.getReturnDate())?Constants.ZERO:Constants.ONE);
+                cabinetBoardUseRecordVO.setRemark(Objects.isNull(jkCabinetLog.getOpenWay())?"":
+                        Constants.equalsInteger(jkCabinetLog.getOpenWay(),Constants.ZERO)?"闅忚溅棰嗗彇":
+                                Constants.equalsInteger(jkCabinetLog.getOpenWay(),Constants.ONE)?"闅忔淳杞﹀崟棰嗗彇":"淇濇磥棰嗗彇"
+                        );
+                cabinetBoardUseRecordList.add(cabinetBoardUseRecordVO);
+            }
+        }
+        return cabinetBoardUseRecordList;
+    }
+
+
+
+
+
+    @Override
+    public List<InterestedListVO> getKeyUseStatistics(Integer type){
+        List<String> weekDays = DateUtil.getBeforDays(new Date(),Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15);
+        MPJLambdaWrapper<JkCabinetLog> wrapper = new MPJLambdaWrapper<JkCabinetLog>()
+                .selectAll(JkCabinetLog.class)
+                .selectAs(Member::getName,JkCabinetLog::getMemberName)
+                .selectAs(Company::getName,JkCabinetLog::getCompanyName)
+                .selectAs(JkCabinet::getName,JkCabinetLog::getCabinetName)
+                .selectAs(JkCabinetGrid::getCode,JkCabinetLog::getGridCode)
+                .selectAs(JkKeys::getCarCode,JkCabinetLog::getCarCode)
+                .select("j.CREATE_DATE",JkCabinetLog::getReturnDate)
+                .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetLog::getCabinetId)
+                .leftJoin(JkCabinetGrid.class,JkCabinetGrid::getId,JkCabinetLog::getGridId)
+                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                .leftJoin(Member.class,Member::getId,JkCabinetLog::getMemberId)
+                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
+                .leftJoin(" jk_cabinet_log j on j.id=t.CLOSE_LOG_ID ")
+                .eq(JkCabinetLog::getIsdeleted, Constants.ZERO)
+                .eq(JkCabinetLog::getType,Constants.ONE)
+                .ne(JkCabinetLog::getKeyStatus,Constants.ZERO)
+                .apply("  CREATE_DATE >   CURDATE() - INTERVAL "+(Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15)+" DAY ")
+                .orderByDesc(JkCabinetLog::getCreateDate);
+        List<JkCabinetLog> jkCabinetLogs = jkCabinetLogMapper.selectJoinList(JkCabinetLog.class,wrapper);
+        List<InterestedListVO> list = new ArrayList<>();
+        for (String days:weekDays) {
+            InterestedListVO vo = new InterestedListVO();
+            vo.setName(days);
+            vo.setNum(Constants.ZERO);
+            vo.setNextNum(Constants.ZERO);
+            if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jkCabinetLogs)) {
+                vo.setNum(
+                        jkCabinetLogs.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)
+                                                &&DateUtil.dateToString(i.getCreateDate(),"yyyy-MM-dd").equals(days))
+                                .collect(Collectors.toList()).size()
+                );
+                vo.setNextNum(jkCabinetLogs.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)
+                                &&DateUtil.dateToString(i.getCreateDate(),"yyyy-MM-dd").equals(days))
+                        .collect(Collectors.toList()).size());
 
             }
         }
-
-
+        return list;
     }
 
 
 
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
index 0b6d126..f26758f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
@@ -13,6 +13,8 @@
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dao.MemberMapper;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.CabinetBoardWaningRataDataVO;
+import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -22,6 +24,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -346,12 +349,74 @@
         }catch (Exception e){
 
         }
+    }
 
 
+
+
+    @Override
+    public PageData<WarningEvent> getCabinetBoardWarningPage(PageWrap<WarningEvent> pageWrap){
+        IPage<WarningEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        Utils.MP.blankToNull(pageWrap.getModel());
+        IPage<WarningEvent> pageData = warningEventMapper.selectJoinPage(page,WarningEvent.class,
+                new MPJLambdaWrapper<WarningEvent>()
+                        .selectAll(WarningEvent.class)
+                        .selectAs(SystemUser::getRealname,WarningEvent::getCreateUserName)
+                        .leftJoin(SystemUser.class,SystemUser::getId,WarningEvent::getCreator)
+                        .leftJoin(Warning.class,Warning::getId,WarningEvent::getWarningId)
+                        .eq(WarningEvent::getIsdeleted,Constants.ZERO)
+                        .in(Warning::getCode,Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey(),Constants.WarningConfig.ALARM_TEST.getKey(),Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey())
+                        .like(WarningEvent::getCreateDate,DateUtil.getCurrDate())
+                        .orderByDesc(WarningEvent::getId)
+        );
+        return PageData.from(pageData);
+    }
+
+
+    @Override
+    public CabinetBoardWaningRataDataVO getCabinetBoardWarningRataData(Integer type){
+
+        CabinetBoardWaningRataDataVO vo = new CabinetBoardWaningRataDataVO();
+        vo.setAlcoholNum(Constants.ZERO);
+        vo.setUnCloseNum(Constants.ZERO);
+        vo.setTimeOutNum(Constants.ZERO);
+
+        List<WarningEvent> warningEventList = warningEventMapper.selectJoinList(WarningEvent.class,
+                new MPJLambdaWrapper<WarningEvent>().
+                selectAll(WarningEvent.class)
+                .selectAs(Warning::getCode,WarningEvent::getWarningId)
+                .leftJoin(Warning.class,Warning::getId,WarningEvent::getWarningCode)
+                .eq(WarningEvent::getIsdeleted,Constants.ZERO)
+                .in(Warning::getCode,Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey(),Constants.WarningConfig.ALARM_TEST.getKey(),Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey())
+                .like(Objects.nonNull(type)&&Constants.equalsInteger(Constants.ZERO,type),WarningEvent::getCreateDate,DateUtil.getCurrDate())
+                .like(Objects.nonNull(type)&&Constants.equalsInteger(Constants.ONE,type),WarningEvent::getCreateDate,DateUtil.getFomartDate(new Date(),"yyyy-MM"))
+                .like(Objects.nonNull(type)&&Constants.equalsInteger(Constants.TWO,type),WarningEvent::getCreateDate,DateUtil.getFomartDate(new Date(),"yyyy"))
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(warningEventList)){
+            vo.setAlcoholNum(
+                    warningEventList.stream().filter(i->StringUtils.isNotBlank(i.getWarningCode())&&
+                            i.getWarningCode().equals(Constants.WarningConfig.ALARM_TEST.getKey())).collect(Collectors.toList()).size()
+            );
+            vo.setUnCloseNum(
+                    warningEventList.stream().filter(i->StringUtils.isNotBlank(i.getWarningCode())&&
+                            i.getWarningCode().equals(Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey())).collect(Collectors.toList()).size()
+            );
+            vo.setTimeOutNum(
+                    warningEventList.stream().filter(i->StringUtils.isNotBlank(i.getWarningCode())&&
+                            i.getWarningCode().equals(Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey())).collect(Collectors.toList()).size()
+            );
+        }
+
+
+        return vo;
 
 
     }
 
 
 
+
+
+
+
 }

--
Gitblit v1.9.3