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 |  120 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 106 insertions(+), 14 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 9cb95fd..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;
     }
 
@@ -412,7 +460,7 @@
                 jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>()
                 .selectAll(JkCabinetGrid.class)
                 .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
-                .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
+                .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                 .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
                 .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                 .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
@@ -476,10 +524,11 @@
                     .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(Cars.class,Cars::getMemberId,Member::getId)
                         .leftJoin(JkKeys.class,JkKeys::getCarId,Cars::getId)
@@ -487,10 +536,32 @@
                         .eq(CarDriver::getIsdeleted,Constants.ZERO)
                         .eq(CarDriver::getStatus,Constants.ZERO)
                         .isNotNull(Member::getFaceImg)
-                        .in(JkKeys::getId,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());
@@ -504,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) {
@@ -541,7 +612,7 @@
                             .selectAll(JkCabinetGrid.class)
                             .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                             .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
-                            .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
+                            .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                             .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                             .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                             .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId())
@@ -568,7 +639,7 @@
             cabinetInfoVO.setCabinetConfigDataVO(cabinetConfigDataVO);
 
         }
-        cabinetInfoVO.setLinkPhone("18156091665");
+        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)
@@ -585,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;
     }
 
@@ -600,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