|
@@ -1,9 +1,14 @@
|
|
package com.macro.mall.tiny.modules.business.service.impl;
|
|
package com.macro.mall.tiny.modules.business.service.impl;
|
|
|
|
|
|
|
|
+import cn.hutool.json.JSONArray;
|
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
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.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
|
|
+import com.macro.mall.tiny.common.util.EprdmsHttpUtils;
|
|
|
|
+import com.macro.mall.tiny.modules.business.dto.SensorListenParam;
|
|
import com.macro.mall.tiny.modules.business.mapper.KrBLineMapper;
|
|
import com.macro.mall.tiny.modules.business.mapper.KrBLineMapper;
|
|
import com.macro.mall.tiny.modules.business.mapper.KrBSensorMapper;
|
|
import com.macro.mall.tiny.modules.business.mapper.KrBSensorMapper;
|
|
import com.macro.mall.tiny.modules.business.mapper.KrBTowerMapper;
|
|
import com.macro.mall.tiny.modules.business.mapper.KrBTowerMapper;
|
|
@@ -11,12 +16,17 @@ import com.macro.mall.tiny.modules.business.model.KrBLine;
|
|
import com.macro.mall.tiny.modules.business.model.KrBSensor;
|
|
import com.macro.mall.tiny.modules.business.model.KrBSensor;
|
|
import com.macro.mall.tiny.modules.business.model.KrBTower;
|
|
import com.macro.mall.tiny.modules.business.model.KrBTower;
|
|
import com.macro.mall.tiny.modules.business.service.KrBSensorService;
|
|
import com.macro.mall.tiny.modules.business.service.KrBSensorService;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
+import java.util.stream.StreamSupport;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -27,6 +37,7 @@ import java.util.stream.Collectors;
|
|
* @since 2021-10-20
|
|
* @since 2021-10-20
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
|
|
+@Slf4j
|
|
public class KrBSensorServiceImpl extends ServiceImpl<KrBSensorMapper, KrBSensor> implements KrBSensorService {
|
|
public class KrBSensorServiceImpl extends ServiceImpl<KrBSensorMapper, KrBSensor> implements KrBSensorService {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
@@ -38,6 +49,16 @@ public class KrBSensorServiceImpl extends ServiceImpl<KrBSensorMapper, KrBSensor
|
|
@Autowired
|
|
@Autowired
|
|
private KrBTowerMapper towerMapper;
|
|
private KrBTowerMapper towerMapper;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private RestTemplate restTemplate;
|
|
|
|
+
|
|
|
|
+ @Value("${keystar.eprdms.url:localhost:18060}")
|
|
|
|
+ private String eprdmsUrl;
|
|
|
|
+
|
|
|
|
+ private static final String CHECK_ONLINE_URL = "/eprdms/meteorology/sensor/check/online";
|
|
|
|
+ private static final String OPEN_LISTEN_URL = "/eprdms/meteorology/sensor/start/listen";
|
|
|
|
+ private static final String CLOSE_LISTEN_URL = "/eprdms/meteorology/sensor/start/listen";
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<KrBSensor> get(String lineName, String deviceMac) {
|
|
public List<KrBSensor> get(String lineName, String deviceMac) {
|
|
LambdaQueryWrapper<KrBSensor> sensorQueryWrapper;
|
|
LambdaQueryWrapper<KrBSensor> sensorQueryWrapper;
|
|
@@ -59,4 +80,65 @@ public class KrBSensorServiceImpl extends ServiceImpl<KrBSensorMapper, KrBSensor
|
|
return sensorList;
|
|
return sensorList;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<KrBSensor> findSensorByLine(Long lineId) {
|
|
|
|
+ List<KrBSensor> sensorList = findBaseSensorByLine(lineId);
|
|
|
|
+ List<String> sensorMacList = sensorList.stream().map(KrBSensor::getDeviceMac).filter(StringUtils::isNotBlank).collect(Collectors.toList());
|
|
|
|
+ SensorListenParam sensorListenParam = new SensorListenParam(sensorMacList);
|
|
|
|
+ JSONObject paramJsonObject = JSONUtil.parseObj(sensorListenParam);
|
|
|
|
+ JSONArray resultArray = EprdmsHttpUtils.PostForEprdms(eprdmsUrl + CHECK_ONLINE_URL, paramJsonObject, JSONArray.class);
|
|
|
|
+ if (resultArray==null) return sensorList;
|
|
|
|
+ Map<String, Boolean> onlineMap = StreamSupport.stream(resultArray.jsonIter().spliterator(), true).collect(Collectors.toMap(jsonObject -> jsonObject.getStr("deviceMac"), jsonObject -> jsonObject.getBool("isOnline")));
|
|
|
|
+ sensorList.forEach(sensor -> sensor.setIsOnline(onlineMap.getOrDefault(sensor.getDeviceMac(), false) ? 1 : 0));
|
|
|
|
+ return sensorList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean openListenByLine(Long lineId) {
|
|
|
|
+ List<KrBSensor> sensorList = findBaseSensorByLine(lineId);
|
|
|
|
+ List<String> sensorMacList = sensorList.stream().map(KrBSensor::getDeviceMac).filter(StringUtils::isNotBlank).collect(Collectors.toList());
|
|
|
|
+ SensorListenParam sensorListenParam = new SensorListenParam(sensorMacList);
|
|
|
|
+ JSONObject paramJsonObject = JSONUtil.parseObj(sensorListenParam);
|
|
|
|
+ JSONArray resultArray = EprdmsHttpUtils.PostForEprdms(eprdmsUrl + OPEN_LISTEN_URL, paramJsonObject, JSONArray.class);
|
|
|
|
+ if (resultArray==null) return false;
|
|
|
|
+ StringBuilder logSb = new StringBuilder("开启监听,lineId:").append(lineId).append("\r\n");
|
|
|
|
+ resultArray.jsonIter().forEach(jsonObject -> {
|
|
|
|
+ logSb.append("deviceMac:")
|
|
|
|
+ .append(jsonObject.getStr("deviceMac"))
|
|
|
|
+ .append(",result:")
|
|
|
|
+ .append(jsonObject.getStr("result"))
|
|
|
|
+ .append("\r\n");
|
|
|
|
+ });
|
|
|
|
+ log.info(logSb.toString());
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean closeListenByLine(Long lineId) {
|
|
|
|
+ List<KrBSensor> sensorList = findBaseSensorByLine(lineId);
|
|
|
|
+ List<String> sensorMacList = sensorList.stream().map(KrBSensor::getDeviceMac).filter(StringUtils::isNotBlank).collect(Collectors.toList());
|
|
|
|
+ SensorListenParam sensorListenParam = new SensorListenParam(sensorMacList);
|
|
|
|
+ JSONObject paramJsonObject = JSONUtil.parseObj(sensorListenParam);
|
|
|
|
+ JSONArray resultArray = EprdmsHttpUtils.PostForEprdms(eprdmsUrl + CLOSE_LISTEN_URL, paramJsonObject, JSONArray.class);
|
|
|
|
+ if (resultArray==null) return false;
|
|
|
|
+ StringBuilder logSb = new StringBuilder("关闭监听,lineId:").append(lineId).append("\r\n");
|
|
|
|
+ resultArray.jsonIter().forEach(jsonObject -> {
|
|
|
|
+ logSb.append("deviceMac:")
|
|
|
|
+ .append(jsonObject.getStr("deviceMac"))
|
|
|
|
+ .append(",result:")
|
|
|
|
+ .append(jsonObject.getStr("result"))
|
|
|
|
+ .append("\r\n");
|
|
|
|
+ });
|
|
|
|
+ log.info(logSb.toString());
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<KrBSensor> findBaseSensorByLine(Long lineId) {
|
|
|
|
+ LambdaQueryWrapper<KrBTower> towerQueryWrapper = new QueryWrapper<KrBTower>().lambda().eq(KrBTower::getLineId, lineId);
|
|
|
|
+ List<KrBTower> towerList = towerMapper.selectList(towerQueryWrapper);
|
|
|
|
+ List<Long> towerIdList = towerList.stream().map(KrBTower::getId).collect(Collectors.toList());
|
|
|
|
+ LambdaQueryWrapper<KrBSensor> sensorQueryWrapper = new QueryWrapper<KrBSensor>().lambda().in(KrBSensor::getTowerId, towerIdList);
|
|
|
|
+ return sensorMap.selectList(sensorQueryWrapper);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|