已添加5个文件
已修改7个文件
428 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/SnapReply.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/SnapReplyMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapReplyService.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PSnapDto.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5001.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5108.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5109.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/regulatory/SnapReplyController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/regulatory/manager/SnapReplyManager.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/security/video-webrtc.js 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/security/video-webrtc.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/SnapReply.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.fzzy.igds.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fzzy.igds.constant.Constant;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
/**
 * æŠ“拍告警批复
 *
 * @author sgj
 * @since 2026/04/07
 */
@Data
@Entity
@Table(name = "d_snap_reply")
@TableName("d_snap_reply")
@EqualsAndHashCode(callSuper = false)
public class SnapReply extends BizBaseEntity implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "id", columnDefinition = "varchar(40) COMMENT '主键'")
    @TableField("id")
    private String id;
    @Column(name = "dept_id", columnDefinition = "varchar(40) COMMENT '所属库区'")
    @TableField("dept_id")
    private String deptId;
    @Column(name = "content", columnDefinition = "varchar(200) COMMENT '告警内容'")
    @TableField("content")
    private String content;
    //未来(1-30)天出库正常,不进行提醒
    @Column(name = "days", columnDefinition = "int(2) COMMENT '不提醒天数'")
    @TableField("days")
    private Integer days;
    @Column(name = "reply_text", columnDefinition = "varchar(200) COMMENT '批复文本信息'")
    @TableField("reply_text")
    private String replyText;
//    @Column(name = "is_push", columnDefinition = "varchar(2) COMMENT '是否推送公众号信息'")
//    @TableField("is_push")
//    private String isPush = Constant.YN_N;
    @Column(name = "is_handle", columnDefinition = "varchar(2) COMMENT '是否处理'")
    @TableField("is_handle")
    private String isHandle = Constant.YN_N;
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/SnapReplyMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.fzzy.igds.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fzzy.igds.domain.SnapReply;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SnapReplyMapper extends BaseMapper<SnapReply> {
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapReplyService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,142 @@
package com.fzzy.igds.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.data.BaseResp;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.domain.SnapReply;
import com.fzzy.igds.mapper.SnapReplyMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Slf4j
@Service
public class SnapReplyService {
    @Resource
    private SnapReplyMapper snapReplyMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢æ•°æ®
     *
     * @param page
     * @param param
     */
    public void listPage(Page<SnapReply> page, IgdsBaseParam param) {
        QueryWrapper<SnapReply> queryWrapper = new QueryWrapper<>();
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        //库区检索
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
        }
        //是否处理检索
        if (StringUtils.isNotBlank(param.getName())) {
            queryWrapper.eq("is_handle", param.getName());
        }
        queryWrapper.orderByDesc("create_time");
        snapReplyMapper.selectPage(page, queryWrapper);
    }
    /**
     * æŸ¥è¯¢æ‰€æœ‰æ•°æ®
     *
     * @param param
     * @return
     * @author sgj
     * @date 2026/04/07
     */
    public List<SnapReply> getListByParam(IgdsBaseParam param) {
        if (null == param) {
            param = new IgdsBaseParam();
        }
        QueryWrapper<SnapReply> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("company_id", ContextUtil.getCompanyId());
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
        }
        if (StringUtils.isNotBlank(param.getName())) {
            queryWrapper.eq("is_handle", param.getName());
        }
        queryWrapper.orderByDesc("create_time");
        return snapReplyMapper.selectList(queryWrapper);
    }
    /**
     * æ ¹æ®ID查询详情
     *
     * @param id
     * @return
     * @author sgj
     * @date 2026/04/07
     */
    public SnapReply getById(String id) {
        return snapReplyMapper.selectById(id);
    }
    /**
     * æŒä¹…化保存
     *
     * @param snapReply
     * @author sgj
     * @date 2026/04/07
     */
    public void addData(SnapReply snapReply) {
        if (StringUtils.isBlank(snapReply.getId())) {
            snapReply.setId(ContextUtil.generateId());
        }
        if (StringUtils.isBlank(snapReply.getCompanyId())) {
            snapReply.setCompanyId(ContextUtil.getCompanyId());
        }
        snapReply.setUpdateBy(ContextUtil.getLoginUserName());
        snapReply.setUpdateTime(new Date());
        snapReply.setCreateBy(ContextUtil.getLoginUserName());
        snapReply.setCreateTime(new Date());
        snapReplyMapper.insert(snapReply);
    }
    /**
     * æ›´æ–°æ•°æ®
     *
     * @param snapReply
     * @return
     * @author sgj
     * @date 2026/04/07
     */
    public BaseResp updateData(SnapReply snapReply) {
        snapReply.setUpdateBy(ContextUtil.getLoginUserName());
        snapReply.setUpdateTime(new Date());
        return snapReplyMapper.updateById(snapReply) > 0 ? BaseResp.success() : BaseResp.error("更新失败");
    }
    /**
     * åˆ é™¤æ•°æ®
     *
     * @param snapReply
     * @return
     * @author sgj
     * @date 2026/04/07
     */
    public BaseResp deleteData(SnapReply snapReply) {
        return snapReplyMapper.deleteById(snapReply) > 0 ? BaseResp.success() : BaseResp.error("删除失败");
    }
}
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/dto/PSnapDto.java
@@ -27,7 +27,11 @@
    private String tags ;
    private Date snapTime;
    private Double weight = 0.0;
    private String name;
    private Date time;
    private String imgName;
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5001.java
@@ -13,6 +13,7 @@
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.app.v1.util.PhoneUtil;
import com.fzzy.igds.service.SysDeptService;
import com.fzzy.igds.utils.Base64Util;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysDept;
@@ -121,8 +122,8 @@
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_FAIL, MessageUtils.message("user.blocked")));
            throw new UserBlockedException();
        }
        passwordService.validate(user, param.getPassword());
        String password = Base64Util.decodeBase64Password(param.getPassword());
        passwordService.validate(user, password);
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(param.getUsername(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
        PUserDto phoneUserDto = new PUserDto();
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5108.java
@@ -11,12 +11,13 @@
import com.fzzy.igds.app.v1.dto.PSnapDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.domain.PatrolRecord;
import com.fzzy.igds.domain.SnapRecord;
import com.fzzy.igds.domain.*;
import com.fzzy.igds.mapper.SnapRecordMapper;
import com.fzzy.igds.mapper.WeighbridgeSnapMapper;
import com.fzzy.igds.service.CoreDeptService;
import com.fzzy.igds.service.FileService;
import com.fzzy.igds.service.InoutConfService;
import com.fzzy.igds.service.SecCameraService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import org.apache.commons.lang3.StringUtils;
@@ -29,6 +30,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @Author: YYC
@@ -39,9 +41,11 @@
public class ServiceImpl5108 implements PhoneService {
    @Resource
    private SnapRecordMapper snapRecordMapper;
    private WeighbridgeSnapMapper weighbridgeSnapMapper;
    @Resource
    private CoreDeptService deptService;
    @Resource
    private InoutConfService inoutConfService;
    @Override
@@ -64,22 +68,31 @@
        if (null == param.getDateTime()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        QueryWrapper<SnapRecord> queryWrapper = new QueryWrapper<>();
        QueryWrapper<WeighbridgeSnap> queryWrapper = new QueryWrapper<>();
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        queryWrapper.likeRight("dept_id", param.getDeptId());
        queryWrapper.ge("snap_time", DateUtil.getCurZero(param.getDateTime()));
        queryWrapper.le("snap_time", DateUtil.getNextZero(param.getDateTime()));
        queryWrapper.ge("time", DateUtil.getCurZero(param.getDateTime()));
        queryWrapper.le("time", DateUtil.getNextZero(param.getDateTime()));
        List<SnapRecord> list = snapRecordMapper.selectList(queryWrapper);
        List<WeighbridgeSnap> list = weighbridgeSnapMapper.selectList(queryWrapper);
        PSnapDto snapDto;
        Dept dept;
        List<PSnapDto> snapDtoList = new ArrayList<>();
        for (SnapRecord snapRecord:list){
        List<InoutConf> collect;
        //获取监控设备
        List<InoutConf> inoutConfs = inoutConfService.getInoutConfList(ContextUtil.getCompanyId(), param.getDeptId());
        for (WeighbridgeSnap weighbridgeSnap : list) {
            snapDto = new PSnapDto();
            BeanUtils.copyProperties(snapRecord,snapDto);
            dept = deptService.getDeptById(snapRecord.getDeptId());
            BeanUtils.copyProperties(weighbridgeSnap, snapDto);
            //映射监控设备名称
            collect = inoutConfs.stream().filter(camera -> camera.getId().equals(weighbridgeSnap.getSerId())).collect(Collectors.toList());
            if (!collect.isEmpty()) {
                snapDto.setCameraId(collect.get(0).getName());
            }
            dept = deptService.getDeptById(weighbridgeSnap.getDeptId());
            snapDto.setDeptName(dept.getKqmc());
            snapDtoList.add(snapDto);
        }
fzzy-igdss-inte/src/main/java/com/fzzy/igds/app/v1/service/impl/ServiceImpl5109.java
@@ -12,7 +12,9 @@
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.domain.PatrolRecord;
import com.fzzy.igds.domain.SnapRecord;
import com.fzzy.igds.domain.WeighbridgeSnap;
import com.fzzy.igds.mapper.SnapRecordMapper;
import com.fzzy.igds.mapper.WeighbridgeSnapMapper;
import com.fzzy.igds.service.FileService;
import com.ruoyi.common.config.FrameworkConfig;
import org.apache.commons.lang3.StringUtils;
@@ -29,7 +31,7 @@
public class ServiceImpl5109 implements PhoneService {
    @Resource
    private SnapRecordMapper snapRecordMapper;
    private WeighbridgeSnapMapper weighbridgeSnapMapper;
    @Resource
    private FileService fileService;
@@ -50,11 +52,11 @@
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        param.setCompanyId(authUser.getCompanyId());
        SnapRecord snapRecord = snapRecordMapper.selectById(param.getId());
        if (StringUtils.isNotEmpty(snapRecord.getImgName())) {
            String imgData = Base64Util.getImageStr(snapRecord.getImgName().replace("/profile/", FrameworkConfig.getProfile()));
            snapRecord.setImgName(imgData);
        WeighbridgeSnap weighbridgeSnap = weighbridgeSnapMapper.selectById(param.getId());
        if (StringUtils.isNotEmpty(weighbridgeSnap.getImgName())) {
            String imgData = Base64Util.getImageStr(weighbridgeSnap.getImgName().replace("/profile/", FrameworkConfig.getProfile()));
            weighbridgeSnap.setImgName(imgData);
        }
        return PhoneRespUtil.success(snapRecord, req);
        return PhoneRespUtil.success(weighbridgeSnap, req);
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
@@ -556,7 +556,7 @@
        return;&#xD;
    }&#xD;
    &#xD;
    var url = &quot;./basic/security/video-play?cameraId=&quot;+cur.get(&quot;id&quot;)+&quot;&amp;playType=&quot;+playType+&quot;&amp;time=&quot;+ new Date().getTime();&#xD;
    var url = &quot;./security/video-play?cameraId=&quot;+cur.get(&quot;id&quot;)+&quot;&amp;playType=&quot;+playType+&quot;&amp;time=&quot;+ new Date().getTime();&#xD;
    &#xD;
    view.get(&quot;#iFrameVideo&quot;).set(&quot;path&quot;,url);&#xD;
    view.get(&quot;#dialogVideo&quot;).show();&#xD;
fzzy-igdss-web/src/main/java/com/fzzy/regulatory/SnapReplyController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.fzzy.regulatory;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.constant.RespCodeEnum;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.data.PageResponse;
import com.fzzy.igds.domain.SnapReply;
import com.fzzy.igds.response.BaseResponse;
import com.fzzy.regulatory.manager.SnapReplyManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
@Slf4j
@Controller
@RequestMapping("/regulatory/snapReply")
public class SnapReplyController {
    private static final String prefix = "regulatory";
    @Resource
    private SnapReplyManager snapReplyManager;
    /**
     * åˆ†é¡µæŸ¥è¯¢æ•°æ®
     *
     * @param param
     * @return
     */
    @PostMapping("/pageData")
    @ResponseBody
    public PageResponse<Page<SnapReply>> pageData(IgdsBaseParam param) {
        Page<SnapReply> snapRecordPage = snapReplyManager.pageData(param);
        return new PageResponse<>(RespCodeEnum.CODE_0000, snapRecordPage);
    }
    /**
     * å‘Šè­¦æ‰¹å¤
     *
     * @param snapReply
     * @return
     */
    @PostMapping("/updateData")
    @ResponseBody
    public BaseResponse updateData(SnapReply snapReply) {
        return snapReplyManager.updateData(snapReply);
    }
}
fzzy-igdss-web/src/main/java/com/fzzy/regulatory/manager/SnapReplyManager.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.fzzy.regulatory.manager;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.constant.RespCodeEnum;
import com.fzzy.igds.data.BaseResp;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.domain.SnapReply;
import com.fzzy.igds.response.BaseResponse;
import com.fzzy.igds.service.SnapReplyService;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
@Slf4j
@Component
public class SnapReplyManager {
    @Resource
    private SnapReplyService snapReplyService;
    /**
     * åˆ†é¡µæŸ¥è¯¢æ•°æ®
     *
     * @param param
     * @return
     */
    public Page<SnapReply> pageData(IgdsBaseParam param) {
        if (StringUtils.isEmpty(param.getCompanyId())) {
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        Page<SnapReply> corePage = new Page<>(param.getPage(), param.getLimit());
        snapReplyService.listPage(corePage, param);
        if (null == corePage.getRecords() || corePage.getRecords().isEmpty()) {
            return corePage.setRecords(new ArrayList<>());
        }
        return corePage;
    }
    /**
     * å‘Šè­¦æ‰¹å¤
     *
     * @param snapReply
     * @return
     */
    public BaseResponse updateData(SnapReply snapReply) {
        if (null == snapReply) {
            return new BaseResponse(RespCodeEnum.CODE_2000.getCode(),"参数不能为空");
        }
        if(StringUtils.isBlank(snapReply.getReplyText())){
            return new BaseResponse(RespCodeEnum.CODE_2000.getCode(),"批复内容不能为空");
        }
        BaseResp baseResp = snapReplyService.updateData(snapReply);
        if (!BaseResp.isSuccess(baseResp)) {
            return new BaseResponse(RespCodeEnum.CODE_1111.getCode(),"更新失败");
        }
        return new BaseResponse(RespCodeEnum.CODE_0000.getCode(),"更新成功");
    }
}
fzzy-igdss-web/src/main/resources/static/security/video-webrtc.js
@@ -29,8 +29,19 @@
                layer.msg(result.msg);
            } else {
                playUrl = result.playUrl;
                toPlay();
                onLogin();
                var htm = "";
                //web-rtc播放方式
                if (PlayType.PLAY_TYPE_WEB_RTC == cameraData.playType) {
                    htm = '<video class="video" id="video" autoplay="" muted="" playsinline=""></video>';
                    $("#sp-showItem2").append(htm);
                    toPlay();
                    onLogin();
                }
                if (PlayType.PLAY_TYPE_YD_QLY == cameraData.playType) {
                    htm = '<iframe src="' + playUrl + '" width="100%" height="100%" frameborder="0" allowfullscreen></iframe>';
                    $("#sp-showItem2").append(htm);
                }
            }
        },
        error: function (result) {
fzzy-igdss-web/src/main/resources/templates/security/video-webrtc.html
@@ -74,9 +74,7 @@
                        <div class="sp-tab-bd">
                            <div class="sp-showBox layui-row show">
                                <div class="layui-col-lg12 layui-col-md12">
                                    <div class="sp-showItem2">
                                        <video class="video" id="video" autoplay="" muted="" playsinline="">
                                        </video>
                                    <div class="sp-showItem2" id="sp-showItem2">
                                    </div>
                                </div>
                            </div>
@@ -204,6 +202,7 @@
    var cameraData = [[${cameraData}]];
</script>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/common/constant.js}"></script>
<script th:src="@{/ajax/libs/layui/layui.js}"></script>
<script th:src="@{/security/video-webrtc.js}"></script>
</body>