|
@@ -6,11 +6,13 @@ import com.zcxk.smartcity.data.access.common.CommonConstant;
|
|
|
import com.zcxk.smartcity.data.access.common.RedisUtil;
|
|
|
import com.zcxk.smartcity.data.access.dao.*;
|
|
|
import com.zcxk.smartcity.data.access.dto.ConfigDataDto;
|
|
|
+import com.zcxk.smartcity.data.access.dto.DeviceData;
|
|
|
import com.zcxk.smartcity.data.access.dto.UdipUnitDataDTO;
|
|
|
import com.zcxk.smartcity.data.access.dto.ValveControlDataDto;
|
|
|
import com.zcxk.smartcity.data.access.entity.*;
|
|
|
import com.zcxk.smartcity.data.access.protocol.model.MeasuringData;
|
|
|
import com.zcxk.smartcity.data.access.rabbitmq.WaterMeterDataSender;
|
|
|
+import com.zcxk.smartcity.data.access.repository.DeviceDataRepository;
|
|
|
import com.zcxk.smartcity.data.access.service.ConfigService;
|
|
|
import com.zcxk.smartcity.data.access.service.DeviceDataServiceV2;
|
|
|
import com.zcxk.smartcity.data.access.util.JacksonUtil;
|
|
@@ -31,6 +33,7 @@ import org.springframework.stereotype.Service;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
|
|
|
import static com.google.common.collect.Lists.newArrayList;
|
|
@@ -85,6 +88,9 @@ public class DeviceDataServiceV2Impl implements DeviceDataServiceV2 {
|
|
|
@Resource
|
|
|
WaterMeterDataSender waterMeterDataSender;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ DeviceDataRepository deviceDataRepository ;
|
|
|
+
|
|
|
@Override
|
|
|
public int saveDeviceData(Device device, UdipUnitDataDTO unitData) {
|
|
|
log.info("begin saveDeviceData,device = {} ,data = {}" , JSON.toJSONString(device) ,JSON.toJSONString(unitData));
|
|
@@ -144,7 +150,7 @@ public class DeviceDataServiceV2Impl implements DeviceDataServiceV2 {
|
|
|
return j;
|
|
|
}
|
|
|
|
|
|
- public int saveDeviceMeasuringDatas(Device device, Map<String, MeasuringData> dataMap, String lastUpateTime, Date receiveTime) {
|
|
|
+ public int saveDeviceMeasuringDatas(Device device, Map<String, MeasuringData> dataMap, String lastUpdateTime, Date receiveTime) {
|
|
|
log.info("begin saveDeviceMeasuringData ,device = {} ,data = {} " ,JSON.toJSONString(device) , JSON.toJSONString(dataMap));
|
|
|
List<DeviceMeasuringPoint> dmps = deviceMeasuringPointMapper.findByDeviceTypeId(device.getDeviceType());
|
|
|
int i = 0;
|
|
@@ -168,13 +174,22 @@ public class DeviceDataServiceV2Impl implements DeviceDataServiceV2 {
|
|
|
dd.setMeasuringData(measuringValue);
|
|
|
dd.setSiteId(device.getSiteId());
|
|
|
dd.setSysId(device.getSysId());
|
|
|
- dd.setSendDate(Integer.parseInt(lastUpateTime.substring(0, 8)));
|
|
|
+ dd.setSendDate(Integer.parseInt(lastUpdateTime.substring(0, 8)));
|
|
|
dd.setSendTime(receiveTime);
|
|
|
dd.setMeasuringUnit(dmp.getDataUnit());
|
|
|
deviceDataDimMapper.save(dd);
|
|
|
i++;
|
|
|
}
|
|
|
}
|
|
|
+ // 将数据保存到MongoDB中
|
|
|
+ try{
|
|
|
+ // 构建DeviceData对象
|
|
|
+ DeviceData deviceData = buildDeviceData(device, dataMap, lastUpdateTime);
|
|
|
+ deviceDataRepository.save(deviceData);
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("Device data save mongo failed !",e);
|
|
|
+ }
|
|
|
// 2,判断设备是否水表,如果是水表则保存读数
|
|
|
if(device.getIsWater() == 1) {
|
|
|
try
|
|
@@ -247,6 +262,38 @@ public class DeviceDataServiceV2Impl implements DeviceDataServiceV2 {
|
|
|
return i;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ protected DeviceData buildDeviceData(Device device, Map<String, MeasuringData> dataMap, String receiveTime){
|
|
|
+ DeviceData deviceData = new DeviceData();
|
|
|
+ deviceData.setChannelId(device.getSysId());
|
|
|
+ deviceData.setCommunityId(device.getCommunityId());
|
|
|
+ deviceData.setCustomerId(device.getCustomerId());
|
|
|
+ deviceData.setDateCreate(LocalDateTime.now());
|
|
|
+ deviceData.setDeviceId(device.getId());
|
|
|
+ deviceData.setDeviceNo(device.getDeviceNo());
|
|
|
+ deviceData.setDeviceTypeId(device.getDeviceType());
|
|
|
+ deviceData.setId(idWorker.nextId());
|
|
|
+ deviceData.setLocation(device.getLocDesc());
|
|
|
+ deviceData.setManufacturerId(device.getManufacturerId());
|
|
|
+ deviceData.setReceiveDate(Integer.parseInt(receiveTime.substring(0, 8)));
|
|
|
+ deviceData.setReceiveTime(parserDate(receiveTime));
|
|
|
+ deviceData.setSiteId(device.getSiteId());
|
|
|
+ deviceData.setStatus(1);
|
|
|
+ deviceData.setData(getDeviceMeasuringValueMap(dataMap));
|
|
|
+ deviceData.setBuildingId(device.getBuildingId());
|
|
|
+ return deviceData ;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected Map<String,String> getDeviceMeasuringValueMap(Map<String, MeasuringData> dataMap){
|
|
|
+ Map<String,String> measuringValueMap = new HashMap<>(dataMap.size());
|
|
|
+ Iterator<Map.Entry<String, MeasuringData>> iterator = dataMap.entrySet().iterator();
|
|
|
+ while(iterator.hasNext()){
|
|
|
+ Map.Entry<String, MeasuringData> next = iterator.next();
|
|
|
+ measuringValueMap.put(next.getValue().getMeasuringCode(),next.getValue().getMeasuringVaule());
|
|
|
+ }
|
|
|
+ return measuringValueMap ;
|
|
|
+ }
|
|
|
+
|
|
|
private boolean matches(Integer customerId) {
|
|
|
List<ConfigDataDto> configDataList = configService.getConfigData("push_valve_config");
|
|
|
if (configDataList != null && configDataList.size() > 0) {
|