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.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.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 com.github.xiaoymin.knife4j.core.util.CollectionUtils; 
 | 
  
 | 
import java.math.BigDecimal; 
 | 
import java.util.*; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * 钥匙柜基本信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2025/09/28 09:01 
 | 
 */ 
 | 
@Service 
 | 
public class JkCabinetServiceImpl implements JkCabinetService { 
 | 
  
 | 
    @Autowired 
 | 
    private JkCabinetMapper jkCabinetMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private CategoryMapper categoryMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private JkCabinetGridMapper jkCabinetGridMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private JkKeysMapper jkKeysMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemDictDataBiz systemDictDataBiz; 
 | 
  
 | 
    @Autowired 
 | 
    private MemberMapper memberMapper; 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = {Exception.class,BusinessException.class}) 
 | 
    public Integer create(JkCabinet jkCabinet) { 
 | 
        if(Objects.isNull(jkCabinet) 
 | 
            || StringUtils.isBlank(jkCabinet.getCode()) 
 | 
            || StringUtils.isBlank(jkCabinet.getName()) 
 | 
            || StringUtils.isBlank(jkCabinet.getDevId()) 
 | 
            || StringUtils.isBlank(jkCabinet.getLinkAddr()) 
 | 
            || StringUtils.isBlank(jkCabinet.getCode()) 
 | 
  
 | 
            || Objects.isNull(jkCabinet.getPort()) 
 | 
            || CollectionUtils.isEmpty(jkCabinet.getManagerIdList()) 
 | 
            || CollectionUtils.isEmpty(jkCabinet.getAuthMemberIdList()) 
 | 
            || Objects.isNull(jkCabinet.getDoubleAuth()) 
 | 
  
 | 
            || Objects.isNull(jkCabinet.getRowNum()) 
 | 
            || jkCabinet.getRowNum() <= Constants.ZERO 
 | 
            || Objects.isNull(jkCabinet.getColumnNum()) 
 | 
            || jkCabinet.getColumnNum() <= Constants.ZERO 
 | 
            || Objects.isNull(jkCabinet.getNoType()) 
 | 
            || Objects.isNull(jkCabinet.getSortType()) 
 | 
            || ( 
 | 
                Constants.equalsInteger(jkCabinet.getNoType(),Constants.ONE) 
 | 
                && ( Objects.isNull(jkCabinet.getNoIndex()) || Objects.isNull(jkCabinet.getNoLength()) ) 
 | 
                ) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        //查询编号是否重复 
 | 
        if(jkCabinetMapper.selectCount(new QueryWrapper<JkCabinet>().lambda().eq(JkCabinet::getCode,jkCabinet.getCode()).eq(JkCabinet::getIsdeleted,Constants.ZERO))>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"钥匙柜设备编号已存在!"); 
 | 
        } 
 | 
        if(jkCabinetMapper.selectCount(new QueryWrapper<JkCabinet>().lambda().eq(JkCabinet::getDevId,jkCabinet.getDevId()).eq(JkCabinet::getIsdeleted,Constants.ZERO))>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"钥匙柜设备ID已存在!"); 
 | 
        } 
 | 
        LoginUserInfo loginUserInfo = jkCabinet.getLoginUserInfo(); 
 | 
        jkCabinet.setCreateDate(new Date()); 
 | 
        jkCabinet.setEditDate(jkCabinet.getCreateDate()); 
 | 
        jkCabinet.setCreator(loginUserInfo.getId()); 
 | 
        jkCabinet.setEditor(loginUserInfo.getId()); 
 | 
        jkCabinet.setIsdeleted(Constants.ZERO); 
 | 
        jkCabinet.setStatus(Constants.ZERO); 
 | 
        jkCabinet.setRunStatus(Constants.ONE); 
 | 
        if(StringUtils.isNotBlank(jkCabinet.getJwd())&&jkCabinet.getJwd().split(",").length>Constants.ONE){ 
 | 
            jkCabinet.setLongitude(new BigDecimal(jkCabinet.getJwd().split(",")[Constants.ZERO])); 
 | 
            jkCabinet.setLatitude(new BigDecimal(jkCabinet.getJwd().split(",")[Constants.ONE])); 
 | 
        } 
 | 
        jkCabinet.setManagerId(String.join(",",jkCabinet.getManagerIdList())); 
 | 
        jkCabinet.setAuthMemberId(String.join(",",jkCabinet.getAuthMemberIdList())); 
 | 
        jkCabinetMapper.insert(jkCabinet); 
 | 
        this.createGrid(jkCabinet); 
 | 
        return jkCabinet.getId(); 
 | 
    } 
 | 
  
 | 
  
 | 
    public void createGrid(JkCabinet jkCabinet){ 
 | 
        LoginUserInfo loginUserInfo = jkCabinet.getLoginUserInfo(); 
 | 
        Integer startNo =  Constants.equalsInteger(jkCabinet.getNoType(),Constants.ZERO)?1:jkCabinet.getNoIndex() ; 
 | 
        List<JkCabinetGrid> jkCabinetGridList = new ArrayList<>(); 
 | 
        Integer maxNum = jkCabinet.getRowNum() * jkCabinet.getColumnNum(); 
 | 
        for (int i = 0; i < maxNum; i++) { 
 | 
            JkCabinetGrid grid = new JkCabinetGrid(); 
 | 
            grid.setCreateDate(new Date()); 
 | 
            grid.setEditDate(jkCabinet.getCreateDate()); 
 | 
            grid.setCreator(loginUserInfo.getId()); 
 | 
            grid.setEditor(loginUserInfo.getId()); 
 | 
            grid.setIsdeleted(Constants.ZERO); 
 | 
            grid.setStatus(Constants.ZERO); 
 | 
            grid.setCabinetId(jkCabinet.getId()); 
 | 
            if(Constants.equalsInteger(jkCabinet.getNoType(),Constants.ZERO)){ 
 | 
                grid.setCode(StringUtils.leftPad(startNo.toString(),maxNum.toString().length()+1,"0")); 
 | 
            }else{ 
 | 
                grid.setCode(StringUtils.isNotBlank(jkCabinet.getNoPrefix())?jkCabinet.getNoPrefix():"" +  StringUtils.leftPad(startNo.toString(),jkCabinet.getNoLength(),"0")); 
 | 
            } 
 | 
  
 | 
            jkCabinetGridList.add(grid); 
 | 
            startNo = startNo + 1; 
 | 
        } 
 | 
        jkCabinetGridMapper.insert(jkCabinetGridList); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        JkCabinet jkCabinet = jkCabinetMapper.selectById(id); 
 | 
        if(Constants.equalsInteger(jkCabinet.getStatus(),Constants.ZERO)){ 
 | 
           throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非禁用数据,无法进行删除"); 
 | 
        } 
 | 
        //查询钥匙柜下的柜格信息 
 | 
        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) 
 | 
                .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId()) 
 | 
        ); 
 | 
        if(Objects.nonNull(jkCabinetGridList)){ 
 | 
            jkCabinetGridMapper.update(null,new UpdateWrapper<JkCabinetGrid>().lambda().set(JkCabinetGrid::getIsdeleted,Constants.ONE) 
 | 
                    .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()); 
 | 
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(keyIdList)){ 
 | 
                jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda() 
 | 
                        .set(JkKeys::getStatus,Constants.ZERO) 
 | 
                        .in(JkKeys::getId,keyIdList) 
 | 
                ); 
 | 
            } 
 | 
        } 
 | 
        jkCabinetMapper.update(null,new UpdateWrapper<JkCabinet>().lambda() 
 | 
                .set(JkCabinet::getIsdeleted,Constants.ONE) 
 | 
                .eq(JkCabinet::getId,jkCabinet.getId())); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(JkCabinet jkCabinet) { 
 | 
        UpdateWrapper<JkCabinet> deleteWrapper = new UpdateWrapper<>(jkCabinet); 
 | 
        jkCabinetMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        jkCabinetMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(JkCabinet jkCabinet) { 
 | 
        if(Objects.isNull(jkCabinet) 
 | 
                || Objects.isNull(jkCabinet.getId()) 
 | 
                || StringUtils.isBlank(jkCabinet.getCode()) 
 | 
                || StringUtils.isBlank(jkCabinet.getName()) 
 | 
                || StringUtils.isBlank(jkCabinet.getDevId()) 
 | 
                || StringUtils.isBlank(jkCabinet.getLinkAddr()) 
 | 
                || StringUtils.isBlank(jkCabinet.getCode()) 
 | 
                || CollectionUtils.isEmpty(jkCabinet.getManagerIdList()) 
 | 
                || CollectionUtils.isEmpty(jkCabinet.getAuthMemberIdList()) 
 | 
                || Objects.isNull(jkCabinet.getPort()) 
 | 
                || Objects.isNull(jkCabinet.getDoubleAuth()) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        jkCabinet.setRowNum(null); 
 | 
        jkCabinet.setColumnNum(null); 
 | 
        jkCabinet.setSortType(null); 
 | 
        jkCabinet.setNoType(null); 
 | 
        jkCabinet.setNoIndex(null); 
 | 
        jkCabinet.setNoLength(null); 
 | 
        jkCabinet.setNoPrefix(null); 
 | 
        //查询编号是否重复 
 | 
        if(jkCabinetMapper.selectCount(new QueryWrapper<JkCabinet>().lambda().ne(JkCabinet::getId,jkCabinet.getId()).eq(JkCabinet::getCode,jkCabinet.getCode()).eq(JkCabinet::getIsdeleted,Constants.ZERO))>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"钥匙柜设备编号已存在!"); 
 | 
        } 
 | 
        if(jkCabinetMapper.selectCount(new QueryWrapper<JkCabinet>().lambda().ne(JkCabinet::getId,jkCabinet.getId()).eq(JkCabinet::getDevId,jkCabinet.getDevId()).eq(JkCabinet::getIsdeleted,Constants.ZERO))>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"钥匙柜设备ID已存在!"); 
 | 
        } 
 | 
        LoginUserInfo loginUserInfo = jkCabinet.getLoginUserInfo(); 
 | 
        jkCabinet.setEditDate(new Date()); 
 | 
        jkCabinet.setEditor(loginUserInfo.getId()); 
 | 
        if(StringUtils.isNotBlank(jkCabinet.getJwd())&&jkCabinet.getJwd().split(",").length>Constants.ONE){ 
 | 
            jkCabinet.setLongitude(new BigDecimal(jkCabinet.getJwd().split(",")[Constants.ZERO])); 
 | 
            jkCabinet.setLatitude(new BigDecimal(jkCabinet.getJwd().split(",")[Constants.ONE])); 
 | 
        } 
 | 
        jkCabinet.setManagerId(String.join(",",jkCabinet.getManagerIdList())); 
 | 
        jkCabinet.setAuthMemberId(String.join(",",jkCabinet.getAuthMemberIdList())); 
 | 
        jkCabinetMapper.updateById(jkCabinet); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateStatusById(JkCabinet jkCabinet) { 
 | 
        if(Objects.isNull(jkCabinet) 
 | 
        || Objects.isNull(jkCabinet.getId()) 
 | 
        || Objects.isNull(jkCabinet.getStatus())){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        jkCabinetMapper.update(null,new UpdateWrapper<JkCabinet>() 
 | 
                .lambda().set(JkCabinet::getStatus,jkCabinet.getStatus()) 
 | 
                .set(JkCabinet::getEditDate, DateUtil.getCurrDateTime()) 
 | 
                .eq(JkCabinet::getId,jkCabinet.getId())); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<JkCabinet> jkCabinets) { 
 | 
        if (CollectionUtils.isEmpty(jkCabinets)) { 
 | 
            return; 
 | 
        } 
 | 
        for (JkCabinet jkCabinet: jkCabinets) { 
 | 
            this.updateById(jkCabinet); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public JkCabinet findById(Integer id) { 
 | 
        return jkCabinetMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public JkCabinet getDetail(Integer id){ 
 | 
        JkCabinet jkCabinet = jkCabinetMapper.selectById(id); 
 | 
        if(Objects.nonNull(jkCabinet.getLongitude()) 
 | 
            && Objects.nonNull(jkCabinet.getLatitude())){ 
 | 
            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; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public JkCabinet findOne(JkCabinet jkCabinet) { 
 | 
        QueryWrapper<JkCabinet> wrapper = new QueryWrapper<>(jkCabinet); 
 | 
        return jkCabinetMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<JkCabinet> findList(JkCabinet jkCabinet) { 
 | 
        jkCabinet.setIsdeleted(Constants.ZERO); 
 | 
        jkCabinet.setStatus(Constants.ZERO); 
 | 
        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()); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        JkCabinet model = pageWrap.getModel(); 
 | 
        IPage<JkCabinet> iPage = jkCabinetMapper.selectPage(page, new QueryWrapper<JkCabinet>() 
 | 
                .lambda() 
 | 
                .eq(JkCabinet::getIsdeleted,Constants.ZERO) 
 | 
                .like(StringUtils.isNotBlank(model.getName()),JkCabinet::getName, model.getName()) 
 | 
                .like(StringUtils.isNotBlank(model.getCode()),JkCabinet::getCode, model.getCode()) 
 | 
                .eq(Objects.nonNull(model.getStatus()),JkCabinet::getStatus, model.getStatus()) 
 | 
                .eq(Objects.nonNull(model.getRunStatus()),JkCabinet::getRunStatus, model.getRunStatus()) 
 | 
        ); 
 | 
        for (JkCabinet jkCabinet:iPage.getRecords()) { 
 | 
            jkCabinet.setGridNum(jkCabinet.getColumnNum()*jkCabinet.getRowNum()); 
 | 
        } 
 | 
        return PageData.from(iPage); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(JkCabinet jkCabinet) { 
 | 
        QueryWrapper<JkCabinet> wrapper = new QueryWrapper<>(jkCabinet); 
 | 
        return jkCabinetMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public CabinetConfigDataVO getCabinetConfigDataVO(){ 
 | 
        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()); 
 | 
        return cabinetConfigDataVO; 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void updCabinetConfig(CabinetConfigDataVO cabinetConfigDataVO){ 
 | 
        if(Objects.isNull(cabinetConfigDataVO) 
 | 
        || (StringUtils.isBlank(cabinetConfigDataVO.getBlowTime()) 
 | 
        && StringUtils.isBlank(cabinetConfigDataVO.getConcentration()) 
 | 
                && StringUtils.isBlank(cabinetConfigDataVO.getPressure()) 
 | 
                && StringUtils.isBlank(cabinetConfigDataVO.getThreshold()) 
 | 
        )){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        if(StringUtils.isNotBlank(cabinetConfigDataVO.getConcentration())){ 
 | 
            SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.CONCENTRATION); 
 | 
            systemDictData.setCode(cabinetConfigDataVO.getConcentration()); 
 | 
            systemDictDataBiz.updateByIdNew(systemDictData); 
 | 
        } 
 | 
        if(StringUtils.isNotBlank(cabinetConfigDataVO.getPressure())){ 
 | 
            SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.PRESSURE); 
 | 
            systemDictData.setCode(cabinetConfigDataVO.getPressure()); 
 | 
            systemDictDataBiz.updateByIdNew(systemDictData); 
 | 
        } 
 | 
        if(StringUtils.isNotBlank(cabinetConfigDataVO.getBlowTime())){ 
 | 
            SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.BLOW_TIME); 
 | 
            systemDictData.setCode(cabinetConfigDataVO.getBlowTime()); 
 | 
            systemDictDataBiz.updateByIdNew(systemDictData); 
 | 
        } 
 | 
        if(StringUtils.isNotBlank(cabinetConfigDataVO.getThreshold())){ 
 | 
            SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.THRESHOLD); 
 | 
            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.getMemberId()+",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.getMemberId()+",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); 
 | 
        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()) 
 | 
                .orderByAsc(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); 
 | 
                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() 
 | 
            ); 
 | 
            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(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(JkKeys::getId,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.getAuthMemberId()+"') ") 
 | 
            ); 
 | 
            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<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) 
 | 
                .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)); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |