From d938c951a1669b4df877ffc6521aef17f0fac809 Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期五, 28 十月 2022 17:53:05 +0800
Subject: [PATCH] changes
---
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java | 722 ++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 579 insertions(+), 143 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
index bd65b3b..e112f59 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -2,6 +2,7 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
import com.aliyuncs.iot.model.v20180120.BatchGetDeviceStateResponse;
import com.aliyuncs.iot.model.v20180120.QueryDeviceDetailResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -14,11 +15,11 @@
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.dto.DeviceStatus;
-import com.sandu.ximon.admin.dto.WaterQualityDataDto;
import com.sandu.ximon.admin.manager.iot.frame.A1Frame;
import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder;
import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3HeartbeatReportInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.request.A1TernaryCodeReqInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.request.A5LightResetReqInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.request.EmptyRequestInnerFrame;
@@ -27,27 +28,36 @@
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.*;
import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
-import com.sandu.ximon.admin.param.*;
+import com.sandu.ximon.admin.param.PoleBindingParam;
+import com.sandu.ximon.admin.param.PoleParam;
+import com.sandu.ximon.admin.param.PoleStatesParam;
+import com.sandu.ximon.admin.param.PushAirDataToNovaParam;
+import com.sandu.ximon.admin.redis.DeviceRedisKey;
import com.sandu.ximon.admin.redis.LightKey;
import com.sandu.ximon.admin.security.SecurityUtils;
-import com.sandu.ximon.admin.utils.LightemitUtils;
-import com.sandu.ximon.admin.utils.ListPagingUtils;
-import com.sandu.ximon.admin.utils.RedisUtils;
-import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
+import com.sandu.ximon.admin.utils.*;
import com.sandu.ximon.admin.utils.response.VnnoxResult;
+import com.sandu.ximon.admin.vo.DeviceOnLineCountVO;
+import com.sandu.ximon.admin.vo.OnLineCountVO;
import com.sandu.ximon.admin.vo.PoleBindVO;
+import com.sandu.ximon.admin.vo.RedisDeviceStatus;
import com.sandu.ximon.dao.bo.*;
import com.sandu.ximon.dao.domain.*;
import com.sandu.ximon.dao.enums.OrderByEnums;
import com.sandu.ximon.dao.mapper.PoleMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.RandomStringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
import java.util.*;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@@ -65,12 +75,15 @@
private final PoleGroupRelationService groupRelationService;
private final ClientService clientService;
private final PoleMapper poleMapper;
+ private final RedisUtils redisUtils;
+ private final CountDownLatchUtil countDownLatchUtil;
public boolean addPole(PoleParam param) {
Pole pole = new Pole();
BeanUtils.copyProperties(param, pole);
pole.setPoleCode(generatePoleCode());
pole.setDeviceType(-1);
+ pole.setCentre(1);
boolean save = save(pole);
/**
@@ -99,6 +112,9 @@
Pole update = new Pole();
BeanUtils.copyProperties(param, update);
update.setId(poleId);
+ if (param.getIsCenter() != null) {
+ update.setCentre(param.getIsCenter());
+ }
/**
* 淇敼鐏潌鏃ュ織璁板綍寮�濮�
*/
@@ -120,6 +136,8 @@
}
// 鍒犻櫎鐏潌缁戝畾鍏崇郴
poleBindingService.remove(Wrappers.<PoleBinding>lambdaQuery().eq(PoleBinding::getPoleId, poleId));
+ SpringContextHolder.getBean(LightTaskPoleRelationService.class)
+ .remove(Wrappers.lambdaQuery(LightTaskPoleRelation.class).eq(LightTaskPoleRelation::getPoleId, poleId));
/**
* 鍒犻櫎鐏潌鏃ュ織璁板綍寮�濮�
@@ -158,9 +176,9 @@
*
* @return
*/
- public Map<String, Integer> poleCount() {
+ public Map<String, Integer> poleCount1() {
Map<String, Integer> result = new HashMap<>();
- LambdaQueryWrapper<Pole> wrapper = new LambdaQueryWrapper<>();
+ LambdaQueryWrapper<Pole> wrapper;
if (SecurityUtils.getClientId() == null) {
wrapper = Wrappers.lambdaQuery(Pole.class);
} else {
@@ -168,124 +186,408 @@
w.eq(Pole::getUserId, SecurityUtils.getUserId());
});
}
+
//鐏潌
List<Pole> list = list(wrapper);
- List<Pole> poles = isOnLine(list);
- result.put("poleOnlineCount", poles.size());
result.put("poleTotalCount", list.size());
//璇虹摝
- List<LedPlayerEntity> ledPlayerEntities = SpringContextHolder.getBean(LedPlayerEntityService.class).ledPlayerEntityList(null, null, null, null);
- int number = 0;
- for (LedPlayerEntity bean : ledPlayerEntities) {
- if (bean.getOnlineStatus() == 1) {
- number++;
- }
- }
- result.put("novaOnlineCount", number);
+ List<LedPlayerEntity> ledPlayerEntities = SpringContextHolder.getBean(LedPlayerEntityService.class).ledPlayerEntityListOnHome();
result.put("novaTotalCount", ledPlayerEntities.size());
//ip闊虫煴
- number = 0;
- BroadcastTerminalV2Param broadcastTerminalV2Param = new BroadcastTerminalV2Param();
- broadcastTerminalV2Param.setBindingState(2);
- broadcastTerminalV2Param.setWorkState(2);
- List<BroadcastTerminalV2EntityBo> broadcastTerminalList = SpringContextHolder.getBean(IpVolumeService.class).getBroadcastTerminalList(null, null, null, broadcastTerminalV2Param);
- for (BroadcastTerminalV2EntityBo bean : broadcastTerminalList) {
- if (bean.getStatus() != 0) {
- number++;
- }
- }
- result.put("broadcastOnlineCount", number);
+ List<BroadcastTerminalV2EntityBo> broadcastTerminalList = SpringContextHolder.getBean(IpVolumeService.class).getBroadcastTerminalListOnHome();
result.put("broadcastTotalCount", broadcastTerminalList.size());
//鎽勫儚澶�
- number = 0;
- MonitorParam monitorParam = new MonitorParam();
- monitorParam.setEquipmentState(2);
- monitorParam.setBindingState(2);
- List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, null, null, monitorParam).getList();
- monitorParam.setEquipmentState(1);
- List<MonitorBo> online = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, null, null, monitorParam).getList();
- result.put("monitorOnlineCount", online.size());
+
+ List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorOnHome();
result.put("monitorTotalCount", monitorBos.size());
//鍗曠伅
- number = 0;
- List<Light> lights = SpringContextHolder.getBean(LightService.class).listLight();
- for (Light light : lights) {
- if (light.getOnlineStatus() == 1) {
- number++;
- }
- }
- result.put("LightOnlineCount", number);
+ List<LightBo> lights = SpringContextHolder.getBean(LightService.class).listLightOnHome();
result.put("LightTotalCount", lights.size());
//鍏呯數妗�
- number = 0;
- List<C3ChargingBo> c3mChargings = SpringContextHolder.getBean(C3ChargingService.class).getC3ChargingListByKeyword(null, null);
- for (C3ChargingBo c3ChargingBo : c3mChargings) {
- if (c3ChargingBo.getStatusBit() != 0) {
- number++;
- }
- }
- result.put("C3ChargingOnlineCount", number);
+ List<C3ChargingBo> c3mChargings = SpringContextHolder.getBean(C3ChargingService.class).getC3ChargingList();
result.put("C3ChargingTotalCount", c3mChargings.size());
-
//澶ф皵
- number = 0;
- List<AirEquipmentBo> airEquipments = SpringContextHolder.getBean(AirEquipmentService.class).listAirEquipmentByKeyword(null, null);
- for (AirEquipmentBo airEquipmentBo : airEquipments) {
- if (RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT_STATE.getCode() + airEquipmentBo.getMac()) != null) {
- number++;
- }
- }
- result.put("AirEquipmentOnlineCount", number);
+ List<AirEquipmentBo> airEquipments = SpringContextHolder.getBean(AirEquipmentService.class).listAirEquipmentOnHome();
result.put("AirEquipmentTotalCount", airEquipments.size());
//澶ф皵(鍐滆��)
- number = 0;
- List<AirEquipmentNongGengBo> airEquipmentNongGengBos = SpringContextHolder.getBean(AirEquipmentNongGengService.class).listAirEquipmentByKeyword(null, null);
- for (AirEquipmentNongGengBo airEquipmentNongGengBo : airEquipmentNongGengBos) {
- if (RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT_NONG_GENG_STATE.getCode() + airEquipmentNongGengBo.getMac()) != null) {
- number++;
- }
- }
- result.put("AirEquipmentNongGengOnlineCount", number);
+ List<AirEquipmentNongGengBo> airEquipmentNongGengBos = SpringContextHolder.getBean(AirEquipmentNongGengService.class).listAirEquipmentOnHome();
result.put("AirEquipmentNongGengTotalCount", airEquipmentNongGengBos.size());
+
//姘磋川
- number = 0;
List<WaterQualityEquipmentBo> waterQualityEquipments = SpringContextHolder.getBean(WaterQualityEquipmentService.class).listWaterQualityEquipmentByKeyword(null, null);
-
- for (WaterQualityEquipmentBo waterQualityEquipmentBo : waterQualityEquipments) {
- WaterQualityDataDto waterQualityDataDto = SpringContextHolder.getBean(WaterQualityDataService.class).getWaterQualityDataInfo(waterQualityEquipmentBo.getWaterQualityEquipmentCode());
- if (waterQualityDataDto != null) {
- number++;
- }
- }
- result.put("WaterQualityEquipmentOnlineCount", number);
result.put("WaterQualityEquipmentTotalCount", waterQualityEquipments.size());
- //鐏潌鍊炬枩
- number = 0;
- List<LightPoleHeeling> lightPoleHeelings = SpringContextHolder.getBean(LightPoleHeelingService.class).listLightPoleHeelingByKeyword(null, null);
- for (LightPoleHeeling lightPoleHeeling : lightPoleHeelings) {
- if (RedisUtils.getBean().get(LightPoleHeelingEnum.LIGHT_POLE_HEELING_STATE.getCode() + lightPoleHeeling.getMac()) != null) {
- number++;
- }
- }
- result.put("LightPoleHeelingOnlineCount", number);
- result.put("LightPoleHeelingTotalCount", lightPoleHeelings.size());
+ //鐏潌鍊炬枩
+ List<LightPoleHeelingEquipmentBo> lightPoleHeelingEquipmentBos = SpringContextHolder.getBean(LightPoleHeelingEquipmentService.class).LightPoleHeelingEquipmentListOnHome();
+ result.put("LightPoleHeelingTotalCount", lightPoleHeelingEquipmentBos.size());
//鐔欒
- List<PoleLightemitEntity> poleLightemitEntities = SpringContextHolder.getBean(PoleLightemitService.class).listLed(null, null, null, false);
- List<PoleLightemitEntity> poleLightemitEntityOnlineList = SpringContextHolder.getBean(PoleLightemitService.class).listLed(null, null, null, true);
-
- result.put("XiXunOnlineCount", poleLightemitEntityOnlineList.size());
+ List<PoleLightemitEntity> poleLightemitEntities = SpringContextHolder.getBean(PoleLightemitService.class).listLedOnHome();
result.put("XiXunTotalCount", poleLightemitEntities.size());
return result;
}
+
+
+ /**
+ * 缁熻鍦ㄧ嚎鐏潌鏁伴噺
+ *
+ * @return
+ */
+ public OnLineCountVO poleCount() {
+ System.out.println("璇锋眰鏃堕棿: " + LocalDateTime.now());
+ OnLineCountVO onLineCountVO = new OnLineCountVO();
+ CountDownLatch countDownLatch = new CountDownLatch(9);//todo
+ //鑾峰彇涓�涓�7浣嶉殢鏈烘暟
+ String str = RandomStringUtils.randomAlphanumeric(7);
+ countDownLatchUtil.push(str, countDownLatch);
+ //璇虹摝
+ List<LedPlayerEntity> ledPlayerEntities = SpringContextHolder.getBean(LedPlayerEntityService.class).ledPlayerEntityListOnHome();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ AtomicInteger onLine = new AtomicInteger(0);
+ AtomicInteger offLine = new AtomicInteger(0);
+
+
+ //ip闊虫煴
+
+ DeviceOnLineCountVO ledNova = new DeviceOnLineCountVO();
+ ledPlayerEntities.forEach(
+ Volume -> {
+ String s = redisUtils.get(DeviceRedisKey.NOVA + Volume.getId());
+ if (s != null) {
+ RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class);
+ if (redisDeviceStatus.getStatus() == 0) {
+ //鍦ㄧ嚎
+ onLine.getAndIncrement();
+ } else {
+ //绂荤嚎
+ offLine.getAndIncrement();
+ }
+ } else {
+ offLine.getAndIncrement();
+ }
+ }
+ );
+
+ ledNova.setTotalCount(ledPlayerEntities.size());
+ ledNova.setOnlineCount(onLine.get());
+ ledNova.setOfflineCount(offLine.get());
+
+ onLineCountVO.setLedNova(ledNova);
+ System.out.println("璇虹摝鎵ц鏃堕棿: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+
+ //闊虫煴
+ List<BroadcastTerminalV2EntityBo> broadcastTerminalList = SpringContextHolder.getBean(IpVolumeService.class).getBroadcastTerminalListOnHome();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ AtomicInteger onLine = new AtomicInteger(0);
+ AtomicInteger offLine = new AtomicInteger(0);
+
+
+ //ip闊虫煴
+
+ DeviceOnLineCountVO ipVolume = new DeviceOnLineCountVO();
+ broadcastTerminalList.forEach(
+ Volume -> {
+ String s = redisUtils.get(DeviceRedisKey.IP_BROADCAST + Volume.getId());
+ if (s != null) {
+ RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class);
+ if (redisDeviceStatus.getStatus() == 0) {
+ //鍦ㄧ嚎
+ onLine.getAndIncrement();
+ } else {
+ //绂荤嚎
+ offLine.getAndIncrement();
+ }
+ } else {
+ offLine.getAndIncrement();
+ }
+ }
+ );
+
+ ipVolume.setTotalCount(broadcastTerminalList.size());
+ ipVolume.setOnlineCount(onLine.get());
+ ipVolume.setOfflineCount(offLine.get());
+
+ onLineCountVO.setBroadcast(ipVolume);
+ System.out.println("闊虫煴鎵ц鏃堕棿: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+
+ //鎽勫儚澶�
+ List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorOnHome();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+
+ AtomicInteger onLine = new AtomicInteger(0);
+ AtomicInteger offLine = new AtomicInteger(0);
+
+ DeviceOnLineCountVO Monitor = new DeviceOnLineCountVO();
+ monitorBos.forEach(
+ device -> {
+ String s = redisUtils.get(DeviceRedisKey.MONITOR + device.getDeviceSerial());
+ if (s != null) {
+ RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class);
+ if (redisDeviceStatus.getStatus() == 0) {
+ //鍦ㄧ嚎
+ onLine.getAndIncrement();
+ } else {
+ //绂荤嚎
+ offLine.getAndIncrement();
+ }
+ } else {
+ offLine.getAndIncrement();
+ }
+ }
+ );
+
+ Monitor.setTotalCount(monitorBos.size());
+ Monitor.setOnlineCount(onLine.get());
+ Monitor.setOfflineCount(offLine.get());
+
+ onLineCountVO.setMonitor(Monitor);
+ System.out.println("鎽勫儚澶存墽琛屾椂闂�: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+
+
+ //鍗曠伅
+ List<LightBo> lights = SpringContextHolder.getBean(LightService.class).listLightOnHome();
+ BaseConditionVO baseConditionVO = new BaseConditionVO();
+ baseConditionVO.setPageNo(1);
+ baseConditionVO.setPageSize(999);
+ System.out.println("鍗曠伅鏁呴殰缁熻鏃堕棿: " + LocalDateTime.now());
+ CommonPage commonPage = SpringContextHolder.getBean(LightReportErrorService.class).queryErrorCode(baseConditionVO);
+ System.out.println("鍗曠伅鏁呴殰缁熻鏃堕棿: " + LocalDateTime.now());
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+
+ AtomicInteger onLine = new AtomicInteger(0);
+ AtomicInteger offLine = new AtomicInteger(0);
+ AtomicInteger error = new AtomicInteger(commonPage.getList().size());
+
+
+ DeviceOnLineCountVO light = new DeviceOnLineCountVO();
+ lights.forEach(
+ device -> {
+ String s = redisUtils.get(DeviceRedisKey.LIGHT_DEVICE + device.getDeviceCode());
+ if (s != null) {
+ RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class);
+ if (redisDeviceStatus.getStatus() == 0) {
+ //鍦ㄧ嚎
+ onLine.getAndIncrement();
+ } else {
+ //绂荤嚎
+ offLine.getAndIncrement();
+ }
+ } else {
+ offLine.getAndIncrement();
+ }
+ }
+ );
+
+ light.setTotalCount(lights.size());
+ light.setOnlineCount(onLine.get());
+ light.setOfflineCount(offLine.get());
+ light.setErrorCount(error.get());
+
+ onLineCountVO.setLight(light);
+ System.out.println("鍗曠伅鎵ц鏃堕棿: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+
+
+ //鍏呯數妗�
+ List<C3ChargingBo> c3mChargings = SpringContextHolder.getBean(C3ChargingService.class).getC3ChargingList();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ AtomicInteger onLine = new AtomicInteger(0);
+ AtomicInteger offLine = new AtomicInteger(0);
+ AtomicInteger error = new AtomicInteger(0);
+
+
+ DeviceOnLineCountVO c3m = new DeviceOnLineCountVO();
+ c3mChargings.forEach(
+ device -> {
+ String s = redisUtils.get(C3mRedisConstant.C3_STATUS.getCode() + device.getC3Mac());
+ RedisDeviceStatus redisDeviceStatus = new RedisDeviceStatus();
+ redisDeviceStatus.setDeviceId(device.getC3Id().toString());
+ if (s != null) {
+ A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage heartBeatDataPackage = JSON.parseObject(s, A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage.class);
+ // 鍏呯數妗╁彛鐘舵�佷綅 1.绌洪棽 2.鍏呯數涓� 3.鍏呯數涓柇锛岀瓑寰呮湇鍔″櫒纭 4.鍏呯數缁撴潫锛岀瓑寰呮湇鍔″櫒纭 5.鏈夋晠闅� 6.涓庡厖鐢垫々瀵规帴涓�
+ if ("5".equals(heartBeatDataPackage.getStatusBit())) {
+ //鏁呴殰
+ onLine.getAndIncrement();
+ error.getAndIncrement();
+ } else {
+ //鍦ㄧ嚎
+ onLine.getAndIncrement();
+ }
+ } else {
+ //绂荤嚎
+ offLine.getAndIncrement();
+ }
+ }
+ );
+
+ c3m.setTotalCount(c3mChargings.size());
+ c3m.setOnlineCount(onLine.get());
+ c3m.setOfflineCount(offLine.get());
+ c3m.setErrorCount(error.get());
+
+ onLineCountVO.setC3m(c3m);
+ System.out.println("鍏呯數妗╂墽琛屾椂闂�: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+
+
+ //澶ф皵
+ List<AirEquipmentBo> airEquipments = SpringContextHolder.getBean(AirEquipmentService.class).listAirEquipmentOnHome();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ AtomicInteger onLine = new AtomicInteger(0);
+ AtomicInteger offLine = new AtomicInteger(0);
+ AtomicInteger error = new AtomicInteger(0);
+
+
+ DeviceOnLineCountVO air = new DeviceOnLineCountVO();
+ airEquipments.forEach(
+ device -> {
+ String s = redisUtils.get(DeviceRedisKey.AIR + device.getMac());
+ if (s != null) {
+ RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class);
+ if (redisDeviceStatus.getStatus() == 0) {
+ //鍦ㄧ嚎
+ onLine.getAndIncrement();
+ } else if (redisDeviceStatus.getStatus() == 1) {
+ //绂荤嚎
+ offLine.getAndIncrement();
+ } else {
+ error.getAndIncrement();
+ }
+ } else {
+ error.getAndIncrement();
+ }
+ }
+ );
+
+ air.setTotalCount(airEquipments.size());
+ air.setOnlineCount(onLine.get());
+ air.setOfflineCount(offLine.get());
+ air.setErrorCount(error.get());
+
+ onLineCountVO.setAirEquipment(air);
+ System.out.println("澶ф皵鎵ц鏃堕棿: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+
+
+ //澶ф皵(鍐滆��)
+// List<AirEquipmentNongGengBo> airEquipmentNongGengBos = SpringContextHolder.getBean(AirEquipmentNongGengService.class).listAirEquipmentOnHome();
+// result.put("AirEquipmentNongGengTotalCount", airEquipmentNongGengBos.size());
+
+ //姘磋川
+ List<WaterQualityEquipmentBo> waterQualityEquipments = SpringContextHolder.getBean(WaterQualityEquipmentService.class).listWaterQualityEquipmentByKeyword(null, null);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+
+ DeviceOnLineCountVO water = new DeviceOnLineCountVO();
+ water.setTotalCount(waterQualityEquipments.size());
+ water.setOnlineCount(waterQualityEquipments.size());
+ water.setOfflineCount(0);
+ water.setErrorCount(0);
+ onLineCountVO.setWaterEquipment(water);
+ System.out.println("姘磋川鎵ц鏃堕棿: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+
+
+ //鐏潌鍊炬枩
+ List<LightPoleHeelingEquipmentBo> lightPoleHeelingEquipmentBos = SpringContextHolder.getBean(LightPoleHeelingEquipmentService.class).LightPoleHeelingEquipmentListOnHome();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+
+ DeviceOnLineCountVO PoleHeeling = new DeviceOnLineCountVO();
+ PoleHeeling.setTotalCount(lightPoleHeelingEquipmentBos.size());
+ PoleHeeling.setOnlineCount(lightPoleHeelingEquipmentBos.size());
+ PoleHeeling.setOfflineCount(0);
+ PoleHeeling.setErrorCount(0);
+ onLineCountVO.setLightPoleHeeling(PoleHeeling);
+ System.out.println("鐏潌鍊炬枩鎵ц鏃堕棿: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+
+ //鐔欒
+ List<PoleLightemitEntity> xiXuns = SpringContextHolder.getBean(PoleLightemitService.class).listLedOnHome();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ AtomicInteger onLine = new AtomicInteger(0);
+ AtomicInteger offLine = new AtomicInteger(0);
+
+ DeviceOnLineCountVO xixunLed = new DeviceOnLineCountVO();
+ xiXuns.forEach(
+ device -> {
+ String s = redisUtils.get(DeviceRedisKey.XIXUN + device.getLightemitControlCode());
+ if (s != null) {
+ RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class);
+ if (redisDeviceStatus.getStatus() == 0) {
+ //鍦ㄧ嚎
+ onLine.getAndIncrement();
+ } else {
+ //绂荤嚎
+ offLine.getAndIncrement();
+ }
+ } else {
+ offLine.getAndIncrement();
+ }
+ }
+ );
+
+ xixunLed.setTotalCount(xiXuns.size());
+ xixunLed.setOnlineCount(onLine.get());
+ xixunLed.setOfflineCount(offLine.get());
+
+ onLineCountVO.setLedXiXun(xixunLed);
+ System.out.println("鐔欐睕鎵ц鏃堕棿: " + LocalDateTime.now());
+ countDownLatchUtil.countDown(str);
+ }
+ }).start();
+ try {
+ countDownLatch.await(20000, TimeUnit.MILLISECONDS);
+ countDownLatchUtil.remove(str);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ System.out.println("鍝嶅簲鏃堕棿: " + LocalDateTime.now());
+ return onLineCountVO;
+ }
+
public CommonPage queryAllStatesAndList(Integer pageNo, Integer pageSize, PoleStatesParam param, Integer order, Integer seq) {
if (param == null) {
@@ -326,14 +628,22 @@
String orderBy = "t1." + orderByResult + " " + orderBySeq;
List<Pole> poleList;
+ Integer center = param.getCenter();
if (SecurityUtils.getClientId() == null) {
poleList = poleMapper.queryPoleOnLineStatesList(null, param.getIsTrue(),
- param.getBingStates(), param.getGroupid(), param.getKeyword(), orderBy);
+ param.getBingStates(), param.getGroupid(), param.getKeyword(), center, orderBy);
} else {
poleList = poleMapper.queryPoleOnLineStatesList(SecurityUtils.getUserId(),
- param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword(), orderBy);
+ param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword(), center, orderBy);
}
+ poleList.forEach(
+ centre -> {
+ if (centre.getCentre() == 0) {
+ centre.setCenter(true);
+ }
+ }
+ );
List<Pole> PoleResult = isOnLine(poleList, param);
setCount(PoleResult);
@@ -419,25 +729,24 @@
* @param param
* @return
*/
- public List<Pole> isBind(List<Pole> list, PoleStatesParam param) {
- List<Pole> bindList = new ArrayList<>();//宸茬粦瀹氬鎴�
- List<Pole> unbindList = new ArrayList<>();//鏈粦瀹氬鎴�
- list.forEach(bindwarpper -> {
-// Long clientId = bindwarpper.getClientId();
- if (bindwarpper.getClientId() == null) {//鍒ゆ柇鏄惁缁戝畾
- unbindList.add(bindwarpper);
- } else {
- bindList.add(bindwarpper);
- }
- });
- if (param.getBingStates() == 0) {
- return bindList;
- } else if (param.getBingStates() == 1) {
- return unbindList;
- }
- return list;
- }
-
+// public List<Pole> isBind(List<Pole> list, PoleStatesParam param) {
+// List<Pole> bindList = new ArrayList<>();//宸茬粦瀹氬鎴�
+// List<Pole> unbindList = new ArrayList<>();//鏈粦瀹氬鎴�
+// list.forEach(bindwarpper -> {
+//// Long clientId = bindwarpper.getClientId();
+// if (bindwarpper.getClientId() == null) {//鍒ゆ柇鏄惁缁戝畾
+// unbindList.add(bindwarpper);
+// } else {
+// bindList.add(bindwarpper);
+// }
+// });
+// if (param.getBingStates() == 0) {
+// return bindList;
+// } else if (param.getBingStates() == 1) {
+// return unbindList;
+// }
+// return list;
+// }
public List<Pole> isTrue(List<Pole> list, PoleStatesParam param) {
//瀹炰綋鐏潌
List<Pole> isTrue = new ArrayList<>();
@@ -556,8 +865,8 @@
*
* @return 鏄惁鎴愬姛
*/
- public boolean unBindPole(Long poleId, String deviceCode) {
- return poleBindingService.unBindPole(poleId, deviceCode);
+ public boolean unBindPole(Long poleId, String deviceCode, Integer deviceType) {
+ return poleBindingService.unBindPole(poleId, deviceCode, deviceType);
}
@@ -574,7 +883,7 @@
}
String deviceName = byId.getDeviceCode();
if (deviceName.isEmpty()) {
- throw new BusinessException("璇ョ伅鏉哅ca涓虹┖");
+ throw new BusinessException("璇ョ伅鏉哅ac涓虹┖");
}
IRequestFrame build = FrameBuilder.builderA5().orderType(A5OrderEnum.REQUEST_LIGHT_DATA.getCode()).innerFrame(new A5LightResetReqInnerFrame()).build();
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(deviceName, build);
@@ -699,10 +1008,13 @@
boolean result = saveOrUpdate(pole);
if (result) {
- Light light = new Light();
- light.setDeviceCode(uniqueMac);
- light.setLightCount(2);
- SpringContextHolder.getBean(LightService.class).save(light);
+ Light light = SpringContextHolder.getBean(LightService.class).getOne(Wrappers.lambdaQuery(Light.class).eq(Light::getDeviceCode, pole.getDeviceCode()).last("limit 1"));
+ if (light == null) {
+ light = new Light();
+ light.setDeviceCode(uniqueMac);
+ light.setLightCount(2);
+ SpringContextHolder.getBean(LightService.class).save(light);
+ }
}
/**
@@ -769,10 +1081,40 @@
if (pole == null) {
throw new BusinessException("鐏潌涓嶅瓨鍦�");
}
- pole.setUserId(clientId);
- if (!clientService.findClientId(clientId)) {
- pole.setClientId(clientService.getClientId(clientId));
+ pole.setClientId(clientId);
+ if (clientService.findClientId(clientId)) {
+ pole.setUserId(clientService.getClientId(clientId));
+
}
+ r = updateById(pole);
+
+ if (!r) {
+ throw new BusinessException("鐏潌ID涓�" + poleId + "璁剧疆澶辫触,鑷姩鍋滄");
+ }
+
+ }
+ return r;
+ }
+
+ /**
+ * 鐢ㄦ埛瑙g粦鐏潌
+ *
+ * @param clientId
+ * @param poleIds
+ * @return
+ */
+ public boolean ClientUnBindingPole(long clientId, int[] poleIds) {
+ boolean r = false;
+ for (int poleId : poleIds) {
+ Pole pole = getById(poleId);
+ if (pole == null) {
+ throw new BusinessException("鐏潌涓嶅瓨鍦�");
+ }
+
+ //涓�绾у鎴� -1 userId
+ //浜岀骇瀹㈡埛 涓婄骇瀹㈡埛id userId
+ pole.setClientId(-1L);
+ pole.setUserId(-1L);
r = updateById(pole);
if (!r) {
@@ -786,22 +1128,15 @@
public List<Pole> getOwnerPole(BaseConditionVO baseConditionVO, String keyword, Long cilentId) {
LambdaQueryWrapper<Pole> eq;
-// if(SecurityUtils.getClientId()!=null){
- PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
if (clientService.findClientId(cilentId)) {
- eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getUserId, cilentId);
+ eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, cilentId);
} else {
- PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, cilentId).or(pole -> {
pole.eq(Pole::getUserId, cilentId);
});
}
-// }else {
-// PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
-// eq = Wrappers.lambdaQuery(Pole.class);
-// }
- PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
+
if (!keyword.isEmpty()) {
eq.like(Pole::getPoleName, keyword).or(code -> {
code.like(Pole::getPoleCode, keyword);
@@ -809,6 +1144,7 @@
deviceCode.like(Pole::getDeviceCode, keyword);
});
}
+ PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
List<Pole> list;
list = list(eq);
setCount(list);
@@ -955,32 +1291,132 @@
throw new BusinessException("璁惧涓嶅瓨鍦�");
}
//鍏抽棴鎺ㄩ��
- SpringContextHolder.getBean(LightemitUtils.class).clear(xixun.getDeviceCode());
-
+ String clear = SpringContextHolder.getBean(LightemitUtils.class).clear(xixun.getDeviceCode());
+ if (clear.contains("is not") || clear.contains("does not")) {
+ throw new BusinessException("璁惧涓嶅湪绾挎垨璁惧鏈瓨鍦ㄤ簬鏈嶅姟鍣�");
+ }
}
/**
* 鎺ㄩ�佸ぇ姘旂洃娴嬫暟鎹埌novaLED
*/
- public VnnoxResult pushAirDataToNova(Long poleId) {
+ public VnnoxResult pushAirDataToNova(PushAirDataToNovaParam param) {
+ Long poleId = param.getPoleId();
Pole pole = getById(poleId);
PoleBinding air = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 3));
+ if (air == null) {
+ throw new BusinessException("鏈粦瀹氬ぇ姘旂洃娴嬭澶�");
+ }
PoleBinding nova = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 1));
+ if (nova == null) {
+ throw new BusinessException("鏈粦瀹歯ova璁惧");
+ }
LedPlayerEntity LED = SpringContextHolder.getBean(LedPlayerEntityService.class).getOne(Wrappers.lambdaQuery(LedPlayerEntity.class).eq(LedPlayerEntity::getSn, nova.getDeviceCode()));
if (pole == null) {
throw new BusinessException("鐏潌涓嶅瓨鍦�");
}
- if (air == null) {
- throw new BusinessException("鏈粦瀹氬ぇ姘旂洃娴嬭澶�");
- }
- if (nova == null) {
- throw new BusinessException("鏈粦瀹歯ova璁惧");
- }
//鑾峰彇澶ф皵鐩戞祴鏁版嵁
A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(poleId);
//鎺ㄩ�佹暟鎹�
- return SpringContextHolder.getBean(VnnoxService.class).publishWaterData(LED.getPlayerId(), data);
+// return SpringContextHolder.getBean(VnnoxService.class).publishWaterData(LED.getPlayerId(),param.getDuration(), data);
+ return SpringContextHolder.getBean(VnnoxService.class).WaterData(LED.getPlayerId(), param.getDuration(), data);
}
+ /**
+ * 缁熻璁惧鐘舵�佸瓨鍏edis
+ */
+ public void setRedis() {
+
+ // redisStatusKeyTimeout涓虹┖ 浠h〃涓婃璋冪敤鍦�15鍒嗛挓鍓�
+ if (redisUtils.get("redisStatusKeyTimeout") != null) {
+ //涓嶄负绌� 璇存槑鐭椂闂村唴璋冪敤杩� 鐩存帴杩斿洖
+ System.out.println("15鍒嗛挓鍐呭凡缁忔洿鏂拌繃鏁版嵁");
+ return;
+ }
+
+ //璁剧疆瑙﹀彂鏉′欢 瀛樺叆Redis 15鍒嗛挓瓒呮椂 15鍒嗛挓鍐呭啀娆¤皟鐢ㄧ洿鎺ヨ繑鍥�
+ redisUtils.set("redisStatusKeyTimeout", System.currentTimeMillis(), 60 * 15);
+
+ CountDownLatch countDownLatch = new CountDownLatch(7);//todo
+ //鑾峰彇涓�涓�7浣嶉殢鏈烘暟
+ String str = RandomStringUtils.randomAlphanumeric(7);
+ countDownLatchUtil.push(str, countDownLatch);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ SpringContextHolder.getBean(IpVolumeService.class).setCacheData();
+ countDownLatchUtil.countDown(str);
+ System.out.println("闊虫煴鎵ц");
+
+ }
+ }).start();
+
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ SpringContextHolder.getBean(MonitorService.class).setCacheData();
+ countDownLatchUtil.countDown(str);
+ System.out.println("鎽勫儚澶存墽琛�");
+ }
+ }).start();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ SpringContextHolder.getBean(LightService.class).setCacheData();
+ countDownLatchUtil.countDown(str);
+ System.out.println("鍗曠伅鎵ц");
+ }
+ }).start();
+// new Thread(new Runnable() {
+// @Override
+// public void run() {
+// SpringContextHolder.getBean(C3ChargingService.class).setCacheData();
+// countDownLatchUtil.countDown(str);
+// System.out.println("鍏呯數妗╂墽琛�");
+// }
+// }).start();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ SpringContextHolder.getBean(AirEquipmentService.class).setCacheData();
+ countDownLatchUtil.countDown(str);
+ System.out.println("澶ф皵鎵ц");
+ }
+ }).start();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ SpringContextHolder.getBean(PoleLightemitService.class).setCacheData();
+ countDownLatchUtil.countDown(str);
+ System.out.println("鐔欐睕鎵ц");
+ }
+ }).start();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ SpringContextHolder.getBean(VnnoxService.class).setCacheData();
+ countDownLatchUtil.countDown(str);
+ System.out.println("璇虹摝鎵ц"); //todo 璇虹摝鏁呴殰鏆傛棤
+ }
+ }).start();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ SpringContextHolder.getBean(PoleLightemitService.class).setCacheData();
+ countDownLatchUtil.countDown(str);
+ System.out.println("鐔欐睕鎵ц");
+ }
+ }).start();
+
+
+ try {
+ countDownLatch.await(12000, TimeUnit.MILLISECONDS);
+ countDownLatchUtil.remove(str);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3