From f7167562105604f1e7656983d120f145db6edd12 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期五, 28 十一月 2025 13:42:31 +0800
Subject: [PATCH] 钥匙柜大屏

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java |  259 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 229 insertions(+), 30 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 9140786..212de3f 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;
@@ -27,6 +31,7 @@
 import com.doumee.service.business.third.model.PageWrap;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
+import com.sun.corba.se.impl.orbutil.concurrent.Sync;
 import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -138,9 +143,9 @@
             //鏇存柊閽ュ寵鏌滀俊鎭�
             jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                     .set(JkCabinetGrid::getKeyId,jkCabinetGrid.getKeyId())
+                    .set(JkCabinetGrid::getActualLable,keysModel.getRfidLable())
                     .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()
@@ -197,8 +202,11 @@
                 .selectAll(JkCabinetGrid.class)
                 .selectAs(JkCabinet::getName,JkCabinetGrid::getCabinetName)
                 .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
+                .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
+                .select("k.code",JkCabinetGrid::getActualCode)
                 .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetGrid::getCabinetId)
                 .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                .leftJoin(" jk_keys k on k.RFID_LABLE = t.ACTUAL_LABLE ")
                 .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                 .eq(Objects.nonNull(model.getCabinetId()),JkCabinetGrid::getCabinetId,model.getCabinetId())
                 .eq(Objects.nonNull(model.getStatus()),JkCabinetGrid::getStatus,model.getStatus())
@@ -211,6 +219,19 @@
         IPage<JkCabinetGrid> iPage = jkCabinetGridMapper.selectJoinPage(page,JkCabinetGrid.class,wrapper);
         for (JkCabinetGrid jkCabinetGrid:iPage.getRecords()) {
             jkCabinetGrid.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE);
+            jkCabinetGrid.setKeyStatus(Objects.isNull(jkCabinetGrid.getKeyStatus())?Constants.ZERO:jkCabinetGrid.getKeyStatus());
+            if(!Constants.equalsInteger(jkCabinetGrid.getKeyStatus(),Constants.ZERO)){
+                if(StringUtils.isBlank(jkCabinetGrid.getKeyCode())||StringUtils.isBlank(jkCabinetGrid.getActualLable())
+                        || !StringUtils.equals(jkCabinetGrid.getKeyCode(),jkCabinetGrid.getActualLable())){
+
+                    jkCabinetGrid.setKeyStatus(Constants.FOUR);
+                    if(StringUtils.isBlank(jkCabinetGrid.getActualCode())){
+                        jkCabinetGrid.setErrInfo("鏈煡閽ュ寵 寮傚父");
+                    }else{
+                        jkCabinetGrid.setErrInfo(jkCabinetGrid.getActualCode()+" 寮傚父");
+                    }
+                }
+            }
         }
         return PageData.from(iPage);
     }
@@ -252,6 +273,7 @@
                 //鏇存柊閽ュ寵鏌滀俊鎭�
                 jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                         .set(JkCabinetGrid::getKeyId,null)
+                        .set(JkCabinetGrid::getActualLable,null)
                         .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
                         .eq(JkCabinetGrid::getId,model.getId()));
                 JkKeys keysModel = jkKeysMapper.selectById(model.getKeyId());
@@ -270,6 +292,7 @@
             if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
                 jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                         .set(JkCabinetGrid::getKeyId,null)
+                        .set(JkCabinetGrid::getActualLable,null)
                         .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
                         .in(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());
@@ -481,27 +504,39 @@
                                 .set(JkKeys::getStatus,dto.getKeyStatus())
                                 .eq(JkKeys::getId,jkKeys.getId())
                         );
+                        if(Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)&&
+                                (StringUtils.isBlank(jkCabinetGrid.getActualLable())||!StringUtils.equals(jkCabinetGrid.getActualLable(),jkKeys.getRfidLable()))){
+                            //鏇存柊閽ュ寵瀹為檯缂栫爜
+                            jkCabinetGridMapper.update(null,new UpdateWrapper<JkCabinetGrid>().lambda()
+                                    .set(JkCabinetGrid::getActualLable,jkKeys.getRfidLable())
+                                    .eq(JkCabinetGrid::getId,jkCabinetGrid.getId())
+                            );
+                        }
                         //褰掕繕閽ュ寵/鍊熷嚭閽ュ寵 閮借鍘绘煡璇㈡渶鍚庝竴娆″紑闂ㄨ褰� 鑾峰彇鍏蜂綋鐨勫紑闂ㄧ殑鏂瑰紡 鏄殢杞�/娲捐溅/淇濇磥 璧嬩簣褰撳墠鍏抽棬璁板綍鍐� 濡傛灉鏄淳杞﹀崟鏁版嵁 闇�瑕佽皟璧风畝閬撲簯鎺ㄩ��
                         JkCabinetLog lastOutLog = jkCabinetLogMapper.selectOne(new QueryWrapper<JkCabinetLog>().lambda()
                                 .eq(JkCabinetLog::getKeyId,jkCabinetLog.getKeyId())
                                 .eq(JkCabinetLog::getType,Constants.ZERO)
+                                .orderByDesc(JkCabinetLog::getId)
                                 .last( "limit 1 "));
                         if(Objects.nonNull(lastOutLog)){
+                            jkCabinetLog.setOpenWay(lastOutLog.getOpenWay());
+                            jkCabinetLog.setCarUseBookId(lastOutLog.getCarUseBookId());
+
                             if(Objects.nonNull(lastOutLog.getCarUseBookId())) {
                                 CarUseBook carUseBook = carUseBookMapper.selectById(lastOutLog.getCarUseBookId());
-                                if (Objects.nonNull(carUseBook) && Constants.equalsInteger(carUseBook.getKeyStatus(), Constants.ZERO)) {
+                                if (Objects.nonNull(carUseBook)) {
                                     carUseBookMapper.update(new UpdateWrapper<CarUseBook>().lambda()
-                                            .set(CarUseBook::getKeyStatus, Constants.ONE)
+                                            .set(CarUseBook::getKeyStatus, Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO)?Constants.ONE:Constants.TWO)
                                             .eq(CarUseBook::getId, carUseBook.getId())
                                     );
                                     //鎺ㄩ�佺畝閬撲簯 鏍囪涓氬姟鏁版嵁宸茶棰嗗彇閽ュ寵
                                     if (StringUtils.isNotBlank(carUseBook.getJdyId())) {
                                         JDYKeyUseByBookDTO jdyKeyUseByBookDTO = new JDYKeyUseByBookDTO();
                                         jdyKeyUseByBookDTO.setCreate_date(System.currentTimeMillis());
-                                        jdyKeyUseByBookDTO.setStart_date(Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO)?System.currentTimeMillis():null);
+                                        jdyKeyUseByBookDTO.setStart_date(System.currentTimeMillis());
                                         jdyKeyUseByBookDTO.setEnd_date(Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)?System.currentTimeMillis():null);
                                         jdyKeyUseByBookDTO.setType(Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO)?Constants.ZERO:Constants.ONE);
-                                        jdyKeyUseByBookDTO.setId(carUseBook.getJdyId());
+                                        jdyKeyUseByBookDTO.setId(carUseBook.getJdyNo());
                                         this.pushJDYKeyInfo(jdyKeyUseByBookDTO);
                                     }
                                 }
@@ -607,9 +642,21 @@
                                 .in(JkKeys::getStatus,Constants.TWO,Constants.THREE)
                                 .isNotNull(JkCabinetGrid::getKeyId)
                                 .apply("t1.car_id in ( select c.id from  cars c  where c.ISDELETED = 0 and  c.MEMBER_ID = "+dto.getMemberId()+" )")
-
                                 .orderByAsc(JkCabinetGrid::getCode)
                 );
+                for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                    JkCabinetLog log = jkCabinetLogMapper.selectOne(new QueryWrapper<JkCabinetLog>().lambda()
+                            .eq(JkCabinetLog::getGridId,jkCabinetGrid.getId())
+                            .eq(JkCabinetLog::getType,Constants.ZERO)
+                            .orderByDesc(JkCabinetLog::getId)
+                            .last("limit 1")
+                    );
+                    jkCabinetGrid.setGetKeyWay(Constants.ZERO);
+                    if(Objects.nonNull(log)){
+                        jkCabinetGrid.setGetKeyWay(log.getOpenWay());
+                        jkCabinetGrid.setCarUseBookId(log.getCarUseBookId());
+                    }
+                }
             }else{
                 //鍒ゆ柇褰撳墠鏃堕棿鏄惁澶勪簬淇濇磥鏃舵鍐�
                 String cleanConfig =  systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.CLEAN_TIME).getCode();
@@ -617,29 +664,67 @@
                 Boolean isCleanTime = Constants.betweenTimeConfig(cleanConfig);
                 List<Integer> girdIdList = new ArrayList<>();
                 //鏌ヨ鏍规嵁浠诲姟鍙互棰嗗彇鐨勬暟鎹�
+//                jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
+//                        new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
+//                                .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
+//                                .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+//                                .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
+//                                .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
+//                                .selectAs(CarUseBook::getId,JkCabinetGrid::getCarUseBookId)
+//                                .select("1",JkCabinetGrid::getGetKeyWay)
+//                                .innerJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+//                                .innerJoin(CarUseBook.class,CarUseBook::getCarCode,JkKeys::getCarCode)
+//                                .innerJoin(Cars.class,Cars::getCode,CarUseBook::getCarCode)
+//                                .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+//                                .eq(CarUseBook::getIsdeleted,Constants.ZERO)
+//                                .eq(Cars::getIsdeleted,Constants.ZERO)
+//                                .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
+//                                .eq(JkCabinetGrid::getStatus,Constants.ZERO)
+//                                .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+//                                .in(JkKeys::getStatus,Constants.ONE)
+//                                .eq(JkKeys::getRoleType,Constants.ONE)
+//                                .isNotNull(JkCabinetGrid::getKeyId)
+//                                .apply(" NOW() > DATE_SUB(t2.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < t2.end_time and t3.MEMBER_ID = "+dto.getMemberId()+" ")
+//                );
+
                 jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
                         new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
                                 .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                                 .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                                 .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
                                 .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
-                                .selectAs(CarUseBook::getId,JkCabinetGrid::getCarUseBookId)
                                 .select("1",JkCabinetGrid::getGetKeyWay)
                                 .innerJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
-                                .innerJoin(CarUseBook.class,CarUseBook::getCarCode,JkKeys::getCarCode)
-                                .innerJoin(Cars.class,Cars::getCode,CarUseBook::getCarCode)
+                                .innerJoin(Cars.class,Cars::getId,JkKeys::getCarId)
                                 .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
-                                .eq(CarUseBook::getIsdeleted,Constants.ZERO)
                                 .eq(Cars::getIsdeleted,Constants.ZERO)
                                 .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
                                 .eq(JkCabinetGrid::getStatus,Constants.ZERO)
                                 .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                                 .in(JkKeys::getStatus,Constants.ONE)
                                 .eq(JkKeys::getRoleType,Constants.ONE)
+                                .eq(Cars::getMemberId,dto.getMemberId())
                                 .isNotNull(JkCabinetGrid::getKeyId)
-                                .apply("and NOW() > DATE_SUB(t2.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < t2.end_time and t3.MEMBER_ID = "+dto.getMemberId()+" )")
-
+                                .apply(" t2.code in ( select c.car_code from car_use_book c left join cars c1 on c.car_code = c1.code  where c.isdeleted = 0 and c1.isdeleted =0  and NOW() > DATE_SUB(c.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < c.end_time  and c1.MEMBER_ID = "+dto.getMemberId()+" ) ")
                 );
+
+                for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                    List<CarUseBook> carUseBookList = carUseBookMapper.selectJoinList(CarUseBook.class,new MPJLambdaWrapper<CarUseBook>()
+                                    .selectAll(CarUseBook.class)
+                                    .leftJoin(Cars.class,Cars::getCode,CarUseBook::getCarCode)
+                            .eq(CarUseBook::getIsdeleted,Constants.ZERO)
+                            .eq(Cars::getIsdeleted,Constants.ZERO)
+                            .eq(CarUseBook::getCarCode,jkCabinetGrid.getCarCode())
+                            .eq(Cars::getMemberId,dto.getMemberId())
+                            .apply("  NOW() > DATE_SUB(t.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < t.end_time  ")
+                    );
+                    if(CollectionUtils.isNotEmpty(carUseBookList)) {
+                        jkCabinetGrid.setCarUseBookId(carUseBookList.get(Constants.ZERO).getId());
+                    }
+                }
+                
+                
+
                 if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
                     girdIdList = jkCabinetGridList.stream().map(i->i.getId()).collect(Collectors.toList());
                 }
@@ -658,7 +743,7 @@
                                     .eq(!isCleanTime,JkKeys::getRoleType,Constants.ZERO)
                                     .in(JkKeys::getStatus,Constants.ONE)
                                     .isNotNull(JkCabinetGrid::getKeyId)
-                                    .notIn(CollectionUtils.isNotEmpty(girdIdList),JkCabinetGrid::getId,jkCabinetGridList)
+                                    .notIn(CollectionUtils.isNotEmpty(girdIdList),JkCabinetGrid::getId,girdIdList)
                                     .apply("t1.car_id in ( select c.id from  cars c  where c.ISDELETED = 0 and  c.MEMBER_ID = "+dto.getMemberId()+" ) ")
                     )
                 );
@@ -738,6 +823,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 +841,7 @@
                             .eq(JkCabinetGrid::getId,dto.getGridId())
                             .last(" limit 1 ")
             );
+
             if(Objects.nonNull(jkCabinetGrid)){
                 log.error("鏌滄牸寮�闂ㄨ秴鏃舵湭鍏抽棴鍛婅淇℃伅锛歿}"+JSONObject.toJSONString(jkCabinetGrid));
                 //瑙勫垯绫诲瀷
@@ -773,13 +869,15 @@
                         return;
                     }
 
-                    String content = "銆愰挜鍖欐煖-"+jkCabinetGrid.getCabinetName()+"銆戜笅銆愭煖鏍�-"+jkCabinetGrid.getCode()+"銆戣秴鏃舵湭鍏抽棴";
+                    String content = "銆愰挜鍖欐煖-"+jkCabinetGrid.getCabinetName()+"銆戜笅銆愭煖鏍�-"+jkCabinetGrid.getCode()+"銆戞煖鏍兼湭鍏抽棴";
 
                     JkCabinet jkCabinet = jkCabinetMapper.selectById(dto.getCabinetId());
                     //瀛樺偍鎶ヨ寮傚父璁板綍
                     WarningEvent warningEvent = new WarningEvent();
                     warningEvent.setCreateDate(new Date());
+                    warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                     warningEvent.setWarningId(warning.getId());
+                    warningEvent.setIsdeleted(Constants.ZERO);
                     warningEvent.setTitle(warningConfig.getInfo());
                     warningEvent.setContent(content );
                     warningEvent.setStatus(Constants.ZERO);
@@ -862,8 +960,8 @@
                 //鏃犱换浣曡鍒� 鐩存帴璺宠繃
                 if(CollectionUtils.isEmpty(warningRuleDetails)){
                     return resultList;
-                }else if(!Constants.equalsInteger(warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey())).collect(Collectors.toList()).size(),Constants.ZERO)){
-                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey())).collect(Collectors.toList());
+                }else if(!Constants.equalsInteger(warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList()).size(),Constants.ZERO)){
+                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList());
                     //鑾峰彇鎵�鏈夊叾浠栨墍鏈変簨浠朵富閿俊鎭�
                     List<Integer> warningIdList = wList.stream().map(i->i.getWarningId()).collect(Collectors.toList());
                     Set<Integer> setWarningIdList = new HashSet<>(warningIdList);
@@ -871,25 +969,30 @@
                     List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
                             .eq(WarningEvent::getIsdeleted,Constants.ZERO)
                             .in(WarningEvent::getWarningId,setWarningIdList)
-                            .apply(" DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
+                            .apply(Objects.nonNull(warningRule.getIntervalSec())," DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
                     );
                     if(this.processWarnFlag(wList,warningEventList)){
                         resultList.add(ruleId);
                     };
                 }else{
-                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->i.getCode().equals(warningConfig.getKey())).collect(Collectors.toList());
+                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList());
                     //鑾峰彇鏈浜嬩欢涓婚敭淇℃伅
                     List<Integer> warningIdList = wList.stream().map(i->i.getWarningId()).collect(Collectors.toList());
                     Set<Integer> setWarningIdList = new HashSet<>(warningIdList);
-                    //鑾峰彇鏃堕棿鍐呮墍鏈変簨浠朵俊鎭�
-                    List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
-                            .eq(WarningEvent::getIsdeleted,Constants.ZERO)
-                            .in(WarningEvent::getWarningId,setWarningIdList)
-                            .apply(" DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
-                    );
-                    if(this.processWarnFlag(wList,warningEventList)){
+                    if(Objects.isNull(warningRule.getIntervalSec())){
                         resultList.add(ruleId);
+                    }else{
+                        //鑾峰彇鏃堕棿鍐呮墍鏈変簨浠朵俊鎭�
+                        List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
+                                .eq(WarningEvent::getIsdeleted,Constants.ZERO)
+                                .in(WarningEvent::getWarningId,setWarningIdList)
+                                .apply(Objects.nonNull(warningRule.getIntervalSec())," DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
+                        );
+                        if(this.processWarnFlag(wList,warningEventList)){
+                            resultList.add(ruleId);
+                        }
                     }
+
                 } 
             }
             return resultList;
@@ -975,21 +1078,23 @@
 
                 String content = "";
                 if(Objects.nonNull(systemUser.getRealname())){
-                    content = content + systemUser.getRealname();
+                    content = content +"銆�"+ systemUser.getRealname()+"銆�";
                 }
                 if(Objects.nonNull(jkCabinet)){
-                    content = content + "浜�"+jkCabinet.getName()+"閽ュ寵鏌�";
+                    content = content + "浜庛��"+jkCabinet.getName()+"銆戦挜鍖欐煖";
                 }
                 content = content + "閰掔簿妫�娴嬪紓甯�";
-                if(Objects.nonNull(dto.getAlcoholNum())){
-                    content = content + "锛岄厭绮惧害鏁般��"+dto.getAlcoholNum()+"掳銆�";
-                }
+//                if(Objects.nonNull(dto.getAlcoholNum())){
+//                    content = content + "锛岄厭绮惧害鏁般��"+dto.getAlcoholNum()+"掳銆�";
+//                }
 
                 //瀛樺偍鎶ヨ寮傚父璁板綍
                 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.setIsdeleted(Constants.ZERO);
                 warningEvent.setContent(content );
                 warningEvent.setStatus(Constants.ZERO);
                 warningEvent.setRegion(Objects.nonNull(jkCabinet)&&StringUtils.isNotBlank(jkCabinet.getLocation())?jkCabinet.getLocation():"鏈煡浣嶇疆");
@@ -1038,7 +1143,101 @@
     }
 
 
+    @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;
+    }
 
 
+    @Override
+    public void syncGridData(SyncCabinetDTO dto){
+        if(Objects.isNull(dto)
+            ||StringUtils.isBlank(dto.getCode())
+            || CollectionUtils.isEmpty(dto.getGridDTOList())){
+            return;
+        }
+        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)
+                        .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetGrid::getCabinetId)
+                        .eq(JkCabinet::getCode,dto.getCode())
+                        .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                        .isNotNull(JkCabinetGrid::getBoardCode)
+                        .isNotNull(JkCabinetGrid::getChannelCode)
+                        .orderByAsc(JkCabinetGrid::getCode)
+                );
+        if(CollectionUtils.isEmpty(jkCabinetGridList)){
+            return;
+        }
+        List<SyncGridDTO> gridDTOList = dto.getGridDTOList();
+        for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+            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)){
+                continue;
+            }
+            SyncGridDTO syncGridDTO = gridSyncList.get(Constants.ZERO);
+            if(StringUtils.isBlank(jkCabinetGrid.getKeyCode())
+            || (!jkCabinetGrid.getKeyCode().equals(syncGridDTO.getActualLable())
+                    && !jkCabinetGrid.getActualLable().equals(syncGridDTO.getActualLable()))){
+                //鏇存柊鏁版嵁 鏍囪瀵瑰簲code
+                jkCabinetGridMapper.update(null,new UpdateWrapper<JkCabinetGrid>().lambda()
+                        .set(JkCabinetGrid::getActualLable,syncGridDTO.getActualLable())
+                        .eq(JkCabinetGrid::getId,jkCabinetGrid.getId())
+                );
+            }
+
+        }
+        
+        
+        
+    }
+    
+    
+    
+    
+    
+    
 
 }

--
Gitblit v1.9.3