sgj
4 天以前 f71f31780ed55200f3e370e61c81cfd05feb34bd
对接网关的地磅抓拍,生成批复告警内容
已添加1个文件
已修改3个文件
107 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/MonitorPointType.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapReplyService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3031.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3031.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/MonitorPointType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.fzzy.igds.constant;
import lombok.Getter;
/**
 * ç›‘控点位类型枚举
 */
@Getter
public enum MonitorPointType {
    ENTRANCE_EXIT("1", "出入口"),
    SAMPLING_MACHINE("2", "扦样机"),
    LABORATORY("3", "化验室"),
    SETTLEMENT_ROOM("4", "结算室"),
    WEIGHBRIDGE_ROOM("5", "地磅室"),
    WAREHOUSE_MAIN_ROAD("6", "库区主干道"),
    INTER_WAREHOUSE_MONITOR("7", "仓间监控"),
    IN_WAREHOUSE("8", "仓内"),
    MEDICINE_ROOM("9", "药品房内外"),
    EQUIPMENT_ROOM("10", "器材室内外"),
    HIGH_POINT("11", "制高点"),
    OIL_TANK_AREA("12", "油库罐区"),
    OIL_RECEIVE_EQUIPMENT("13", "收发油设备"),
    PUMP_ROOM("14", "泵房"),
    OIL_PIPELINE("15", "油库主要输送管道"),
    PERIMETER("16", "周界");
    private final String code;
    private final String name;
    MonitorPointType(String code, String name) {
        this.code = code;
        this.name = name;
    }
    /**
     * æ ¹æ®code获取枚举
     * @param code ç¼–码
     * @return å¯¹åº”的枚举值,未找到返回null
     */
    public static MonitorPointType getByCode(String code) {
        if (code == null) {
            return null;
        }
        for (MonitorPointType type : values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        return null;
    }
    /**
     * æ ¹æ®code获取描述
     * @param code ç¼–码
     * @return å¯¹åº”的描述,未找到返回null
     */
    public static String getNameByCode(String code) {
        MonitorPointType type = getByCode(code);
        return type != null ? type.name() : null;
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapReplyService.java
@@ -98,7 +98,7 @@
     * @author sgj
     * @date 2026/04/07
     */
    public void addData(SnapReply snapReply) {
    public BaseResp addData(SnapReply snapReply) {
        if (StringUtils.isBlank(snapReply.getId())) {
            snapReply.setId(ContextUtil.generateId());
        }
@@ -110,7 +110,7 @@
        snapReply.setUpdateTime(new Date());
        snapReply.setCreateBy(ContextUtil.getLoginUserName());
        snapReply.setCreateTime(new Date());
        snapReplyMapper.insert(snapReply);
        return snapReplyMapper.insert(snapReply) > 0 ? BaseResp.success() : BaseResp.error("添加失败");
    }
    /**
fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3031.java
@@ -22,5 +22,11 @@
    private String time;
    private String tags;
    private String imgBase64;
    /**
     * æ˜¯å¦ç”Ÿæˆæ‰¹å¤å‘Šè­¦æ•°æ®
     * ç±»åž‹ï¼šString,非必填
     * é»˜è®¤ï¼šN
     * å€¼ï¼šY/N
     */
    private String isGenerateAReply;
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3031.java
@@ -4,19 +4,26 @@
import com.fzzy.igds.api.v1.data.ApiV1Req;
import com.fzzy.igds.api.v1.data.ApiV1Resp;
import com.fzzy.igds.api.v1.data.Param3031;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.MonitorPointType;
import com.fzzy.igds.data.BaseResp;
import com.fzzy.igds.domain.Camera;
import com.fzzy.igds.domain.EventInfo;
import com.fzzy.igds.domain.GatewaySer;
import com.fzzy.igds.domain.SnapReply;
import com.fzzy.igds.service.EventInfoService;
import com.fzzy.igds.service.FileService;
import com.fzzy.igds.service.SecCameraService;
import com.fzzy.igds.service.SnapReplyService;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.config.FrameworkConfig;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
 * @Description AI事件解析
@@ -31,6 +38,10 @@
    private EventInfoService eventInfoService;
    @Resource
    private FileService fileService;
    @Resource
    private SecCameraService cameraService;
    @Resource
    private SnapReplyService snapReplyService;
    /**
     * @param req
@@ -81,8 +92,26 @@
        //设置保存图片路径
        info.setImgName(filePath.replace(FrameworkConfig.getProfile(), "/profile/"));
        eventInfoService.addData(info);
        //地磅抓拍判断是否生成批复告警
        Camera cameraById = cameraService.getCameraById(gatewaySer.getCompanyId(), param.getCameraId());
        //判断当前抓拍图的触发设备是否是地磅监控设备
        if(null != cameraById && MonitorPointType.WEIGHBRIDGE_ROOM.getCode().equals(cameraById.getSpdwlx())){
            String isGenerateAReply = param.getIsGenerateAReply();
            //判断当前AI事件抓拍,是否触发生成批复告警
            if(StringUtils.isNotBlank(isGenerateAReply) && Constant.YN_Y.equals(isGenerateAReply)){
                SnapReply snapReply = new SnapReply();
                snapReply.setDeptId(gatewaySer.getDeptId());
                String content = "检测到库区有疑似出入库行为,请核对处理。";
                snapReply.setContent(content);
                BaseResp baseResp = snapReplyService.addData(snapReply);
                if(BaseResp.isSuccess(baseResp)){
                    log.info("生成回复告警成功!");
                    // todo æŽ¨é€å…¬ä¼—号信息
                }
            }
        }
        log.info("质押监管接口V1,3031接口解析完成");