From dad273b0a4b8d2bc53d893207e09440d393c4878 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Wed, 22 Oct 2025 18:14:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E8=BE=B9=E9=98=B2=E6=8A=A4app?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zhgd/xmgl/enums/ParamEnum.java | 43 +++++++++++++++++++ .../FrontierProtectionDevAlarmController.java | 21 ++++++++- .../entity/vo/CountFrontierProtectionVo.java | 12 ++++++ .../FrontierProtectionDevAlarmMapper.java | 4 ++ .../xml/FrontierProtectionDevAlarmMapper.xml | 41 +++++++++++++++++- .../IFrontierProtectionDevAlarmService.java | 4 ++ ...FrontierProtectionDevAlarmServiceImpl.java | 12 ++++++ .../FrontierProtectionDevServiceImpl.java | 28 ++++++++++++ 8 files changed, 162 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/enums/ParamEnum.java b/src/main/java/com/zhgd/xmgl/enums/ParamEnum.java index 85f7b33f3..c1d1492d8 100644 --- a/src/main/java/com/zhgd/xmgl/enums/ParamEnum.java +++ b/src/main/java/com/zhgd/xmgl/enums/ParamEnum.java @@ -1605,4 +1605,47 @@ public class ParamEnum { } } + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum FrontierProtectionDevAlarmTypeEnum implements BaseEnum { + PROXIMITY(1, "人员靠近入侵"), + PORT_STATUS1(2, "线锁1断开"), + PORT_STATUS2(3, "线锁2断开"), + MAG_STATUS1_ALARM(4, "磁锁1报警"), + MAG_STATUS1_DISABLED(5, "磁锁1失效"), + MAG_STATUS2_ALARM(6, "磁锁2报警"), + MAG_STATUS2_DISABLED(7, "磁锁2失效"), + ANTI_CROSS_ALARM(8, "防翻越报警"), + ANTI_CROSS_DISABLED(9, "防翻越失效"), + LOW_POWER(10, "低电量报警"), + ; + private Integer value; + private String desc; + + FrontierProtectionDevAlarmTypeEnum(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public void setValue(Integer value) { + this.value = value; + } + + @Override + public String getDesc() { + return desc; + } + + @Override + public void setDesc(String desc) { + this.desc = desc; + } + } + + } diff --git a/src/main/java/com/zhgd/xmgl/modules/frontier/controller/FrontierProtectionDevAlarmController.java b/src/main/java/com/zhgd/xmgl/modules/frontier/controller/FrontierProtectionDevAlarmController.java index d95a0acb9..7216c104d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/frontier/controller/FrontierProtectionDevAlarmController.java +++ b/src/main/java/com/zhgd/xmgl/modules/frontier/controller/FrontierProtectionDevAlarmController.java @@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.base.entity.vo.SectorOneVo; +import com.zhgd.xmgl.base.entity.vo.SectorVo; import com.zhgd.xmgl.base.entity.vo.TrendOneVo; +import com.zhgd.xmgl.enums.ParamEnum; import com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDevAlarm; import com.zhgd.xmgl.modules.frontier.entity.vo.CountFrontierProtectionDevAlarmVo; import com.zhgd.xmgl.modules.frontier.enums.AlarmEnum; @@ -182,7 +185,9 @@ public class FrontierProtectionDevAlarmController { @ApiOperation(value = "统计临边防护报警趋势(近7日趋势(次))", notes = "统计临边防护报警趋势(近7日趋势(次))", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"), - @ApiImplicitParam(name = "type", value = "1近7天", paramType = "body", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "type", value = "1近7天、2近24小时", paramType = "body", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "alarmType", value = "报警类型(/xmgl/frontierProtectionDevAlarm/getFrontierProtectionAlarmTypeEnum接口返回的alarmType)", paramType = "body", required = false, dataType = "Integer"), + @ApiImplicitParam(name = "devSn", value = "临边防护设备sn", paramType = "body", required = false, dataType = "Integer"), }) @PostMapping(value = "/countFrontierProtectionDevAlarmTrend") public Result> countFrontierProtectionDevAlarmTrend(@ApiIgnore @RequestBody HashMap paramMap) { @@ -195,4 +200,18 @@ public class FrontierProtectionDevAlarmController { AlarmEnum[] values = AlarmEnum.values(); return Result.success(values); } + + @ApiOperation(value = "报警类型统计", notes = "报警类型统计", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "devSn", value = "设备sn", paramType = "body", required = false, dataType = "String"), + @ApiImplicitParam(name = "type", value = "1今日2、7日3、30日", paramType = "body", required = true, dataType = "Integer"), + }) + @PostMapping(value = "/countAlarmType") + public Result countAlarmType(@ApiIgnore @RequestBody HashMap paramMap) { + ArrayList list = frontierProtectionDevAlarmService.countAlarmType(paramMap); + return Result.success(SectorVo.getSectorVoByEnum(list, ParamEnum.FrontierProtectionDevAlarmTypeEnum.values(), false)); + } + + } diff --git a/src/main/java/com/zhgd/xmgl/modules/frontier/entity/vo/CountFrontierProtectionVo.java b/src/main/java/com/zhgd/xmgl/modules/frontier/entity/vo/CountFrontierProtectionVo.java index eff9e1f51..fa0839c17 100644 --- a/src/main/java/com/zhgd/xmgl/modules/frontier/entity/vo/CountFrontierProtectionVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/frontier/entity/vo/CountFrontierProtectionVo.java @@ -3,6 +3,8 @@ package com.zhgd.xmgl.modules.frontier.entity.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + @Data public class CountFrontierProtectionVo { @ApiModelProperty("设备总数") @@ -13,4 +15,14 @@ public class CountFrontierProtectionVo { private Integer lowBatteryWarningDevNumToday; @ApiModelProperty("翻越报警预警设备数(今日)") private Integer overpassWarningDevNumToday; + @ApiModelProperty(value = "在线设备数量") + private java.lang.Integer onlineNum; + @ApiModelProperty(value = "离线设备数量") + private java.lang.Integer offlineNum; + @ApiModelProperty(value = "今日报警数量") + private java.lang.Integer alarmNumToday; + @ApiModelProperty(value = "昨日报警数量") + private java.lang.Integer alarmNumYesterday; + @ApiModelProperty(value = "今日报警数量相比昨日%") + private BigDecimal alarmNumThanYesterdayPct; } diff --git a/src/main/java/com/zhgd/xmgl/modules/frontier/mapper/FrontierProtectionDevAlarmMapper.java b/src/main/java/com/zhgd/xmgl/modules/frontier/mapper/FrontierProtectionDevAlarmMapper.java index 75f1662af..0635c06df 100644 --- a/src/main/java/com/zhgd/xmgl/modules/frontier/mapper/FrontierProtectionDevAlarmMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/frontier/mapper/FrontierProtectionDevAlarmMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhgd.xmgl.base.entity.vo.SectorOneVo; import com.zhgd.xmgl.base.entity.vo.TrendOneVo; import com.zhgd.xmgl.modules.frontier.entity.vo.CountFrontierProtectionDevAlarmVo; import com.zhgd.xmgl.modules.frontier.entity.vo.CountFrontierProtectionVo; @@ -12,6 +13,7 @@ import com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDevAlarm; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -31,4 +33,6 @@ public interface FrontierProtectionDevAlarmMapper extends BaseMapper paramMap); List countFrontierProtectionDevAlarmTrend(HashMap paramMap); + + ArrayList countAlarmType(HashMap paramMap); } diff --git a/src/main/java/com/zhgd/xmgl/modules/frontier/mapper/xml/FrontierProtectionDevAlarmMapper.xml b/src/main/java/com/zhgd/xmgl/modules/frontier/mapper/xml/FrontierProtectionDevAlarmMapper.xml index d85e8a7d6..81a7da76a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/frontier/mapper/xml/FrontierProtectionDevAlarmMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/frontier/mapper/xml/FrontierProtectionDevAlarmMapper.xml @@ -35,11 +35,48 @@ + + diff --git a/src/main/java/com/zhgd/xmgl/modules/frontier/service/IFrontierProtectionDevAlarmService.java b/src/main/java/com/zhgd/xmgl/modules/frontier/service/IFrontierProtectionDevAlarmService.java index 55e284ae4..224db4d65 100644 --- a/src/main/java/com/zhgd/xmgl/modules/frontier/service/IFrontierProtectionDevAlarmService.java +++ b/src/main/java/com/zhgd/xmgl/modules/frontier/service/IFrontierProtectionDevAlarmService.java @@ -1,12 +1,14 @@ package com.zhgd.xmgl.modules.frontier.service; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zhgd.xmgl.base.entity.vo.SectorOneVo; import com.zhgd.xmgl.base.entity.vo.TrendOneVo; import com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDevAlarm; import com.baomidou.mybatisplus.extension.service.IService; import com.zhgd.xmgl.modules.frontier.entity.vo.CountFrontierProtectionDevAlarmVo; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -23,4 +25,6 @@ public interface IFrontierProtectionDevAlarmService extends IService paramMap); List countFrontierProtectionDevAlarmTrend(HashMap paramMap); + + ArrayList countAlarmType(HashMap paramMap); } diff --git a/src/main/java/com/zhgd/xmgl/modules/frontier/service/impl/FrontierProtectionDevAlarmServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/frontier/service/impl/FrontierProtectionDevAlarmServiceImpl.java index 4dc99ad29..8b8d61610 100644 --- a/src/main/java/com/zhgd/xmgl/modules/frontier/service/impl/FrontierProtectionDevAlarmServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/frontier/service/impl/FrontierProtectionDevAlarmServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.base.entity.vo.SectorOneVo; import com.zhgd.xmgl.base.entity.vo.TrendOneVo; import com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDevAlarm; import com.zhgd.xmgl.modules.frontier.entity.vo.CountFrontierProtectionDevAlarmVo; @@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Objects; @@ -56,9 +58,19 @@ public class FrontierProtectionDevAlarmServiceImpl extends ServiceImpl countFrontierProtectionDevAlarmTrend(HashMap paramMap) { Integer type = MapUtils.getInteger(paramMap, "type"); if (Objects.equals(type, 1)) { + //近7天 List list = baseMapper.countFrontierProtectionDevAlarmTrend(paramMap); return TrendOneVo.fillTrendVos(list, DateUtils.getDateTimeStrList(60, "yyyy-MM-dd"), "MM-dd"); + } else if (Objects.equals(type, 2)) { + //近24小时 + List list = baseMapper.countFrontierProtectionDevAlarmTrend(paramMap); + return TrendOneVo.fillTrendVos(list, DateUtils.getDateTimeStrList(100, "yyyy-MM-dd HH:00"), "HH:00"); } return null; } + + @Override + public ArrayList countAlarmType(HashMap paramMap) { + return baseMapper.countAlarmType(paramMap); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/frontier/service/impl/FrontierProtectionDevServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/frontier/service/impl/FrontierProtectionDevServiceImpl.java index 2393d8a1d..22e099669 100644 --- a/src/main/java/com/zhgd/xmgl/modules/frontier/service/impl/FrontierProtectionDevServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/frontier/service/impl/FrontierProtectionDevServiceImpl.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.modules.frontier.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -8,16 +9,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDev; +import com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDevAlarm; import com.zhgd.xmgl.modules.frontier.entity.qo.FrontierProtectionDevQO; import com.zhgd.xmgl.modules.frontier.entity.vo.CountFrontierProtectionVo; import com.zhgd.xmgl.modules.frontier.mapper.FrontierProtectionDevAlarmMapper; import com.zhgd.xmgl.modules.frontier.mapper.FrontierProtectionDevMapper; import com.zhgd.xmgl.modules.frontier.service.FrontierProtectionDevService; +import com.zhgd.xmgl.modules.frontier.service.IFrontierProtectionDevAlarmService; import com.zhgd.xmgl.util.RefUtil; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.Date; import java.util.HashMap; @@ -33,6 +39,9 @@ public class FrontierProtectionDevServiceImpl extends ServiceImpl selectPageInfo(Page page, FrontierProtectionDevQO frontierProtectionDevQo) { @@ -85,6 +94,25 @@ public class FrontierProtectionDevServiceImpl extends ServiceImpl() .eq(FrontierProtectionDev::getProjectSn, projectSn))); + vo.setOnlineNum(vo.getDeviceNum()); + vo.setOfflineNum(0); + int count = frontierProtectionDevAlarmService.count(new LambdaQueryWrapper() + .eq(FrontierProtectionDevAlarm::getProjectSn, projectSn) + .ge(FrontierProtectionDevAlarm::getAlarmTime, DateUtil.formatDateTime(DateUtil.beginOfDay(new Date()))) + .le(FrontierProtectionDevAlarm::getAlarmTime, DateUtil.formatDateTime(DateUtil.endOfDay(new Date()))) + ); + vo.setAlarmNumToday(count); + int count1 = frontierProtectionDevAlarmService.count(new LambdaQueryWrapper() + .eq(FrontierProtectionDevAlarm::getProjectSn, projectSn) + .ge(FrontierProtectionDevAlarm::getAlarmTime, DateUtil.formatDateTime(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1)))) + .le(FrontierProtectionDevAlarm::getAlarmTime, DateUtil.formatDateTime(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), -1)))) + ); + vo.setAlarmNumYesterday(count1); + BigDecimal decimal = null; + if (count1 != 0) { + decimal = new BigDecimal(count).divide(new BigDecimal(count1), 4, BigDecimal.ROUND_HALF_UP).subtract(new BigDecimal(1)).multiply(new BigDecimal(100)); + } + vo.setAlarmNumThanYesterdayPct(decimal); return vo; } }