From f8ad853042ef31067711ff29a9b36e7ffababa21 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 14 一月 2026 16:03:28 +0800
Subject: [PATCH] 功能优化

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java |   32 +++++++++++++++++---------------
 1 files changed, 17 insertions(+), 15 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 4f627d6..ef75bb3 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
@@ -35,6 +35,7 @@
 import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -519,6 +520,8 @@
                         JkCabinetLog lastOutLog = jkCabinetLogMapper.selectOne(new QueryWrapper<JkCabinetLog>().lambda()
                                 .eq(JkCabinetLog::getKeyId,jkCabinetLog.getKeyId())
                                 .eq(JkCabinetLog::getType,Constants.ZERO)
+                                .isNull(JkCabinetLog::getKeyStatus)
+                                .isNotNull(JkCabinetLog::getOpenWay)
                                 .orderByDesc(JkCabinetLog::getId)
                                 .last( "limit 1 "));
                         if(Objects.nonNull(lastOutLog)){
@@ -610,27 +613,22 @@
             || Objects.isNull(dto.getType())){
             return jkCabinetGridList;
         }else{
-            JkCabinet jkCabinet = jkCabinetMapper.selectById(dto.getCabinetId());
+            JkCabinet jkCabinet = jkCabinetMapper.selectJoinOne(JkCabinet.class,new MPJLambdaWrapper<JkCabinet>()
+                            .selectAll(JkCabinet.class)
+                            .select("now()",JkCabinet::getNow)
+                    .eq(JkCabinet::getId,dto.getCabinetId()));
             if(Objects.isNull(jkCabinet)){
                 return jkCabinetGridList;
             }
-            if(Constants.equalsInteger(jkCabinet.getDoubleAuth(),Constants.ONE)){
-                if(StringUtils.isBlank(jkCabinet.getAuthMemberId())){
+            if(Constants.equalsInteger(jkCabinet.getDoubleAuth(),Constants.ONE)&&Constants.equalsInteger(dto.getType(),Constants.ZERO)){
+                if(StringUtils.isBlank(jkCabinet.getAuthMemberId())||Objects.isNull(dto.getAutoMemberId())){
                     return jkCabinetGridList;
                 }
                 List<String> authMemberList =  Arrays.asList(jkCabinet.getAuthMemberId().split(","));
-                Boolean flag = true;
-                for (String id:authMemberList) {
-                    if(Arrays.asList(jkCabinet.getAuthMemberId().split(",")).contains(id)){
-                        flag = false;
-                        break;
-                    }
-                }
-                if(flag){
+                if(!authMemberList.contains(dto.getAutoMemberId().toString())){
                     return jkCabinetGridList;
                 }
             }
-
             //濡傛灉鏄繕閽ュ寵 鍒欑洿鎺ユ煡璇㈠凡鍊熷嚭鐨勯挜鍖欑殑鏁版嵁
             if(Constants.equalsInteger(dto.getType(),Constants.ONE)){
                 jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
@@ -667,7 +665,7 @@
                 //鍒ゆ柇褰撳墠鏃堕棿鏄惁澶勪簬淇濇磥鏃舵鍐�
                 String cleanConfig =  systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.CLEAN_TIME).getCode();
                 String earlyConfig =  systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.EARLY_CONFIG).getCode();
-                Boolean isCleanTime = Constants.betweenTimeConfig(cleanConfig);
+                Boolean isCleanTime = Constants.betweenTimeConfig(cleanConfig,jkCabinet.getNow());
                 List<Integer> girdIdList = new ArrayList<>();
                 //鏌ヨ鏍规嵁浠诲姟鍙互棰嗗彇鐨勬暟鎹�
                 jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
@@ -688,7 +686,11 @@
                                 .eq(JkKeys::getRoleType,Constants.ONE)
 //                                .eq(Cars::getMemberId,dto.getMemberId())
                                 .isNotNull(JkCabinetGrid::getKeyId)
-                                .apply(" t2.code in ( select c.car_code from car_use_book c   where c.isdeleted = 0   and NOW() > DATE_SUB(c.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < c.end_time  and c.DRIVER_ID = "+dto.getMemberId()+" ) ")
+                                .apply(" ( t2.code in ( select c.car_code from car_use_book c   where c.isdeleted = 0   and NOW() > DATE_SUB(c.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < c.end_time  " +
+                                        " and   c.DRIVER_ID = "+dto.getMemberId()+"   )" +
+                                        " or t2.code in ( select c.car_code from car_use_book c inner join  cars c1 on c.CAR_ID = c1.ID  where c1.MEMBER_ID = "+dto.getMemberId()+" AND NOW() > DATE_SUB( c.START_TIME, INTERVAL 30 MINUTE ) AND now() < c.end_time )" +
+                                        " )" +
+                                        " ")
                 );
 
                 for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
@@ -1220,7 +1222,7 @@
             List<SyncGridDTO> gridSyncList = gridDTOList.stream().filter(i->StringUtils.isNotBlank(i.getBoardCode())&&
                     StringUtils.isNotBlank(i.getChannelCode())&&StringUtils.isNotBlank(i.getActualLable())&&i.getBoardCode().equals(jkCabinetGrid.getBoardCode())
             && i.getChannelCode().equals(jkCabinetGrid.getChannelCode())).collect(Collectors.toList());
-            if(CollectionUtils.isEmpty(gridDTOList)){
+            if(CollectionUtils.isEmpty(gridSyncList)){
                 continue;
             }
             SyncGridDTO syncGridDTO = gridSyncList.get(Constants.ZERO);

--
Gitblit v1.9.3