From 1fb6ce7f165e85cb9458d6e8d1b6bf7debc1e665 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 03 十二月 2025 14:26:37 +0800
Subject: [PATCH] 功能开发

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java |  160 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 145 insertions(+), 15 deletions(-)

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 cd2a697..7cc8814 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
@@ -6,18 +6,17 @@
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
-import com.doumee.dao.business.CategoryMapper;
-import com.doumee.dao.business.JkCabinetGridMapper;
-import com.doumee.dao.business.JkKeysMapper;
+import com.doumee.dao.business.*;
 import com.doumee.dao.business.dao.MemberMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.*;
+import com.doumee.dao.system.MultifileMapper;
+import com.doumee.dao.system.model.Multifile;
 import com.doumee.dao.system.model.SystemDictData;
 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.core.utils.Utils;
-import com.doumee.dao.business.JkCabinetMapper;
 import com.doumee.service.business.JkCabinetService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -62,6 +61,12 @@
     @Autowired
     private MemberMapper memberMapper;
 
+    @Autowired
+    private MultifileMapper multifileMapper;
+
+    @Autowired
+    private CarUseBookMapper carUseBookMapper;
+
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public Integer create(JkCabinet jkCabinet) {
@@ -76,6 +81,7 @@
             || CollectionUtils.isEmpty(jkCabinet.getManagerIdList())
             || CollectionUtils.isEmpty(jkCabinet.getAuthMemberIdList())
             || Objects.isNull(jkCabinet.getDoubleAuth())
+            || Objects.isNull(jkCabinet.getAlcoholStatus())
 
             || Objects.isNull(jkCabinet.getRowNum())
             || jkCabinet.getRowNum() <= Constants.ZERO
@@ -85,7 +91,7 @@
             || Objects.isNull(jkCabinet.getSortType())
             || (
                 Constants.equalsInteger(jkCabinet.getNoType(),Constants.ONE)
-                && ( Objects.isNull(jkCabinet.getNoIndex()) || Objects.isNull(jkCabinet.getNoLength()) || StringUtils.isBlank(jkCabinet.getNoPrefix()) )
+                && ( Objects.isNull(jkCabinet.getNoIndex()) || Objects.isNull(jkCabinet.getNoLength()) )
                 )
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -113,6 +119,17 @@
         jkCabinet.setAuthMemberId(String.join(",",jkCabinet.getAuthMemberIdList()));
         jkCabinetMapper.insert(jkCabinet);
         this.createGrid(jkCabinet);
+
+        if(Objects.nonNull(jkCabinet.getActivateFile())){
+            Multifile multifile = jkCabinet.getActivateFile();
+            multifile.setCreateDate(new Date());
+            multifile.setEditDate(multifile.getCreateDate());
+            multifile.setIsdeleted(Constants.ZERO);
+            multifile.setObjId(jkCabinet.getId());
+            multifile.setObjType(Constants.FIVE);
+            multifileMapper.insert(multifile);
+        }
+
         return jkCabinet.getId();
     }
 
@@ -134,7 +151,7 @@
             if(Constants.equalsInteger(jkCabinet.getNoType(),Constants.ZERO)){
                 grid.setCode(StringUtils.leftPad(startNo.toString(),maxNum.toString().length()+1,"0"));
             }else{
-                grid.setCode(jkCabinet.getNoPrefix() +  StringUtils.leftPad(startNo.toString(),jkCabinet.getNoLength(),"0"));
+                grid.setCode(StringUtils.isNotBlank(jkCabinet.getNoPrefix())?jkCabinet.getNoPrefix():"" +  StringUtils.leftPad(startNo.toString(),jkCabinet.getNoLength(),"0"));
             }
 
             jkCabinetGridList.add(grid);
@@ -197,6 +214,7 @@
                 || CollectionUtils.isEmpty(jkCabinet.getAuthMemberIdList())
                 || Objects.isNull(jkCabinet.getPort())
                 || Objects.isNull(jkCabinet.getDoubleAuth())
+                || Objects.isNull(jkCabinet.getAlcoholStatus())
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
@@ -224,6 +242,23 @@
         jkCabinet.setManagerId(String.join(",",jkCabinet.getManagerIdList()));
         jkCabinet.setAuthMemberId(String.join(",",jkCabinet.getAuthMemberIdList()));
         jkCabinetMapper.updateById(jkCabinet);
+
+        multifileMapper.update(new UpdateWrapper<Multifile>().lambda()
+                .set(Multifile::getIsdeleted,Constants.ONE)
+                .eq(Multifile::getObjType,Constants.FIVE)
+                .eq(Multifile::getObjId,jkCabinet.getId())
+        );
+        if(Objects.nonNull(jkCabinet.getActivateFile())){
+            Multifile multifile = jkCabinet.getActivateFile();
+            multifile.setId(null);
+            multifile.setCreateDate(new Date());
+            multifile.setEditDate(multifile.getCreateDate());
+            multifile.setIsdeleted(Constants.ZERO);
+            multifile.setObjId(jkCabinet.getId());
+            multifile.setObjType(Constants.FIVE);
+            multifileMapper.insert(multifile);
+        }
+
     }
 
     @Override
@@ -274,6 +309,19 @@
                     jkCabinet.getAuthMemberId().split(",")
             ));
         }
+        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>()
+                .lambda()
+                .eq(Multifile::getObjType,Constants.FIVE)
+                .eq(Multifile::getObjId,jkCabinet.getId())
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .last(" limit 1 "));
+        if(Objects.nonNull(multifile)){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.ACTIVATE).getCode();
+            multifile.setFileurlFull(prefixUrl + multifile.getFileurl());
+            jkCabinet.setActivateFile(multifile);
+        }
+
         return jkCabinet;
     }
 
@@ -371,7 +419,7 @@
         List<JkCabinet> jkCabinetList = jkCabinetMapper.selectList(new QueryWrapper<JkCabinet>()
                 .lambda()
                 .eq(JkCabinet::getIsdeleted,Constants.ZERO)
-                .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ")
+                .apply(" FIND_IN_SET("+loginUserInfo.getMemberId()+",MANAGER_ID) ")
                 .orderByAsc(JkCabinet::getCreateDate)
         );
         if(CollectionUtils.isNotEmpty(jkCabinetList)){
@@ -391,7 +439,7 @@
         JkCabinet cabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>()
                 .lambda()
                 .eq(JkCabinet::getIsdeleted,Constants.ZERO)
-                .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ")
+                .apply(" FIND_IN_SET("+loginUserInfo.getMemberId()+",MANAGER_ID) ")
                 .eq(JkCabinet::getId,cabinetId)
                 .last(" limit 1")
         );
@@ -405,17 +453,19 @@
         cabinetDetailVO.setServiceKeyNum(Constants.ZERO);
         cabinetDetailVO.setOutKeyNum(Constants.ZERO);
         cabinetDetailVO.setUnBindGridNum(Constants.ZERO);
+        cabinetDetailVO.setMemberId(loginUserInfo.getMemberId());
 
         //鎵�鏈夋煖鏍间俊鎭�
         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)
                 .eq(JkCabinetGrid::getCabinetId,cabinet.getId())
-                .orderByDesc(JkCabinetGrid::getCode)
+                .orderByAsc(JkCabinetGrid::getCode)
         );
 
         List<CabinetGridInfoVO> cabinetGridInfoVOList = new ArrayList<>();
@@ -425,8 +475,10 @@
                 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);
             }
+            cabinetDetailVO.setCabinetGridInfoVOList(cabinetGridInfoVOList);
             cabinetDetailVO.setErrGridNum(
                     cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getWorkingStatus(),Constants.ONE)).collect(Collectors.toList()).size()
             );
@@ -472,20 +524,44 @@
                     .isNotNull(JkKeys::getCarId)
                     .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId())
             );
+            List<Member> driverList = new ArrayList<>();
             if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
                 List<Integer> carIdList = jkCabinetGridList.stream().map(i->i.getKeyId()).collect(Collectors.toList());
                 //鏌ヨ杞﹁締鎵�鏈変汉鍛樹俊鎭�
-                List<Member> memberList = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
+                driverList.addAll(memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
                         .selectAll(Member.class)
-                        .leftJoin(CarDriver.class,CarDriver::getMemberId,Member::getId)
+                        .leftJoin(Cars.class,Cars::getMemberId,Member::getId)
+                        .leftJoin(JkKeys.class,JkKeys::getCarId,Cars::getId)
                         .eq(Member::getIsdeleted,Constants.ZERO)
                         .eq(CarDriver::getIsdeleted,Constants.ZERO)
                         .eq(CarDriver::getStatus,Constants.ZERO)
                         .isNotNull(Member::getFaceImg)
-                        .in(CarDriver::getCarId,carIdList)
+                        .in(JkKeys::getId,carIdList))
                 );
-                if(CollectionUtils.isNotEmpty(memberList)){
-                    Set<Member> memberSet = new HashSet<>(memberList);
+            }
+            //娲捐溅鍗曞徃鏈轰俊鎭�
+            String earlyConfig =  systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.EARLY_CONFIG).getCode();
+            List<CarUseBook> carUseBookList = carUseBookMapper.selectList(new QueryWrapper<CarUseBook>().lambda()
+                    .eq(CarUseBook::getIsdeleted,Constants.ZERO)
+                            .isNotNull(CarUseBook::getDriverId)
+                            .apply(" car_id in ( SELECT k.CAR_ID FROM  jk_cabinet_grid j inner join jk_keys k on j.KEY_ID = k.ID where j.isdeleted = 0 and k.isdeleted = 0  ) ")
+                    .apply(" (" +
+                            "( NOW() > DATE_SUB(START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < end_time and KEY_STATUS = 0  ) " +
+                            "or" +
+                            "  KEY_STATUS = 1 " +
+                            ") ")
+            );
+            if(CollectionUtils.isNotEmpty(carUseBookList)){
+                driverList.addAll(memberMapper.selectList(new QueryWrapper<Member>().lambda()
+                        .eq(Member::getIsdeleted,Constants.ZERO)
+                        .isNotNull(Member::getFaceImg)
+                        .in(Member::getId,carUseBookList.stream().map(i->i.getDriverId()).collect(Collectors.toList()))
+                ));
+            }
+
+            if(CollectionUtils.isNotEmpty(driverList)){
+                if(CollectionUtils.isNotEmpty(driverList)){
+                    Set<Member> memberSet = new HashSet<>(driverList);
                     for (Member member:memberSet) {
                         CabinetFaceInfoVO cabinetFaceInfoVO = new CabinetFaceInfoVO();
                         cabinetFaceInfoVO.setMemberId(member.getId());
@@ -499,7 +575,7 @@
             List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                     .eq(Member::getIsdeleted,Constants.ZERO)
                     .isNotNull(Member::getFaceImg)
-                    .apply(" FIND_IN_SET( id ,'"+jkCabinet.getManagerId()+"') ")
+                    .apply(" FIND_IN_SET( id ,'"+jkCabinet.getAuthMemberId()+"') ")
             );
             if(CollectionUtils.isNotEmpty(memberList)){
                 for (Member member:memberList) {
@@ -530,7 +606,40 @@
         CabinetInfoVO cabinetInfoVO = new CabinetInfoVO();
         if(Objects.nonNull(jkCabinet)){
             BeanUtil.copyProperties(jkCabinet,cabinetInfoVO);
+            //鎵�鏈夋煖鏍间俊鎭�
+            List<JkCabinetGrid> jkCabinetGridList =
+                    jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>()
+                            .selectAll(JkCabinetGrid.class)
+                            .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+                            .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
+                            .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
+                            .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                            .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                            .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId())
+                            .orderByAsc(JkCabinetGrid::getCode)
+                    );
+
+            List<CabinetGridInfoVO> cabinetGridInfoVOList = new ArrayList<>();
+            if(CollectionUtils.isNotEmpty(jkCabinetGridList)) {
+                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);
+                }
+                cabinetInfoVO.setCabinetGridInfoVOList(cabinetGridInfoVOList);
+            }
+
+            CabinetConfigDataVO cabinetConfigDataVO = new CabinetConfigDataVO();
+            cabinetConfigDataVO.setConcentration(systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.CONCENTRATION).getCode());
+            cabinetConfigDataVO.setPressure(systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.PRESSURE).getCode());
+            cabinetConfigDataVO.setBlowTime(systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.BLOW_TIME).getCode());
+            cabinetConfigDataVO.setThreshold(systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.THRESHOLD).getCode());
+            cabinetInfoVO.setCabinetConfigDataVO(cabinetConfigDataVO);
+
         }
+        cabinetInfoVO.setLinkPhone(systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.LINK_PHONE).getCode());
         List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
                 .eq(Category::getIsdeleted,Constants.ZERO)
                 .eq(Category::getStatus,Constants.ZERO)
@@ -547,6 +656,19 @@
                     categoryList.stream().map(i->i.getImgurlFull()).collect(Collectors.toList())
             );
         }
+
+
+        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>()
+                .lambda()
+                .eq(Multifile::getObjType,Constants.FIVE)
+                .eq(Multifile::getObjId,jkCabinet.getId())
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .last(" limit 1 "));
+        if(Objects.nonNull(multifile)&&StringUtils.isNotBlank(multifile.getFileurl())){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.ACTIVATE).getCode();
+            cabinetInfoVO.setActivateFileUrl(prefixUrl + multifile.getFileurl());
+        }
         return cabinetInfoVO;
     }
 
@@ -562,4 +684,12 @@
     }
 
 
+    @Override
+    public void updHeartbeat(String code){
+        jkCabinetMapper.update(null,new UpdateWrapper<JkCabinet>()
+                .lambda()
+                .set(JkCabinet::getHaertTime, DateUtil.getCurrDateTime())
+                .eq(JkCabinet::getCode,code));
+    }
+
 }

--
Gitblit v1.9.3