From 4a8ff39b0fab0627ef8f7459587d514cc01c3676 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 20 十月 2025 10:52:02 +0800
Subject: [PATCH] Merge branch 'wuhuyancao' of http://139.186.142.91:10010/r/productDev/dmvisit into wuhuyancao

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java |  512 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 458 insertions(+), 54 deletions(-)

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 d197518..b0b1113 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,20 +1,37 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+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.wrapper.MPJLambdaWrapper;
+import com.hikvision.artemis.sdk.config.ArtemisConfig;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 閽ュ寵鏌滄煖鏍煎熀鏈俊鎭〃Service瀹炵幇
@@ -22,10 +39,21 @@
  * @date 2025/09/28 09:01
  */
 @Service
+@Slf4j
 public class JkCabinetGridServiceImpl implements JkCabinetGridService {
 
     @Autowired
     private JkCabinetGridMapper jkCabinetGridMapper;
+
+    @Autowired
+    private JkKeysMapper jkKeysMapper;
+
+    @Autowired
+    private JkCabinetMapper jkCabinetMapper;
+    @Autowired
+    private JkCabinetLogMapper jkCabinetLogMapper;
+
+
 
     @Override
     public Integer create(JkCabinetGrid jkCabinetGrid) {
@@ -54,7 +82,47 @@
 
     @Override
     public void updateById(JkCabinetGrid jkCabinetGrid) {
-        jkCabinetGridMapper.updateById(jkCabinetGrid);
+        if(Objects.isNull(jkCabinetGrid)
+                || Objects.isNull(jkCabinetGrid.getId())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        LoginUserInfo loginUserInfo = jkCabinetGrid.getLoginUserInfo();
+        JkCabinetGrid model = jkCabinetGridMapper.selectById(jkCabinetGrid.getId());
+        if(Objects.isNull(model)|| Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(Objects.nonNull(jkCabinetGrid.getKeyId())){
+            if(Objects.nonNull(model.getKeyId())){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸茬粦瀹氾紝璇峰嬁閲嶅缁戝畾");
+            }
+            JkKeys keysModel = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
+            if(Objects.isNull(keysModel)|| Constants.equalsInteger(keysModel.getIsdeleted(),Constants.ONE)){
+                throw new BusinessException(ResponseStatus.DATA_EMPTY);
+            }
+            if(!Constants.equalsInteger(keysModel.getStatus(), (Constants.ZERO))){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閽ュ寵宸茶缁戝畾锛岃閫夋嫨鍏朵粬閽ュ寵缁戝畾");
+            }
+            //鏇存柊閽ュ寵鏌滀俊鎭�
+            jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
+                    .set(JkCabinetGrid::getKeyId,jkCabinetGrid.getKeyId())
+                    .set(JkCabinetGrid::getEditor,loginUserInfo.getId())
+                    .set(JkCabinetGrid::getEditDate,DateUtil.getCurrDateTime())
+                    .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
+                    .eq(JkCabinetGrid::getId,jkCabinetGrid.getId()));
+            //鏍囪閽ュ寵淇℃伅
+            jkKeysMapper.update(new UpdateWrapper<JkKeys>().lambda()
+                    .set(JkKeys::getStatus,Constants.ONE)
+                    .eq(JkKeys::getId,jkCabinetGrid.getKeyId())
+            );
+            return;
+        }else if(Objects.nonNull(jkCabinetGrid.getChannelCode())||Objects.nonNull(jkCabinetGrid.getBoardCode())){
+            jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
+                    .set(Objects.nonNull(jkCabinetGrid.getChannelCode()),JkCabinetGrid::getChannelCode,jkCabinetGrid.getChannelCode())
+                    .set(Objects.nonNull(jkCabinetGrid.getBoardCode()),JkCabinetGrid::getBoardCode,jkCabinetGrid.getBoardCode())
+                    .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
+                    .eq(JkCabinetGrid::getId,jkCabinetGrid.getId()));
+        }
     }
 
     @Override
@@ -87,57 +155,25 @@
     @Override
     public PageData<JkCabinetGrid> findPage(PageWrap<JkCabinetGrid> pageWrap) {
         IPage<JkCabinetGrid> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<JkCabinetGrid> queryWrapper = new QueryWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getId, pageWrap.getModel().getId());
+        JkCabinetGrid model = pageWrap.getModel();
+        MPJLambdaWrapper<JkCabinetGrid> wrapper = new MPJLambdaWrapper<JkCabinetGrid>()
+                .selectAll(JkCabinetGrid.class)
+                .selectAs(JkCabinet::getName,JkCabinetGrid::getCabinetName)
+                .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
+                .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetGrid::getCabinetId)
+                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                .eq(Objects.nonNull(model.getCabinetId()),JkCabinetGrid::getCabinetId,model.getCabinetId())
+                .eq(Objects.nonNull(model.getStatus()),JkCabinetGrid::getStatus,model.getStatus())
+                .isNull(Objects.nonNull(model.getBindStatus())&&Constants.equalsInteger(model.getBindStatus(),Constants.ZERO),JkCabinetGrid::getKeyId)
+                .isNotNull(Objects.nonNull(model.getBindStatus())&&Constants.equalsInteger(model.getBindStatus(),Constants.ONE),JkCabinetGrid::getKeyId)
+                .like(StringUtils.isNotBlank(model.getKeyCode()),JkKeys::getCode,model.getKeyCode());
+        IPage<JkCabinetGrid> iPage = jkCabinetGridMapper.selectJoinPage(page,JkCabinetGrid.class,wrapper);
+        for (JkCabinetGrid jkCabinetGrid:iPage.getRecords()) {
+            jkCabinetGrid.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE);
         }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(JkCabinetGrid::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(JkCabinetGrid::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(JkCabinetGrid::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(JkCabinetGrid::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getInfo() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getInfo, pageWrap.getModel().getInfo());
-        }
-        if (pageWrap.getModel().getCabinetId() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getCabinetId, pageWrap.getModel().getCabinetId());
-        }
-        if (pageWrap.getModel().getCode() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getCode, pageWrap.getModel().getCode());
-        }
-        if (pageWrap.getModel().getKeyId() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getKeyId, pageWrap.getModel().getKeyId());
-        }
-        if (pageWrap.getModel().getSerialNo() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getSerialNo, pageWrap.getModel().getSerialNo());
-        }
-        if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getStatus, pageWrap.getModel().getStatus());
-        }
-        if (pageWrap.getModel().getWorkingStatus() != null) {
-            queryWrapper.lambda().eq(JkCabinetGrid::getWorkingStatus, pageWrap.getModel().getWorkingStatus());
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
-        return PageData.from(jkCabinetGridMapper.selectPage(page, queryWrapper));
+        return PageData.from(iPage);
     }
 
     @Override
@@ -145,4 +181,372 @@
         QueryWrapper<JkCabinetGrid> wrapper = new QueryWrapper<>(jkCabinetGrid);
         return jkCabinetGridMapper.selectCount(wrapper);
     }
+
+    @Override
+    public void updateStatusById(JkCabinetGrid jkCabinetGrid) {
+        if(Objects.isNull(jkCabinetGrid)
+                || Objects.isNull(jkCabinetGrid.getId())
+                || Objects.isNull(jkCabinetGrid.getStatus())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        jkCabinetGridMapper.update(null,new UpdateWrapper<JkCabinetGrid>()
+                .lambda().set(JkCabinetGrid::getStatus,jkCabinetGrid.getStatus())
+                .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
+                .eq(JkCabinetGrid::getId,jkCabinetGrid.getId()));
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+    public void unBindKeys(List<Integer> idList){
+        if(CollectionUtils.isEmpty(idList)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(idList.size()==Constants.ONE){
+            JkCabinetGrid model = jkCabinetGridMapper.selectById(idList.get(Constants.ZERO));
+            if(Objects.isNull(model)|| Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+                throw new BusinessException(ResponseStatus.DATA_EMPTY);
+            }
+            if(Objects.isNull(model.getKeyId())){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠瑙勬牸鏈粦瀹氶挜鍖欙紝璇峰埛鏂版煡鐪�");
+            }else{
+                //鏇存柊閽ュ寵鏌滀俊鎭�
+                jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
+                        .set(JkCabinetGrid::getKeyId,null)
+                        .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
+                        .eq(JkCabinetGrid::getId,model.getId()));
+                JkKeys keysModel = jkKeysMapper.selectById(model.getKeyId());
+                if(Objects.nonNull(keysModel) && !Constants.equalsInteger(keysModel.getStatus(),Constants.ZERO)){
+                    jkKeysMapper.update(new UpdateWrapper<JkKeys>().lambda()
+                            .set(JkKeys::getStatus,Constants.ZERO)
+                            .eq(JkKeys::getId,keysModel.getId())
+                    );
+                }
+            }
+        }else{
+            List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda()
+                            .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                            .isNotNull(JkCabinetGrid::getKeyId)
+                    .in(JkCabinetGrid::getId,idList));
+            if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+                jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
+                        .set(JkCabinetGrid::getKeyId,null)
+                        .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
+                        .eq(JkCabinetGrid::getId,jkCabinetGridList.stream().map(i->i.getId()).collect(Collectors.toList())));
+                List<Integer> keyIdList = jkCabinetGridList.stream().filter(i->Objects.nonNull(i.getKeyId())).map(i->i.getKeyId()).collect(Collectors.toList());
+                if(CollectionUtils.isNotEmpty(keyIdList)){
+                    jkKeysMapper.update(new UpdateWrapper<JkKeys>().lambda()
+                            .set(JkKeys::getStatus,Constants.ZERO)
+                            .in(JkKeys::getId,keyIdList)
+                    );
+                }
+
+            }
+        }
+    }
+
+
+    /**
+     * 鏍囪鏁呴殰
+     */
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void markFault(OptGridDTO dto){
+        if(Objects.isNull(dto)
+                || Objects.isNull(dto.getCabinetId())
+                || CollectionUtils.isEmpty(dto.getGridIdList())){
+            return;
+        }else{
+            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.isNotEmpty(jkCabinetGridList)){
+                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.isNotEmpty(jkCabinetGridList)){
+            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())){
+            return;
+        }
+        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.isNotEmpty(jkCabinetGridList)){
+            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())){
+           return;
+        }
+        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.isNotEmpty(jkCabinetGridList)){
+            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.nonNull(jkCabinetGrid)){
+            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());
+            jkCabinetLog.setKeyStatus(Constants.ZERO);
+            Boolean isChange = false;
+            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.setKeyStatus(dto.getKeyStatus());
+                    //閽ュ寵鐘舵�佷笌褰撳墠鎿嶄綔鐘舵�佷笉涓�鑷达紝鍒欒繘琛屾洿鏂伴挜鍖欑姸鎬�
+                    if(!Constants.equalsInteger(jkKeys.getStatus(),dto.getKeyStatus())
+                    && (Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)||Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO))){
+                        jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
+                                .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
+                                .set(JkKeys::getStatus,dto.getKeyStatus())
+                                .eq(JkKeys::getId,jkKeys.getId())
+                        );
+                        isChange = true;
+                    }
+                }
+            }
+            jkCabinetLog.setType(Constants.ONE);
+            jkCabinetLogMapper.insert(jkCabinetLog);
+            //鏌ヨ閽ュ寵瀵瑰簲鐨勫�熷嚭浜嗛挜鍖欑殑寮�闂ㄨ褰� 杩涜娣诲姞鍏抽棬璁板綍涓婚敭
+            if(isChange && Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)){
+                jkCabinetLogMapper.update(null,new UpdateWrapper<JkCabinetLog>().lambda()
+                        .set(JkCabinetLog::getCloseLogId,jkCabinetLog.getId())
+                        .eq(JkCabinetLog::getKeyId,jkCabinetLog.getKeyId())
+                        .eq(JkCabinetLog::getType,Constants.ZERO)
+                        .eq(JkCabinetLog::getKeyStatus,Constants.TWO)
+                        .isNotNull(JkCabinetLog::getCloseLogId));
+            }
+        }
+    }
+
+
+
+
+    /**
+     * 鍙告満鑾峰彇鍙搷浣滅殑閽ュ寵鏌滄煖鏍�
+     */
+    @Override
+    public List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO dto){
+        List<JkCabinetGrid> jkCabinetGridList = new ArrayList<>();
+        if(Objects.isNull(dto.getCabinetId())
+            || Objects.isNull(dto.getCabinetId())
+            || Objects.isNull(dto.getMemberId())
+            || Objects.isNull(dto.getType())){
+            return jkCabinetGridList;
+        }else{
+            JkCabinet jkCabinet = jkCabinetMapper.selectById(dto.getCabinetId());
+            if(Objects.isNull(jkCabinet)){
+                return jkCabinetGridList;
+            }
+            if(Constants.equalsInteger(jkCabinet.getDoubleAuth(),Constants.ONE)){
+                if(StringUtils.isBlank(jkCabinet.getAuthMemberId())){
+                    return jkCabinetGridList;
+                }
+                List<String> authMemberList =  Arrays.asList(jkCabinet.getAuthMemberId().split(","));
+                Boolean flag = true;
+                for (String id:authMemberList) {
+                    if(id.equals(jkCabinet.getAuthMemberId())){
+                        flag = false;
+                        break;
+                    }
+                }
+                if(flag){
+                    return jkCabinetGridList;
+                }
+            }
+            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();
+        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(jkCabinetLog);
+    }
+
+
+
+
 }

--
Gitblit v1.9.3