rk
20 小时以前 d5397923196daf2c54f00e927492261d66e1feb2
钥匙柜开发
已添加7个文件
已修改8个文件
695 ■■■■■ 文件已修改
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java 284 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java
@@ -5,6 +5,7 @@
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.JkCabinet;
import com.doumee.dao.business.model.JkKeys;
import com.doumee.service.business.JkKeysService;
import com.doumee.service.business.third.model.ApiResponse;
@@ -77,6 +78,14 @@
        return ApiResponse.success(jkKeysService.findPage(pageWrap));
    }
    @ApiOperation("列表查询")
    @PostMapping("/list")
    @CloudRequiredPermission("business:jkkeys:query")
    public ApiResponse<List<JkKeys>> findList (@RequestBody JkKeys jkKeys, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(jkKeysService.findList(jkKeys));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:jkkeys:exportExcel")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.doumee.dao.business.dto;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2025/10/11 16:01
 */
@Data
public class CloseGridDTO{
    @ApiModelProperty(value = "钥匙柜主键")
    private Integer cabinetId;
    @ApiModelProperty(value = "验证方式 0刷脸 1刷卡 2管理员操作")
    private Integer authType;
    @ApiModelProperty(value = "柜格主键")
    private Integer gridId;
    @ApiModelProperty(value = "用户主键")
    private Integer memberId;
    @ApiModelProperty(value = "钥匙状态:1在位 2借出")
    private Integer keyStatus;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.dao.business.dto;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2025/10/11 16:01
 */
@Data
public class GetDriverGridDTO{
    @ApiModelProperty(value = "钥匙柜主键")
    private Integer cabinetId;
    @ApiModelProperty(value = "0=取 1=还")
    private Integer type;
    @ApiModelProperty(value = "用户主键")
    private Integer memberId;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.doumee.dao.business.dto;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2025/10/11 16:01
 */
@Data
public class OpenGridDriverDTO extends LoginUserModel {
    @ApiModelProperty(value = "钥匙柜主键")
    private Integer cabinetId;
    @ApiModelProperty(value = "验证方式 0刷脸 1刷卡")
    private Integer authType;
    @ApiModelProperty(value = "柜格主键")
    private Integer gridId;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.dao.business.dto;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2025/10/11 16:01
 */
@Data
public class OptGridDTO extends LoginUserModel {
    @ApiModelProperty(value = "钥匙柜主键")
    private Integer cabinetId;
    @ApiModelProperty(value = "柜格主键列表")
    private List<Integer> gridIdList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
@@ -86,8 +86,6 @@
    private String channelCode;
    @ApiModelProperty(value = "绑定状态 0未绑定;1已绑定", example = "1")
    @TableField(exist = false)
    private Integer bindStatus;
@@ -99,4 +97,17 @@
    @ApiModelProperty(value = "钥匙编码", example = "1")
    @TableField(exist = false)
    private String keyCode;
    @ApiModelProperty(value = "车牌号", example = "1")
    @TableField(exist = false)
    private String carCode;
    @ApiModelProperty(value = "车辆主键", example = "1")
    @TableField(exist = false)
    private Integer carId;
    @ApiModelProperty(value = "钥匙状态 0未绑定 1在位 2借出 3维修保养", example = "1")
    @TableField(exist = false)
    private Integer keyStatus;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
@@ -77,6 +77,9 @@
    @ExcelColumn(name="状态",index = 6,width = 10,valueMapping = "0=成功;1=失败;")
    private Integer status;
    @ApiModelProperty(value = "操作类型:0=开门;1=关门;", example = "1")
    private Integer type;
    @ApiModelProperty(value = "操作人部门", example = "1",hidden = true)
    @TableField(exist = false)
    private String companyName;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.doumee.dao.business.vo;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/5/23 14:56
 */
@Data
public class AdminCabinetVO {
    @ApiModelProperty(value = "设备主键(系统内)")
    private Integer id;
    @ApiModelProperty(value = "设备编号")
    private String code;
    @ApiModelProperty(value = "设备名称")
    private String name;
    @ApiModelProperty(value = "设备ID")
    private String devId;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.doumee.dao.business.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/5/23 14:56
 */
@Data
public class CabinetDetailVO {
    @ApiModelProperty(value = "设备主键(系统内)")
    private Integer id;
    @ApiModelProperty(value = "设备编号")
    private String code;
    @ApiModelProperty(value = "设备名称")
    private String name;
    @ApiModelProperty(value = "设备ID")
    private String devId;
    @ApiModelProperty(value = "柜格总数")
    private Integer gridNum;
    @ApiModelProperty(value = "在位钥匙数")
    private Integer onlineKeyNum;
    @ApiModelProperty(value = "借出钥匙数")
    private Integer outKeyNum;
    @ApiModelProperty(value = "维修保养钥匙数")
    private Integer serviceKeyNum;
    @ApiModelProperty(value = "故障柜体数量")
    private Integer errGridNum;
    @ApiModelProperty(value = "未绑定柜体数量")
    private Integer unBindGridNum;
    @ApiModelProperty(value = "柜格信息")
    private List<CabinetGridInfoVO> cabinetGridInfoVOList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.doumee.dao.business.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/5/23 14:56
 */
@Data
public class CabinetGridInfoVO {
    @ApiModelProperty(value = "主键", example = "1")
    private Integer id;
    @ApiModelProperty(value = "编码")
    private String code;
    @ApiModelProperty(value = "钥匙编码(关联jk_keys)", example = "1")
    private Integer keyId;
    @ApiModelProperty(value = "柜体运行状态 0正常 1故障 ", example = "1")
    private Integer workingStatus;
    @ApiModelProperty(value = "绑定状态 0未绑定;1已绑定", example = "1")
    private Integer bindStatus;
    @ApiModelProperty(value = "钥匙状态 0未绑定 1在位 2借出 3维修保养", example = "1")
    private Integer keyStatus;
    @ApiModelProperty(value = "板号")
    private String boardCode;
    @ApiModelProperty(value = "通道号")
    private String channelCode;
    @ApiModelProperty(value = "车牌号", example = "1")
    private String carCode;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
@@ -1,6 +1,11 @@
package com.doumee.service.business;
import com.doumee.dao.business.dto.OptGridDTO;
import com.doumee.dao.business.dto.CloseGridDTO;
import com.doumee.dao.business.dto.GetDriverGridDTO;
import com.doumee.dao.business.dto.OpenGridDriverDTO;
import com.doumee.dao.business.model.JkCabinetGrid;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
@@ -99,4 +104,39 @@
    void updateStatusById(JkCabinetGrid jkCabinetGrid);
    void unBindKeys(List<Integer> idList);
    /**
     * æ ‡è®°æŸœæ ¼æ•…éšœ
     * @param loginUserInfo
     * @param cabinetId
     * @param gridIdList
     */
    void markFault(OptGridDTO dto);
    /**
     * æ ‡è®°æŸœæ ¼æ­£å¸¸
     * @param loginUserInfo
     * @param cabinetId
     * @param gridIdList
     */
    void cancelFault(OptGridDTO dto);
    /**
     * æ‰¹é‡å¼€é—¨ - ç®¡ç†å‘˜
     */
    void batchOpenGridAdmin(OptGridDTO dto);
    /**
     * æ ‡è®°ç»´ä¿®ä¿å…» - ç®¡ç†å‘˜
     * @param loginUserInfo
     * @param cabinetId
     * @param gridIdList
     */
    void markRepair(OptGridDTO dto);
    void closeGrid(CloseGridDTO dto);
    List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO getDriverGridDTO);
    void openGridDriver(OpenGridDriverDTO openGridDriverDTO);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java
@@ -1,6 +1,9 @@
package com.doumee.service.business;
import com.doumee.dao.business.vo.AdminCabinetVO;
import com.doumee.dao.business.vo.CabinetConfigDataVO;
import com.doumee.dao.business.vo.CabinetDetailVO;
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.dao.business.model.JkCabinet;
@@ -102,4 +105,19 @@
    CabinetConfigDataVO getCabinetConfigDataVO();
    void updCabinetConfig(CabinetConfigDataVO cabinetConfigDataVO);
    /**
     * é’¥åŒ™æŸœç®¡ç†å‘˜ èŽ·å–å¯ç®¡ç†çš„é’¥åŒ™æŸœåˆ—è¡¨
     * @param loginUserInfo
     * @return
     */
    List<AdminCabinetVO> getAdminCabinetInfo(LoginUserInfo loginUserInfo);
    /**
     * èŽ·å–é’¥åŒ™æŸœè¯¦æƒ…
     * @param cabinetId
     * @return
     */
    CabinetDetailVO getCabinetDetail(Integer cabinetId);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -1,26 +1,24 @@
package com.doumee.service.business.impl;
import com.alibaba.druid.sql.visitor.functions.Concat;
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.JkKeysMapper;
import com.doumee.dao.business.model.Cars;
import com.doumee.dao.business.model.JkCabinet;
import com.doumee.dao.business.model.JkKeys;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dto.OptGridDTO;
import com.doumee.dao.business.dto.CloseGridDTO;
import com.doumee.dao.business.dto.GetDriverGridDTO;
import com.doumee.dao.business.dto.OpenGridDriverDTO;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.JkCabinetGridMapper;
import com.doumee.dao.business.model.JkCabinetGrid;
import com.doumee.service.business.JkCabinetGridService;
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.doumee.service.business.third.model.PageWrap;
import com.github.yulichang.toolkit.MPJWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,8 +26,7 @@
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -45,6 +42,13 @@
    @Autowired
    private JkKeysMapper jkKeysMapper;
    @Autowired
    private JkCabinetMapper jkCabinetMapper;
    @Autowired
    private JkCabinetLogMapper jkCabinetLogMapper;
    @Override
    public Integer create(JkCabinetGrid jkCabinetGrid) {
@@ -237,7 +241,267 @@
    }
    /**
     * æ ‡è®°æ•…éšœ
     */
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void markFault(OptGridDTO dto){
        if(Objects.isNull(dto)
                || Objects.isNull(dto.getCabinetId())
                || CollectionUtils.isEmpty(dto.getGridIdList())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
                .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                .in(JkCabinetGrid::getId,dto.getGridIdList())
        );
        if(CollectionUtils.isEmpty(jkCabinetGridList)){
            return;
        }
        LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
        for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
            jkCabinetGrid.setEditor(loginUserInfo.getId());
            jkCabinetGrid.setEditDate(new Date());
            jkCabinetGrid.setWorkingStatus(Constants.ONE);
            jkCabinetGridMapper.updateById(jkCabinetGrid);
        }
    }
    /**
     * æ ‡è®°ç»´ä¿®ä¿å…»
     */
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void markRepair(OptGridDTO dto){
        if(Objects.isNull(dto)
                || Objects.isNull(dto.getCabinetId())
                || CollectionUtils.isEmpty(dto.getGridIdList())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
                new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
                        .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
                        .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                        .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                .eq(JkKeys::getStatus,Constants.ONE)
                .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
                .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                .isNotNull(JkCabinetGrid::getKeyId)
                .in(JkCabinetGrid::getId,dto.getGridIdList())
        );
        if(CollectionUtils.isEmpty(jkCabinetGridList)){
            return;
        }
        for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
            jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
                    .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
                    .set(JkKeys::getStatus,Constants.TWO)
                    .eq(JkKeys::getId,jkCabinetGrid.getKeyId())
            );
        }
    }
    /**
     * å–消故障
     */
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void cancelFault(OptGridDTO dto){
        if(Objects.isNull(dto)
                || Objects.isNull(dto.getCabinetId())
                || CollectionUtils.isEmpty(dto.getGridIdList())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                .eq(JkCabinetGrid::getWorkingStatus,Constants.ONE)
                .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                .in(JkCabinetGrid::getId,dto.getGridIdList())
        );
        if(CollectionUtils.isEmpty(jkCabinetGridList)){
            return;
        }
        LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
        for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
            jkCabinetGrid.setEditor(loginUserInfo.getId());
            jkCabinetGrid.setEditDate(new Date());
            jkCabinetGrid.setWorkingStatus(Constants.ZERO);
            jkCabinetGridMapper.updateById(jkCabinetGrid);
        }
    }
    /**
     * è®¾å¤‡ç®¡ç†å‘˜æ‰¹é‡å¼€é”
     */
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void batchOpenGridAdmin(OptGridDTO dto){
        if(Objects.isNull(dto)
        || Objects.isNull(dto.getCabinetId())
        || CollectionUtils.isEmpty(dto.getGridIdList())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                .in(JkCabinetGrid::getId,dto.getGridIdList())
        );
        if(CollectionUtils.isEmpty(jkCabinetGridList)){
            return;
        }
        LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(jkCabinetGridList)){
            List<JkCabinetLog> jkCabinetLogs = new ArrayList<>();
            for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
                JkCabinetLog jkCabinetLog = new JkCabinetLog();
                jkCabinetLog.setCreateDate(new Date());
                jkCabinetLog.setCreator(loginUserInfo.getId());
                jkCabinetLog.setIsdeleted(Constants.ZERO);
                jkCabinetLog.setCabinetId(dto.getCabinetId());
                jkCabinetLog.setGridId(jkCabinetGrid.getId());
                jkCabinetLog.setAuthType(Constants.TWO);
                jkCabinetLog.setMemberId(loginUserInfo.getMemberId());
                if(Objects.nonNull(jkCabinetGrid.getKeyId())){
                    JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
                    if(Objects.nonNull(jkKeys)){
                        if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
                            jkCabinetLog.setCarId(jkKeys.getCarId());
                            jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
                        }
                        jkCabinetLog.setRoleType(jkKeys.getRoleType());
                    }
                }
                jkCabinetLog.setType(Constants.ZERO);
                jkCabinetLogs.add(jkCabinetLog);
            }
            jkCabinetLogMapper.insert(jkCabinetLogs);
        }
    }
    /**
     * é’¥åŒ™æŸœå…³é—¨
     */
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void closeGrid(CloseGridDTO dto){
        if(Objects.isNull(dto)
            || Objects.isNull(dto.getGridId())
            || Objects.isNull(dto.getCabinetId())
            || Objects.isNull(dto.getKeyStatus())
            || Objects.isNull(dto.getAuthType())
            || Objects.isNull(dto.getMemberId())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectOne(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                .eq(JkCabinetGrid::getId,dto.getGridId())
                .last(" limit 1 ")
        );
        if(Objects.isNull(jkCabinetGrid)){
            return;
        }
        JkCabinetLog jkCabinetLog = new JkCabinetLog();
        jkCabinetLog.setCreateDate(new Date());
        jkCabinetLog.setIsdeleted(Constants.ZERO);
        jkCabinetLog.setCabinetId(dto.getCabinetId());
        jkCabinetLog.setGridId(jkCabinetGrid.getId());
        jkCabinetLog.setAuthType(dto.getAuthType());
        jkCabinetLog.setMemberId(dto.getMemberId());
        if(Objects.nonNull(jkCabinetGrid.getKeyId())){
            //只有钥匙柜绑定了钥匙信息 æ‰ä¼šæ›´æ–°é’¥åŒ™çš„信息
            JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
            if(Objects.nonNull(jkKeys)){
                if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
                    jkCabinetLog.setCarId(jkKeys.getCarId());
                    jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
                }
                jkCabinetLog.setRoleType(jkKeys.getRoleType());
                //钥匙状态与当前操作状态不一致,则进行更新钥匙状态
                if(!Constants.equalsInteger(jkKeys.getStatus(),dto.getKeyStatus())){
                    jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
                            .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
                            .set(JkKeys::getStatus,dto.getKeyStatus())
                            .eq(JkKeys::getId,jkKeys.getId())
                    );
                }
            }
        }
        jkCabinetLog.setType(Constants.ONE);
        jkCabinetLogMapper.insert(jkCabinetLog);
    }
    /**
     * å¸æœºèŽ·å–å¯æ“ä½œçš„é’¥åŒ™æŸœæŸœæ ¼
     */
    @Override
    public List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO dto){
        if(Objects.isNull(dto.getCabinetId())
            || Objects.isNull(dto.getCabinetId())
            || Objects.isNull(dto.getMemberId())
            || Objects.isNull(dto.getType())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
                new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
                        .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
                        .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                        .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
                        .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                        .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                        .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
                        .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                        .in(Constants.equalsInteger(dto.getType(),Constants.ONE),JkKeys::getStatus,Constants.TWO,Constants.THREE)
                        .in(Constants.equalsInteger(dto.getType(),Constants.ZERO),JkKeys::getStatus,Constants.ONE)
                        .isNotNull(JkCabinetGrid::getKeyId)
                        .apply(" t1.car_id in ( select c.CAR_ID from car_driver c left join cars c1 on c.car_id = c1.id  where c.ISDELETED = 0 and c.TYPE != 0 and   c.MEMBER_ID = "+dto.getMemberId()+" ) ")
        );
        return jkCabinetGridList;
    }
    /**
     * å¸æœºå¼€å¯æŸœæ ¼
     * @param openGridDriverDTO
     */
    @Override
    public void openGridDriver(OpenGridDriverDTO openGridDriverDTO){
        JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectOne(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                .eq(JkCabinetGrid::getCabinetId,openGridDriverDTO.getCabinetId())
                .eq(JkCabinetGrid::getId,openGridDriverDTO.getGridId())
                .last(" limit 1 ")
        );
        if(Objects.isNull(jkCabinetGrid)){
            return;
        }
        LoginUserInfo loginUserInfo = openGridDriverDTO.getLoginUserInfo();
        List<JkCabinetLog> jkCabinetLogs = new ArrayList<>();
        JkCabinetLog jkCabinetLog = new JkCabinetLog();
        jkCabinetLog.setCreateDate(new Date());
        jkCabinetLog.setCreator(loginUserInfo.getId());
        jkCabinetLog.setIsdeleted(Constants.ZERO);
        jkCabinetLog.setCabinetId(openGridDriverDTO.getCabinetId());
        jkCabinetLog.setGridId(jkCabinetGrid.getId());
        jkCabinetLog.setAuthType(openGridDriverDTO.getAuthType());
        jkCabinetLog.setMemberId(loginUserInfo.getMemberId());
        jkCabinetLog.setType(Constants.ZERO);
        if(Objects.nonNull(jkCabinetGrid.getKeyId())){
            JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
            if(Objects.nonNull(jkKeys)){
                if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
                    jkCabinetLog.setCarId(jkKeys.getCarId());
                    jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
                }
                jkCabinetLog.setRoleType(jkKeys.getRoleType());
            }
        }
        jkCabinetLogMapper.insert(jkCabinetLogs);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
@@ -1,5 +1,6 @@
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;
@@ -9,7 +10,10 @@
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.AdminCabinetVO;
import com.doumee.dao.business.vo.CabinetConfigDataVO;
import com.doumee.dao.business.vo.CabinetDetailVO;
import com.doumee.dao.business.vo.CabinetGridInfoVO;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
@@ -22,11 +26,14 @@
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.*;
@@ -340,8 +347,89 @@
            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){
        CabinetDetailVO cabinetDetailVO = new CabinetDetailVO();
        JkCabinet cabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>()
                .lambda()
                .eq(JkCabinet::getIsdeleted,Constants.ZERO)
                .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;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
@@ -164,6 +164,8 @@
    @Override
    public List<JkKeys> findList(JkKeys jkKeys) {
        jkKeys.setIsdeleted(Constants.ZERO);
        jkKeys.setStatus(Constants.ZERO);
        QueryWrapper<JkKeys> wrapper = new QueryWrapper<>(jkKeys);
        return jkKeysMapper.selectList(wrapper);
    }