获取便携式设备基础数据功能

This commit is contained in:
xy
2024-09-25 19:24:21 +08:00
parent dfd035b908
commit 45d31a05ee
12 changed files with 215 additions and 111 deletions

View File

@@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/event")
@Api(tags = "暂态事件处理")
@Api(tags = "事件处理")
@AllArgsConstructor
public class EventController extends BaseController {
@@ -44,4 +44,14 @@ public class EventController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/portableData")
@ApiOperation("便携式数据事件")
@ApiImplicitParam(name = "appEventMessage", value = "数据实体", required = true)
public HttpResult<String> getPortableData(@RequestBody AppEventMessage appEventMessage){
String methodDescribe = getMethodDescribe("getPortableData");
eventService.getPortableData(appEventMessage);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -17,4 +17,12 @@ public interface IEventService {
*/
void analysis(AppEventMessage appEventMessage);
/**
* 便携式设备基础数据
* 1.装置发起数据记录开始动作,库中新增数据;
* 2.装置发起数据记录结束动作,库中更新数据;
* @param appEventMessage
*/
void getPortableData(AppEventMessage appEventMessage);
}

View File

@@ -6,8 +6,12 @@ import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csdevice.api.EquipmentFeignClient;
import com.njcn.csdevice.api.WlRecordFeignClient;
import com.njcn.csdevice.pojo.param.WlRecordParam;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.pojo.po.WlRecord;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
import com.njcn.csharmonic.pojo.po.CsEventPO;
import com.njcn.influx.pojo.constant.InfluxDBTableConstant;
import com.njcn.influx.utils.InfluxDbUtils;
@@ -31,11 +35,15 @@ import lombok.extern.slf4j.Slf4j;
import org.influxdb.InfluxDB;
import org.influxdb.dto.BatchPoints;
import org.influxdb.dto.Point;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -53,22 +61,15 @@ import java.util.concurrent.TimeUnit;
public class EventServiceImpl implements IEventService {
private final CsLineFeignClient csLineFeignClient;
private final DicDataFeignClient dicDataFeignClient;
private final EpdFeignClient epdFeignClient;
private final RedisUtil redisUtil;
private final ICsEventService csEventService;
private final EquipmentFeignClient equipmentFeignClient;
private final InfluxDbUtils influxDbUtils;
private final ICsEventLogsService csEventLogsService;
private final SendEventUtils sendEventUtils;
private final WlRecordFeignClient wlRecordFeignClient;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -188,6 +189,93 @@ public class EventServiceImpl implements IEventService {
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void getPortableData(AppEventMessage appEventMessage) {
CsEquipmentDeliveryVO vo = equipmentFeignClient.queryEquipmentByndid(appEventMessage.getId()).getData();
//根据报文判断是新增还是更新
List<AppEventMessage.DataArray> dataArrays = appEventMessage.getMsg().getDataArray();
dataArrays.forEach(item->{
WlRecordParam.Record param = new WlRecordParam.Record();
param.setDevId(vo.getId());
param.setLineId(appEventMessage.getId() + item.getClDid().toString());
param.setProName(item.getPrjName());
param.setProStartTime(timestampToDatetime((item.getPrjTimeStart() - 8*3600)));
WlRecord record = wlRecordFeignClient.findDevBaseData(param).getData();
if (!Objects.isNull(record)) {
if (!Objects.equals(item.getPrjTimeEnd(),-1L)) {
WlRecordParam.UpdateRecord wlRecord = new WlRecordParam.UpdateRecord();
wlRecord.setId(record.getId());
wlRecord.setProEndTime(timestampToDatetime((item.getPrjTimeEnd() - 8*3600)));
wlRecordFeignClient.updateTestRecord(wlRecord);
}
} else {
//新项目入库
WlRecord wlRecord = new WlRecord();
wlRecord.setId(IdUtil.simpleUUID());
wlRecord.setItemName("基础数据");
wlRecord.setGcName(item.getPrjName());
wlRecord.setDevId(vo.getId());
wlRecord.setLineId(appEventMessage.getId() + item.getClDid().toString());
wlRecord.setStatisticalInterval(item.getStatCycle());
wlRecord.setPt(item.getPtRatio());
wlRecord.setCt(item.getCtRatio());
//电压等级
DictData dictData = dicDataFeignClient.getDicDataByCodeAndType(channelVol(item.getVolGrade()) + "kV","Dev_Voltage_Stand").getData();
wlRecord.setVoltageLevel(Objects.isNull(dictData)?null:dictData.getId());
wlRecord.setCapacitySscb(item.getCapacitySscb());
wlRecord.setCapacitySscmin(item.getCapacitySscmin());
wlRecord.setCapacitySt(item.getCapacitySt());
wlRecord.setCapacitySi(item.getCapacitySi());
//电压接线方式
wlRecord.setVolConType(getVolConType(item.getVolConType()));
//fixme 电流接线方式 这边系统没有字典,录入字典通用性不强,采用装置上送值存储
wlRecord.setCurConSel(item.getCurConSel().toString());
wlRecord.setStartTime(timestampToDatetime((item.getPrjTimeStart() - 8*3600)));
wlRecord.setType(1);
wlRecord.setState(1);
wlRecord.setGcDataPath(item.getPrjDataPath());
wlRecordFeignClient.addBaseData(wlRecord);
}
});
}
/**
* 处理电压
* @param vol
* @return
*/
public String channelVol(Float vol) {
BigDecimal value = new BigDecimal(vol);
BigDecimal noZeros = value.stripTrailingZeros();
return noZeros.toPlainString();
}
// 0-星型, 1-角型, 2-V型
// star-星型、Star_Triangle-星三角、Open_Delta-开口三角
public String getVolConType(Integer volConType) {
String result = null;
String dictDataCode = null;
switch (volConType) {
case 0:
dictDataCode = "star";
break;
case 1:
dictDataCode = "Star_Triangle";
break;
case 2:
dictDataCode = "Open_Delta";
break;
default:
break;
}
if (!Objects.isNull(dictDataCode)) {
DictData dictData = dicDataFeignClient.getDicDataByCodeAndType(dictDataCode,"Dev_Connect").getData();
result = dictData.getId();
}
return Objects.isNull(result)?null:result;
}
/**
* 缓存监测点相关信息
*/
@@ -248,4 +336,9 @@ public class EventServiceImpl implements IEventService {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
return LocalDateTime.parse(time, fmt);
}
public LocalDateTime timestampToDatetime(long timestamp){
Instant instant = Instant.ofEpochSecond(timestamp);
return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
}
}