|
|
@@ -3,18 +3,19 @@ package com.yunfeiyun.agmp.iots.device.serviceImp;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.yunfeiyun.agmp.common.service.LocationService;
|
|
|
import com.yunfeiyun.agmp.common.utils.DateUtils;
|
|
|
import com.yunfeiyun.agmp.common.utils.JSONUtils;
|
|
|
import com.yunfeiyun.agmp.common.utils.StringUtils;
|
|
|
import com.yunfeiyun.agmp.iot.common.constant.cmd.CmdDef;
|
|
|
import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
|
|
|
import com.yunfeiyun.agmp.iot.common.constant.mqtt.IotMqttConstant;
|
|
|
-import com.yunfeiyun.agmp.iot.common.domain.IotBaseEntity;
|
|
|
import com.yunfeiyun.agmp.iot.common.domain.IotBzydata;
|
|
|
import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
|
|
|
import com.yunfeiyun.agmp.iot.common.domain.IotYfqxzdata;
|
|
|
+import com.yunfeiyun.agmp.iot.common.enums.EnumCommonDataFactor;
|
|
|
+import com.yunfeiyun.agmp.iot.common.enums.YfqxzEnumFactor;
|
|
|
import com.yunfeiyun.agmp.iot.common.model.cmd.CmdModel;
|
|
|
-import com.yunfeiyun.agmp.common.service.LocationService;
|
|
|
import com.yunfeiyun.agmp.iot.common.service.MongoService;
|
|
|
import com.yunfeiyun.agmp.iots.core.manager.MqttManager;
|
|
|
import com.yunfeiyun.agmp.iots.device.common.DeviceAbstractImpl;
|
|
|
@@ -23,7 +24,10 @@ import com.yunfeiyun.agmp.iots.device.domain.yfqxz.YfQxzLedMsg;
|
|
|
import com.yunfeiyun.agmp.iots.device.domain.yfqxz.YfQxzMsg;
|
|
|
import com.yunfeiyun.agmp.iots.device.domain.yfqxz.YfQxzReqMsg;
|
|
|
import com.yunfeiyun.agmp.iots.device.service.IYfQxzDevice;
|
|
|
-import com.yunfeiyun.agmp.iots.service.*;
|
|
|
+import com.yunfeiyun.agmp.iots.service.IIotCmdlogService;
|
|
|
+import com.yunfeiyun.agmp.iots.service.IIotDeviceService;
|
|
|
+import com.yunfeiyun.agmp.iots.service.IIotDeviceconfigService;
|
|
|
+import com.yunfeiyun.agmp.iots.service.IIotDevicelasteddataService;
|
|
|
import com.yunfeiyun.agmp.iots.service.impl.IotDeviceAddressService;
|
|
|
import com.yunfeiyun.agmp.iots.service.impl.WarnService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -31,8 +35,8 @@ import org.apache.http.util.TextUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.util.Date;
|
|
|
-import java.util.Objects;
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.util.*;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -59,7 +63,7 @@ public class YfQxzDeviceImpl extends DeviceAbstractImpl implements IYfQxzDevice
|
|
|
private IIotDevicelasteddataService iIotDevicelasteddataService;
|
|
|
|
|
|
@Autowired
|
|
|
- private MongoService<IotBaseEntity> mongoService;
|
|
|
+ private MongoService mongoService;
|
|
|
|
|
|
@Autowired
|
|
|
private LocationService locationService;
|
|
|
@@ -272,27 +276,57 @@ public class YfQxzDeviceImpl extends DeviceAbstractImpl implements IYfQxzDevice
|
|
|
}*/
|
|
|
|
|
|
// 更新设备数据信息到数据库 mongodb
|
|
|
- String cId = iotDeviceOld.getTid();
|
|
|
-
|
|
|
+ List<IotYfqxzdata> iotYfqxzdataList = new ArrayList<>();
|
|
|
for (Object item: jarrData) {
|
|
|
JSONObject jobj = (JSONObject) item;
|
|
|
+ String eNum = jobj.getString("eNum");
|
|
|
+ String eKey = jobj.getString("eKey");
|
|
|
+ String eValue = jobj.getString("eValue");
|
|
|
IotYfqxzdata iotYfqxzdata = new IotYfqxzdata();
|
|
|
- iotYfqxzdata.setCId(cId);
|
|
|
+ iotYfqxzdata.setCId(iotDeviceOld.getTid());
|
|
|
iotYfqxzdata.setDevBid(iotDeviceOld.getDevBid());
|
|
|
- iotYfqxzdata.setENum(jobj.getString("eNum"));
|
|
|
+ iotYfqxzdata.setENum(eNum);
|
|
|
iotYfqxzdata.setEName(jobj.getString("eName"));
|
|
|
- iotYfqxzdata.setEKey(jobj.getString("eKey"));
|
|
|
- iotYfqxzdata.setEValue(jobj.getString("eValue"));
|
|
|
+ iotYfqxzdata.setEKey(eKey);
|
|
|
+ iotYfqxzdata.setEValue(eValue);
|
|
|
|
|
|
iotYfqxzdata.setTime(reportDt);
|
|
|
|
|
|
- mongoService.saveOne(iotYfqxzdata);
|
|
|
+ iotYfqxzdataList.add(iotYfqxzdata);
|
|
|
+
|
|
|
+ // 如果有累计雨量,则计算单次雨量
|
|
|
+ if(YfqxzEnumFactor.TYPE14.getCode().equals(eNum.replace("e",""))){
|
|
|
+ Date selectTime = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.dateNow());
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("devBid",iotDeviceOld.getDevBid());
|
|
|
+ map.put("lte_time", selectTime);
|
|
|
+ map.put("eNum", eNum);
|
|
|
+ IotYfqxzdata resultData = (IotYfqxzdata) mongoService.findOne(IotYfqxzdata.class, map, "time", "desc");
|
|
|
+ double ev = Double.parseDouble(eValue);
|
|
|
+ if(resultData != null){
|
|
|
+ String oldEValue = resultData.getEValue();
|
|
|
+ ev = ev - Double.parseDouble(oldEValue);
|
|
|
+ }
|
|
|
+ IotYfqxzdata iotYfqxzdata2 = new IotYfqxzdata();
|
|
|
+ iotYfqxzdata2.setCId(iotDeviceOld.getTid());
|
|
|
+ iotYfqxzdata2.setDevBid(iotDeviceOld.getDevBid());
|
|
|
+ iotYfqxzdata2.setENum(eNum);
|
|
|
+ iotYfqxzdata2.setEName(EnumCommonDataFactor.TYPE_104.getCode());
|
|
|
+ iotYfqxzdata2.setEKey("e" + YfqxzEnumFactor.TYPE4.getCode());
|
|
|
+ iotYfqxzdata2.setEValue(new DecimalFormat("0.00").format(ev));
|
|
|
+ iotYfqxzdata2.setTime(reportDt);
|
|
|
+
|
|
|
+ iotYfqxzdataList.add(iotYfqxzdata2);
|
|
|
+ }
|
|
|
|
|
|
//把“上报时间”放里面
|
|
|
jobj.put("time",DateUtils.parseDateToStr("yyyy-MM-dd'T'HH:mm:ss.SSSX",reportDt));
|
|
|
jobj.put("devBid",iotYfqxzdata.getDevBid());
|
|
|
jobj.put("cId",iotYfqxzdata.getCId());
|
|
|
}
|
|
|
+ if(!iotYfqxzdataList.isEmpty()){
|
|
|
+ mongoService.insertList(IotYfqxzdata.class, iotYfqxzdataList);
|
|
|
+ }
|
|
|
iIotDevicelasteddataService.updateDeviceLastedData(iotDeviceOld,jarrData.toString(), devUpdateddate);
|
|
|
|
|
|
//预警
|