rk
20 小时以前 9fdd262881ef10d79e75d8e91d36fef88f774073
钥匙柜信息处理
已添加3个文件
已修改21个文件
412 ■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/java/com/doumee/api/JkCabinetTimerController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/resources/bootstrap.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/AbnormalOpenGridDTO.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/AlcoholTestAlarmDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/QueryUserByCodeDTO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCustomer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkKeys.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkIccardService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java 138 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -790,7 +790,7 @@
                String t = reversedHex.substring(i*2,i*2+2);
                result += new StringBuilder(t).reverse().toString();
            }
            return result;
            return result.toUpperCase();
        }catch (Exception e){
        }
@@ -1523,9 +1523,9 @@
    public  enum WarningConfig {
        ALARM_TEST(10002, "酒精测试"),
        GRID_TIME_OUT_INFO(10003, "开门超时未关闭"),
        KEY_TIME_OUT_BACK(10004, "钥匙超时未归还"),
        ALARM_TEST(10002, "【钥匙柜】酒精测试异常"),
        GRID_TIME_OUT_INFO(10003, "【钥匙柜】开门超时未关闭"),
        KEY_TIME_OUT_BACK(10004, "【钥匙柜】钥匙超时未归还"),
        ;
        // æˆå‘˜å˜é‡
        private int key;
server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
@@ -115,4 +115,7 @@
    @PostMapping("/timer/systemUserJob/jobForOpenProhibitStatus")
    ApiResponse jobForOpenProhibitStatus();
    @ApiOperation("【钥匙柜】定时发送钥匙未及时归还通知")
    @PostMapping("/timer/jkCabinet/timeOutUnBackAlarm")
    ApiResponse timeOutUnBackAlarm();
}
server/visits/admin_timer/src/main/java/com/doumee/api/JkCabinetTimerController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.doumee.api;
import com.doumee.service.business.JkCabinetLogService;
import com.doumee.service.business.JkCustomerService;
import com.doumee.service.business.impl.JkCabinetGridServiceImpl;
import com.doumee.service.business.third.model.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Api(tags = "钥匙柜定时器")
@RestController
@RequestMapping("/timer/jkCabinet")
public class JkCabinetTimerController extends BaseController {
    @Autowired
    private JkCabinetLogService jkCabinetLogService;
    @Autowired
    private JkCabinetGridServiceImpl impl;
    @ApiOperation("定时发送钥匙未及时归还通知")
    @PostMapping("/timeOutUnBackAlarm")
    public ApiResponse timeOutUnBackAlarm() {
        jkCabinetLogService.timeOutUnBackAlarm(impl);
        return ApiResponse.success("定时发送钥匙未及时归还通知");
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java
@@ -183,9 +183,9 @@
    @LoginNoRequired
    @ApiOperation("获取IC卡用户主键 - å¸æœº")
    @PostMapping("/getMemberIdByCode")
    public ApiResponse<Integer> getMemberIdByCode(@RequestParam String code) {
        this.saveInterfaceLog(Constants.strToJson("code",code), null,"getMemberIdByCode","获取IC卡用户主键 - å¸æœº");
        return ApiResponse.success(jkIccardService.getMemberIdByCode(code));
    public ApiResponse<Integer> getMemberIdByCode(@RequestBody QueryUserByCodeDTO dto) {
        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"getMemberIdByCode","获取IC卡用户主键 - å¸æœº");
        return ApiResponse.success(jkIccardService.getMemberIdByCode(dto));
    }
    private void saveInterfaceLog(String s, String result,String url,String name) {
server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: dev
    active: test
  application:
    name: visitsAdmin
    # å®‰å…¨é…ç½®
server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java
@@ -519,7 +519,6 @@
    /**
     * å®‰é˜²/消防 markdown
     * @param hiddenDanger
     * @return
     */
    public OapiMessageCorpconversationAsyncsendV2Request.Msg getAlarmNoticeMsg(String areaName,String submitTime,String infoType){
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/AbnormalOpenGridDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.doumee.dao.business.dto;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2025/10/11 16:01
 */
@Data
public class AbnormalOpenGridDTO {
    @ApiModelProperty(value = "钥匙柜主键")
    private Integer cabinetId;
    @ApiModelProperty(value = "板号")
    private String boardCode;
    @ApiModelProperty(value = "通道号")
    private String channelCode;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/AlcoholTestAlarmDTO.java
@@ -18,5 +18,8 @@
    @ApiModelProperty(value = "酒精度数")
    private String alcoholNum;
    @ApiModelProperty(value = "钥匙柜主键")
    private Integer cabinetId;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java
@@ -25,4 +25,6 @@
    @ApiModelProperty(value = "用户主键")
    private Integer memberId;
    @ApiModelProperty(value = "开启方式:0=系统开启;1=手动开启")
    private Integer openType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java
@@ -21,4 +21,6 @@
    @ApiModelProperty(value = "柜格主键列表")
    private List<Integer> gridIdList;
    @ApiModelProperty(value = "开启方式:0=系统开启;1=手动开启")
    private Integer openType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/QueryUserByCodeDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.doumee.dao.business.dto;
import com.doumee.core.annotation.excel.ExcelColumn;
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 QueryUserByCodeDTO {
    @ApiModelProperty(value = "IC卡号")
    private String code;
    @ApiModelProperty(value = "关联人员类型:0=司机;1=校验人员", example = "1")
    private Integer userType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
@@ -44,7 +44,7 @@
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ApiModelProperty(value = "备注 è®°å½•开门方式")
    private String info;
    @ApiModelProperty(value = "钥匙柜编码(关联jk_cabinet)", example = "1")
@@ -90,6 +90,8 @@
    @ApiModelProperty(value = "操作后钥匙状态:0未变化;1已归还;2已借出;", example = "1")
    private Integer keyStatus;
    @ApiModelProperty(value = "是否发送通知:0=否;1=是;", example = "1")
    private Integer isNotice;
    @ApiModelProperty(value = "归还时间")
    @TableField(exist = false)
@@ -101,7 +103,7 @@
    private String companyName;
    @ApiModelProperty(value = "操作人名称", example = "1")
    @ExcelColumn(name="操作人",index = 1,width = 2)
    @ExcelColumn(name="操作人",index = 1,width = 12)
    @TableField(exist = false)
    private String memberName;
@@ -125,4 +127,8 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
    @ApiModelProperty(value = "所在位置")
    @TableField(exist = false)
    private String location;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCustomer.java
@@ -79,7 +79,7 @@
    private String sortno;
    @ApiModelProperty(value = "经纬度", example = "1")
    @ExcelColumn(name="经纬度",index = 3,width = 10)
    @ExcelColumn(name="经纬度",index = 4,width = 10)
    @TableField(exist = false)
    private String locationInfo;
    @ApiModelProperty(value = "送货路线编码(关联jk_line)", example = "1")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkKeys.java
@@ -78,6 +78,11 @@
    private Integer status;
    @ApiModelProperty(value = "标签明码 åŠ å¯†åŽç”Ÿæˆ rfid_lable", example = "1")
    @ExcelColumn(name="标签明码 åŠ å¯†åŽç”Ÿæˆ rfid_lable")
    private String rfidCode;
    @ApiModelProperty(value = "存放位置", example = "1")
    @TableField(exist = false)
    private String gridCode;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java
@@ -35,7 +35,6 @@
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
@@ -44,7 +43,6 @@
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java
@@ -82,7 +82,7 @@
    @ApiModelProperty(value = "所在位置")
    //@ExcelColumn(name="推送标识")
    private String pushId;
    @ApiModelProperty(value = "推送标识")
    @ApiModelProperty(value = "所在位置")
    @ExcelColumn(name="所在位置",width=10,index = 5)
    private String region;
@@ -94,6 +94,15 @@
    //@ExcelColumn(name="推送方式 0钉钉通知")
    private Integer pushType;
    @ApiModelProperty(value = "人员编码,多个以,分割", example = "1")
    //@ExcelColumn(name="推送方式 0钉钉通知")
    private String memberIds;
    @ApiModelProperty(value = "人员名称,多个以,分割", example = "1")
    //@ExcelColumn(name="推送方式 0钉钉通知")
    private String memberNames;
    @ApiModelProperty(value = "事件分类 0=安防事件;1=消防事件;2=车载事件;3=钥匙柜事件; 4=天气预警;", example = "1")
    @ExcelColumn(name="事件分类",valueMapping = "0=安防事件;1=消防事件;2=车载事件;3=钥匙柜事件;4=天气预警;",width=10,index = 3)
    @TableField(exist = false)
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java
@@ -2,6 +2,7 @@
import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
import com.doumee.service.business.impl.JkCabinetGridServiceImpl;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.dao.business.model.JkCabinetLog;
@@ -103,4 +104,8 @@
     * @return
     */
    List<TelecomJkCabinetLogVO> getLogListForTelecom(TelecomCabinetLogDTO model);
    void timeOutUnBackAlarm(JkCabinetGridServiceImpl impl);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkIccardService.java
@@ -1,5 +1,6 @@
package com.doumee.service.business;
import com.doumee.dao.business.dto.QueryUserByCodeDTO;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.dao.business.model.JkIccard;
@@ -97,5 +98,5 @@
    void updateStatusById(JkIccard jkIccard);
    Integer getMemberIdByCode(String code);
    Integer getMemberIdByCode(QueryUserByCodeDTO dto);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.dingTalk.DingTalk;
import com.doumee.core.dingTalk.DingTalkStream;
@@ -58,14 +59,20 @@
    @Autowired
    private JkCabinetLogMapper jkCabinetLogMapper;
    @Autowired
    private WarningMapper warningMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private WarningMapper warningMapper;
    @Autowired
    private WarningRuleMapper warningRuleMapper;
    @Autowired
    private WarningPushMapper warningPushMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private DingTalk dingTalk;
@@ -179,7 +186,7 @@
        MPJLambdaWrapper<JkCabinetGrid> wrapper = new MPJLambdaWrapper<JkCabinetGrid>()
                .selectAll(JkCabinetGrid.class)
                .selectAs(JkCabinet::getName,JkCabinetGrid::getCabinetName)
                .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
                .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetGrid::getCabinetId)
                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
@@ -310,7 +317,7 @@
        }
        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
                new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
                        .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
                        .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                        .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                        .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
@@ -392,6 +399,8 @@
                    jkCabinetLog.setAuthType(Constants.TWO);
                    jkCabinetLog.setMemberId(loginUserInfo.getMemberId());
                    jkCabinetLog.setStatus(Constants.ZERO);
                    jkCabinetLog.setIsNotice(Constants.ZERO);
                    jkCabinetLog.setInfo(Objects.isNull(dto.getOpenType())||Constants.equalsInteger(dto.getOpenType(),Constants.ZERO)?"系统开启":"手动开启");
                    if(Objects.nonNull(jkCabinetGrid.getKeyId())){
                        jkCabinetLog.setKeyId(jkCabinetGrid.getKeyId());
                        JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
@@ -406,6 +415,7 @@
                    jkCabinetLog.setType(Constants.ZERO);
                    jkCabinetLogs.add(jkCabinetLog);
                }
                jkCabinetLogMapper.insert(jkCabinetLogs);
            }
        }
@@ -464,18 +474,50 @@
                    }
                }
            }
            jkCabinetLog.setIsNotice(Constants.ZERO);
            jkCabinetLog.setType(Constants.ONE);
            jkCabinetLogMapper.insert(jkCabinetLog);
            //查询钥匙的开门记录 è¿›è¡Œæ·»åŠ å…³é—¨è®°å½•ä¸»é”®
            if(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::getType,Constants.ONE)
                        .eq(JkCabinetLog::getKeyStatus,Constants.TWO)
                    .isNull(JkCabinetLog::getCloseLogId));
        }
        }
    }
//    public void saveAbnormalOpenGridLog(AbnormalOpenGridDTO dto){
//        if(Objects.isNull(dto)
//                || StringUtils.isBlank(dto.getBoardCode())
//                || StringUtils.isBlank(dto.getBoardCode())
//                || Objects.isNull(dto.getCabinetId())
//                || Objects.isNull(dto.getKeyStatus())
//                || Objects.isNull(dto.getAuthType())
//        ){
//            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 ")
//        );
//        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());
//        jkCabinetLog.setKeyStatus(Constants.ZERO);
//        jkCabinetLog.setStatus(Constants.ZERO);
//
//    }
    /**
@@ -512,7 +554,7 @@
            }
            jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
                    new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
                            .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
                            .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                            .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                            .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
                            .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
@@ -551,10 +593,8 @@
        if(Objects.isNull(jkCabinetGrid)){
            return ;
        }
//        LoginUserInfo loginUserInfo = openGridDriverDTO.getLoginUserInfo();
        JkCabinetLog jkCabinetLog = new JkCabinetLog();
        jkCabinetLog.setCreateDate(new Date());
//        jkCabinetLog.setCreator(loginUserInfo.getId());
        jkCabinetLog.setIsdeleted(Constants.ZERO);
        jkCabinetLog.setCabinetId(openGridDriverDTO.getCabinetId());
        jkCabinetLog.setGridId(jkCabinetGrid.getId());
@@ -562,6 +602,7 @@
        jkCabinetLog.setMemberId(openGridDriverDTO.getMemberId());
        jkCabinetLog.setType(Constants.ZERO);
        jkCabinetLog.setStatus(Constants.ZERO);
        jkCabinetLog.setInfo(Objects.isNull(openGridDriverDTO.getOpenType())||Constants.equalsInteger(openGridDriverDTO.getOpenType(),Constants.ZERO)?"系统开启":"手动开启");
        if(Objects.nonNull(jkCabinetGrid.getKeyId())){
            jkCabinetLog.setKeyId(jkCabinetGrid.getKeyId());
            JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
@@ -573,6 +614,7 @@
                jkCabinetLog.setRoleType(jkKeys.getRoleType());
            }
        }
        jkCabinetLog.setIsNotice(Constants.ZERO);
        jkCabinetLogMapper.insert(jkCabinetLog);
    }
@@ -593,8 +635,9 @@
            if(Objects.nonNull(jkCabinetGrid)){
                log.error("柜格开门超时未关闭告警信息:{}"+JSONObject.toJSONString(jkCabinetGrid));
                Constants.WarningConfig warningConfig = Constants.WarningConfig.GRID_TIME_OUT_INFO;
                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"));
                        .eq(Warning::getType,Constants.THREE).eq(Warning::getCode,warningConfig.getKey()).eq(Warning::getIsdeleted,Constants.ZERO).last("limt 1"));
                if(Objects.isNull(warning)){
                    return;
                }
@@ -602,10 +645,33 @@
                if(CollectionUtils.isEmpty(memberList)){
                    return;
                }
                //todo å­˜å‚¨å¼‚常日志
                JkCabinet jkCabinet = jkCabinetMapper.selectById(dto.getCabinetId());
                // å­˜å‚¨å¼‚常日志
                WarningPush warningPush = new WarningPush();
                warningPush.setCreateDate(new Date());
                warningPush.setIsdeleted(Constants.ZERO);
                warningPush.setWarningId(warning.getId());
                warningPush.setTitle(warningConfig.getInfo());
                String content = "【钥匙柜-"+jkCabinetGrid.getCabinetName()+"】下【柜格-"+jkCabinetGrid.getCode()+"】超时未关闭";
                warningPush.setContent(content);
                warningPush.setStatus(Constants.ZERO);
                warningPush.setPushType(Constants.ZERO);
                warningPush.setRegion(Objects.nonNull(jkCabinet)&&StringUtils.isNotBlank(jkCabinet.getLocation())?jkCabinet.getLocation():"未知位置");
                warningPush.setMemberIds(
                        StringUtils.join(memberList.stream().map(i->i.getId()).collect(Collectors.toList()),",")
                );
                warningPush.setMemberIds(
                        StringUtils.join(memberList.stream().map(i->i.getId()).collect(Collectors.toList()),",")
                );
                warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i->i.getName()).collect(Collectors.toList()),",")
                );
                //todo æš‚时关闭 é’‰é’‰é€šçŸ¥
            }else{
//            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
//                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
//                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content));
//            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
                warningPushMapper.insert(warningPush);
            }
        }
@@ -638,9 +704,6 @@
            }
        }
        return memberList;
    }
@@ -656,8 +719,10 @@
                            .last(" limit 1 ")
                    );
            JkCabinet jkCabinet = jkCabinetMapper.selectById(dto.getCabinetId());
            Constants.WarningConfig warningConfig = Constants.WarningConfig.ALARM_TEST;
            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"));
                    .eq(Warning::getType,Constants.THREE).eq(Warning::getCode,warningConfig.getKey()).eq(Warning::getIsdeleted,Constants.ZERO).last("limt 1"));
            if(Objects.isNull(warning)){
                return;
            }
@@ -665,8 +730,44 @@
            if(CollectionUtils.isEmpty(memberList)){
                return;
            }
            //todo å­˜å‚¨å¼‚常日志
            // å­˜å‚¨å¼‚常日志
            WarningPush warningPush = new WarningPush();
            warningPush.setCreateDate(new Date());
            warningPush.setIsdeleted(Constants.ZERO);
            warningPush.setWarningId(warning.getId());
            warningPush.setTitle(warningConfig.getInfo());
            String content = "";
            if(Objects.nonNull(systemUser.getRealname())){
                content = content + systemUser.getRealname();
            }
            if(Objects.nonNull(jkCabinet)){
                content = content + "于"+jkCabinet.getName()+"钥匙柜";
            }
            content = content + "酒精检测异常";
            warningPush.setContent(content + "酒精检测异常,酒精度数【"+dto.getAlcoholNum()+"°】");
            if(Objects.nonNull(dto.getAlcoholNum())){
                content = content + ",酒精度数【"+dto.getAlcoholNum()+"°】";
            }
            warningPush.setContent(content);
            warningPush.setStatus(Constants.ZERO);
            warningPush.setPushType(Constants.ZERO);
            warningPush.setRegion(Objects.nonNull(jkCabinet)&&StringUtils.isNotBlank(jkCabinet.getLocation())?jkCabinet.getLocation():"未知位置");
            warningPush.setMemberId(dto.getMemberId());
            warningPush.setMemberIds(
                    StringUtils.join(memberList.stream().map(i->i.getId()).collect(Collectors.toList()),",")
            );
            warningPush.setMemberIds(
                    StringUtils.join(memberList.stream().map(i->i.getId()).collect(Collectors.toList()),",")
            );
            warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i->i.getName()).collect(Collectors.toList()),",")
            );
            //todo æš‚时关闭 é’‰é’‰é€šçŸ¥
//            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
//                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
//                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),warningConfig.getInfo()));
//            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
            warningPushMapper.insert(warningPush);
            //存储异常日志
            if(Objects.nonNull(systemUser)){
                log.error("司机酒精检测,超出酒精值告警信息:{}"+JSONObject.toJSONString(systemUser));
@@ -675,4 +776,7 @@
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
@@ -1,7 +1,11 @@
package com.doumee.service.business.impl;
import cn.hutool.core.bean.BeanUtil;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.WarningMapper;
import com.doumee.dao.business.WarningPushMapper;
import com.doumee.dao.business.WarningRuleMapper;
import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
@@ -21,8 +25,10 @@
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * é’¥åŒ™æŸœå¼€å…³é—¨è®°å½•Service实现
@@ -35,6 +41,16 @@
    @Autowired
    private JkCabinetLogMapper jkCabinetLogMapper;
    @Autowired
    private WarningMapper warningMapper;
    @Autowired
    private WarningRuleMapper warningRuleMapper;
    @Autowired
    private WarningPushMapper warningPushMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(JkCabinetLog jkCabinetLog) {
        jkCabinetLogMapper.insert(jkCabinetLog);
@@ -154,6 +170,7 @@
                .ge(Objects.nonNull(model.getStartDate()),JkCabinetLog::getCreateDate, Utils.Date.getStart(model.getStartDate()))
                .le(Objects.nonNull(model.getEndDate()),JkCabinetLog::getCreateDate, Utils.Date.getEnd(model.getEndDate()))
                .eq(JkCabinetLog::getIsdeleted, Constants.ZERO)
                .eq(JkCabinetLog::getType,Constants.ONE)
                .eq(JkCabinetLog::getKeyStatus,Constants.TWO)
                .orderByDesc(JkCabinetLog::getCreateDate);
        List<JkCabinetLog> jkCabinetLogs = jkCabinetLogMapper.selectJoinList(JkCabinetLog.class,wrapper);
@@ -171,5 +188,68 @@
    @Override
    public void timeOutUnBackAlarm(JkCabinetGridServiceImpl impl){
        Constants.WarningConfig warningConfig = Constants.WarningConfig.KEY_TIME_OUT_BACK;
        Warning warning = warningMapper.selectOne(new QueryWrapper<Warning>().lambda()
                .eq(Warning::getType,Constants.THREE).eq(Warning::getCode,warningConfig.getKey()).eq(Warning::getIsdeleted,Constants.ZERO).last("limt 1"));
        if(Objects.isNull(warning)){
            return;
        }
        MPJLambdaWrapper<JkCabinetLog> wrapper = new MPJLambdaWrapper<JkCabinetLog>()
                .selectAll(JkCabinetLog.class)
                .selectAs(Member::getName,JkCabinetLog::getMemberName)
                .selectAs(JkKeys::getCode,JkCabinetLog::getCarCode)
                .selectAs(JkCabinet::getLocation,JkCabinetLog::getLocation)
                .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetLog::getCabinetId)
                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetLog::getKeyId)
                .leftJoin(Member.class,Member::getId,JkCabinetLog::getMemberId)
                .eq(JkCabinetLog::getIsdeleted,Constants.ZERO)
                .eq(JkCabinetLog::getType,Constants.ONE)
                .eq(JkCabinetLog::getIsNotice,Constants.ZERO)
                .eq(JkKeys::getStatus,Constants.TWO)
                .isNull(JkCabinetLog::getCloseLogId)
                .apply(" now() >  DATE_ADD(t.CREATE_DATE, INTERVAL ifnull(t1.USE_TIME,0) MINUTE) ")
                .orderByDesc(JkCabinetLog::getCreateDate);
        List<JkCabinetLog> jkCabinetLogs = jkCabinetLogMapper.selectJoinList(JkCabinetLog.class,wrapper);
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jkCabinetLogs)){
            List<Member> memberList = impl.getWarningList(warning);
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){
                for (JkCabinetLog jkCabinetLog:jkCabinetLogs) {
                    WarningPush warningPush = new WarningPush();
                    warningPush.setCreateDate(new Date());
                    warningPush.setIsdeleted(Constants.ZERO);
                    warningPush.setWarningId(warning.getId());
                    warningPush.setTitle(warningConfig.getInfo());
                    String content = "【车辆-"+jkCabinetLog.getCarCode()+"钥匙】由+"+(StringUtils.isNotBlank(jkCabinetLog.getMemberName())?jkCabinetLog.getMemberName():"未知人员")+"借出,超时未归还";
                    warningPush.setContent(content);
                    warningPush.setStatus(Constants.ZERO);
                    warningPush.setPushType(Constants.ZERO);
                    warningPush.setRegion( StringUtils.isNotBlank(jkCabinetLog.getLocation())?jkCabinetLog.getLocation():"未知位置");
                    warningPush.setMemberIds(
                            StringUtils.join(memberList.stream().map(i->i.getId()).collect(Collectors.toList()),",")
                    );
                    warningPush.setMemberIds(
                            StringUtils.join(memberList.stream().map(i->i.getId()).collect(Collectors.toList()),",")
                    );
                    warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i->i.getName()).collect(Collectors.toList()),",")
                    );
                    //todo æš‚时关闭 é’‰é’‰é€šçŸ¥
    //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
    //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
    //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content));
    //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
                    warningPushMapper.insert(warningPush);
                }
            }
        }
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
@@ -85,7 +85,7 @@
            || Objects.isNull(jkCabinet.getSortType())
            || (
                Constants.equalsInteger(jkCabinet.getNoType(),Constants.ONE)
                && ( Objects.isNull(jkCabinet.getNoIndex()) || Objects.isNull(jkCabinet.getNoLength()) || StringUtils.isBlank(jkCabinet.getNoPrefix()) )
                && ( Objects.isNull(jkCabinet.getNoIndex()) || Objects.isNull(jkCabinet.getNoLength()) )
                )
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -134,7 +134,7 @@
            if(Constants.equalsInteger(jkCabinet.getNoType(),Constants.ZERO)){
                grid.setCode(StringUtils.leftPad(startNo.toString(),maxNum.toString().length()+1,"0"));
            }else{
                grid.setCode(jkCabinet.getNoPrefix() +  StringUtils.leftPad(startNo.toString(),jkCabinet.getNoLength(),"0"));
                grid.setCode(StringUtils.isNotBlank(jkCabinet.getNoPrefix())?jkCabinet.getNoPrefix():"" +  StringUtils.leftPad(startNo.toString(),jkCabinet.getNoLength(),"0"));
            }
            jkCabinetGridList.add(grid);
@@ -412,7 +412,7 @@
                jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>()
                .selectAll(JkCabinetGrid.class)
                .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
                .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
@@ -504,7 +504,7 @@
            List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                    .eq(Member::getIsdeleted,Constants.ZERO)
                    .isNotNull(Member::getFaceImg)
                    .apply(" FIND_IN_SET( id ,'"+jkCabinet.getManagerId()+"') ")
                    .apply(" FIND_IN_SET( id ,'"+jkCabinet.getAuthMemberId()+"') ")
            );
            if(CollectionUtils.isNotEmpty(memberList)){
                for (Member member:memberList) {
@@ -541,7 +541,7 @@
                            .selectAll(JkCabinetGrid.class)
                            .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                            .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
                            .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
                            .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                            .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                            .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                            .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId())
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java
@@ -4,6 +4,7 @@
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.dto.QueryUserByCodeDTO;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.third.model.LoginUserInfo;
@@ -181,16 +182,24 @@
    @Override
    public Integer getMemberIdByCode(String code){
    public Integer getMemberIdByCode(QueryUserByCodeDTO dto){
        if(Objects.isNull(dto)
        || Objects.isNull(dto.getUserType())
        || StringUtils.isBlank(dto.getCode())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        JkIccard jkIccard = jkIccardMapper.selectOne(new QueryWrapper<JkIccard>().lambda()
                .eq(JkIccard::getIsdeleted,Constants.ZERO)
                .eq(JkIccard::getStatus,Constants.ONE)
                .eq(JkIccard::getCode,code)
                .eq(JkIccard::getUserType,dto.getUserType())
                .eq(JkIccard::getCode,dto.getCode())
                .last(" limit 1 ")
        );
        if(Objects.isNull(jkIccard)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!Constants.equalsInteger(jkIccard.getStatus(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前IC卡已被禁用!");
        }
        return jkIccard.getMemberId();
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
@@ -49,7 +49,7 @@
        || Objects.isNull(jkKeys.getCarId())
        || Objects.isNull(jkKeys.getRoleType())
        || StringUtils.isBlank(jkKeys.getCode())
        || StringUtils.isBlank(jkKeys.getRfidLable())
        || StringUtils.isBlank(jkKeys.getRfidCode())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
@@ -65,10 +65,15 @@
        if(Objects.nonNull(carsKeys)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前车辆已被钥匙["+carsKeys.getCode()+"]绑定使用!");
        }
        JkKeys rfidKeys = jkKeysMapper.selectOne(new QueryWrapper<JkKeys>().lambda().eq(JkKeys::getRfidLable,jkKeys.getRfidLable()).eq(JkKeys::getIsdeleted,Constants.ZERO).last("limit 1"));
        JkKeys rfidKeys = jkKeysMapper.selectOne(new QueryWrapper<JkKeys>().lambda().eq(JkKeys::getRfidCode,jkKeys.getRfidCode()).eq(JkKeys::getIsdeleted,Constants.ZERO).last("limit 1"));
        if(Objects.nonNull(rfidKeys)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前RFID标签已被钥匙["+rfidKeys.getCode()+"]使用!");
        }
        String lable = Constants.getRFIDNumber(jkKeys.getRfidCode());
        if(StringUtils.isEmpty(lable)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"RFID标签设置失败【格式不正确】");
        }
        jkKeys.setRfidLable(lable);
        LoginUserInfo loginUserInfo = jkKeys.getLoginUserInfo();
        jkKeys.setCreateDate(new Date());
        jkKeys.setEditDate(jkKeys.getCreateDate());
@@ -114,10 +119,15 @@
                || Objects.isNull(jkKeys.getCarId())
                || Objects.isNull(jkKeys.getRoleType())
                || StringUtils.isBlank(jkKeys.getCode())
                || StringUtils.isBlank(jkKeys.getRfidLable())
                || StringUtils.isBlank(jkKeys.getRfidCode())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        String lable = Constants.getRFIDNumber(jkKeys.getRfidCode());
        if(StringUtils.isEmpty(lable)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"RFID标签设置失败【格式不正确】");
        }
        jkKeys.setRfidLable(lable);
        //查询编号是否重复
        if(jkKeysMapper.selectCount(new QueryWrapper<JkKeys>().lambda().ne(JkKeys::getId,jkKeys.getId()).eq(JkKeys::getCode,jkKeys.getCode()).eq(JkKeys::getIsdeleted,Constants.ZERO))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"钥匙编号已存在!");
@@ -134,6 +144,7 @@
        if(Objects.nonNull(rfidKeys)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前RFID标签已被钥匙["+rfidKeys.getCode()+"]使用!");
        }
        LoginUserInfo loginUserInfo = jkKeys.getLoginUserInfo();
        jkKeys.setEditDate(new Date());
        jkKeys.setEditor(loginUserInfo.getId());