rk
7 小时以前 2f65c9f0c9dae7c192a81a79d94b7eba614c8b23
钥匙柜大屏
已添加6个文件
已修改10个文件
548 ■■■■■ 文件已修改
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/CabinetBoardController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CabinetBoardUseRecordDTO.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardDataVO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardUseRecordVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningDataVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningRataDataVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/CabinetBoardController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package com.doumee.cloud.board;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.utils.Constants;
import com.doumee.dao.admin.response.InterestedListVO;
import com.doumee.dao.business.dto.CabinetBoardUseRecordDTO;
import com.doumee.dao.business.model.Warning;
import com.doumee.dao.business.model.WarningEvent;
import com.doumee.dao.business.vo.CabinetBoardDataVO;
import com.doumee.dao.business.vo.CabinetBoardUseRecordVO;
import com.doumee.dao.business.vo.CabinetBoardWaningRataDataVO;
import com.doumee.dao.web.response.platformReport.OnSitDispatchBoardVO;
import com.doumee.service.business.*;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2025/11/17 9:06
 */
@Api(tags = "【钥匙柜】看板大屏接口")
@RestController
@Slf4j
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/cabinet")
public class CabinetBoardController extends BaseController {
    @Autowired
    private JkCabinetService jkCabinetService;
    @Autowired
    private JkCabinetGridService jkCabinetGridService;
    @Autowired
    private JkCabinetLogService jkCabinetLogService;
    @Autowired
    private CarUseBookService carUseBookService;
    @Autowired
    private WarningService warningService;
    @LoginNoRequired
    @ApiOperation("中心数据-钥匙柜基本数据")
    @GetMapping("/getCabinetGridData")
    public ApiResponse<CabinetBoardDataVO> getCabinetGridData() {
        CabinetBoardDataVO data = jkCabinetGridService.getCabinetGridData();
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("钥匙领取归还记录")
    @PostMapping("/getKeyUseRecord")
    public ApiResponse<List<CabinetBoardUseRecordVO>> getKeyUseRecord(@RequestBody CabinetBoardUseRecordDTO dto) {
        return ApiResponse.success(jkCabinetLogService.getKeyUseRecord(dto));
    }
    @LoginNoRequired
    @ApiOperation("派车统计")
    @GetMapping("/getCarUseStatistics")
    public ApiResponse<List<InterestedListVO>> getCarUseStatistics(@RequestParam Integer type) {
        return ApiResponse.success(carUseBookService.getCarUseStatistics(type));
    }
    @LoginNoRequired
    @ApiOperation("钥匙领取归还记录统计")
    @GetMapping("/getKeyUseStatistics")
    public ApiResponse<List<InterestedListVO>> getKeyUseStatistics(@RequestParam Integer type) {
        return ApiResponse.success(jkCabinetLogService.getKeyUseStatistics(type));
    }
    @LoginNoRequired
    @ApiOperation("告警记录 - æ˜Žç»†")
    @PostMapping("/getCabinetBoardWarningPage")
    public ApiResponse<PageData<WarningEvent>> getCabinetBoardWarningPage (@RequestBody PageWrap<WarningEvent> pageWrap) {
        return ApiResponse.success(warningService.getCabinetBoardWarningPage(pageWrap));
    }
    @LoginNoRequired
    @ApiOperation("告警记录 - åˆ†å¸ƒ")
    @GetMapping("/getWarningRataData")
    public ApiResponse<CabinetBoardWaningRataDataVO> getWarningRataData(@RequestParam Integer type) {
        return ApiResponse.success(warningService.getCabinetBoardWarningRataData(type));
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/InterestedListVO.java
@@ -23,4 +23,7 @@
    @ApiModelProperty(value = "名称")
    private String name;
    @ApiModelProperty(value = "数量2")
    private Integer nextNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CabinetBoardUseRecordDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.doumee.dao.business.dto;
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 2025/10/11 16:01
 */
@Data
public class CabinetBoardUseRecordDTO {
    @ApiModelProperty(value = "类型:0=未归还;1=已归还")
    private Integer status;
    @ApiModelProperty(value = "车牌号")
    private String carCode;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java
@@ -126,8 +126,14 @@
    @ExcelColumn(name="事件等级",valueMapping = "0=低;1=中;2=高;",width=10,index = 4)
    @TableField(exist = false)
    private Integer warningLevel;
    @ApiModelProperty(value = "事件编码")
    @TableField(exist = false)
    private String warningCode;
    @ApiModelProperty(value = "创建人名称")
    @TableField(exist = false)
    private String createUserName;
    @ApiModelProperty(value = "查询时间开始  ")
    @TableField(exist = false)
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
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 CabinetBoardDataVO {
    @ApiModelProperty(value = "柜格总数")
    private Integer gridNum;
    @ApiModelProperty(value = "在位钥匙数")
    private Integer onlineKeyNum;
    @ApiModelProperty(value = "借出数量")
    private Integer outKeyNum;
    @ApiModelProperty(value = "维修保养钥匙数")
    private Integer serviceKeyNum;
    @ApiModelProperty(value = "未绑定柜体数量")
    private Integer unBindGridNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardUseRecordVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.doumee.dao.business.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * é’¥åŒ™æŸœå¼€å…³é—¨è®°å½•
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/28 09:01
 */
@Data
@ApiModel("钥匙柜钥匙领取记录")
public class CabinetBoardUseRecordVO {
    @ApiModelProperty(value = "领取时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "归还时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date returnDate;
    @ApiModelProperty(value = "状态:0=未归还;1=已归还;")
    private Integer status;
    @ApiModelProperty(value = "车牌号")
    private String carCode;
    @ApiModelProperty(value = "操作人名称", example = "1")
    private String memberName;
    @ApiModelProperty(value = "备注", example = "1")
    private String remark;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.doumee.dao.business.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/5/23 14:56
 */
@Data
public class CabinetBoardWaningDataVO {
    @ApiModelProperty(value = "酒精检测告警数量")
    private Integer gridNum;
    @ApiModelProperty(value = "柜门未关闭告警数量")
    private Integer onlineKeyNum;
    @ApiModelProperty(value = "超时未归还告警")
    private Integer outKeyNum;
    @ApiModelProperty(value = "维修保养钥匙数")
    private Integer serviceKeyNum;
    @ApiModelProperty(value = "未绑定柜体数量")
    private Integer unBindGridNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetBoardWaningRataDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.doumee.dao.business.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/5/23 14:56
 */
@Data
public class CabinetBoardWaningRataDataVO {
    @ApiModelProperty(value = "酒精检测数量")
    private Integer alcoholNum;
    @ApiModelProperty(value = "柜门未关闭告警数量")
    private Integer unCloseNum;
    @ApiModelProperty(value = "超时未归还告警")
    private Integer timeOutNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
@@ -1,5 +1,6 @@
package com.doumee.service.business;
import com.doumee.dao.admin.response.InterestedListVO;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
@@ -107,4 +108,6 @@
    void revoke(Integer id, String info, LoginUserInfo loginUserInfo);
    void jdyPushCarUseBook(String dataInfo);
    List<InterestedListVO> getCarUseStatistics(Integer type);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
@@ -2,6 +2,7 @@
import com.doumee.dao.business.dto.*;
import com.doumee.dao.business.model.JkCabinetGrid;
import com.doumee.dao.business.vo.CabinetBoardDataVO;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
@@ -147,7 +148,7 @@
    void alcoholTestAlarm(AlcoholTestAlarmDTO dto);
    CabinetBoardDataVO getCabinetGridData();
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java
@@ -1,6 +1,9 @@
package com.doumee.service.business;
import com.doumee.dao.admin.response.InterestedListVO;
import com.doumee.dao.business.dto.CabinetBoardUseRecordDTO;
import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
import com.doumee.dao.business.vo.CabinetBoardUseRecordVO;
import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
import com.doumee.service.business.impl.JkCabinetGridServiceImpl;
import com.doumee.service.business.third.model.PageData;
@@ -108,4 +111,7 @@
    void timeOutUnBackAlarm(JkCabinetGridServiceImpl impl);
    List<CabinetBoardUseRecordVO> getKeyUseRecord(CabinetBoardUseRecordDTO dto);
    List<InterestedListVO> getKeyUseStatistics(Integer type);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java
@@ -1,5 +1,7 @@
package com.doumee.service.business;
import com.doumee.dao.business.model.WarningEvent;
import com.doumee.dao.business.vo.CabinetBoardWaningRataDataVO;
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 +101,8 @@
    void updateStatus(Warning param);
    void getWeatherInfo();
    PageData<WarningEvent> getCabinetBoardWarningPage(PageWrap<WarningEvent> pageWrap);
    CabinetBoardWaningRataDataVO getCabinetBoardWarningRataData(Integer type);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -5,6 +5,7 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.dao.admin.response.InterestedListVO;
import com.doumee.dao.business.dao.UserActionMapper;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
@@ -751,6 +752,36 @@
        }
        carUseBookMapper.insertOrUpdate(carUseBook);
    }
    @Override
    public List<InterestedListVO> getCarUseStatistics(Integer type){
        List<String> weekDays = DateUtil.getBeforDays(new Date(),Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15);
        MPJLambdaWrapper<CarUseBook> wrapper = new MPJLambdaWrapper<CarUseBook>()
                .selectAll(CarUseBook.class)
                .eq(CarUseBook::getIsdeleted, Constants.ZERO)
                .eq(CarUseBook::getStatus,Constants.TWO)
                .apply("  CREATE_DATE >   CURDATE() - INTERVAL "+(Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15)+" DAY ")
                .orderByDesc(CarUseBook::getCreateDate);
        List<CarUseBook> carUseBookList = carUseBookMapper.selectJoinList(CarUseBook.class,wrapper);
        List<InterestedListVO> list = new ArrayList<>();
        for (String days:weekDays) {
            InterestedListVO vo = new InterestedListVO();
            vo.setName(days);
            vo.setNum(Constants.ZERO);
            vo.setNextNum(Constants.ZERO);
            if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(carUseBookList)) {
                vo.setNum(
                        carUseBookList.stream().filter(i->DateUtil.dateToString(i.getCreateDate(),"yyyy-MM-dd").equals(days))
                                .collect(Collectors.toList()).size()
                );
            }
        }
        return list;
    }
    
    
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
@@ -14,6 +15,9 @@
import com.doumee.dao.business.dao.MemberMapper;
import com.doumee.dao.business.dto.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.CabinetBoardDataVO;
import com.doumee.dao.business.vo.CabinetDetailVO;
import com.doumee.dao.business.vo.CabinetGridInfoVO;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.third.model.LoginUserInfo;
@@ -738,6 +742,16 @@
    public void timeOutUnCloseAlarm(TimeOutCloseGridDTO dto){
        if(Objects.nonNull(dto)
            && Objects.nonNull(dto.getGridId())){
            SystemUser systemUser =  null;
            if(Objects.nonNull(dto.getMemberId())){
                systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                        .eq(Objects.nonNull(dto.getMemberId()),SystemUser::getMemberId,dto.getMemberId())
                        .eq(SystemUser::getDeleted,Constants.ZERO)
                        .last(" limit 1 ")
                );
            }
            JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectJoinOne(JkCabinetGrid.class,
                    new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
                            .selectAs(JkCabinet::getName,JkCabinetGrid::getCabinetName)
@@ -746,6 +760,7 @@
                            .eq(JkCabinetGrid::getId,dto.getGridId())
                            .last(" limit 1 ")
            );
            if(Objects.nonNull(jkCabinetGrid)){
                log.error("柜格开门超时未关闭告警信息:{}"+JSONObject.toJSONString(jkCabinetGrid));
                //规则类型
@@ -779,6 +794,7 @@
                    //存储报警异常记录
                    WarningEvent warningEvent = new WarningEvent();
                    warningEvent.setCreateDate(new Date());
                    warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                    warningEvent.setWarningId(warning.getId());
                    warningEvent.setTitle(warningConfig.getInfo());
                    warningEvent.setContent(content );
@@ -988,6 +1004,7 @@
                //存储报警异常记录
                WarningEvent warningEvent = new WarningEvent();
                warningEvent.setCreateDate(new Date());
                warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                warningEvent.setWarningId(warning.getId());
                warningEvent.setTitle(warningConfig.getInfo());
                warningEvent.setContent(content );
@@ -1038,7 +1055,46 @@
    }
    @Override
    public CabinetBoardDataVO getCabinetGridData(){
        CabinetBoardDataVO cabinetBoardDataVO = new CabinetBoardDataVO();
        //所有柜格信息
        List<JkCabinetGrid> jkCabinetGridList =
                jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>()
                        .selectAll(JkCabinetGrid.class)
                        .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                        .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                        .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
                        .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                        .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                        .orderByAsc(JkCabinetGrid::getCode)
                );
        List<CabinetGridInfoVO> cabinetGridInfoVOList = new ArrayList<>();
        if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
            cabinetBoardDataVO.setGridNum(jkCabinetGridList.size());
            for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
                CabinetGridInfoVO cabinetGridInfoVO = new CabinetGridInfoVO();
                BeanUtil.copyProperties(jkCabinetGrid,cabinetGridInfoVO);
                cabinetGridInfoVO.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE);
                cabinetGridInfoVO.setKeyStatus(Objects.isNull(cabinetGridInfoVO.getKeyStatus())?Constants.ZERO:cabinetGridInfoVO.getKeyStatus());
                cabinetGridInfoVOList.add(cabinetGridInfoVO);
            }
            cabinetBoardDataVO.setGridNum(jkCabinetGridList.size());
            cabinetBoardDataVO.setOnlineKeyNum( //在位数量
                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)).collect(Collectors.toList()).size()
            );
            cabinetBoardDataVO.setOutKeyNum( //借出数量
                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)).collect(Collectors.toList()).size()
            );
            cabinetBoardDataVO.setServiceKeyNum( //维护保养数量
                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.THREE)).collect(Collectors.toList()).size()
            );
            cabinetBoardDataVO.setUnBindGridNum(//空闲数量
                    cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getBindStatus(),Constants.ZERO)).collect(Collectors.toList()).size()
            );
        }
        return cabinetBoardDataVO;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
@@ -3,10 +3,16 @@
import cn.hutool.core.bean.BeanUtil;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.admin.response.InterestedListVO;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dto.CabinetBoardUseRecordDTO;
import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.CabinetBoardUseRecordVO;
import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.core.utils.Utils;
@@ -45,6 +51,10 @@
    @Autowired
    private WarningPushMapper warningPushMapper;
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Autowired
    private WarningEventMapper warningEventMapper;
@@ -234,11 +244,21 @@
                }
                for (JkCabinetLog jkCabinetLog:jkCabinetLogs) {
                    SystemUser systemUser =  null;
                    if(Objects.nonNull(jkCabinetLog.getMemberId())){
                        systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                                .eq(Objects.nonNull(jkCabinetLog.getMemberId()),SystemUser::getMemberId,jkCabinetLog.getMemberId())
                                .eq(SystemUser::getDeleted,Constants.ZERO)
                                .last(" limit 1 ")
                        );
                    }
                    String content = "【车辆-"+jkCabinetLog.getCarCode()+"钥匙】由+"+(StringUtils.isNotBlank(jkCabinetLog.getMemberName())?jkCabinetLog.getMemberName():"未知人员")+"借出,超时未归还";
                    //存储报警异常记录
                    WarningEvent warningEvent = new WarningEvent();
                    warningEvent.setCreateDate(new Date());
                    warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                    warningEvent.setWarningId(warning.getId());
                    warningEvent.setTitle(warningConfig.getInfo());
                    warningEvent.setContent(content );
@@ -280,15 +300,106 @@
                        warningEventMapper.updateById(warningEvent);
                    }
                }
            }
        }
    }
    @Override
    public List<CabinetBoardUseRecordVO> getKeyUseRecord(CabinetBoardUseRecordDTO dto){
        MPJLambdaWrapper<JkCabinetLog> wrapper = new MPJLambdaWrapper<JkCabinetLog>()
                .selectAll(JkCabinetLog.class)
                .selectAs(Member::getName,JkCabinetLog::getMemberName)
                .selectAs(Company::getName,JkCabinetLog::getCompanyName)
                .selectAs(JkCabinet::getName,JkCabinetLog::getCabinetName)
                .selectAs(JkCabinetGrid::getCode,JkCabinetLog::getGridCode)
                .selectAs(JkKeys::getCarCode,JkCabinetLog::getCarCode)
                .select("j.CREATE_DATE",JkCabinetLog::getReturnDate)
                .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetLog::getCabinetId)
                .leftJoin(JkCabinetGrid.class,JkCabinetGrid::getId,JkCabinetLog::getGridId)
                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                .leftJoin(Member.class,Member::getId,JkCabinetLog::getMemberId)
                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                .leftJoin(" jk_cabinet_log j on j.id=t.CLOSE_LOG_ID ")
                .ge(JkCabinetLog::getCreateDate, Utils.Date.getStart(DateUtil.getCurrentDate()))
                .le(JkCabinetLog::getCreateDate, Utils.Date.getEnd(Utils.Date.getStart(DateUtil.getCurrentDate())))
                .eq(JkCabinetLog::getIsdeleted, Constants.ZERO)
                .eq(JkCabinetLog::getType,Constants.ONE)
                .eq(JkCabinetLog::getKeyStatus,Constants.TWO)
                .like(StringUtils.isNotBlank(dto.getCarCode()),JkCabinetLog::getCarCode,dto.getCarCode())
                .isNotNull(Objects.nonNull(dto.getStatus())&&Constants.equalsInteger(dto.getStatus(),Constants.ONE),JkCabinetLog::getCloseLogId)
                .isNull(Objects.nonNull(dto.getStatus())&&Constants.equalsInteger(dto.getStatus(),Constants.ZERO),JkCabinetLog::getCloseLogId)
                .orderByDesc(JkCabinetLog::getCreateDate);
        List<JkCabinetLog> jkCabinetLogs = jkCabinetLogMapper.selectJoinList(JkCabinetLog.class,wrapper);
        List<CabinetBoardUseRecordVO> cabinetBoardUseRecordList = new ArrayList<CabinetBoardUseRecordVO>();
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jkCabinetLogs)){
            for (JkCabinetLog jkCabinetLog:jkCabinetLogs) {
                CabinetBoardUseRecordVO cabinetBoardUseRecordVO = new CabinetBoardUseRecordVO();
                BeanUtil.copyProperties(jkCabinetLog,cabinetBoardUseRecordVO);
                cabinetBoardUseRecordVO.setStatus(Objects.nonNull(jkCabinetLog.getReturnDate())?Constants.ZERO:Constants.ONE);
                cabinetBoardUseRecordVO.setRemark(Objects.isNull(jkCabinetLog.getOpenWay())?"":
                        Constants.equalsInteger(jkCabinetLog.getOpenWay(),Constants.ZERO)?"随车领取":
                                Constants.equalsInteger(jkCabinetLog.getOpenWay(),Constants.ONE)?"随派车单领取":"保洁领取"
                        );
                cabinetBoardUseRecordList.add(cabinetBoardUseRecordVO);
            }
        }
        return cabinetBoardUseRecordList;
    }
    @Override
    public List<InterestedListVO> getKeyUseStatistics(Integer type){
        List<String> weekDays = DateUtil.getBeforDays(new Date(),Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15);
        MPJLambdaWrapper<JkCabinetLog> wrapper = new MPJLambdaWrapper<JkCabinetLog>()
                .selectAll(JkCabinetLog.class)
                .selectAs(Member::getName,JkCabinetLog::getMemberName)
                .selectAs(Company::getName,JkCabinetLog::getCompanyName)
                .selectAs(JkCabinet::getName,JkCabinetLog::getCabinetName)
                .selectAs(JkCabinetGrid::getCode,JkCabinetLog::getGridCode)
                .selectAs(JkKeys::getCarCode,JkCabinetLog::getCarCode)
                .select("j.CREATE_DATE",JkCabinetLog::getReturnDate)
                .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetLog::getCabinetId)
                .leftJoin(JkCabinetGrid.class,JkCabinetGrid::getId,JkCabinetLog::getGridId)
                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
                .leftJoin(Member.class,Member::getId,JkCabinetLog::getMemberId)
                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                .leftJoin(" jk_cabinet_log j on j.id=t.CLOSE_LOG_ID ")
                .eq(JkCabinetLog::getIsdeleted, Constants.ZERO)
                .eq(JkCabinetLog::getType,Constants.ONE)
                .ne(JkCabinetLog::getKeyStatus,Constants.ZERO)
                .apply("  CREATE_DATE >   CURDATE() - INTERVAL "+(Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15)+" DAY ")
                .orderByDesc(JkCabinetLog::getCreateDate);
        List<JkCabinetLog> jkCabinetLogs = jkCabinetLogMapper.selectJoinList(JkCabinetLog.class,wrapper);
        List<InterestedListVO> list = new ArrayList<>();
        for (String days:weekDays) {
            InterestedListVO vo = new InterestedListVO();
            vo.setName(days);
            vo.setNum(Constants.ZERO);
            vo.setNextNum(Constants.ZERO);
            if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jkCabinetLogs)) {
                vo.setNum(
                        jkCabinetLogs.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)
                                                &&DateUtil.dateToString(i.getCreateDate(),"yyyy-MM-dd").equals(days))
                                .collect(Collectors.toList()).size()
                );
                vo.setNextNum(jkCabinetLogs.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)
                                &&DateUtil.dateToString(i.getCreateDate(),"yyyy-MM-dd").equals(days))
                        .collect(Collectors.toList()).size());
            }
        }
        return list;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
@@ -13,6 +13,8 @@
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.MemberMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.CabinetBoardWaningRataDataVO;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
@@ -22,6 +24,7 @@
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.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -346,12 +349,74 @@
        }catch (Exception e){
        }
    }
    @Override
    public PageData<WarningEvent> getCabinetBoardWarningPage(PageWrap<WarningEvent> pageWrap){
        IPage<WarningEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        Utils.MP.blankToNull(pageWrap.getModel());
        IPage<WarningEvent> pageData = warningEventMapper.selectJoinPage(page,WarningEvent.class,
                new MPJLambdaWrapper<WarningEvent>()
                        .selectAll(WarningEvent.class)
                        .selectAs(SystemUser::getRealname,WarningEvent::getCreateUserName)
                        .leftJoin(SystemUser.class,SystemUser::getId,WarningEvent::getCreator)
                        .leftJoin(Warning.class,Warning::getId,WarningEvent::getWarningId)
                        .eq(WarningEvent::getIsdeleted,Constants.ZERO)
                        .in(Warning::getCode,Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey(),Constants.WarningConfig.ALARM_TEST.getKey(),Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey())
                        .like(WarningEvent::getCreateDate,DateUtil.getCurrDate())
                        .orderByDesc(WarningEvent::getId)
        );
        return PageData.from(pageData);
    }
    @Override
    public CabinetBoardWaningRataDataVO getCabinetBoardWarningRataData(Integer type){
        CabinetBoardWaningRataDataVO vo = new CabinetBoardWaningRataDataVO();
        vo.setAlcoholNum(Constants.ZERO);
        vo.setUnCloseNum(Constants.ZERO);
        vo.setTimeOutNum(Constants.ZERO);
        List<WarningEvent> warningEventList = warningEventMapper.selectJoinList(WarningEvent.class,
                new MPJLambdaWrapper<WarningEvent>().
                selectAll(WarningEvent.class)
                .selectAs(Warning::getCode,WarningEvent::getWarningId)
                .leftJoin(Warning.class,Warning::getId,WarningEvent::getWarningCode)
                .eq(WarningEvent::getIsdeleted,Constants.ZERO)
                .in(Warning::getCode,Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey(),Constants.WarningConfig.ALARM_TEST.getKey(),Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey())
                .like(Objects.nonNull(type)&&Constants.equalsInteger(Constants.ZERO,type),WarningEvent::getCreateDate,DateUtil.getCurrDate())
                .like(Objects.nonNull(type)&&Constants.equalsInteger(Constants.ONE,type),WarningEvent::getCreateDate,DateUtil.getFomartDate(new Date(),"yyyy-MM"))
                .like(Objects.nonNull(type)&&Constants.equalsInteger(Constants.TWO,type),WarningEvent::getCreateDate,DateUtil.getFomartDate(new Date(),"yyyy"))
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(warningEventList)){
            vo.setAlcoholNum(
                    warningEventList.stream().filter(i->StringUtils.isNotBlank(i.getWarningCode())&&
                            i.getWarningCode().equals(Constants.WarningConfig.ALARM_TEST.getKey())).collect(Collectors.toList()).size()
            );
            vo.setUnCloseNum(
                    warningEventList.stream().filter(i->StringUtils.isNotBlank(i.getWarningCode())&&
                            i.getWarningCode().equals(Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey())).collect(Collectors.toList()).size()
            );
            vo.setTimeOutNum(
                    warningEventList.stream().filter(i->StringUtils.isNotBlank(i.getWarningCode())&&
                            i.getWarningCode().equals(Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey())).collect(Collectors.toList()).size()
            );
        }
        return vo;
    }
}