修改累计水量、累计电量、箱门状态的获取方式
This commit is contained in:
parent
9acc3940d8
commit
0d42fc0785
@ -2,9 +2,11 @@ package com.fastbee.data.service.gis.impl;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.fastbee.common.core.page.TableDataInfo;
|
||||
import com.fastbee.common.model.vo.TreeItemVo;
|
||||
import com.fastbee.common.model.vo.iot.GisDeviceListVo;
|
||||
import com.fastbee.common.utils.DateUtils;
|
||||
@ -42,7 +44,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
@Autowired
|
||||
private IDeviceLogService logService;
|
||||
|
||||
// @Resource
|
||||
// @Resource
|
||||
// DeviceInfoCacheService deviceInfoCacheService;
|
||||
@Autowired
|
||||
private IAlertService iAlertService;
|
||||
@ -52,6 +54,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
@Autowired
|
||||
private IMaWatereleRecordService watereleRecordService;
|
||||
|
||||
|
||||
public GisDeviceServiceImpl(@Qualifier("deviceMapper") DeviceMapper deviceMapper, @Qualifier("productMapper") ProductMapper productMapper) {
|
||||
this.deviceMapper = deviceMapper;
|
||||
this.productMapper = productMapper;
|
||||
@ -88,8 +91,8 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
devItem.setName(deviceEntity1.getDeviceName());
|
||||
devItem.setId(deviceEntity1.getDeviceId());
|
||||
devItem.setStatus(deviceEntity1.getStatus());
|
||||
devItem.setLatitude(deviceEntity1.getLatitude() != null ?deviceEntity1.getLatitude().floatValue():null);
|
||||
devItem.setLongitude(deviceEntity1.getLongitude()!= null ?deviceEntity1.getLongitude().floatValue():null);
|
||||
devItem.setLatitude(deviceEntity1.getLatitude() != null ? deviceEntity1.getLatitude().floatValue() : null);
|
||||
devItem.setLongitude(deviceEntity1.getLongitude() != null ? deviceEntity1.getLongitude().floatValue() : null);
|
||||
treeItemVoList.add(devItem);
|
||||
if (deviceEntity1.getStatus() == 3) {
|
||||
onLineCount++;
|
||||
@ -103,10 +106,12 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
deviceListVo.setOnLineCount(onLineCount);
|
||||
return deviceListVo;
|
||||
}
|
||||
|
||||
//todo 需要修改安防版和水电双计设备实时数据
|
||||
@Override
|
||||
public Object getRealTimeDataByDevicerId(Long deviceId) {
|
||||
HashMap<String, Object> rMap = new HashMap<String, Object>() {};
|
||||
HashMap<String, Object> rMap = new HashMap<String, Object>() {
|
||||
};
|
||||
if (deviceId == null) {
|
||||
throw new RuntimeException("请上传devicerId");
|
||||
}
|
||||
@ -140,10 +145,10 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
put("value", 0);
|
||||
put("name", thingsModel.getModelName());
|
||||
}};
|
||||
if(StringUtils.isNotEmpty(thingsModel.getSpecs())){
|
||||
if (StringUtils.isNotEmpty(thingsModel.getSpecs())) {
|
||||
String specs = thingsModel.getSpecs();
|
||||
JSONObject parse = (JSONObject) JSON.parse(specs);
|
||||
if(parse.containsKey("unit")){
|
||||
if (parse.containsKey("unit")) {
|
||||
hashMap.put("unit", parse.get("unit"));
|
||||
}
|
||||
}
|
||||
@ -151,19 +156,29 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
if (hashMap.size() > 1) {
|
||||
List<DeviceLog> deviceLogs1 = taiyangnengCollect.get(thingsModel.getIdentifier());
|
||||
if (deviceLogs1 != null) {
|
||||
if(StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())){
|
||||
if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue()))
|
||||
{
|
||||
hashMap.put("upType", 1);
|
||||
} else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
|
||||
hashMap.put("upType", -1);
|
||||
if(deviceLogs1.size() > 0){
|
||||
if (StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())) {
|
||||
if(deviceLogs1.size() > 1){
|
||||
if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
|
||||
hashMap.put("upType", 1);
|
||||
} else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
|
||||
hashMap.put("upType", -1);
|
||||
}
|
||||
}else{
|
||||
hashMap.put("upType", 0);
|
||||
}
|
||||
hashMap.put("value", deviceLogs1.get(0).getLogValue());
|
||||
} else {
|
||||
hashMap.put("value", "--");
|
||||
hashMap.put("upType", 0);
|
||||
}
|
||||
hashMap.put("value", deviceLogs1.get(0).getLogValue());
|
||||
|
||||
}else{
|
||||
hashMap.put("value", "--");
|
||||
hashMap.put("upType", 0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
} else if (hashMap.size() > 0) {
|
||||
List<DeviceLog> deviceLogs2 = taiyangnengCollect.get(thingsModel.getIdentifier());
|
||||
@ -173,8 +188,8 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
}
|
||||
rMap.put(thingsModel.getIdentifier(), hashMap);
|
||||
}
|
||||
}else{
|
||||
for (ThingsModel thingsModel : taiyangnengModels){
|
||||
} else {
|
||||
for (ThingsModel thingsModel : taiyangnengModels) {
|
||||
HashMap<Object, Object> hashMap = new HashMap<Object, Object>() {{
|
||||
put("upType", 0);
|
||||
put("identifier", thingsModel.getIdentifier());
|
||||
@ -185,33 +200,195 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
rMap.put(thingsModel.getIdentifier(), hashMap);
|
||||
}
|
||||
}
|
||||
//安防信息
|
||||
String anfangIds = devParams.get("anfangIds").toString();
|
||||
HashMap<Object, Object> hashMap = new HashMap<Object, Object>() {{
|
||||
put("upType", 0);
|
||||
put("identifier", "xiangmen");
|
||||
put("unit", "");
|
||||
put("value", 0);//0=正常,1=箱门振动,2=箱门打开
|
||||
put("name", "箱门状态");
|
||||
}};
|
||||
rMap.put("xiangmen",hashMap);
|
||||
//机井信息
|
||||
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
|
||||
put("upType", 0);
|
||||
put("identifier", "sumFlow");
|
||||
put("unit", "m³");
|
||||
put("value", 0);
|
||||
put("name", "累计用水量");
|
||||
}};
|
||||
rMap.put("sumFlow",hashMap1);
|
||||
//箱门信息
|
||||
String guimenIds = devParams.get("guimenIds").toString();
|
||||
ThingsModel thingsModel3 = new ThingsModel();
|
||||
thingsModel3.setProductId(140L);
|
||||
List<ThingsModel> guimenModels = thingsModelService.selectThingsModelList(thingsModel3);
|
||||
if (StringUtils.isNotEmpty(taiyangnengIds)) {
|
||||
Device guimenDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(guimenIds));
|
||||
List<DeviceLog> deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{
|
||||
setSerialNumber(guimenDevice.getSerialNumber());
|
||||
setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(dateTime, -1)).toString());
|
||||
setEndTime(DateUtil.endOfDay(dateTime).toString());
|
||||
}});
|
||||
Map<String, List<DeviceLog>> guimenCollect = deviceLogs.stream().sorted(Comparator
|
||||
.comparing(DeviceLog::getCreateTime, Comparator
|
||||
.nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity()));
|
||||
for (ThingsModel thingsModel : guimenModels) {
|
||||
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
|
||||
put("upType", 0);
|
||||
put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":thingsModel.getIdentifier());
|
||||
put("unit", "");
|
||||
put("value", 0);
|
||||
put("name", thingsModel.getModelName());
|
||||
}};
|
||||
if (StringUtils.isNotEmpty(thingsModel.getSpecs())) {
|
||||
String specs = thingsModel.getSpecs();
|
||||
JSONObject parse = (JSONObject) JSON.parse(specs);
|
||||
if (parse.containsKey("unit")) {
|
||||
hashMap1.put("unit", parse.get("unit"));
|
||||
}
|
||||
}
|
||||
|
||||
if (hashMap1.size() > 1) {
|
||||
List<DeviceLog> deviceLogs1 = guimenCollect.get(thingsModel.getIdentifier());
|
||||
if (deviceLogs1 != null) {
|
||||
if(deviceLogs1.size() > 0){
|
||||
if (StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())) {
|
||||
if(deviceLogs1.size() > 1){
|
||||
if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
|
||||
hashMap1.put("upType", 1);
|
||||
} else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
|
||||
hashMap1.put("upType", -1);
|
||||
}
|
||||
}else{
|
||||
hashMap1.put("upType", 0);
|
||||
}
|
||||
hashMap1.put("value", deviceLogs1.get(0).getLogValue());
|
||||
} else {
|
||||
hashMap1.put("value", "--");
|
||||
hashMap1.put("upType", 0);
|
||||
}
|
||||
|
||||
}else{
|
||||
hashMap1.put("value", "--");
|
||||
hashMap1.put("upType", 0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
} else if (hashMap1.size() > 0) {
|
||||
List<DeviceLog> deviceLogs3 = guimenCollect.get(thingsModel.getIdentifier());
|
||||
if (deviceLogs3 != null) {
|
||||
hashMap1.put("value", deviceLogs3.get(0).getLogValue());
|
||||
}
|
||||
}
|
||||
rMap.put(thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":thingsModel.getIdentifier(), hashMap1);
|
||||
}
|
||||
} else {
|
||||
for (ThingsModel thingsModel : taiyangnengModels) {
|
||||
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
|
||||
put("upType", 0);
|
||||
put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":thingsModel.getIdentifier());
|
||||
put("unit", "");
|
||||
put("value", 0);
|
||||
put("name", thingsModel.getModelName());
|
||||
}};
|
||||
rMap.put(thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":thingsModel.getIdentifier(), hashMap1);
|
||||
}
|
||||
}
|
||||
// HashMap<Object, Object> hashMap = new HashMap<Object, Object>() {{
|
||||
// put("upType", 0);
|
||||
// put("identifier", "xiangmen");
|
||||
// put("unit", "");
|
||||
// put("value", 0);//0=正常,1=箱门振动,2=箱门打开
|
||||
// put("name", "箱门状态");
|
||||
// }};
|
||||
// rMap.put("xiangmen", hashMap);
|
||||
String liuliangIds = devParams.get("liuliangIds").toString();
|
||||
ThingsModel thingsModel2 = new ThingsModel();
|
||||
thingsModel2.setProductId(139L);
|
||||
List<ThingsModel> liuliangModels = thingsModelService.selectThingsModelList(thingsModel2);
|
||||
if (StringUtils.isNotEmpty(taiyangnengIds)) {
|
||||
Device liuliangDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(liuliangIds));
|
||||
List<DeviceLog> deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{
|
||||
setSerialNumber(liuliangDevice.getSerialNumber());
|
||||
setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(dateTime, -1)).toString());
|
||||
setEndTime(DateUtil.endOfDay(dateTime).toString());
|
||||
}});
|
||||
Map<String, List<DeviceLog>> liuliangCollect = deviceLogs.stream().sorted(Comparator
|
||||
.comparing(DeviceLog::getCreateTime, Comparator
|
||||
.nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity()));
|
||||
for (ThingsModel thingsModel : liuliangModels) {
|
||||
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
|
||||
put("upType", 0);
|
||||
put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_sumFlow")?"sumFlow":thingsModel.getIdentifier());
|
||||
put("unit", "");
|
||||
put("value", 0);
|
||||
put("name", thingsModel.getModelName());
|
||||
}};
|
||||
if (StringUtils.isNotEmpty(thingsModel.getSpecs())) {
|
||||
String specs = thingsModel.getSpecs();
|
||||
JSONObject parse = (JSONObject) JSON.parse(specs);
|
||||
if (parse.containsKey("unit")) {
|
||||
hashMap1.put("unit", parse.get("unit"));
|
||||
}
|
||||
}
|
||||
|
||||
if (hashMap1.size() > 1) {
|
||||
List<DeviceLog> deviceLogs1 = liuliangCollect.get(thingsModel.getIdentifier());
|
||||
if (deviceLogs1 != null) {
|
||||
if(deviceLogs1.size() > 0){
|
||||
if (StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())) {
|
||||
if(deviceLogs1.size() > 1){
|
||||
if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
|
||||
hashMap1.put("upType", 1);
|
||||
} else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
|
||||
hashMap1.put("upType", -1);
|
||||
}
|
||||
}else{
|
||||
hashMap1.put("upType", 0);
|
||||
}
|
||||
hashMap1.put("value", deviceLogs1.get(0).getLogValue());
|
||||
} else {
|
||||
hashMap1.put("value", "--");
|
||||
hashMap1.put("upType", 0);
|
||||
}
|
||||
|
||||
}else{
|
||||
hashMap1.put("value", "--");
|
||||
hashMap1.put("upType", 0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
} else if (hashMap1.size() > 0) {
|
||||
List<DeviceLog> deviceLogs2 = liuliangCollect.get(thingsModel.getIdentifier());
|
||||
if (deviceLogs2 != null) {
|
||||
hashMap1.put("value", deviceLogs2.get(0).getLogValue());
|
||||
}
|
||||
}
|
||||
rMap.put(thingsModel.getIdentifier().equals("三菱FX2N_1_sumFlow")?"sumFlow":thingsModel.getIdentifier(), hashMap1);
|
||||
}
|
||||
} else {
|
||||
for (ThingsModel thingsModel : taiyangnengModels) {
|
||||
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
|
||||
put("upType", 0);
|
||||
put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_sumFlow")?"sumFlow":thingsModel.getIdentifier());
|
||||
put("unit", "");
|
||||
put("value", 0);
|
||||
put("name", thingsModel.getModelName());
|
||||
}};
|
||||
rMap.put(thingsModel.getIdentifier().equals("三菱FX2N_1_sumFlow")?"sumFlow":thingsModel.getIdentifier(), hashMap1);
|
||||
}
|
||||
}
|
||||
// HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
|
||||
// put("upType", 0);
|
||||
// put("identifier", "sumFlow");
|
||||
// put("unit", "m³");
|
||||
// put("value", 0);
|
||||
// put("name", "累计用水量");
|
||||
// }};
|
||||
// rMap.put("sumFlow", hashMap1);
|
||||
MaWatereleRecord maWatereleRecord = new MaWatereleRecord();
|
||||
maWatereleRecord.setDevSn(device.getSerialNumber());
|
||||
TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord);
|
||||
List<MaWatereleRecord> deviceLogs = (List<MaWatereleRecord>) tableDataInfo.getRows();
|
||||
String sumEle = "0";
|
||||
if(deviceLogs.size() > 0){
|
||||
sumEle = NumberUtil.isNumber(deviceLogs.get(0).getSumele())?deviceLogs.get(0).getSumele():
|
||||
"0";
|
||||
}
|
||||
String finalSumEle = sumEle;
|
||||
HashMap<Object, Object> hashMap2 = new HashMap<Object, Object>() {{
|
||||
put("upType", 0);
|
||||
put("identifier", "sumEle");
|
||||
put("unit", "度");
|
||||
put("value", 0);
|
||||
put("unit", "kwh");
|
||||
put("value", finalSumEle);
|
||||
put("name", "累计用电量");
|
||||
}};
|
||||
rMap.put("sumEle",hashMap2);
|
||||
rMap.put("sumEle", hashMap2);
|
||||
return rMap;
|
||||
}
|
||||
|
||||
@ -228,8 +405,9 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
//获取累计水量和累计电量的前20条数据记录
|
||||
MaWatereleRecord watereleRecord = new MaWatereleRecord();
|
||||
watereleRecord.setDevSn(device.getSerialNumber());
|
||||
List<MaWatereleRecord> maWatereleRecords = (List<MaWatereleRecord>) watereleRecordService.selectMaWatereleRecordList(watereleRecord).getRows();
|
||||
if(maWatereleRecords.size() > 20){
|
||||
List<MaWatereleRecord> maWatereleRecords =
|
||||
(List<MaWatereleRecord>) watereleRecordService.selectMaWatereleRecordList(watereleRecord).getRows();
|
||||
if (maWatereleRecords.size() > 20) {
|
||||
maWatereleRecords = maWatereleRecords.subList(0, 20);
|
||||
}
|
||||
maWatereleRecords.sort(Comparator.comparing(MaWatereleRecord::getCreateTime));
|
||||
@ -237,7 +415,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
ArrayList<Object> sumEle = new ArrayList<>();
|
||||
ArrayList<Object> time = new ArrayList<>();
|
||||
for (MaWatereleRecord record : maWatereleRecords) {
|
||||
time.add(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,record.getCreateTime()));
|
||||
time.add(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, record.getCreateTime()));
|
||||
sumFlow.add(record.getSumflow());
|
||||
sumEle.add(record.getSumele());
|
||||
}
|
||||
@ -255,11 +433,11 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
kvHashMap.put("identity", identity);
|
||||
kvHashMap.put("serialNumber", device.getSerialNumber());
|
||||
Date endTime = new Date();
|
||||
kvHashMap.put("endTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,endTime));
|
||||
kvHashMap.put("endTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endTime));
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.HOUR,-23);
|
||||
kvHashMap.put("beginTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH,calendar.getTime())+":00:00");
|
||||
calendar.add(Calendar.HOUR, -23);
|
||||
kvHashMap.put("beginTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH, calendar.getTime()) + ":00:00");
|
||||
List<HashMap<String, Object>> reMap = logService.selectDayData(kvHashMap);
|
||||
Map<String, Map<String, Object>> create_time = new HashMap<>();
|
||||
if (reMap != null) {
|
||||
@ -277,10 +455,10 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
time.add(s);
|
||||
Map<String, Object> map = create_time.get(s);
|
||||
if (map != null) {
|
||||
if(identity.equals("dataSumFlow")){
|
||||
if (identity.equals("dataSumFlow")) {
|
||||
jiangyvliang.add(Float.parseFloat(create_time.get(s).get("maxLogValue").toString())
|
||||
- Float.parseFloat(create_time.get(s).get("minLogValue").toString()));
|
||||
}else{
|
||||
} else {
|
||||
jiangyvliang.add(create_time.get(s).get("avgLogValue"));
|
||||
}
|
||||
} else {
|
||||
@ -293,7 +471,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
|
||||
public Map<String, Object> getDevParams(Device device) {
|
||||
Map<String, Object> devData = new HashMap<>();
|
||||
try{
|
||||
try {
|
||||
Object devParams = com.alibaba.fastjson.JSON.parse(device.getDevParams()); //先转换成Object
|
||||
List<Map<String, Object>> Params = (List<Map<String, Object>>) devParams;
|
||||
if (Params != null) {
|
||||
@ -301,7 +479,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||
devData.put(param.get("key").toString(), param.get("value").toString());
|
||||
}
|
||||
}
|
||||
}catch (Exception exception){
|
||||
} catch (Exception exception) {
|
||||
}
|
||||
|
||||
return devData;
|
||||
|
Loading…
x
Reference in New Issue
Block a user