From d5397923196daf2c54f00e927492261d66e1feb2 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期六, 11 十月 2025 18:19:34 +0800
Subject: [PATCH] 钥匙柜开发
---
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java | 25 ++
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java | 27 ++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java | 90 +++++++
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java | 9
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java | 2
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java | 31 ++
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java | 50 ++++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java | 40 +++
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java | 3
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java | 24 ++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java | 284 ++++++++++++++++++++++
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java | 53 ++++
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java | 15 +
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java | 24 ++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java | 18 +
15 files changed, 682 insertions(+), 13 deletions(-)
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java
index b32f626..b814911 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java
@@ -5,6 +5,7 @@
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.model.JkCabinet;
import com.doumee.dao.business.model.JkKeys;
import com.doumee.service.business.JkKeysService;
import com.doumee.service.business.third.model.ApiResponse;
@@ -77,6 +78,14 @@
return ApiResponse.success(jkKeysService.findPage(pageWrap));
}
+ @ApiOperation("鍒楄〃鏌ヨ")
+ @PostMapping("/list")
+ @CloudRequiredPermission("business:jkkeys:query")
+ public ApiResponse<List<JkKeys>> findList (@RequestBody JkKeys jkKeys, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+ return ApiResponse.success(jkKeysService.findList(jkKeys));
+ }
+
+
@ApiOperation("瀵煎嚭Excel")
@PostMapping("/exportExcel")
@CloudRequiredPermission("business:jkkeys:exportExcel")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java
new file mode 100644
index 0000000..d48db4c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java
@@ -0,0 +1,31 @@
+package com.doumee.dao.business.dto;
+
+import com.doumee.service.business.third.model.LoginUserModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/11 16:01
+ */
+@Data
+public class CloseGridDTO{
+
+ @ApiModelProperty(value = "閽ュ寵鏌滀富閿�")
+ private Integer cabinetId;
+
+ @ApiModelProperty(value = "楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱 2绠$悊鍛樻搷浣�")
+ private Integer authType;
+
+ @ApiModelProperty(value = "鏌滄牸涓婚敭")
+ private Integer gridId;
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
+ private Integer memberId;
+
+ @ApiModelProperty(value = "閽ュ寵鐘舵�侊細1鍦ㄤ綅 2鍊熷嚭")
+ private Integer keyStatus;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java
new file mode 100644
index 0000000..6b63c22
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.business.dto;
+
+import com.doumee.service.business.third.model.LoginUserModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/11 16:01
+ */
+@Data
+public class GetDriverGridDTO{
+
+ @ApiModelProperty(value = "閽ュ寵鏌滀富閿�")
+ private Integer cabinetId;
+
+ @ApiModelProperty(value = "0=鍙� 1=杩�")
+ private Integer type;
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
+ private Integer memberId;
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java
new file mode 100644
index 0000000..2f76d84
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java
@@ -0,0 +1,25 @@
+package com.doumee.dao.business.dto;
+
+import com.doumee.service.business.third.model.LoginUserModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/11 16:01
+ */
+@Data
+public class OpenGridDriverDTO extends LoginUserModel {
+
+ @ApiModelProperty(value = "閽ュ寵鏌滀富閿�")
+ private Integer cabinetId;
+
+ @ApiModelProperty(value = "楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱")
+ private Integer authType;
+
+ @ApiModelProperty(value = "鏌滄牸涓婚敭")
+ private Integer gridId;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java
new file mode 100644
index 0000000..64db8b0
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.business.dto;
+
+import com.doumee.service.business.third.model.LoginUserModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/11 16:01
+ */
+@Data
+public class OptGridDTO extends LoginUserModel {
+
+ @ApiModelProperty(value = "閽ュ寵鏌滀富閿�")
+ private Integer cabinetId;
+
+ @ApiModelProperty(value = "鏌滄牸涓婚敭鍒楄〃")
+ private List<Integer> gridIdList;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
index b4d4302..84cb250 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
@@ -86,8 +86,6 @@
private String channelCode;
-
-
@ApiModelProperty(value = "缁戝畾鐘舵�� 0鏈粦瀹氾紱1宸茬粦瀹�", example = "1")
@TableField(exist = false)
private Integer bindStatus;
@@ -99,4 +97,17 @@
@ApiModelProperty(value = "閽ュ寵缂栫爜", example = "1")
@TableField(exist = false)
private String keyCode;
+
+ @ApiModelProperty(value = "杞︾墝鍙�", example = "1")
+ @TableField(exist = false)
+ private String carCode;
+
+ @ApiModelProperty(value = "杞﹁締涓婚敭", example = "1")
+ @TableField(exist = false)
+ private Integer carId;
+
+ @ApiModelProperty(value = "閽ュ寵鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇", example = "1")
+ @TableField(exist = false)
+ private Integer keyStatus;
+
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
index 81db5e1..91d1265 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
@@ -77,6 +77,9 @@
@ExcelColumn(name="鐘舵��",index = 6,width = 10,valueMapping = "0=鎴愬姛;1=澶辫触;")
private Integer status;
+ @ApiModelProperty(value = "鎿嶄綔绫诲瀷锛�0=寮�闂�;1=鍏抽棬;", example = "1")
+ private Integer type;
+
@ApiModelProperty(value = "鎿嶄綔浜洪儴闂�", example = "1",hidden = true)
@TableField(exist = false)
private String companyName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java
new file mode 100644
index 0000000..5b54199
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java
@@ -0,0 +1,27 @@
+package com.doumee.dao.business.vo;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/23 14:56
+ */
+@Data
+public class AdminCabinetVO {
+
+ @ApiModelProperty(value = "璁惧涓婚敭锛堢郴缁熷唴锛�")
+ private Integer id;
+
+ @ApiModelProperty(value = "璁惧缂栧彿")
+ private String code;
+
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String name;
+
+ @ApiModelProperty(value = "璁惧ID")
+ private String devId;
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java
new file mode 100644
index 0000000..618ffb5
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java
@@ -0,0 +1,53 @@
+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 CabinetDetailVO {
+
+ @ApiModelProperty(value = "璁惧涓婚敭锛堢郴缁熷唴锛�")
+ private Integer id;
+
+ @ApiModelProperty(value = "璁惧缂栧彿")
+ private String code;
+
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String name;
+
+ @ApiModelProperty(value = "璁惧ID")
+ private String devId;
+
+ @ApiModelProperty(value = "鏌滄牸鎬绘暟")
+ private Integer gridNum;
+
+ @ApiModelProperty(value = "鍦ㄤ綅閽ュ寵鏁�")
+ private Integer onlineKeyNum;
+
+ @ApiModelProperty(value = "鍊熷嚭閽ュ寵鏁�")
+ private Integer outKeyNum;
+
+ @ApiModelProperty(value = "缁翠慨淇濆吇閽ュ寵鏁�")
+ private Integer serviceKeyNum;
+
+ @ApiModelProperty(value = "鏁呴殰鏌滀綋鏁伴噺")
+ private Integer errGridNum;
+
+ @ApiModelProperty(value = "鏈粦瀹氭煖浣撴暟閲�")
+ private Integer unBindGridNum;
+
+ @ApiModelProperty(value = "鏌滄牸淇℃伅")
+ private List<CabinetGridInfoVO> cabinetGridInfoVOList;
+
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java
new file mode 100644
index 0000000..9045686
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java
@@ -0,0 +1,50 @@
+package com.doumee.dao.business.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.doumee.core.annotation.excel.ExcelColumn;
+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 2024/5/23 14:56
+ */
+@Data
+public class CabinetGridInfoVO {
+
+ @ApiModelProperty(value = "涓婚敭", example = "1")
+ private Integer id;
+
+ @ApiModelProperty(value = "缂栫爜")
+ private String code;
+
+ @ApiModelProperty(value = "閽ュ寵缂栫爜锛堝叧鑱攋k_keys)", example = "1")
+ private Integer keyId;
+
+ @ApiModelProperty(value = "鏌滀綋杩愯鐘舵�� 0姝e父 1鏁呴殰 ", example = "1")
+ private Integer workingStatus;
+
+ @ApiModelProperty(value = "缁戝畾鐘舵�� 0鏈粦瀹氾紱1宸茬粦瀹�", example = "1")
+ private Integer bindStatus;
+
+ @ApiModelProperty(value = "閽ュ寵鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇", example = "1")
+ private Integer keyStatus;
+
+ @ApiModelProperty(value = "鏉垮彿")
+ private String boardCode;
+
+ @ApiModelProperty(value = "閫氶亾鍙�")
+ private String channelCode;
+
+ @ApiModelProperty(value = "杞︾墝鍙�", example = "1")
+ private String carCode;
+
+
+}
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 f08d092..eee512d 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
@@ -1,6 +1,11 @@
package com.doumee.service.business;
+import com.doumee.dao.business.dto.OptGridDTO;
+import com.doumee.dao.business.dto.CloseGridDTO;
+import com.doumee.dao.business.dto.GetDriverGridDTO;
+import com.doumee.dao.business.dto.OpenGridDriverDTO;
import com.doumee.dao.business.model.JkCabinetGrid;
+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 +104,39 @@
void updateStatusById(JkCabinetGrid jkCabinetGrid);
void unBindKeys(List<Integer> idList);
+
+ /**
+ * 鏍囪鏌滄牸鏁呴殰
+ * @param loginUserInfo
+ * @param cabinetId
+ * @param gridIdList
+ */
+ void markFault(OptGridDTO dto);
+
+ /**
+ * 鏍囪鏌滄牸姝e父
+ * @param loginUserInfo
+ * @param cabinetId
+ * @param gridIdList
+ */
+ void cancelFault(OptGridDTO dto);
+
+ /**
+ * 鎵归噺寮�闂� - 绠$悊鍛�
+ */
+ void batchOpenGridAdmin(OptGridDTO dto);
+ /**
+ * 鏍囪缁翠慨淇濆吇 - 绠$悊鍛�
+ * @param loginUserInfo
+ * @param cabinetId
+ * @param gridIdList
+ */
+ void markRepair(OptGridDTO dto);
+
+ void closeGrid(CloseGridDTO dto);
+
+ List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO getDriverGridDTO);
+
+ void openGridDriver(OpenGridDriverDTO openGridDriverDTO);
+
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java
index c11b9c5..95caaf0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java
@@ -1,6 +1,9 @@
package com.doumee.service.business;
+import com.doumee.dao.business.vo.AdminCabinetVO;
import com.doumee.dao.business.vo.CabinetConfigDataVO;
+import com.doumee.dao.business.vo.CabinetDetailVO;
+import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.dao.business.model.JkCabinet;
@@ -102,4 +105,19 @@
CabinetConfigDataVO getCabinetConfigDataVO();
void updCabinetConfig(CabinetConfigDataVO cabinetConfigDataVO);
+
+
+ /**
+ * 閽ュ寵鏌滅鐞嗗憳 鑾峰彇鍙鐞嗙殑閽ュ寵鏌滃垪琛�
+ * @param loginUserInfo
+ * @return
+ */
+ List<AdminCabinetVO> getAdminCabinetInfo(LoginUserInfo loginUserInfo);
+
+ /**
+ * 鑾峰彇閽ュ寵鏌滆鎯�
+ * @param cabinetId
+ * @return
+ */
+ CabinetDetailVO getCabinetDetail(Integer cabinetId);
}
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 4cc4c61..28633c9 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,26 +1,24 @@
package com.doumee.service.business.impl;
-import com.alibaba.druid.sql.visitor.functions.Concat;
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.dao.business.JkKeysMapper;
-import com.doumee.dao.business.model.Cars;
-import com.doumee.dao.business.model.JkCabinet;
-import com.doumee.dao.business.model.JkKeys;
+import com.doumee.dao.business.*;
+import com.doumee.dao.business.dto.OptGridDTO;
+import com.doumee.dao.business.dto.CloseGridDTO;
+import com.doumee.dao.business.dto.GetDriverGridDTO;
+import com.doumee.dao.business.dto.OpenGridDriverDTO;
+import com.doumee.dao.business.model.*;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.JkCabinetGridMapper;
-import com.doumee.dao.business.model.JkCabinetGrid;
import com.doumee.service.business.JkCabinetGridService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.doumee.service.business.third.model.PageWrap;
-import com.github.yulichang.toolkit.MPJWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,8 +26,7 @@
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import org.springframework.transaction.annotation.Transactional;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -45,6 +42,13 @@
@Autowired
private JkKeysMapper jkKeysMapper;
+
+ @Autowired
+ private JkCabinetMapper jkCabinetMapper;
+ @Autowired
+ private JkCabinetLogMapper jkCabinetLogMapper;
+
+
@Override
public Integer create(JkCabinetGrid jkCabinetGrid) {
@@ -237,7 +241,267 @@
}
+ /**
+ * 鏍囪鏁呴殰
+ */
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void markFault(OptGridDTO dto){
+ if(Objects.isNull(dto)
+ || Objects.isNull(dto.getCabinetId())
+ || CollectionUtils.isEmpty(dto.getGridIdList())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+ .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
+ .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+ .in(JkCabinetGrid::getId,dto.getGridIdList())
+ );
+ if(CollectionUtils.isEmpty(jkCabinetGridList)){
+ return;
+ }
+ LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
+ for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+ jkCabinetGrid.setEditor(loginUserInfo.getId());
+ jkCabinetGrid.setEditDate(new Date());
+ jkCabinetGrid.setWorkingStatus(Constants.ONE);
+ jkCabinetGridMapper.updateById(jkCabinetGrid);
+ }
+ }
+
+ /**
+ * 鏍囪缁翠慨淇濆吇
+ */
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void markRepair(OptGridDTO dto){
+ if(Objects.isNull(dto)
+ || Objects.isNull(dto.getCabinetId())
+ || CollectionUtils.isEmpty(dto.getGridIdList())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
+ new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
+ .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
+ .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+ .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
+ .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+ .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+ .eq(JkKeys::getStatus,Constants.ONE)
+ .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
+ .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+ .isNotNull(JkCabinetGrid::getKeyId)
+ .in(JkCabinetGrid::getId,dto.getGridIdList())
+ );
+ if(CollectionUtils.isEmpty(jkCabinetGridList)){
+ return;
+ }
+ for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+ jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
+ .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
+ .set(JkKeys::getStatus,Constants.TWO)
+ .eq(JkKeys::getId,jkCabinetGrid.getKeyId())
+ );
+ }
+ }
+ /**
+ * 鍙栨秷鏁呴殰
+ */
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void cancelFault(OptGridDTO dto){
+ if(Objects.isNull(dto)
+ || Objects.isNull(dto.getCabinetId())
+ || CollectionUtils.isEmpty(dto.getGridIdList())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+ .eq(JkCabinetGrid::getWorkingStatus,Constants.ONE)
+ .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+ .in(JkCabinetGrid::getId,dto.getGridIdList())
+ );
+ if(CollectionUtils.isEmpty(jkCabinetGridList)){
+ return;
+ }
+ LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
+ for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+ jkCabinetGrid.setEditor(loginUserInfo.getId());
+ jkCabinetGrid.setEditDate(new Date());
+ jkCabinetGrid.setWorkingStatus(Constants.ZERO);
+ jkCabinetGridMapper.updateById(jkCabinetGrid);
+ }
+ }
+
+
+ /**
+ * 璁惧绠$悊鍛樻壒閲忓紑閿�
+ */
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void batchOpenGridAdmin(OptGridDTO dto){
+ if(Objects.isNull(dto)
+ || Objects.isNull(dto.getCabinetId())
+ || CollectionUtils.isEmpty(dto.getGridIdList())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+ .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+ .in(JkCabinetGrid::getId,dto.getGridIdList())
+ );
+ if(CollectionUtils.isEmpty(jkCabinetGridList)){
+ return;
+ }
+ LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
+ if(org.apache.commons.collections.CollectionUtils.isNotEmpty(jkCabinetGridList)){
+ List<JkCabinetLog> jkCabinetLogs = new ArrayList<>();
+ for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+ JkCabinetLog jkCabinetLog = new JkCabinetLog();
+ jkCabinetLog.setCreateDate(new Date());
+ jkCabinetLog.setCreator(loginUserInfo.getId());
+ jkCabinetLog.setIsdeleted(Constants.ZERO);
+ jkCabinetLog.setCabinetId(dto.getCabinetId());
+ jkCabinetLog.setGridId(jkCabinetGrid.getId());
+ jkCabinetLog.setAuthType(Constants.TWO);
+ jkCabinetLog.setMemberId(loginUserInfo.getMemberId());
+ if(Objects.nonNull(jkCabinetGrid.getKeyId())){
+ JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
+ if(Objects.nonNull(jkKeys)){
+ if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
+ jkCabinetLog.setCarId(jkKeys.getCarId());
+ jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
+ }
+ jkCabinetLog.setRoleType(jkKeys.getRoleType());
+ }
+ }
+ jkCabinetLog.setType(Constants.ZERO);
+ jkCabinetLogs.add(jkCabinetLog);
+ }
+ jkCabinetLogMapper.insert(jkCabinetLogs);
+ }
+ }
+
+
+ /**
+ * 閽ュ寵鏌滃叧闂�
+ */
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void closeGrid(CloseGridDTO dto){
+ if(Objects.isNull(dto)
+ || Objects.isNull(dto.getGridId())
+ || Objects.isNull(dto.getCabinetId())
+ || Objects.isNull(dto.getKeyStatus())
+ || Objects.isNull(dto.getAuthType())
+ || Objects.isNull(dto.getMemberId())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectOne(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+ .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+ .eq(JkCabinetGrid::getId,dto.getGridId())
+ .last(" limit 1 ")
+ );
+ if(Objects.isNull(jkCabinetGrid)){
+ return;
+ }
+ JkCabinetLog jkCabinetLog = new JkCabinetLog();
+ jkCabinetLog.setCreateDate(new Date());
+ jkCabinetLog.setIsdeleted(Constants.ZERO);
+ jkCabinetLog.setCabinetId(dto.getCabinetId());
+ jkCabinetLog.setGridId(jkCabinetGrid.getId());
+ jkCabinetLog.setAuthType(dto.getAuthType());
+ jkCabinetLog.setMemberId(dto.getMemberId());
+ if(Objects.nonNull(jkCabinetGrid.getKeyId())){
+ //鍙湁閽ュ寵鏌滅粦瀹氫簡閽ュ寵淇℃伅 鎵嶄細鏇存柊閽ュ寵鐨勪俊鎭�
+ JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
+ if(Objects.nonNull(jkKeys)){
+ if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
+ jkCabinetLog.setCarId(jkKeys.getCarId());
+ jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
+ }
+ jkCabinetLog.setRoleType(jkKeys.getRoleType());
+ //閽ュ寵鐘舵�佷笌褰撳墠鎿嶄綔鐘舵�佷笉涓�鑷达紝鍒欒繘琛屾洿鏂伴挜鍖欑姸鎬�
+ if(!Constants.equalsInteger(jkKeys.getStatus(),dto.getKeyStatus())){
+ jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
+ .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
+ .set(JkKeys::getStatus,dto.getKeyStatus())
+ .eq(JkKeys::getId,jkKeys.getId())
+ );
+ }
+ }
+ }
+ jkCabinetLog.setType(Constants.ONE);
+ jkCabinetLogMapper.insert(jkCabinetLog);
+ }
+
+
+ /**
+ * 鍙告満鑾峰彇鍙搷浣滅殑閽ュ寵鏌滄煖鏍�
+ */
+ @Override
+ public List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO dto){
+ if(Objects.isNull(dto.getCabinetId())
+ || Objects.isNull(dto.getCabinetId())
+ || Objects.isNull(dto.getMemberId())
+ || Objects.isNull(dto.getType())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
+ new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
+ .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
+ .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+ .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
+ .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+ .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+ .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
+ .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+ .in(Constants.equalsInteger(dto.getType(),Constants.ONE),JkKeys::getStatus,Constants.TWO,Constants.THREE)
+ .in(Constants.equalsInteger(dto.getType(),Constants.ZERO),JkKeys::getStatus,Constants.ONE)
+ .isNotNull(JkCabinetGrid::getKeyId)
+ .apply(" t1.car_id in ( select c.CAR_ID from car_driver c left join cars c1 on c.car_id = c1.id where c.ISDELETED = 0 and c.TYPE != 0 and c.MEMBER_ID = "+dto.getMemberId()+" ) ")
+ );
+ return jkCabinetGridList;
+ }
+
+
+ /**
+ * 鍙告満寮�鍚煖鏍�
+ * @param openGridDriverDTO
+ */
+ @Override
+ public void openGridDriver(OpenGridDriverDTO openGridDriverDTO){
+ JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectOne(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+ .eq(JkCabinetGrid::getCabinetId,openGridDriverDTO.getCabinetId())
+ .eq(JkCabinetGrid::getId,openGridDriverDTO.getGridId())
+ .last(" limit 1 ")
+ );
+ if(Objects.isNull(jkCabinetGrid)){
+ return;
+ }
+ LoginUserInfo loginUserInfo = openGridDriverDTO.getLoginUserInfo();
+ List<JkCabinetLog> jkCabinetLogs = new ArrayList<>();
+ JkCabinetLog jkCabinetLog = new JkCabinetLog();
+ jkCabinetLog.setCreateDate(new Date());
+ jkCabinetLog.setCreator(loginUserInfo.getId());
+ jkCabinetLog.setIsdeleted(Constants.ZERO);
+ jkCabinetLog.setCabinetId(openGridDriverDTO.getCabinetId());
+ jkCabinetLog.setGridId(jkCabinetGrid.getId());
+ jkCabinetLog.setAuthType(openGridDriverDTO.getAuthType());
+ jkCabinetLog.setMemberId(loginUserInfo.getMemberId());
+ jkCabinetLog.setType(Constants.ZERO);
+ if(Objects.nonNull(jkCabinetGrid.getKeyId())){
+ JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
+ if(Objects.nonNull(jkKeys)){
+ if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
+ jkCabinetLog.setCarId(jkKeys.getCarId());
+ jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
+ }
+ jkCabinetLog.setRoleType(jkKeys.getRoleType());
+ }
+ }
+ jkCabinetLogMapper.insert(jkCabinetLogs);
+ }
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
index 6f1c80b..161d43f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
+import cn.hutool.core.bean.BeanUtil;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -9,7 +10,10 @@
import com.doumee.dao.business.JkKeysMapper;
import com.doumee.dao.business.model.JkCabinetGrid;
import com.doumee.dao.business.model.JkKeys;
+import com.doumee.dao.business.vo.AdminCabinetVO;
import com.doumee.dao.business.vo.CabinetConfigDataVO;
+import com.doumee.dao.business.vo.CabinetDetailVO;
+import com.doumee.dao.business.vo.CabinetGridInfoVO;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
@@ -22,11 +26,14 @@
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.java.Log;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.*;
@@ -340,8 +347,89 @@
systemDictData.setCode(cabinetConfigDataVO.getThreshold());
systemDictDataBiz.updateByIdNew(systemDictData);
}
+ }
+
+
+ @Override
+ public List<AdminCabinetVO> getAdminCabinetInfo(LoginUserInfo loginUserInfo){
+ List<AdminCabinetVO> adminCabinetVOList = new ArrayList<>();
+ List<JkCabinet> jkCabinetList = jkCabinetMapper.selectList(new QueryWrapper<JkCabinet>()
+ .lambda()
+ .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+ .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ")
+ .orderByAsc(JkCabinet::getCreateDate)
+ );
+ if(CollectionUtils.isNotEmpty(jkCabinetList)){
+ for (JkCabinet jkCabinet:jkCabinetList) {
+ AdminCabinetVO adminCabinetVO = new AdminCabinetVO();
+ BeanUtil.copyProperties(jkCabinet,adminCabinetVO);
+ adminCabinetVOList.add(adminCabinetVO);
+ }
+ }
+ return adminCabinetVOList;
+ }
+
+
+ @Override
+ public CabinetDetailVO getCabinetDetail(Integer cabinetId){
+ CabinetDetailVO cabinetDetailVO = new CabinetDetailVO();
+ JkCabinet cabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>()
+ .lambda()
+ .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+ .eq(JkCabinet::getId,cabinetId)
+ .last(" limit 1")
+ );
+ if(Objects.isNull(cabinet)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌閽ュ寵鏌滀俊鎭�");
+ }
+ BeanUtil.copyProperties(cabinet,cabinetDetailVO);
+ cabinetDetailVO.setGridNum(Constants.ZERO);
+ cabinetDetailVO.setErrGridNum(Constants.ZERO);
+ cabinetDetailVO.setOnlineKeyNum(Constants.ZERO);
+ cabinetDetailVO.setServiceKeyNum(Constants.ZERO);
+ cabinetDetailVO.setOutKeyNum(Constants.ZERO);
+ cabinetDetailVO.setUnBindGridNum(Constants.ZERO);
+
+ //鎵�鏈夋煖鏍间俊鎭�
+ List<JkCabinetGrid> jkCabinetGridList =
+ jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>()
+ .selectAll(JkCabinetGrid.class)
+ .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+ .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
+ .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+ .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+ .eq(JkCabinetGrid::getCabinetId,cabinet.getId())
+ .orderByDesc(JkCabinetGrid::getCode)
+ );
+
+ List<CabinetGridInfoVO> cabinetGridInfoVOList = new ArrayList<>();
+ if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+ cabinetDetailVO.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);
+ cabinetGridInfoVOList.add(cabinetGridInfoVO);
+ }
+ cabinetDetailVO.setErrGridNum(
+ cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getWorkingStatus(),Constants.ONE)).collect(Collectors.toList()).size()
+ );
+ cabinetDetailVO.setOnlineKeyNum(
+ cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)).collect(Collectors.toList()).size()
+ );
+ cabinetDetailVO.setOutKeyNum(
+ cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)).collect(Collectors.toList()).size()
+ );
+ cabinetDetailVO.setServiceKeyNum(
+ cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.THREE)).collect(Collectors.toList()).size()
+ );
+ cabinetDetailVO.setUnBindGridNum(
+ cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getBindStatus(),Constants.ZERO)).collect(Collectors.toList()).size()
+ );
+ }
+ return cabinetDetailVO;
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
index 713869d..d2b5382 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
@@ -164,6 +164,8 @@
@Override
public List<JkKeys> findList(JkKeys jkKeys) {
+ jkKeys.setIsdeleted(Constants.ZERO);
+ jkKeys.setStatus(Constants.ZERO);
QueryWrapper<JkKeys> wrapper = new QueryWrapper<>(jkKeys);
return jkKeysMapper.selectList(wrapper);
}
--
Gitblit v1.9.3