Merge remote-tracking branch 'origin/dunhuan_jdk8' into dunhuang

# Conflicts:
#	src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java
#	src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java
This commit is contained in:
guoshengxiong 2025-11-05 18:26:55 +08:00
commit 2c2a30fd39
14 changed files with 201 additions and 65 deletions

View File

@ -276,38 +276,49 @@ public class HighFormworkSupportService {
if (StringUtils.isNotBlank(no)) { if (StringUtils.isNotBlank(no)) {
String noType = no.substring(no.length() - 1); String noType = no.substring(no.length() - 1);
String f = "F"; String f = "F";
String val = dataMap.get(gzDs2);
if (f.equals(noType)) { if (f.equals(noType)) {
currentData.setPoleAxialForce(String.valueOf(Double.parseDouble(dataMap.get(gzDs2)))); currentData.setPoleAxialForce(String.valueOf(Double.parseDouble(val)));
} }
String h = "H"; String h = "H";
if (h.equals(noType)) { if (h.equals(noType)) {
currentData.setHorizontalDisplacement(dataMap.get(gzDs2)); currentData.setHorizontalDisplacement(val);
} }
String v = "V"; String v = "V";
if (v.equals(noType)) { if (v.equals(noType)) {
currentData.setFormworkSettlement(dataMap.get(gzDs2)); currentData.setFormworkSettlement(val);
} }
String l = "L"; String l = "L";
if (l.equals(noType)) { if (l.equals(noType)) {
currentData.setPoleTilt(dataMap.get(gzDs2)); currentData.setPoleTilt(val);
} }
String d = "D"; String d = "D";
if (d.equals(noType)) { if (d.equals(noType)) {
currentData.setFoundationSettlement(dataMap.get(gzDs2)); currentData.setFoundationSettlement(val);
}
String s = "S";
if (s.equals(noType)) {
currentData.setHorizontalTilt(val);
} }
} }
} }
private void setAlarmStatus(HashMap<String, String> dataMap, HighFormworkMeasureCurrentData currentData) { private void setAlarmStatus(HashMap<String, String> dataMap, HighFormworkMeasureCurrentData currentData) {
Integer alarmState = null; Integer alarmState = null;
if (getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT1)).equals(HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode()) || if (Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT1)), HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode()) ||
getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT2)).equals(HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode()) || Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT2)), HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode()) ||
getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT3)).equals(HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode())) { Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT3)), HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode()) ||
Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT4)), HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode()) ||
Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT5)), HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode()) ||
Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT6)), HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode())) {
//报警 //报警
alarmState = HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode(); alarmState = HighFormworkMeasureCurrentDataAlarmStateEnum.ALARM.getCode();
} else if (getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT1)).equals(HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode()) || } else if (Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT1)), HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode()) ||
getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT2)).equals(HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode()) || Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT2)), HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode()) ||
getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT3)).equals(HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode())) { Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT3)), HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode()) ||
Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT4)), HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode()) ||
Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT5)), HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode()) ||
Objects.equals(getAlarmState(dataMap.get(HighFormworkSupport.GZ_ZT6)), HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode())) {
//预警 //预警
alarmState = HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode(); alarmState = HighFormworkMeasureCurrentDataAlarmStateEnum.PRE_ALARM.getCode();
} else { } else {

View File

@ -31,7 +31,7 @@ public class HighFormworkAlarmData implements Serializable {
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id") @ApiModelProperty(value = "id")
private java.lang.Long id; private java.lang.Long id;
@ApiModelProperty(value = "类型1立杆轴力2水平位移3模板沉降4立杆倾斜5地基沉降") @ApiModelProperty(value = "类型1立杆轴力2水平位移3模板沉降4立杆倾斜5地基沉降6水平倾斜")
private java.lang.Integer type; private java.lang.Integer type;
/** /**
* 监测点ID * 监测点ID

View File

@ -51,22 +51,26 @@ public class HighFormworkMeasureCurrentData implements Serializable {
/**X轴倾角°*/ /**X轴倾角°*/
@Excel(name = "X轴倾角°", width = 15) @Excel(name = "X轴倾角°", width = 15)
@ApiModelProperty(value="X轴倾角°") @ApiModelProperty(value="X轴倾角°")
@Deprecated
private java.lang.String angleXAxis ; private java.lang.String angleXAxis ;
/**Y轴倾角°*/ /**Y轴倾角°*/
@Excel(name = "Y轴倾角°", width = 15) @Excel(name = "Y轴倾角°", width = 15)
@ApiModelProperty(value = "Y轴倾角°") @ApiModelProperty(value = "Y轴倾角°")
@Deprecated
private java.lang.String angleYAxis; private java.lang.String angleYAxis;
/** /**
* 压力kN * 压力kN
*/ */
@Excel(name = "压力kN", width = 15) @Excel(name = "压力kN", width = 15)
@ApiModelProperty(value = "压力kN") @ApiModelProperty(value = "压力kN")
@Deprecated
private java.lang.String pressure; private java.lang.String pressure;
/** /**
* 沉降mm * 沉降mm
*/ */
@Excel(name = "沉降mm", width = 15) @Excel(name = "沉降mm", width = 15)
@ApiModelProperty(value = "沉降mm") @ApiModelProperty(value = "沉降mm")
@Deprecated
private java.lang.String subside; private java.lang.String subside;
@ApiModelProperty(value = "立杆轴力") @ApiModelProperty(value = "立杆轴力")
private java.lang.String poleAxialForce; private java.lang.String poleAxialForce;
@ -91,7 +95,8 @@ public class HighFormworkMeasureCurrentData implements Serializable {
@Excel(name = "采集仪编号", width = 15) @Excel(name = "采集仪编号", width = 15)
@ApiModelProperty(value = "采集仪编号") @ApiModelProperty(value = "采集仪编号")
private java.lang.String acquisitionInstrumentNumber; private java.lang.String acquisitionInstrumentNumber;
@ApiModelProperty(value = "水平倾斜")
private java.lang.String horizontalTilt;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "测量点名称") @ApiModelProperty(value = "测量点名称")
private java.lang.String measurePointName; private java.lang.String measurePointName;

View File

@ -1,16 +1,14 @@
package com.zhgd.xmgl.modules.highformwork.entity; package com.zhgd.xmgl.modules.highformwork.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
/** /**
* @Description: 高支模-测量点报警预警阀值 * @Description: 高支模-测量点报警预警阀值
* @author pds * @author pds
@ -36,7 +34,7 @@ public class HighFormworkMeasurePointThreshold implements Serializable {
@ApiModelProperty(value = "监测点ID") @ApiModelProperty(value = "监测点ID")
private java.lang.Long measurePointId; private java.lang.Long measurePointId;
@ApiModelProperty(value = "类型1立杆轴力2水平位移3模板沉降4立杆倾斜5地基沉降") @ApiModelProperty(value = "类型1立杆轴力2水平位移3模板沉降4立杆倾斜5地基沉降6水平倾斜")
private java.lang.Integer type; private java.lang.Integer type;
/** /**
* 预警值 * 预警值

View File

@ -25,4 +25,6 @@ public class DataPerHourForTheLastDayVo {
private java.lang.String poleTilt; private java.lang.String poleTilt;
@ApiModelProperty(value = "地基沉降") @ApiModelProperty(value = "地基沉降")
private java.lang.String foundationSettlement; private java.lang.String foundationSettlement;
@ApiModelProperty(value = "水平倾斜")
private java.lang.String horizontalTilt;
} }

View File

@ -19,6 +19,7 @@
hfmcd.formwork_settlement, hfmcd.formwork_settlement,
hfmcd.pole_tilt, hfmcd.pole_tilt,
hfmcd.foundation_settlement, hfmcd.foundation_settlement,
hfmcd.horizontal_tilt,
hfmp.measure_point_name hfmp.measure_point_name
from high_formwork_measure_current_data hfmcd from high_formwork_measure_current_data hfmcd
join high_formwork_measure_point hfmp on hfmcd.measure_point_number = hfmp.measure_point_number and join high_formwork_measure_point hfmp on hfmcd.measure_point_number = hfmp.measure_point_number and
@ -74,7 +75,8 @@
ifnull(avg(cd.horizontal_displacement),0) as horizontal_displacement, ifnull(avg(cd.horizontal_displacement),0) as horizontal_displacement,
ifnull(avg(cd.formwork_settlement),0) as formwork_settlement, ifnull(avg(cd.formwork_settlement),0) as formwork_settlement,
ifnull(avg(cd.pole_tilt),0) as pole_tilt, ifnull(avg(cd.pole_tilt),0) as pole_tilt,
ifnull(avg(cd.foundation_settlement),0) as foundation_settlement ifnull(avg(cd.foundation_settlement),0) as foundation_settlement,
ifnull(avg(cd.horizontal_tilt),0) as horizontal_tilt
from high_formwork_measure_current_data cd from high_formwork_measure_current_data cd
INNER JOIN high_formwork_measure_point mp ON mp.measure_point_number = cd.measure_point_number and INNER JOIN high_formwork_measure_point mp ON mp.measure_point_number = cd.measure_point_number and
cd.acquisition_instrument_number = mp.acquisition_instrument_number cd.acquisition_instrument_number = mp.acquisition_instrument_number

View File

@ -140,6 +140,17 @@ public class HighFormworkAlarmDataServiceImpl extends ServiceImpl<HighFormworkAl
insertHighFormworkAlarmData(point, subside, 5, 2); insertHighFormworkAlarmData(point, subside, 5, 2);
isWarn = true; isWarn = true;
} }
} else if (type == 6) {
Double horizontalTilt = StringUtils.isNotBlank(currentData.getHorizontalTilt()) ? Double.valueOf(currentData.getHorizontalTilt()) : null;
if (horizontalTilt != null && alarmValue != null && alarmValue < horizontalTilt) {
//报警
insertHighFormworkAlarmData(point, horizontalTilt, 6, 1);
isAlarm = true;
} else if (horizontalTilt != null && warningValue != null && warningValue < horizontalTilt) {
//预警
insertHighFormworkAlarmData(point, horizontalTilt, 6, 2);
isWarn = true;
}
} }
} }
} }

View File

@ -1,12 +1,10 @@
package com.zhgd.xmgl.modules.highformwork.service.impl; package com.zhgd.xmgl.modules.highformwork.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.highformwork.entity.HighFormworkMeasureCurrentData; import com.zhgd.xmgl.modules.highformwork.entity.HighFormworkMeasureCurrentData;
import com.zhgd.xmgl.modules.highformwork.entity.HighFormworkMeasurePoint; import com.zhgd.xmgl.modules.highformwork.entity.HighFormworkMeasurePoint;
import com.zhgd.xmgl.modules.highformwork.entity.HighFormworkMeasurePointThreshold; import com.zhgd.xmgl.modules.highformwork.entity.HighFormworkMeasurePointThreshold;
@ -190,6 +188,7 @@ public class HighFormworkMeasureCurrentDataServiceImpl extends ServiceImpl<HighF
vo.setFormworkSettlement("0"); vo.setFormworkSettlement("0");
vo.setPoleTilt("0"); vo.setPoleTilt("0");
vo.setFoundationSettlement("0"); vo.setFoundationSettlement("0");
vo.setHorizontalTilt("0");
} }
rtList.add(vo); rtList.add(vo);
} }

View File

@ -123,9 +123,9 @@ public class PoliceCameraItem implements Serializable {
@ApiModelProperty(value = "电量") @ApiModelProperty(value = "电量")
private java.lang.String batteryLevel; private java.lang.String batteryLevel;
/** /**
* 设备状态1在线2离线 * 设备状态1在线2离线监控
*/ */
@ApiModelProperty(value = "设备状态1在线2离线") @ApiModelProperty(value = "设备状态1在线2离线(监控)")
private java.lang.Integer deviceState; private java.lang.Integer deviceState;
/** /**
* 排序 * 排序

View File

@ -0,0 +1,14 @@
package com.zhgd.xmgl.modules.policecamera.entity.bo;
import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraVideoConfig;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PoliceCameraVideoConfigBo extends PoliceCameraVideoConfig {
/**
*projectSns
*/
@ApiModelProperty("projectSns")
private String projectSns;
}

View File

@ -1,18 +1,17 @@
package com.zhgd.xmgl.modules.policecamera.mapper; package com.zhgd.xmgl.modules.policecamera.mapper;
import java.util.List;
import java.util.HashMap;
import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraVideoConfig;
import com.zhgd.xmgl.modules.policecamera.entity.vo.PoliceCameraVideoConfigVo;
import com.zhgd.xmgl.modules.policecamera.entity.dto.PoliceCameraVideoConfigDto;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraVideoConfig;
import com.zhgd.xmgl.modules.policecamera.entity.vo.PoliceCameraVideoConfigVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.HashMap;
import java.util.List;
/** /**
* @Description: 执法记录仪视频配置 * @Description: 执法记录仪视频配置

View File

@ -165,8 +165,11 @@ public class HighFormworkTask {
} }
currentData.setPoleAxialForce(Convert.toStr(poleAxialForce)); currentData.setPoleAxialForce(Convert.toStr(poleAxialForce));
currentData.setHorizontalDisplacement(data.getString("spanX" + no)); currentData.setHorizontalDisplacement(data.getString("spanX" + no));
currentData.setPoleTilt(data.getString("dipY" + no));
currentData.setFoundationSettlement(data.getString("spanY" + no));
currentData.setFormworkSettlement(data.getString("down" + no)); currentData.setFormworkSettlement(data.getString("down" + no));
currentData.setAcquisitionInstrumentNumber(point.getAcquisitionInstrumentNumber()); currentData.setAcquisitionInstrumentNumber(point.getAcquisitionInstrumentNumber());
currentData.setHorizontalTilt(data.getString("dipX" + no));
dataService.save(currentData); dataService.save(currentData);
highFormworkAlarmDataService.addAlarmData(point, currentData); highFormworkAlarmDataService.addAlarmData(point, currentData);
} }

View File

@ -61,24 +61,24 @@ public class Mcs8Task {
} }
/** // /**
* 定时更新执法仪设备状态 // * 定时更新执法仪设备状态
*/ // */
@Scheduled(cron = "*/5 * * * * ?") // @Scheduled(cron = "*/5 * * * * ?")
@RequestMapping("updateStatus") // @RequestMapping("updateStatus")
public void updateStatus() { // public void updateStatus() {
List<Project> projects = projectService.list(); // List<Project> projects = projectService.list();
for (Project project : projects) { // for (Project project : projects) {
try { // try {
PoliceCameraManufacturer manufacturer = policeCameraManufacturerFactory.getPoliceCameraManufacturer(project.getProjectSn()); // PoliceCameraManufacturer manufacturer = policeCameraManufacturerFactory.getPoliceCameraManufacturer(project.getProjectSn());
if (manufacturer != null) { // if (manufacturer != null) {
manufacturer.updateStatus(3L); // manufacturer.updateStatus(3L);
} // }
} catch (Exception e) { // } catch (Exception e) {
log.error("定时更新执法仪设备状态err{}", project.getProjectName(), e); // log.error("定时更新执法仪设备状态err{}", project.getProjectName(), e);
} // }
} // }
} // }
} }

View File

@ -10,6 +10,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.zhgd.xmgl.async.AsyncEnvironment; import com.zhgd.xmgl.async.AsyncEnvironment;
import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraItem;
import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraVideoConfig;
import com.zhgd.xmgl.modules.policecamera.service.IPoliceCameraItemService;
import com.zhgd.xmgl.modules.policecamera.service.IPoliceCameraVideoConfigService;
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig; import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
import com.zhgd.xmgl.modules.project.entity.bo.ProjectVideoConfigBo; import com.zhgd.xmgl.modules.project.entity.bo.ProjectVideoConfigBo;
import com.zhgd.xmgl.modules.project.enums.ProjectVideoConfigVideoTypeEnum; import com.zhgd.xmgl.modules.project.enums.ProjectVideoConfigVideoTypeEnum;
@ -55,6 +59,12 @@ public class VideoTask {
@Lazy @Lazy
@Autowired @Autowired
private VideoItemServiceImpl videoItemService; private VideoItemServiceImpl videoItemService;
@Lazy
@Autowired
private IPoliceCameraVideoConfigService policeCameraVideoConfigService;
@Lazy
@Autowired
private IPoliceCameraItemService policeCameraItemService;
@SchedulerLock(name = "updateVideoState", lockAtMostFor = "PT1H", lockAtLeastFor = "PT5M") @SchedulerLock(name = "updateVideoState", lockAtMostFor = "PT1H", lockAtLeastFor = "PT5M")
@Scheduled(cron = "0 */3 * * * ?") @Scheduled(cron = "0 */3 * * * ?")
@ -151,20 +161,23 @@ public class VideoTask {
if (CollUtil.isEmpty(itemDbs)) { if (CollUtil.isEmpty(itemDbs)) {
continue; continue;
} }
do { try {
resultJo = HikVideoUtil.callPostApiOnlineStatus(videoConfig.getAccount(), do {
videoConfig.getPassword(), videoConfig.getAppId(), resultJo = HikVideoUtil.callPostApiOnlineStatus(videoConfig.getAccount(),
videoConfig.getAppSecret(), ++pageNo); videoConfig.getPassword(), videoConfig.getAppId(),
if (resultJo != null && "0".equals(resultJo.getString("code"))) { videoConfig.getAppSecret(), ++pageNo);
alls.addAll(resultJo.getJSONObject("data").getJSONArray("list")); if (resultJo != null && "0".equals(resultJo.getString("code"))) {
} else { alls.addAll(resultJo.getJSONObject("data").getJSONArray("list"));
log.error("高频更新isc监控状态返回错误:项目sn:{}:code:{},msg:{}", } else {
videoConfig.getProjectSn(), resultJo != null ? resultJo.getString("code") : "", log.error("高频更新isc监控状态返回错误:项目sn:{}:code:{},msg:{}",
resultJo != null ? resultJo.getString("msg") : ""); videoConfig.getProjectSn(), resultJo != null ? resultJo.getString("code") : "",
break; resultJo != null ? resultJo.getString("msg") : "");
} break;
} while (pageNo * 1000 < resultJo.getJSONObject("data").getInteger("total")); }
} while (pageNo * 1000 < resultJo.getJSONObject("data").getInteger("total"));
} catch (Exception e) {
log.error("高频更新isc监控状态返回异常", e);
}
Map<String, JSONObject> indexCodeMap = alls.stream().collect(Collectors.toMap(j -> ((JSONObject) j).getString("indexCode"), j -> ((JSONObject) j), (o1, o2) -> o1)); Map<String, JSONObject> indexCodeMap = alls.stream().collect(Collectors.toMap(j -> ((JSONObject) j).getString("indexCode"), j -> ((JSONObject) j), (o1, o2) -> o1));
for (VideoItem videoItem : itemDbs) { for (VideoItem videoItem : itemDbs) {
JSONObject jsonObject = indexCodeMap.get(videoItem.getSerialNumber()); JSONObject jsonObject = indexCodeMap.get(videoItem.getSerialNumber());
@ -183,7 +196,8 @@ public class VideoTask {
.set(VideoItem::getDeviceState, 1) .set(VideoItem::getDeviceState, 1)
.in(VideoItem::getItemId, onlineIds) .in(VideoItem::getItemId, onlineIds)
); );
} List<Long> offlineIds = videoItemsToUpdate.stream().filter(v -> Objects.equals(v.getDeviceState(), 2)).map(VideoItem::getItemId).collect(Collectors.toList()); }
List<Long> offlineIds = videoItemsToUpdate.stream().filter(v -> Objects.equals(v.getDeviceState(), 2)).map(VideoItem::getItemId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(offlineIds)) { if (CollUtil.isNotEmpty(offlineIds)) {
videoItemService.update(null, new LambdaUpdateWrapper<VideoItem>() videoItemService.update(null, new LambdaUpdateWrapper<VideoItem>()
.set(VideoItem::getDeviceState, 2) .set(VideoItem::getDeviceState, 2)
@ -197,6 +211,84 @@ public class VideoTask {
} }
} }
/**
* 高频更新执法记录仪的isc监控状态
*/
@Scheduled(cron = "*/10 * * * * ?")
@RequestMapping("updatePoliceCameraItemIscVideoState")
public void updatePoliceCameraItemIscVideoState() {
try {
List<PoliceCameraVideoConfig> configs = policeCameraVideoConfigService.list(new QueryWrapper<>());
Map<String, List<PoliceCameraItem>> projectSnMap2ItemsMap = policeCameraItemService.list(new LambdaQueryWrapper<PoliceCameraItem>()).stream().collect(Collectors.groupingBy(PoliceCameraItem::getProjectSn));
Map<String, Map<String, JSONObject>> projectSn2IndexCodeMap = new HashMap<>();
for (PoliceCameraVideoConfig videoConfig : configs) {
// 收集需要更新的视频设备
List<PoliceCameraItem> videoItemsToUpdate = new ArrayList<>();
List<PoliceCameraItem> itemDbs = projectSnMap2ItemsMap.get(videoConfig.getProjectSn());
if (CollUtil.isEmpty(itemDbs)) {
continue;
}
Map<String, JSONObject> indexCodeMap = projectSn2IndexCodeMap.computeIfAbsent(StrUtil.format("{},{},{},{}", videoConfig.getIp(),
videoConfig.getPort(), videoConfig.getAppId(),
videoConfig.getAppSecret()), key -> {
if (StrUtil.isBlank(videoConfig.getIp()) || StrUtil.isBlank(videoConfig.getPort()) || StrUtil.isBlank(videoConfig.getAppId()) || StrUtil.isBlank(videoConfig.getAppSecret())) {
return new HashMap<>();
}
JSONArray alls = new JSONArray();
try {
JSONObject resultJo;
int pageNo = 0;
do {
resultJo = HikVideoUtil.callPostApiOnlineStatus(videoConfig.getIp(),
videoConfig.getPort(), videoConfig.getAppId(),
videoConfig.getAppSecret(), ++pageNo);
if (resultJo != null && "0".equals(resultJo.getString("code"))) {
alls.addAll(resultJo.getJSONObject("data").getJSONArray("list"));
} else {
log.error("高频更新执法记录仪的isc监控状态返回错误:项目sn:{}:code:{},msg:{}",
videoConfig.getProjectSn(), resultJo != null ? resultJo.getString("code") : "",
resultJo != null ? resultJo.getString("msg") : "");
break;
}
} while (pageNo * 1000 < resultJo.getJSONObject("data").getInteger("total"));
} catch (Exception e) {
log.error("高频更新执法记录仪的isc监控状态返回异常", e);
}
return alls.stream().collect(Collectors.toMap(j -> ((JSONObject) j).getString("indexCode"), j -> ((JSONObject) j), (o1, o2) -> o1));
});
for (PoliceCameraItem item : itemDbs) {
JSONObject jsonObject = indexCodeMap.get(item.getMonitoringNumber());
Integer newOnlineStatus = jsonObject != null && Objects.equals(jsonObject.getInteger("online"), 1) ? 1 : 2;
// 只有当设备状态发生变化时才更新
if (!newOnlineStatus.equals(item.getDeviceState())) {
item.setDeviceState(newOnlineStatus);
videoItemsToUpdate.add(item);
}
}
// 批量更新
if (CollUtil.isNotEmpty(videoItemsToUpdate)) {
List<Long> onlineIds = videoItemsToUpdate.stream().filter(v -> Objects.equals(v.getDeviceState(), 1)).map(PoliceCameraItem::getItemId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(onlineIds)) {
policeCameraItemService.update(null, new LambdaUpdateWrapper<PoliceCameraItem>()
.set(PoliceCameraItem::getDeviceState, 1)
.in(PoliceCameraItem::getItemId, onlineIds)
);
}
List<Long> offlineIds = videoItemsToUpdate.stream().filter(v -> Objects.equals(v.getDeviceState(), 2)).map(PoliceCameraItem::getItemId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(offlineIds)) {
policeCameraItemService.update(null, new LambdaUpdateWrapper<PoliceCameraItem>()
.set(PoliceCameraItem::getDeviceState, 2)
.in(PoliceCameraItem::getItemId, offlineIds)
);
}
}
}
} catch (Exception e) {
log.error("高频更新执法记录仪的isc监控状态返回错误", e);
}
}
private void sendVideoData(VideoItem videoItem, ProjectVideoConfig videoConfig) { private void sendVideoData(VideoItem videoItem, ProjectVideoConfig videoConfig) {
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> video = new HashMap<>(16); Map<String, Object> video = new HashMap<>(16);