From 5841a771d4455d25adb185b8a0637c9ba498aab2 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期二, 21 十月 2025 15:37:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java |  229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 223 insertions(+), 6 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 6f1c80b..cd2a697 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
@@ -1,32 +1,36 @@
 package com.doumee.service.business.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 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.model.JkCabinetGrid;
-import com.doumee.dao.business.model.JkKeys;
-import com.doumee.dao.business.vo.CabinetConfigDataVO;
+import com.doumee.dao.business.dao.MemberMapper;
+import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.*;
 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.dao.business.model.JkCabinet;
 import com.doumee.service.business.JkCabinetService;
 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.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.java.Log;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -44,6 +48,9 @@
     private JkCabinetMapper jkCabinetMapper;
 
     @Autowired
+    private CategoryMapper categoryMapper;
+
+    @Autowired
     private JkCabinetGridMapper jkCabinetGridMapper;
 
     @Autowired
@@ -51,6 +58,9 @@
 
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private MemberMapper memberMapper;
 
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
@@ -254,6 +264,16 @@
             jkCabinet.setJwd(jkCabinet.getLongitude() + "," + jkCabinet.getLatitude());
         }
         jkCabinet.setGridNum(jkCabinet.getColumnNum()*jkCabinet.getRowNum());
+        if(StringUtils.isNotBlank(jkCabinet.getManagerId())){
+            jkCabinet.setManagerIdList(Arrays.asList(
+                    jkCabinet.getManagerId().split(",")
+            ));
+        }
+        if(StringUtils.isNotBlank(jkCabinet.getAuthMemberId())){
+            jkCabinet.setAuthMemberIdList(Arrays.asList(
+                    jkCabinet.getAuthMemberId().split(",")
+            ));
+        }
         return jkCabinet;
     }
 
@@ -270,7 +290,7 @@
         QueryWrapper<JkCabinet> wrapper = new QueryWrapper<>(jkCabinet);
         return jkCabinetMapper.selectList(wrapper);
     }
-  
+
     @Override
     public PageData<JkCabinet> findPage(PageWrap<JkCabinet> pageWrap) {
         IPage<JkCabinet> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -340,8 +360,205 @@
             systemDictData.setCode(cabinetConfigDataVO.getThreshold());
             systemDictDataBiz.updateByIdNew(systemDictData);
         }
+    }
 
 
+
+
+    @Override
+    public List<AdminCabinetVO> getAdminCabinetInfo(LoginUserInfo loginUserInfo){
+        List<AdminCabinetVO> adminCabinetVOList = new ArrayList<>();
+        List<JkCabinet> jkCabinetList = jkCabinetMapper.selectList(new QueryWrapper<JkCabinet>()
+                .lambda()
+                .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ")
+                .orderByAsc(JkCabinet::getCreateDate)
+        );
+        if(CollectionUtils.isNotEmpty(jkCabinetList)){
+            for (JkCabinet jkCabinet:jkCabinetList) {
+                AdminCabinetVO adminCabinetVO = new AdminCabinetVO();
+                BeanUtil.copyProperties(jkCabinet,adminCabinetVO);
+                adminCabinetVOList.add(adminCabinetVO);
+            }
+        }
+        return adminCabinetVOList;
+    }
+
+
+    @Override
+    public CabinetDetailVO getCabinetDetail(Integer cabinetId,LoginUserInfo loginUserInfo){
+        CabinetDetailVO cabinetDetailVO = new CabinetDetailVO();
+        JkCabinet cabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>()
+                .lambda()
+                .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ")
+                .eq(JkCabinet::getId,cabinetId)
+                .last(" limit 1")
+        );
+        if(Objects.isNull(cabinet)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌閽ュ寵鏌滀俊鎭�");
+        }
+        BeanUtil.copyProperties(cabinet,cabinetDetailVO);
+        cabinetDetailVO.setGridNum(Constants.ZERO);
+        cabinetDetailVO.setErrGridNum(Constants.ZERO);
+        cabinetDetailVO.setOnlineKeyNum(Constants.ZERO);
+        cabinetDetailVO.setServiceKeyNum(Constants.ZERO);
+        cabinetDetailVO.setOutKeyNum(Constants.ZERO);
+        cabinetDetailVO.setUnBindGridNum(Constants.ZERO);
+
+        //鎵�鏈夋煖鏍间俊鎭�
+        List<JkCabinetGrid> jkCabinetGridList =
+                jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>()
+                .selectAll(JkCabinetGrid.class)
+                .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+                .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)
+        );
+
+        List<CabinetGridInfoVO> cabinetGridInfoVOList = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+            cabinetDetailVO.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);
+                cabinetGridInfoVOList.add(cabinetGridInfoVO);
+            }
+            cabinetDetailVO.setErrGridNum(
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getWorkingStatus(),Constants.ONE)).collect(Collectors.toList()).size()
+            );
+            cabinetDetailVO.setOnlineKeyNum(
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)).collect(Collectors.toList()).size()
+            );
+            cabinetDetailVO.setOutKeyNum(
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)).collect(Collectors.toList()).size()
+            );
+            cabinetDetailVO.setServiceKeyNum(
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.THREE)).collect(Collectors.toList()).size()
+            );
+            cabinetDetailVO.setUnBindGridNum(
+                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getBindStatus(),Constants.ZERO)).collect(Collectors.toList()).size()
+            );
+        }
+        return cabinetDetailVO;
+    }
+
+
+
+    @Override
+    public CabinetFaceVO getCabinetFaceVO(String code){
+        CabinetFaceVO cabinetFaceVO = new CabinetFaceVO();
+        List<CabinetFaceInfoVO> driverFaceList = new ArrayList<>();
+        List<CabinetFaceInfoVO> autoFaceList = new ArrayList<>();
+
+        JkCabinet jkCabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>().lambda()
+                .eq(JkCabinet::getCode,code)
+                .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                .last("limit 1")
+        );
+        if(Objects.nonNull(jkCabinet)){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+            //鏌ヨ鍙告満淇℃伅
+            List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,new MPJLambdaWrapper<JkCabinetGrid>()
+                    .selectAll(JkCabinetGrid.class)
+                    .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
+                    .innerJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                    .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                    .eq(JkKeys::getIsdeleted,Constants.ZERO)
+                    .isNotNull(JkKeys::getCarId)
+                    .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId())
+            );
+            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>()
+                        .selectAll(Member.class)
+                        .leftJoin(CarDriver.class,CarDriver::getMemberId,Member::getId)
+                        .eq(Member::getIsdeleted,Constants.ZERO)
+                        .eq(CarDriver::getIsdeleted,Constants.ZERO)
+                        .eq(CarDriver::getStatus,Constants.ZERO)
+                        .isNotNull(Member::getFaceImg)
+                        .in(CarDriver::getCarId,carIdList)
+                );
+                if(CollectionUtils.isNotEmpty(memberList)){
+                    Set<Member> memberSet = new HashSet<>(memberList);
+                    for (Member member:memberSet) {
+                        CabinetFaceInfoVO cabinetFaceInfoVO = new CabinetFaceInfoVO();
+                        cabinetFaceInfoVO.setMemberId(member.getId());
+                        cabinetFaceInfoVO.setMemberName(member.getName());
+                        cabinetFaceInfoVO.setFaceImg(prefixUrl + member.getFaceImg());
+                        driverFaceList.add(cabinetFaceInfoVO);
+                    }
+                }
+            }
+            //鏌ヨ璁惧楠岃瘉浜哄憳
+            List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+                    .eq(Member::getIsdeleted,Constants.ZERO)
+                    .isNotNull(Member::getFaceImg)
+                    .apply(" FIND_IN_SET( id ,'"+jkCabinet.getManagerId()+"') ")
+            );
+            if(CollectionUtils.isNotEmpty(memberList)){
+                for (Member member:memberList) {
+                    CabinetFaceInfoVO cabinetFaceInfoVO = new CabinetFaceInfoVO();
+                    cabinetFaceInfoVO.setMemberId(member.getId());
+                    cabinetFaceInfoVO.setMemberName(member.getName());
+                    cabinetFaceInfoVO.setFaceImg(prefixUrl + member.getFaceImg());
+                    autoFaceList.add(cabinetFaceInfoVO);
+                }
+            }
+
+        }
+        cabinetFaceVO.setAutoFaceList(autoFaceList);
+        cabinetFaceVO.setDriverFaceList(driverFaceList);
+        return cabinetFaceVO;
+    }
+
+
+    @Override
+    public CabinetInfoVO getCabinetInfoForDriver(String code){
+        JkCabinet jkCabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>()
+                .lambda()
+                .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                .eq(JkCabinet::getCode,code)
+                .orderByAsc(JkCabinet::getCreateDate)
+                .last(" limit 1 ")
+        );
+        CabinetInfoVO cabinetInfoVO = new CabinetInfoVO();
+        if(Objects.nonNull(jkCabinet)){
+            BeanUtil.copyProperties(jkCabinet,cabinetInfoVO);
+        }
+        List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+                .eq(Category::getIsdeleted,Constants.ZERO)
+                .eq(Category::getStatus,Constants.ZERO)
+                .eq(Category::getType,Constants.THREE)
+                .orderByAsc(Category::getSortnum)
+        );
+        if(CollectionUtils.isNotEmpty(categoryList)){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.BANNER_IMG).getCode();
+            for (Category category:categoryList) {
+                category.setImgurlFull(prefixUrl + category.getImgurl());
+            }
+            cabinetInfoVO.setBannerList(
+                    categoryList.stream().map(i->i.getImgurlFull()).collect(Collectors.toList())
+            );
+        }
+        return cabinetInfoVO;
+    }
+
+
+
+    @Override
+    public void updateRunStatusById(Integer id) {
+        jkCabinetMapper.update(null,new UpdateWrapper<JkCabinet>()
+                .lambda().set(JkCabinet::getRunStatus,Constants.ZERO)
+                .set(JkCabinet::getEditDate, DateUtil.getCurrDateTime())
+                .set(JkCabinet::getHaertTime, DateUtil.getCurrDateTime())
+                .eq(JkCabinet::getId,id));
     }
 
 

--
Gitblit v1.9.3