|
@@ -59,10 +59,12 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
|
|
|
private final NwpRepository nwpRepository;
|
|
|
|
|
|
+ private final InverterInfoRepository inverterInfoRepository;
|
|
|
+
|
|
|
@Autowired
|
|
|
private RedisUtils redisUtils;
|
|
|
|
|
|
- public E63UploadFileService(VelocityEngine velocityEngine, ForecastPowerShortTermService forecastPowerShortTermService, ForecastPowerUltraShortTermService forecastPowerUltraShortTermService, E63UploadFileRuleService e63UploadFileRuleService, WeatherStationInfoRepository weatherStationInfoRepository, WindTurbineInfoRepository windTurbineInfoRepository, WeatherStationStatusDataRepository weatherStationStatusDataRepository, WindTowerInfoRepository windTowerInfoRepository, WindTowerStatusDataRepository windTowerStatusDataRepository, NwpRepository nwpRepository) {
|
|
|
+ public E63UploadFileService(VelocityEngine velocityEngine, ForecastPowerShortTermService forecastPowerShortTermService, ForecastPowerUltraShortTermService forecastPowerUltraShortTermService, E63UploadFileRuleService e63UploadFileRuleService, WeatherStationInfoRepository weatherStationInfoRepository, WindTurbineInfoRepository windTurbineInfoRepository, WeatherStationStatusDataRepository weatherStationStatusDataRepository, WindTowerInfoRepository windTowerInfoRepository, WindTowerStatusDataRepository windTowerStatusDataRepository, NwpRepository nwpRepository, InverterInfoRepository inverterInfoRepository) {
|
|
|
this.velocityEngine = velocityEngine;
|
|
|
this.forecastPowerShortTermService = forecastPowerShortTermService;
|
|
|
this.forecastPowerUltraShortTermService = forecastPowerUltraShortTermService;
|
|
@@ -73,6 +75,7 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
this.windTowerInfoRepository = windTowerInfoRepository;
|
|
|
this.windTowerStatusDataRepository = windTowerStatusDataRepository;
|
|
|
this.nwpRepository = nwpRepository;
|
|
|
+ this.inverterInfoRepository = inverterInfoRepository;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -144,7 +147,7 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
template.merge(velocityContext, writer);
|
|
|
|
|
|
// 将文件复制到上报路径中
|
|
|
- super.copyUploadFile(writer, file, FileTypeEnum.E1.name(), null, date, stationCode);
|
|
|
+ super.copyUploadFile(writer, file, FileTypeEnum.E1.name(), null, systemDate, stationCode);
|
|
|
}
|
|
|
} else {
|
|
|
log.error(stationCode + "短期上报模板不存在!");
|
|
@@ -217,7 +220,7 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
writer = new StringWriter();
|
|
|
template.merge(velocityContext, writer);
|
|
|
// 将文件复制到上报路径中
|
|
|
- super.copyUploadFile(writer, file, FileTypeEnum.E26.name(), null, date, stationCode);
|
|
|
+ super.copyUploadFile(writer, file, FileTypeEnum.E26.name(), null, systemDate, stationCode);
|
|
|
}
|
|
|
} else {
|
|
|
log.error(stationCode + "可用短期上报模板不存在!");
|
|
@@ -297,7 +300,7 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
writer = new StringWriter();
|
|
|
template.merge(velocityContext, writer);
|
|
|
|
|
|
- super.copyUploadFile(writer, file, FileTypeEnum.E2.name(), null, date, stationCode);
|
|
|
+ super.copyUploadFile(writer, file, FileTypeEnum.E2.name(), null, systemDate, stationCode);
|
|
|
}
|
|
|
} else {
|
|
|
log.error(stationCode + "超短期上报模板不存在!");
|
|
@@ -379,7 +382,7 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
velocityContext.put("uploadTime", DateFormatUtils.format(startTime - 15 * 60 * 1000, "yyyy-MM-dd_HH:mm"));
|
|
|
writer = new StringWriter();
|
|
|
template.merge(velocityContext, writer);
|
|
|
- super.copyUploadFile(writer, file, FileTypeEnum.E27.name(), null, date, stationCode);
|
|
|
+ super.copyUploadFile(writer, file, FileTypeEnum.E27.name(), null, systemDate, stationCode);
|
|
|
}
|
|
|
} else {
|
|
|
log.error(stationCode + "可用超短期上报模板不存在!");
|
|
@@ -421,13 +424,13 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
template = this.velocityEngine.getTemplate(this.vmsPath + "/QXZ.vm");
|
|
|
fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E6", endTime);
|
|
|
if (getFileName(fileName, "E6", stationCode)) {
|
|
|
- generateQxzFile(fileName, template, electricFieldInfo, date, startTime, endTime);
|
|
|
+ generateQxzFile(fileName, template, electricFieldInfo, systemDate, startTime, endTime);
|
|
|
}
|
|
|
} else {
|
|
|
template = this.velocityEngine.getTemplate(this.vmsPath + "/CFT.vm");
|
|
|
fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E7", endTime);
|
|
|
if (getFileName(fileName, "E7", stationCode)) {
|
|
|
- generateCftFile(fileName, template, electricFieldInfo, date, startTime, endTime);
|
|
|
+ generateCftFile(fileName, template, electricFieldInfo, systemDate, startTime, endTime);
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
@@ -654,8 +657,7 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
p8 = nwpData.getPressure();
|
|
|
p8 = p8.add(new BigDecimal(df.format(Math.random() * 1 + 0.01))).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
log.info(electricFieldInfo.getStationCode() + "生成测风塔数据用nwp+随机数");
|
|
|
- }
|
|
|
- else{
|
|
|
+ } else {
|
|
|
// 10米风速产生1-5随机数
|
|
|
ws10 = cftRandomCreate("wsInst10");
|
|
|
// 10米风向产生40-60随机数
|
|
@@ -756,23 +758,23 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
if (date != null) {
|
|
|
systemDate = date;
|
|
|
}
|
|
|
- Long startTime = DateMomentUtil.getMomentTime(systemDate.getTime() - 5 * 60 * 1000, 1, 5 * 60 * 1000L);
|
|
|
- Long endTime = startTime + 5 * 60 * 1000 - 1000;
|
|
|
+ Long endTime = DateMomentUtil.getMomentTime(systemDate.getTime(), 1, 5 * 60 * 1000L);
|
|
|
+ Long startTime = endTime - 4 * 60 * 1000;
|
|
|
// 生成上报文件名格式
|
|
|
Template template = null;
|
|
|
|
|
|
if (electricFieldInfo.getElectricFieldTypeEnum().toString().equals("E1")) {
|
|
|
// 获取逆变器模板
|
|
|
template = this.velocityEngine.getTemplate(this.vmsPath + "/NBQ.vm");
|
|
|
- fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E8", endTime + 1000);
|
|
|
+ fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E8", endTime);
|
|
|
if (getFileName(fileName, "E8", stationCode)) {
|
|
|
- generateNbqFile(fileName, template, electricFieldInfo, date, startTime, endTime);
|
|
|
+ generateNbqFile(fileName, template, electricFieldInfo, systemDate, startTime, endTime);
|
|
|
}
|
|
|
} else {
|
|
|
template = this.velocityEngine.getTemplate(this.vmsPath + "/FJ.vm");
|
|
|
- fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E9", endTime + 1000);
|
|
|
+ fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E9", endTime);
|
|
|
if (getFileName(fileName, "E9", stationCode)) {
|
|
|
- generateFjFile(fileName, template, electricFieldInfo, date, startTime, endTime);
|
|
|
+ generateFjFile(fileName, template, electricFieldInfo, systemDate, startTime, endTime);
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
@@ -809,23 +811,114 @@ public class E63UploadFileService extends BaseUploadFileService {
|
|
|
* 生成逆变器上报文件
|
|
|
*/
|
|
|
private void generateNbqFile(String fileName, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) {
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
- // 创建上报文件
|
|
|
- File file = super.createTempFile(fileName);
|
|
|
- VelocityContext velocityContext = new VelocityContext();
|
|
|
- // 根据模板生成文件内容
|
|
|
- velocityContext.put("vList", null);
|
|
|
- // 场站标识
|
|
|
- velocityContext.put("sign", electricFieldInfo.getSign());
|
|
|
- // 场站装机容量
|
|
|
- velocityContext.put("capacity", electricFieldInfo.getCapacity());
|
|
|
- // 系统当前日期
|
|
|
- velocityContext.put("currentTime", DateFormatUtils.format(endTime + 1000, "yyyy-MM-dd_HH:mm") + ":00");
|
|
|
- // 上报数据开始日期
|
|
|
- velocityContext.put("uploadTime", DateFormatUtils.format(endTime + 1000, "yyyy-MM-dd_HH:mm"));
|
|
|
- StringWriter writer = new StringWriter();
|
|
|
- template.merge(velocityContext, writer);
|
|
|
- super.copyUploadFile(writer, file, FileTypeEnum.E8.name(), null, date, electricFieldInfo.getStationCode());
|
|
|
+ // 获取逆变器
|
|
|
+ List<InverterInfo> inverterInfoList = inverterInfoRepository.findAll();
|
|
|
+ // 过滤上报的逆变器
|
|
|
+ List<InverterInfo> filterInverterInfoList = inverterInfoList.stream().filter(w -> w.getReport() == true).collect(Collectors.toList());
|
|
|
+ if (filterInverterInfoList.size() > 0) {
|
|
|
+ List<Map<String, String>> dtaInverterList = new ArrayList<>();
|
|
|
+ for (InverterInfo inverterInfo : filterInverterInfoList) {
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ //场站名称
|
|
|
+ map.put("czmc", electricFieldInfo.getName());
|
|
|
+ // 名称
|
|
|
+ map.put("name", inverterInfo.getName());
|
|
|
+ //集电线名称
|
|
|
+ map.put("CollectorCircuit", inverterInfo.getCollectorCircuit());
|
|
|
+ //额定容量
|
|
|
+ map.put("RatedCapacity", div(inverterInfo.getCapacity(), new BigDecimal("1000"), 2).toString());
|
|
|
+ // 开机容量
|
|
|
+ map.put("nbqCapacity", inverterInfo.getCapacity().toString());
|
|
|
+ //型号
|
|
|
+ map.put("modelNumber", inverterInfo.getModelNumber());
|
|
|
+ // 是否样板
|
|
|
+ map.put("sample", inverterInfo.getSample() ? "1" : "0");
|
|
|
+ //是否组串
|
|
|
+ map.put("IsString", inverterInfo.getGroupSeries() ? "1" : "0");
|
|
|
+ String inverterEquipmentNo = inverterInfo.getEquipmentNo();
|
|
|
+ Map<String, String> nbqMap = redisUtils.hgetall("nbq-" + electricFieldInfo.getStationCode() + "-" + inverterEquipmentNo);
|
|
|
+ DecimalFormat df = new DecimalFormat("0.00");
|
|
|
+ // 状态
|
|
|
+ String status = "1";
|
|
|
+ // 有功
|
|
|
+ BigDecimal activePower = new BigDecimal("0");
|
|
|
+ // 无功
|
|
|
+ BigDecimal reactivePower = new BigDecimal("0");
|
|
|
+ // 功率因数
|
|
|
+ BigDecimal powerFactor = new BigDecimal("0");
|
|
|
+ // 电压
|
|
|
+ BigDecimal voltage = new BigDecimal("0");
|
|
|
+ // 电流
|
|
|
+ BigDecimal electricalCurrent = new BigDecimal("0");
|
|
|
+ // 当日发电量
|
|
|
+ BigDecimal dayElectricQuantity = new BigDecimal("0");
|
|
|
+ // 累积发电量
|
|
|
+ BigDecimal cumulativeGeneratedEnergy = new BigDecimal("0");
|
|
|
+ if (!nbqMap.isEmpty()) {
|
|
|
+ String time = nbqMap.get("time");
|
|
|
+ if (StrUtil.isNotBlank(time)) {
|
|
|
+ if (Long.parseLong(time) >= startTime && Long.parseLong(time) <= endTime) {
|
|
|
+ if (nbqMap.get("status") != null) {
|
|
|
+ status = nbqMap.get("status");
|
|
|
+ }
|
|
|
+ if (nbqMap.get("activePower") != null) {
|
|
|
+ activePower = new BigDecimal(nbqMap.get("activePower"));
|
|
|
+ }
|
|
|
+ if (nbqMap.get("reactivePower") != null) {
|
|
|
+ reactivePower = new BigDecimal(nbqMap.get("reactivePower"));
|
|
|
+ }
|
|
|
+ if (nbqMap.get("powerFactor") != null) {
|
|
|
+ powerFactor = new BigDecimal(nbqMap.get("powerFactor"));
|
|
|
+ }
|
|
|
+ if (nbqMap.get("voltage") != null) {
|
|
|
+ voltage = new BigDecimal(nbqMap.get("voltage"));
|
|
|
+ }
|
|
|
+ if (nbqMap.get("electricalCurrent") != null) {
|
|
|
+ electricalCurrent = new BigDecimal(nbqMap.get("electricalCurrent"));
|
|
|
+ }
|
|
|
+ if (nbqMap.get("dayElectricQuantity") != null) {
|
|
|
+ dayElectricQuantity = new BigDecimal(nbqMap.get("dayElectricQuantity"));
|
|
|
+ }
|
|
|
+ if (nbqMap.get("cumulativeGeneratedEnergy") != null) {
|
|
|
+ cumulativeGeneratedEnergy = new BigDecimal(nbqMap.get("cumulativeGeneratedEnergy"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ map.put("status", status);
|
|
|
+ // 有功
|
|
|
+ map.put("NbqActivePower", div(activePower, new BigDecimal("1000"), 2).toString());
|
|
|
+ // 无功
|
|
|
+ map.put("NbqReActivePower", div(reactivePower, new BigDecimal("1000"), 2).toString());
|
|
|
+ // 电压
|
|
|
+ map.put("Voltage", df.format(voltage));
|
|
|
+ // 电流
|
|
|
+ map.put("GalvanicCurrent", df.format(electricalCurrent));
|
|
|
+ // 功率因数
|
|
|
+ map.put("PowerFactor", df.format(powerFactor));
|
|
|
+ // 日发电量
|
|
|
+ map.put("NbqDailyOutPut", df.format(dayElectricQuantity));
|
|
|
+ // 累计发电量
|
|
|
+ map.put("GeneratingCap", df.format(cumulativeGeneratedEnergy));
|
|
|
+ dtaInverterList.add(map);
|
|
|
+ }
|
|
|
+ // 创建上报文件
|
|
|
+ File file = super.createTempFile(fileName);
|
|
|
+ VelocityContext velocityContext = new VelocityContext();
|
|
|
+ // 根据模板生成文件内容
|
|
|
+ velocityContext.put("vList", dtaInverterList);
|
|
|
+ // 场站标识
|
|
|
+ velocityContext.put("sign", electricFieldInfo.getSign());
|
|
|
+ // 场站装机容量
|
|
|
+ velocityContext.put("capacity", electricFieldInfo.getCapacity());
|
|
|
+ // 系统当前日期
|
|
|
+ velocityContext.put("currentTime", DateFormatUtils.format(endTime, "yyyy-MM-dd_HH:mm") + ":00");
|
|
|
+ // 上报数据开始日期
|
|
|
+ velocityContext.put("uploadTime", DateFormatUtils.format(endTime, "yyyy-MM-dd_HH:mm"));
|
|
|
+ StringWriter writer = new StringWriter();
|
|
|
+ template.merge(velocityContext, writer);
|
|
|
+ super.copyUploadFile(writer, file, FileTypeEnum.E8.name(), null, date, electricFieldInfo.getStationCode());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|