|
|
@@ -30,7 +30,6 @@ import com.xunmei.host.iot.service.IIotDeviceInfoExtendService;
|
|
|
import com.xunmei.host.iot.service.IIotDeviceInfoService;
|
|
|
import com.xunmei.host.iot.service.IotDeviceStatusService;
|
|
|
import com.xunmei.host.iot.service.SysDeviceService;
|
|
|
-import com.xunmei.host.north.service.IotWebsocketMsgService;
|
|
|
import com.xunmei.host.protection.service.IotAlarmDefenceAreaService;
|
|
|
import com.xunmei.host.protection.service.IotAlarmSubsystemService;
|
|
|
import com.xunmei.host.server.service.IotServerInfoService;
|
|
|
@@ -39,6 +38,7 @@ import com.xunmei.host.websocket.constant.WebSocketConstants;
|
|
|
import com.xunmei.host.websocket.dto.DeviceStatusInfo;
|
|
|
import com.xunmei.host.websocket.dto.WebsocketExecuteReq;
|
|
|
import com.xunmei.host.websocket.dto.WebsocketResult;
|
|
|
+import com.xunmei.host.websocket.dto.alarmHost.AlarmHostIncrementVo;
|
|
|
import com.xunmei.host.websocket.dto.dvs.DevicePushResult;
|
|
|
import com.xunmei.host.websocket.dto.dvs.DvsBaseInfo;
|
|
|
import com.xunmei.host.websocket.dto.dvs.SubDeviceInfo;
|
|
|
@@ -63,7 +63,6 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
import java.time.Duration;
|
|
|
import java.time.LocalDateTime;
|
|
|
@@ -86,9 +85,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
|
|
|
private IotAlarmDefenceAreaService iotAlarmDefenceAreaService;
|
|
|
@Autowired
|
|
|
private IotAlarmSubsystemService iotAlarmSubsystemService;
|
|
|
- @Resource
|
|
|
- @Lazy
|
|
|
- private IotWebsocketMsgService websocketMsgService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private SysDeviceService sysDeviceService;
|
|
|
@Lazy
|
|
|
@@ -422,11 +419,205 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
|
|
|
}
|
|
|
|
|
|
private void handleAlarmHostIncrement(String data, IotServerInfo serverInfo) {
|
|
|
+ AlarmHostIncrementVo baseDataInfo = JSON.parseObject(data, AlarmHostIncrementVo.class);
|
|
|
+ IotDeviceInfo deviceInfo = selectByTokenProductAndDeviceCode(serverInfo.getIotCode(), baseDataInfo.getProduct(), baseDataInfo.getName());
|
|
|
+ if (ObjectUtil.isNull(deviceInfo)) {
|
|
|
+ deviceInfo = handleAlarmHostAddHost(baseDataInfo, serverInfo);
|
|
|
+ } else {
|
|
|
+ handleAlarmHostUpdateHost(baseDataInfo, deviceInfo);
|
|
|
+ }
|
|
|
+ //处理报警主机扩展信息
|
|
|
+ IotDeviceInfoExtend extend = iIotDeviceInfoExtendService.selectByProductDeviceNameAndToken(serverInfo.getIotCode(), BaseDeviceTypeEnum.AlarmHost.getCode(), baseDataInfo.getName());
|
|
|
+ if (extend == null) {
|
|
|
+ handleAlarmHostAddExtend(baseDataInfo, deviceInfo);
|
|
|
+ } else {
|
|
|
+ handleAlarmHostUpdateExtend(baseDataInfo, deviceInfo, extend);
|
|
|
+ }
|
|
|
+
|
|
|
+ final List<AlarmHostIncrementVo.InputData> inputData = baseDataInfo.getInputData();
|
|
|
+ //子系统
|
|
|
+ iotAlarmSubsystemService.deleteByIotTokenAndAlarmHostCode(serverInfo.getIotCode(), deviceInfo.getDeviceCode());
|
|
|
+ final List<IotAlarmSubsystem> subSystemList = iotAlarmSubsystemService.findSubSystem(serverInfo.getIotCode(), deviceInfo.getDeviceCode());
|
|
|
+ for (AlarmHostIncrementVo.SubSystemData subSystemDatum : baseDataInfo.getSubSystemData()) {
|
|
|
+ final Optional<IotAlarmSubsystem> optional = subSystemList.stream().filter(r -> ObjectUtil.equal(r.getCode(), subSystemDatum.getSubSystemId())).findAny();
|
|
|
+ IotAlarmSubsystem subsystem;
|
|
|
+ if (!optional.isPresent()) {
|
|
|
+ subsystem = handleAlarmHostAddSubSystem(subSystemDatum, deviceInfo);
|
|
|
+ } else {
|
|
|
+ subsystem = handleAlarmHostUpdateSubSystem(subSystemDatum, optional.get());
|
|
|
+ }
|
|
|
+ //传感器
|
|
|
+ if (ObjectUtil.isEmpty(inputData)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ final List<AlarmHostIncrementVo.InputData> dataList = inputData.stream().filter(r -> ObjectUtil.equal(r.getSubSystemId(), subSystemDatum.getSubSystemId())).collect(Collectors.toList());
|
|
|
+ final List<IotAlarmDefenceArea> defenceArea = iotAlarmDefenceAreaService.findDefenceArea(deviceInfo.getIotToken(), deviceInfo.getDeviceCode(), subSystemDatum.getSubSystemId());
|
|
|
+
|
|
|
+ if (ObjectUtil.isEmpty(dataList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (AlarmHostIncrementVo.InputData input : dataList) {
|
|
|
+ final Optional<IotAlarmDefenceArea> areaOptional = defenceArea.stream().filter(r -> ObjectUtil.equal(r.getDefenceAreaIndex(), input.getInputIndex())).findAny();
|
|
|
+ if (!areaOptional.isPresent()) {
|
|
|
+ handleAlarmHostAddSensor(input, subsystem);
|
|
|
+ } else {
|
|
|
+ handleAlarmHostUpdateSensor(input, areaOptional.get());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private IotAlarmDefenceArea handleAlarmHostUpdateSensor(AlarmHostIncrementVo.InputData input, IotAlarmDefenceArea info) {
|
|
|
+ info.setDeleted(0);
|
|
|
+ info.setEnable(input.getStatus());
|
|
|
+ info.setDefenceAreaName(input.getInputName());
|
|
|
+ info.setDefenceAreaIndex(input.getInputIndex());
|
|
|
+ info.setSensorType(input.getSensorType());
|
|
|
+ info.setSensorTypeName(input.getSensorTypeName());
|
|
|
+ info.setModuleAddress(input.getModuleAddress());
|
|
|
+ //alarm:报警,bypass:旁路,normal:正常,activity:活动,unKnown:未知
|
|
|
+ info.setUpdateTime(LocalDateTime.now());
|
|
|
+ info.setUpdateBy("system");
|
|
|
+ iotAlarmDefenceAreaService.updateById(info);
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private IotAlarmDefenceArea handleAlarmHostAddSensor(AlarmHostIncrementVo.InputData input, IotAlarmSubsystem subsystem) {
|
|
|
+ IotAlarmDefenceArea info = new IotAlarmDefenceArea();
|
|
|
+ info.setId(IdWorker.getId(info));
|
|
|
+ info.setEnable(input.getStatus());
|
|
|
+ info.setAlarmHostCode(subsystem.getAlarmHostCode());
|
|
|
+ info.setSubSystemCode(String.valueOf(subsystem.getCode()));
|
|
|
+ info.setDefenceAreaName(input.getInputName());
|
|
|
+ info.setDefenceAreaIndex(input.getInputIndex());
|
|
|
+ info.setSensorType(input.getSensorType());
|
|
|
+ info.setSensorTypeName(input.getSensorTypeName());
|
|
|
+ info.setModuleAddress(input.getModuleAddress());
|
|
|
+ //alarm:报警,bypass:旁路,normal:正常,activity:活动,unKnown:未知
|
|
|
+ info.setState("unKnown");
|
|
|
+ info.setStateText("未知");
|
|
|
+ info.setIotToken(subsystem.getIotToken());
|
|
|
+ info.setOrgId(subsystem.getOrgId());
|
|
|
+ info.setOrgName(subsystem.getOrgName());
|
|
|
+ info.setOrgPath(subsystem.getOrgPath());
|
|
|
+ info.setUpdateTime(LocalDateTime.now());
|
|
|
+ info.setCreateBy("system");
|
|
|
+ info.setUpdateBy("system");
|
|
|
+ info.setCreateTime(LocalDateTime.now());
|
|
|
+ info.setDeleted(0);
|
|
|
+ iotAlarmDefenceAreaService.save(info);
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+ private IotAlarmSubsystem handleAlarmHostUpdateSubSystem(AlarmHostIncrementVo.SubSystemData subSystemInfo, IotAlarmSubsystem info) {
|
|
|
+ info.setName(subSystemInfo.getSubSystemName());
|
|
|
+ info.setDeleted(0);
|
|
|
+ info.setEnable(subSystemInfo.getStatus());
|
|
|
+ info.setUpdateTime(LocalDateTime.now());
|
|
|
+ info.setUpdateBy("system");
|
|
|
+ //设备来源:0:设备登记;1:iot推送
|
|
|
+ info.setSource(1);
|
|
|
+ iotAlarmSubsystemService.updateById(info);
|
|
|
+ return info;
|
|
|
+ }
|
|
|
|
|
|
+ private IotAlarmSubsystem handleAlarmHostAddSubSystem(AlarmHostIncrementVo.SubSystemData subSystemInfo, IotDeviceInfo deviceInfo) {
|
|
|
+ IotAlarmSubsystem info = new IotAlarmSubsystem();
|
|
|
+ info.setId(IdWorker.getId(info));
|
|
|
+ info.setCode(String.valueOf(subSystemInfo.getSubSystemId()));
|
|
|
+ info.setName(subSystemInfo.getSubSystemName());
|
|
|
+ info.setStatus(2);//布防状态,0:撤防,1:布防,2:未知(未登记过或离线)
|
|
|
+ info.setOrgId(deviceInfo.getOrgId());
|
|
|
+ info.setOrgName(deviceInfo.getOrgName());
|
|
|
+ info.setOrgPath(deviceInfo.getOrgPath());
|
|
|
+ info.setAlarmHostCode(deviceInfo.getDeviceCode());
|
|
|
+ info.setDeleted(0);
|
|
|
+ info.setEnable(subSystemInfo.getStatus());
|
|
|
+ //是否关联登记簿,0否1是
|
|
|
+ info.setInBook(0);
|
|
|
+ info.setIotToken(deviceInfo.getIotToken());
|
|
|
+ info.setCreateTime(LocalDateTime.now());
|
|
|
+ info.setUpdateTime(LocalDateTime.now());
|
|
|
+ info.setCreateBy("system");
|
|
|
+ info.setUpdateBy("system");
|
|
|
+ //设备来源:0:设备登记;1:iot推送
|
|
|
+ info.setSource(1);
|
|
|
+ iotAlarmSubsystemService.save(info);
|
|
|
+ return info;
|
|
|
+ }
|
|
|
|
|
|
+ private void handleAlarmHostUpdateHost(AlarmHostIncrementVo baseInfo, IotDeviceInfo alarmHost) {
|
|
|
+ alarmHost.setDeviceType(BaseDeviceTypeEnum.AlarmHost.getCode());
|
|
|
+ alarmHost.setDeviceProduct(baseInfo.getProduct());
|
|
|
+ alarmHost.setDeviceModel(baseInfo.getModel());
|
|
|
+ alarmHost.setDeviceCode(baseInfo.getName());
|
|
|
+ alarmHost.setDeviceName(baseInfo.getDisplayName());
|
|
|
+ alarmHost.setDeleted(0);
|
|
|
+ alarmHost.setEnable(baseInfo.getStatus());
|
|
|
+ alarmHost.setSyncStatus(DeviceSyncStatus.SYNC_SUCCESS.getCode());
|
|
|
+ updateById(alarmHost);
|
|
|
+ }
|
|
|
|
|
|
+ private IotDeviceInfo handleAlarmHostAddHost(AlarmHostIncrementVo baseInfo, IotServerInfo serverInfo) {
|
|
|
+ final IotDeviceInfo alarmHost = new IotDeviceInfo();
|
|
|
+ alarmHost.setId(IdWorker.getId());
|
|
|
+ alarmHost.setDeviceType(BaseDeviceTypeEnum.AlarmHost.getCode());
|
|
|
+ alarmHost.setDeviceProduct(baseInfo.getProduct());
|
|
|
+ alarmHost.setDeviceModel(baseInfo.getModel());
|
|
|
+ alarmHost.setDeviceCode(baseInfo.getName());
|
|
|
+ alarmHost.setDeviceName(baseInfo.getDisplayName());
|
|
|
+ alarmHost.setIotToken(serverInfo.getIotCode());
|
|
|
+ alarmHost.setOrgId(serverInfo.getOrgId());
|
|
|
+ alarmHost.setOrgName(serverInfo.getOrgName());
|
|
|
+ alarmHost.setOrgPath(serverInfo.getOrgPath());
|
|
|
+ alarmHost.setNetStatus(DeviceNetStatusEnum.UNKNOWN.getValue());
|
|
|
+ alarmHost.setDeleted(0);
|
|
|
+ alarmHost.setEnable(baseInfo.getStatus());
|
|
|
+ alarmHost.setSyncStatus(DeviceSyncStatus.SYNC_SUCCESS.getCode());
|
|
|
+ save(alarmHost);
|
|
|
+ return alarmHost;
|
|
|
+ }
|
|
|
|
|
|
+ private void handleAlarmHostAddExtend(AlarmHostIncrementVo baseInfo, IotDeviceInfo alarmHost) {
|
|
|
+ IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
|
|
|
+ extend.setId(IdWorker.getId());
|
|
|
+ extend.setDeviceId(alarmHost.getId());
|
|
|
+ extend.setPort(baseInfo.getDevicePort());
|
|
|
+ extend.setPassword(baseInfo.getDevicePassword());
|
|
|
+ extend.setUserName(baseInfo.getDeviceAccount());
|
|
|
+ extend.setNetAddress(baseInfo.getDeviceAddress());
|
|
|
+ extend.setIotToken(alarmHost.getIotToken());
|
|
|
+ extend.setListenAddress(baseInfo.getListenAddress());
|
|
|
+ extend.setListenPort(baseInfo.getListenPort());
|
|
|
+ extend.setDeviceMac(baseInfo.getDeviceMacAddress());
|
|
|
+ extend.setDeviceUserCode(baseInfo.getDeviceUserCode());
|
|
|
+ extend.setIotAddress(baseInfo.getIotAddress());
|
|
|
+ extend.setHostDeviceType(baseInfo.getDeviceType());
|
|
|
+ extend.setDeleted(0);
|
|
|
+ extend.setCreateBy("system");
|
|
|
+ extend.setCreateTime(new Date());
|
|
|
+ extend.setUpdateBy("system");
|
|
|
+ extend.setUpdateTime(new Date());
|
|
|
+ iIotDeviceInfoExtendService.save(extend);
|
|
|
+ }
|
|
|
|
|
|
+ private void handleAlarmHostUpdateExtend(AlarmHostIncrementVo baseInfo, IotDeviceInfo alarmHost, IotDeviceInfoExtend extend) {
|
|
|
+ extend.setPort(baseInfo.getDevicePort());
|
|
|
+ extend.setPassword(baseInfo.getDevicePassword());
|
|
|
+ extend.setUserName(baseInfo.getDeviceAccount());
|
|
|
+ extend.setNetAddress(baseInfo.getDeviceAddress());
|
|
|
+ extend.setIotToken(alarmHost.getIotToken());
|
|
|
+ extend.setListenAddress(baseInfo.getListenAddress());
|
|
|
+ extend.setListenPort(baseInfo.getListenPort());
|
|
|
+ extend.setDeviceMac(baseInfo.getDeviceMacAddress());
|
|
|
+ extend.setDeviceUserCode(baseInfo.getDeviceUserCode());
|
|
|
+ extend.setIotAddress(baseInfo.getIotAddress());
|
|
|
+ extend.setHostDeviceType(baseInfo.getDeviceType());
|
|
|
+ extend.setDeleted(0);
|
|
|
+ extend.setUpdateBy("system");
|
|
|
+ extend.setUpdateTime(new Date());
|
|
|
+ iIotDeviceInfoExtendService.updateById(extend);
|
|
|
}
|
|
|
|
|
|
private void handleDvsIncrement(String data, IotServerInfo serverInfo) {
|
|
|
@@ -1078,7 +1269,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
|
|
|
jsonObject.put("deviceUserCode", extend.getDeviceUserCode());
|
|
|
jsonObject.put("controlAddress", extend.getIotAddress());
|
|
|
jsonObject.put("status", deviceInfo.getEnable());
|
|
|
- final List<IotAlarmSubsystem> subSystem = iotAlarmSubsystemService.findSubSystem(deviceInfo.getDeviceCode());
|
|
|
+ final List<IotAlarmSubsystem> subSystem = iotAlarmSubsystemService.findSubSystem(deviceInfo.getIotToken(), deviceInfo.getDeviceCode());
|
|
|
final List<JSONObject> list = subSystem.stream().map(r -> {
|
|
|
final JSONObject object = new JSONObject();
|
|
|
//object.put("id", r.getId());
|