doum
2 天以前 48d06fac940e6f28d599eb7fbf05c2cce41ecb30
Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao
已添加6个文件
已修改9个文件
646 ■■■■■ 文件已修改
server/db/business.jk_interface_log.permissions.sql 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/PasswordGenerator.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkInterfaceLogCloudController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/JkInterfaceLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkInterfaceLog.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkInterfaceLogService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java 116 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkInterfaceLogServiceImpl.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.jk_interface_log.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:jkinterfacelog:create', '新建钥匙柜接口交互记录', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:jkinterfacelog:delete', '删除钥匙柜接口交互记录', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:jkinterfacelog:update', '修改钥匙柜接口交互记录', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:jkinterfacelog:query', '查询钥匙柜接口交互记录', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:jkinterfacelog:exportExcel', '导出钥匙柜接口交互记录(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -56,6 +56,7 @@
    public static final String SIGN_IN_QRCODE ="SIGN_IN_QRCODE" ;
    public static final String SIGN_IN_ATTENTION ="SIGN_IN_ATTENTION" ;
    public static final String SIGN_IN_QRCODE_PREFIX ="SIGN_IN_QRCODE_PREFIX" ;
    /**
     * æ“ä½œç±»åž‹ï¼Œç”¨äºŽåšæŽ¥å£éªŒè¯åˆ†ç»„
     */
@@ -86,6 +87,7 @@
    public static final String PRESSURE ="PRESSURE" ;
    public static final String CONCENTRATION ="CONCENTRATION" ;
    public static final String THRESHOLD ="THRESHOLD" ;
    public static final String LINK_PHONE ="LINK_PHONE" ;
    //被拜访人信息校验方式(0手机号单独校验 1手机号和姓名组合校验)
    public static final String BEVISITED_USER_VALID = "BEVISITED_USER_VALID";
    public static final String LW_BEVISITED_USER_VALID = "LW_BEVISITED_USER_VALID";
@@ -1496,4 +1498,43 @@
        map.put(key,val);
        return JSONObject.toJSONString(map);
    }
    public  enum WarningConfig {
        ALARM_TEST(10002, "酒精测试"),
        GRID_TIME_OUT_INFO(10003, "开门超时未关闭"),
        KEY_TIME_OUT_BACK(10004, "钥匙超时未归还"),
        ;
        // æˆå‘˜å˜é‡
        private int key;
        private String info;
        // æž„造方法
        WarningConfig(int key,String info) {
            this.key = key;
            this.info = info;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
    }
}
server/system_service/src/main/java/com/doumee/core/utils/PasswordGenerator.java
@@ -25,7 +25,7 @@
    public static void getPasswordTypeCount(String password){
        Set<Integer> typeCount = new HashSet<>(4);
        for (int i = 0; i < password.length(); i++) {
            String key = password.substring(0,i);
            String key = password.substring(i,i+1);
            if(LOWER.indexOf(key)>=Constants.ZERO){
                typeCount.add(Constants.ZERO);
            }else if(UPPER.indexOf(key)>=Constants.ZERO){
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -325,6 +325,7 @@
                    .set(SystemUser::getProhibitStatus,Constants.ZERO)
                    .set(SystemUser::getErrTimes,Constants.ZERO)
                    .setSql(" PROHIBIT_TIME = null ")
                    .setSql(" PROHIBIT_REMARK = null ")
                    .eq(SystemUser::getId,user.getId())
            );
        }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkInterfaceLogCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.CloudRequiredPermission;
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.JkInterfaceLog;
import com.doumee.service.business.JkInterfaceLogService;
import com.doumee.service.business.third.model.ApiResponse;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/28 16:26
 */
@Api(tags = "钥匙柜接口交互记录")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/jkInterfaceLog")
public class JkInterfaceLogCloudController extends BaseController {
    @Autowired
    private JkInterfaceLogService jkInterfaceLogService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:jkinterfacelog:create")
    public ApiResponse create(@RequestBody JkInterfaceLog jkInterfaceLog) {
        return ApiResponse.success(jkInterfaceLogService.create(jkInterfaceLog));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:jkinterfacelog:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        jkInterfaceLogService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:jkinterfacelog:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        jkInterfaceLogService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:jkinterfacelog:update")
    public ApiResponse updateById(@RequestBody JkInterfaceLog jkInterfaceLog) {
        jkInterfaceLogService.updateById(jkInterfaceLog);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:jkinterfacelog:query")
    public ApiResponse<PageData<JkInterfaceLog>> findPage (@RequestBody PageWrap<JkInterfaceLog> pageWrap) {
        return ApiResponse.success(jkInterfaceLogService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:jkinterfacelog:exportExcel")
    public void exportExcel (@RequestBody PageWrap<JkInterfaceLog> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(JkInterfaceLog.class).export(jkInterfaceLogService.findPage(pageWrap).getRecords(), "钥匙柜接口交互记录", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:jkinterfacelog:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(jkInterfaceLogService.findById(id));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java
@@ -11,6 +11,7 @@
import com.doumee.dao.business.dto.*;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.dao.business.model.JkCabinetGrid;
import com.doumee.dao.business.model.JkInterfaceLog;
import com.doumee.dao.business.model.JkVersion;
import com.doumee.dao.business.vo.AdminCabinetVO;
import com.doumee.dao.business.vo.CabinetDetailVO;
@@ -52,7 +53,7 @@
    private JkCabinetGridService jkCabinetGridService;
    @Autowired
    private InterfaceLogService interfaceLogService;
    private JkInterfaceLogService interfaceLogService;
    @Autowired
    private JkIccardService jkIccardService;
@@ -86,8 +87,6 @@
        this.saveInterfaceLog(Constants.strToJson("id",id.toString()), null,"updateRunStatusById","更新钥匙柜在线状态");
        return ApiResponse.success("更新成功");
    }
    @ApiOperation("获取可管理的钥匙柜列表 - ç®¡ç†å‘˜")
    @GetMapping("/getAdminCabinetInfo")
@@ -190,7 +189,7 @@
    }
    private void saveInterfaceLog(String s, String result,String url,String name) {
        InterfaceLog hkMonitoryLogDO=new InterfaceLog();
        JkInterfaceLog hkMonitoryLogDO=new JkInterfaceLog();
        hkMonitoryLogDO.setType(0);
        hkMonitoryLogDO.setCreateDate(new Date());
        hkMonitoryLogDO.setIsdeleted(0);
@@ -200,7 +199,6 @@
        hkMonitoryLogDO.setUrl(url);
        interfaceLogService.create(hkMonitoryLogDO);
    }
    @LoginNoRequired
    @ApiOperation("酒精检测告警")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/JkInterfaceLogMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.JkInterfaceLog;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/28 16:26
 */
public interface JkInterfaceLogMapper extends BaseMapper<JkInterfaceLog> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkInterfaceLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * é’¥åŒ™æŸœæŽ¥å£äº¤äº’记录
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/28 16:26
 */
@Data
@ApiModel("钥匙柜接口交互记录")
@TableName("`jk_interface_log`")
public class JkInterfaceLog {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "类型 0调用 1推送接受", example = "1")
    @ExcelColumn(name="类型 0调用 1推送接受")
    private Integer type;
    @ApiModelProperty(value = "接口名称")
    @ExcelColumn(name="接口名称")
    private String name;
    @ApiModelProperty(value = "地址信息")
    @ExcelColumn(name="地址信息")
    private String url;
    @ApiModelProperty(value = "请求参数")
    @ExcelColumn(name="请求参数")
    private String request;
    @ApiModelProperty(value = "响应参数")
    @ExcelColumn(name="响应参数")
    private String repose;
    @ApiModelProperty(value = "调用结果 0成功 1失败", example = "1")
    @ExcelColumn(name="调用结果 0成功 1失败")
    private Integer success;
    @ApiModelProperty(value = "平台", example = "1")
    @ExcelColumn(name="平台")
    private Integer plat;
    @ApiModelProperty(value = "关联对象类型", example = "1")
    @ExcelColumn(name="关联对象类型")
    private Integer objType;
    @ApiModelProperty(value = "关联对象编码(多个用英文逗号隔开)")
    @ExcelColumn(name="关联对象编码(多个用英文逗号隔开)")
    private String objId;
    @ApiModelProperty(value = "开始时间")
    @TableField(exist = false)
    private Date startDate;
    @ApiModelProperty(value = "结束时间")
    @TableField(exist = false)
    private Date endDate;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkInterfaceLogService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.doumee.service.business;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.dao.business.model.JkInterfaceLog;
import java.util.List;
/**
 * é’¥åŒ™æŸœæŽ¥å£äº¤äº’记录Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/28 16:26
 */
public interface JkInterfaceLogService {
    /**
     * åˆ›å»º
     *
     * @param jkInterfaceLog å®žä½“对象
     * @return Integer
     */
    Integer create(JkInterfaceLog jkInterfaceLog);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param jkInterfaceLog å®žä½“对象
     */
    void delete(JkInterfaceLog jkInterfaceLog);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param jkInterfaceLog å®žä½“对象
     */
    void updateById(JkInterfaceLog jkInterfaceLog);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param jkInterfaceLogs å®žä½“集
     */
    void updateByIdInBatch(List<JkInterfaceLog> jkInterfaceLogs);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return JkInterfaceLog
     */
    JkInterfaceLog findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param jkInterfaceLog å®žä½“对象
     * @return JkInterfaceLog
     */
    JkInterfaceLog findOne(JkInterfaceLog jkInterfaceLog);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param jkInterfaceLog å®žä½“对象
     * @return List<JkInterfaceLog>
     */
    List<JkInterfaceLog> findList(JkInterfaceLog jkInterfaceLog);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<JkInterfaceLog>
     */
    PageData<JkInterfaceLog> findPage(PageWrap<JkInterfaceLog> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param jkInterfaceLog å®žä½“对象
     * @return long
     */
    long count(JkInterfaceLog jkInterfaceLog);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -356,7 +356,7 @@
    @Override
    public List<Cars> findList(Cars cars) {
        if(Objects.nonNull(cars)
        if(Objects.nonNull(cars) && Objects.nonNull(cars.getType())
        && Constants.equalsInteger(Constants.ZERO,cars.getType())){
            return this.getGwCar();
        }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -132,11 +132,15 @@
            );
            return;
        }else if(Objects.nonNull(jkCabinetGrid.getChannelCode())||Objects.nonNull(jkCabinetGrid.getBoardCode())){
            jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                    .set(Objects.nonNull(jkCabinetGrid.getChannelCode()),JkCabinetGrid::getChannelCode,jkCabinetGrid.getChannelCode())
                    .set(Objects.nonNull(jkCabinetGrid.getBoardCode()),JkCabinetGrid::getBoardCode,jkCabinetGrid.getBoardCode())
                    .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
                    .eq(JkCabinetGrid::getId,jkCabinetGrid.getId()));
            try{
                jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                        .set(Objects.nonNull(jkCabinetGrid.getChannelCode()),JkCabinetGrid::getChannelCode,jkCabinetGrid.getChannelCode())
                        .set(Objects.nonNull(jkCabinetGrid.getBoardCode()),JkCabinetGrid::getBoardCode,jkCabinetGrid.getBoardCode())
                        .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
                        .eq(JkCabinetGrid::getId,jkCabinetGrid.getId()));
            }catch (Exception e){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请确保钥匙柜通道号/板号唯一");
            }
        }
    }
@@ -183,7 +187,10 @@
                .eq(Objects.nonNull(model.getStatus()),JkCabinetGrid::getStatus,model.getStatus())
                .isNull(Objects.nonNull(model.getBindStatus())&&Constants.equalsInteger(model.getBindStatus(),Constants.ZERO),JkCabinetGrid::getKeyId)
                .isNotNull(Objects.nonNull(model.getBindStatus())&&Constants.equalsInteger(model.getBindStatus(),Constants.ONE),JkCabinetGrid::getKeyId)
                .like(StringUtils.isNotBlank(model.getKeyCode()),JkKeys::getCode,model.getKeyCode());
                .like(StringUtils.isNotBlank(model.getKeyCode()),JkKeys::getCode,model.getKeyCode())
                .orderByAsc(JkCabinetGrid::getId)
                ;
        IPage<JkCabinetGrid> iPage = jkCabinetGridMapper.selectJoinPage(page,JkCabinetGrid.class,wrapper);
        for (JkCabinetGrid jkCabinetGrid:iPage.getRecords()) {
            jkCabinetGrid.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE);
@@ -247,7 +254,7 @@
                jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                        .set(JkCabinetGrid::getKeyId,null)
                        .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
                        .eq(JkCabinetGrid::getId,jkCabinetGridList.stream().map(i->i.getId()).collect(Collectors.toList())));
                        .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(CollectionUtils.isNotEmpty(keyIdList)){
                    jkKeysMapper.update(new UpdateWrapper<JkKeys>().lambda()
@@ -384,7 +391,9 @@
                    jkCabinetLog.setGridId(jkCabinetGrid.getId());
                    jkCabinetLog.setAuthType(Constants.TWO);
                    jkCabinetLog.setMemberId(loginUserInfo.getMemberId());
                    jkCabinetLog.setStatus(Constants.ZERO);
                    if(Objects.nonNull(jkCabinetGrid.getKeyId())){
                        jkCabinetLog.setKeyId(jkCabinetGrid.getKeyId());
                        JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
                        if(Objects.nonNull(jkKeys)){
                            if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
@@ -432,10 +441,11 @@
            jkCabinetLog.setAuthType(dto.getAuthType());
            jkCabinetLog.setMemberId(dto.getMemberId());
            jkCabinetLog.setKeyStatus(Constants.ZERO);
            Boolean isChange = false;
            jkCabinetLog.setStatus(Constants.ZERO);
            if(Objects.nonNull(jkCabinetGrid.getKeyId())){
                //只有钥匙柜绑定了钥匙信息 æ‰ä¼šæ›´æ–°é’¥åŒ™çš„信息
                JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
                jkCabinetLog.setKeyId(jkCabinetGrid.getKeyId());
                if(Objects.nonNull(jkKeys)){
                    if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
                        jkCabinetLog.setCarId(jkKeys.getCarId());
@@ -445,27 +455,23 @@
                    jkCabinetLog.setKeyStatus(dto.getKeyStatus());
                    //钥匙状态与当前操作状态不一致,则进行更新钥匙状态
                    if(!Constants.equalsInteger(jkKeys.getStatus(),dto.getKeyStatus())
                    && (Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)||Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO))){
                     && (Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)||Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO))){
                        jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
                                .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
                                .set(JkKeys::getStatus,dto.getKeyStatus())
                                .eq(JkKeys::getId,jkKeys.getId())
                        );
                        isChange = true;
                    }
                }
            }
            jkCabinetLog.setType(Constants.ONE);
            jkCabinetLogMapper.insert(jkCabinetLog);
            //查询钥匙对应的借出了钥匙的开门记录 è¿›è¡Œæ·»åŠ å…³é—¨è®°å½•ä¸»é”®
            if(isChange && Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)){
                jkCabinetLogMapper.update(null,new UpdateWrapper<JkCabinetLog>().lambda()
                        .set(JkCabinetLog::getCloseLogId,jkCabinetLog.getId())
                        .eq(JkCabinetLog::getKeyId,jkCabinetLog.getKeyId())
                        .eq(JkCabinetLog::getType,Constants.ZERO)
                        .eq(JkCabinetLog::getKeyStatus,Constants.TWO)
                        .isNotNull(JkCabinetLog::getCloseLogId));
            }
            //查询钥匙的开门记录 è¿›è¡Œæ·»åŠ å…³é—¨è®°å½•ä¸»é”®
            jkCabinetLogMapper.update(null,new UpdateWrapper<JkCabinetLog>().lambda()
                    .set(JkCabinetLog::getCloseLogId,jkCabinetLog.getId())
                    .eq(JkCabinetLog::getKeyId,jkCabinetLog.getKeyId())
                    .eq(JkCabinetLog::getType,Constants.ZERO)
                    .isNull(JkCabinetLog::getCloseLogId));
        }
    }
@@ -495,7 +501,7 @@
                List<String> authMemberList =  Arrays.asList(jkCabinet.getAuthMemberId().split(","));
                Boolean flag = true;
                for (String id:authMemberList) {
                    if(id.equals(jkCabinet.getAuthMemberId())){
                    if(Arrays.asList(jkCabinet.getAuthMemberId().split(",")).contains(id)){
                        flag = false;
                        break;
                    }
@@ -513,6 +519,7 @@
                            .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                            .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                            .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
                            .eq(JkCabinetGrid::getStatus,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)
@@ -523,7 +530,7 @@
            for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
                jkCabinetGrid.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE);
                jkCabinetGrid.setKeyStatus(Objects.isNull(jkCabinetGrid.getKeyStatus())?Constants.ZERO:jkCabinetGrid.getKeyStatus());
            }
             }
        }
        return jkCabinetGridList;
@@ -554,7 +561,9 @@
        jkCabinetLog.setAuthType(openGridDriverDTO.getAuthType());
        jkCabinetLog.setMemberId(openGridDriverDTO.getMemberId());
        jkCabinetLog.setType(Constants.ZERO);
        jkCabinetLog.setStatus(Constants.ZERO);
        if(Objects.nonNull(jkCabinetGrid.getKeyId())){
            jkCabinetLog.setKeyId(jkCabinetGrid.getKeyId());
            JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
            if(Objects.nonNull(jkKeys)){
                if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
@@ -582,23 +591,23 @@
                            .last(" limit 1 ")
            );
//            if(Objects.nonNull(jkCabinetGrid)){
//                log.error("柜格开门超时未关闭告警信息:{}"+JSONObject.toJSONString(jkCabinetGrid));
//                Warning warning = warningMapper.selectOne(new QueryWrapper<Warning>().lambda()
//                        .eq(Warning::getType,Constants.THREE).eq(Warning::getCode,Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey()).eq(Warning::getIsdeleted,Constants.ZERO).last("limt 1"));
//                if(Objects.isNull(warning)){
//                    return;
//                }
//                List<Member> memberList = this.getWarningList(warning);
//                if(CollectionUtils.isEmpty(memberList)){
//                    return;
//                }
//                //存储异常日志
//
//
//            }else{
//
//            }
            if(Objects.nonNull(jkCabinetGrid)){
                log.error("柜格开门超时未关闭告警信息:{}"+JSONObject.toJSONString(jkCabinetGrid));
                Warning warning = warningMapper.selectOne(new QueryWrapper<Warning>().lambda()
                        .eq(Warning::getType,Constants.THREE).eq(Warning::getCode,Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey()).eq(Warning::getIsdeleted,Constants.ZERO).last("limt 1"));
                if(Objects.isNull(warning)){
                    return;
                }
                List<Member> memberList = this.getWarningList(warning);
                if(CollectionUtils.isEmpty(memberList)){
                    return;
                }
                //todo å­˜å‚¨å¼‚常日志
            }else{
            }
        }
    }
@@ -640,9 +649,6 @@
    public void alcoholTestAlarm(AlcoholTestAlarmDTO dto){
        if(Objects.nonNull(dto)
                && Objects.nonNull(dto.getMemberId())){
            SystemUser systemUser =
                    systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                            .eq(SystemUser::getMemberId,dto.getMemberId())
@@ -650,19 +656,21 @@
                            .last(" limit 1 ")
                    );
//            Warning warning = warningMapper.selectOne(new QueryWrapper<Warning>().lambda()
//                    .eq(Warning::getType,Constants.THREE).eq(Warning::getCode,Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey()).eq(Warning::getIsdeleted,Constants.ZERO).last("limt 1"));
//            if(Objects.isNull(warning)){
//                return;
//            }
//            List<Member> memberList = this.getWarningList(warning);
//
//
//
//            //存储异常日志
//            if(Objects.nonNull(systemUser)){
//                log.error("司机酒精检测,超出酒精值告警信息:{}"+JSONObject.toJSONString(systemUser));
//            }
            Warning warning = warningMapper.selectOne(new QueryWrapper<Warning>().lambda()
                    .eq(Warning::getType,Constants.THREE).eq(Warning::getCode,Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey()).eq(Warning::getIsdeleted,Constants.ZERO).last("limt 1"));
            if(Objects.isNull(warning)){
                return;
            }
            List<Member> memberList = this.getWarningList(warning);
            if(CollectionUtils.isEmpty(memberList)){
                return;
            }
            //todo å­˜å‚¨å¼‚常日志
            //存储异常日志
            if(Objects.nonNull(systemUser)){
                log.error("司机酒精检测,超出酒精值告警信息:{}"+JSONObject.toJSONString(systemUser));
            }
        }
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
@@ -114,6 +114,8 @@
                .eq(Objects.nonNull(model.getKeyId()),JkCabinetLog::getKeyId,model.getKeyId())
                .eq(Objects.nonNull(model.getAuthType()),JkCabinetLog::getAuthType,model.getAuthType())
                .eq(Objects.nonNull(model.getStatus()),JkCabinetLog::getStatus,model.getStatus())
                .eq(Objects.nonNull(model.getType()),JkCabinetLog::getType,model.getType())
                .in(Objects.nonNull(model.getType())&&Constants.equalsInteger(model.getType(),Constants.ONE),JkCabinetLog::getType,"1,2")
                .eq(JkCabinetLog::getIsdeleted, Constants.ZERO)
                .orderByDesc(JkCabinetLog::getCreateDate);
        IPage<JkCabinetLog>  iPage = jkCabinetLogMapper.selectJoinPage(page,JkCabinetLog.class,wrapper);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
@@ -568,7 +568,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)
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java
@@ -151,6 +151,7 @@
                .leftJoin(Member.class,Member::getId,JkIccard::getMemberId)
                .eq(JkIccard::getIsdeleted,Constants.ZERO)
                .eq(Objects.nonNull(model.getStatus()),JkIccard::getStatus,model.getStatus())
                .eq(Objects.nonNull(model.getUserType()),JkIccard::getUserType,model.getUserType())
                .like(StringUtils.isNotBlank(model.getCode()),JkIccard::getCode,model.getCode())
                .like(StringUtils.isNotBlank(model.getMemberName()),Member::getName,model.getMemberName())
                .orderByDesc(JkIccard::getCreateDate)
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkInterfaceLogServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,164 @@
package com.doumee.service.business.impl;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.JkInterfaceLogMapper;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.dao.business.model.JkInterfaceLog;
import com.doumee.service.business.JkInterfaceLogService;
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.PageData;
import com.doumee.service.business.third.model.PageWrap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
 * é’¥åŒ™æŸœæŽ¥å£äº¤äº’记录Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/28 16:26
 */
@Service
public class JkInterfaceLogServiceImpl implements JkInterfaceLogService {
    @Autowired
    private JkInterfaceLogMapper jkInterfaceLogMapper;
    @Override
    public Integer create(JkInterfaceLog jkInterfaceLog) {
        jkInterfaceLogMapper.insert(jkInterfaceLog);
        return jkInterfaceLog.getId();
    }
    @Override
    public void deleteById(Integer id) {
        jkInterfaceLogMapper.deleteById(id);
    }
    @Override
    public void delete(JkInterfaceLog jkInterfaceLog) {
        UpdateWrapper<JkInterfaceLog> deleteWrapper = new UpdateWrapper<>(jkInterfaceLog);
        jkInterfaceLogMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        jkInterfaceLogMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(JkInterfaceLog jkInterfaceLog) {
        jkInterfaceLogMapper.updateById(jkInterfaceLog);
    }
    @Override
    public void updateByIdInBatch(List<JkInterfaceLog> jkInterfaceLogs) {
        if (CollectionUtils.isEmpty(jkInterfaceLogs)) {
            return;
        }
        for (JkInterfaceLog jkInterfaceLog: jkInterfaceLogs) {
            this.updateById(jkInterfaceLog);
        }
    }
    @Override
    public JkInterfaceLog findById(Integer id) {
        return jkInterfaceLogMapper.selectById(id);
    }
    @Override
    public JkInterfaceLog findOne(JkInterfaceLog jkInterfaceLog) {
        QueryWrapper<JkInterfaceLog> wrapper = new QueryWrapper<>(jkInterfaceLog);
        return jkInterfaceLogMapper.selectOne(wrapper);
    }
    @Override
    public List<JkInterfaceLog> findList(JkInterfaceLog jkInterfaceLog) {
        QueryWrapper<JkInterfaceLog> wrapper = new QueryWrapper<>(jkInterfaceLog);
        return jkInterfaceLogMapper.selectList(wrapper);
    }
    @Override
    public PageData<JkInterfaceLog> findPage(PageWrap<JkInterfaceLog> pageWrap) {
        IPage<JkInterfaceLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<JkInterfaceLog> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(JkInterfaceLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(JkInterfaceLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(JkInterfaceLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(JkInterfaceLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getStartDate() != null) {
            queryWrapper.lambda().ge(JkInterfaceLog::getCreateDate, pageWrap.getModel().getStartDate());
        }
        if (pageWrap.getModel().getEndDate() != null) {
            queryWrapper.lambda().le(JkInterfaceLog::getCreateDate, pageWrap.getModel().getEndDate());
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getType() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getType, pageWrap.getModel().getType());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getUrl() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getUrl, pageWrap.getModel().getUrl());
        }
        if (pageWrap.getModel().getRequest() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getRequest, pageWrap.getModel().getRequest());
        }
        if (pageWrap.getModel().getRepose() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getRepose, pageWrap.getModel().getRepose());
        }
        if (pageWrap.getModel().getSuccess() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getSuccess, pageWrap.getModel().getSuccess());
        }
        if (pageWrap.getModel().getPlat() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getPlat, pageWrap.getModel().getPlat());
        }
        if (pageWrap.getModel().getObjType() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getObjType, pageWrap.getModel().getObjType());
        }
        if (pageWrap.getModel().getObjId() != null) {
            queryWrapper.lambda().eq(JkInterfaceLog::getObjId, pageWrap.getModel().getObjId());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(jkInterfaceLogMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(JkInterfaceLog jkInterfaceLog) {
        QueryWrapper<JkInterfaceLog> wrapper = new QueryWrapper<>(jkInterfaceLog);
        return jkInterfaceLogMapper.selectCount(wrapper);
    }
}