|
@@ -68,6 +68,7 @@ public class NewDataFittingService {
|
|
|
|
|
|
//1.数据获取
|
|
|
List<String> wtIds = Arrays.asList(vo.getWtIds().split(","));
|
|
|
+ deleteDir(config.getFilePathPrepare());
|
|
|
for (int k = 0; k < wtIds.size(); k++) {
|
|
|
String wt = wtIds.get(k);
|
|
|
List<List<TsDoubleData>> result = new ArrayList<>();
|
|
@@ -92,8 +93,9 @@ public class NewDataFittingService {
|
|
|
String content = prepareAssemble(result);
|
|
|
// 处理的数据保存在本地
|
|
|
String wtCode = InitialRunner.wtNewMap.get(wt).getId();
|
|
|
+ String wtCode2 = InitialRunner.wtNewMap.get(wt).getNemCode();
|
|
|
String fileName = config.getFilePathPrepare() + vo.getStation() + "_" + wtCode + "_" + System.currentTimeMillis() / 1000 + ".csv";
|
|
|
- deleteDir(config.getFilePathPrepare());
|
|
|
+
|
|
|
boolean flag = FileUtil.writeFile(fileName, content);
|
|
|
|
|
|
if (flag){ // TODO 保存数据库
|
|
@@ -101,7 +103,7 @@ public class NewDataFittingService {
|
|
|
obj.setStation(vo.getStation());
|
|
|
obj.setStationcn(InitialRunner.stationNewMap.get(vo.getStation()));
|
|
|
obj.setWindturbineId(wt);
|
|
|
- obj.setCode(wtCode);
|
|
|
+ obj.setCode(wtCode2);
|
|
|
obj.setTime(DateUtil.format(vo.getSt(), DateUtil.YYYY_MM_DD_CHN) + "-" + DateUtil.format(vo.getEt(), DateUtil.YYYY_MM_DD_CHN));
|
|
|
obj.setInterval(NumberUtil.toNum(vo.getInterval()));
|
|
|
obj.setPath(fileName);
|
|
@@ -122,6 +124,7 @@ public class NewDataFittingService {
|
|
|
//2.数据筛选
|
|
|
|
|
|
try {
|
|
|
+ deleteDir(config.getFilePathProcess());
|
|
|
for (String key : prepareMap.keySet()){
|
|
|
|
|
|
ProEconPowerFittingAnalySis obj = proEconPowerFittingAnalySisService.getById(key);
|
|
@@ -147,6 +150,7 @@ public class NewDataFittingService {
|
|
|
boolean flag = FileUtil.writeFile(fileName, content);
|
|
|
|
|
|
if (flag) { // TODO 保存数据库
|
|
|
+ obj.setId(null);
|
|
|
obj.setPath(fileName);
|
|
|
obj.setFrequency(frequency);
|
|
|
obj.setSpeedavg(speed);
|
|
@@ -163,7 +167,7 @@ public class NewDataFittingService {
|
|
|
//3.数据拟合
|
|
|
|
|
|
AtomicReference<ProEconPowerFittingAnalySis> object = new AtomicReference<>();
|
|
|
-
|
|
|
+ deleteDir(config.getFilePathFitting());
|
|
|
if (vo.getMode() == 0){ //单台拟合
|
|
|
for (String processkey : processMap.keySet()){
|
|
|
List<ProEconPowerFittingAnalySis> list = proEconPowerFittingAnalySisService.selectListByIds(processkey);
|
|
@@ -171,7 +175,7 @@ public class NewDataFittingService {
|
|
|
List<Double> arrayPower = new ArrayList<>();
|
|
|
List<String> line = FileUtil.readFile(processMap.get(processkey), true);
|
|
|
csvParse(line, arraySpeed, arrayPower, vo.getMins(), vo.getMaxs(), vo.getMinp(), vo.getMaxp());
|
|
|
- List<ProBasicModelPower> mp = InitialRunner.modelPowerDetailNewMap.get(InitialRunner.wtNewMap.get(processkey).getModelId());
|
|
|
+ List<ProBasicModelPower> mp = InitialRunner.modelPowerDetailNewMap.get(InitialRunner.wtNewMap.get(list.get(0).getWindturbineId()).getModelId());
|
|
|
Double maxP = mp.stream().map(ProBasicModelPower::getEnsurePower).max(Comparator.comparing(Double::doubleValue)).get();
|
|
|
object.set(fittingMode(list, maxP, arraySpeed, arrayPower, vo.getDimension(), vo.getMode()));
|
|
|
|
|
@@ -182,14 +186,19 @@ public class NewDataFittingService {
|
|
|
AtomicReference<Double> maxP = new AtomicReference<>(0.0);
|
|
|
List<Double> arraySpeed = new ArrayList<>();
|
|
|
List<Double> arrayPower = new ArrayList<>();
|
|
|
+ StringBuffer ids = new StringBuffer();
|
|
|
for (String processkey : processMap.keySet()){
|
|
|
+ ids.append(processkey).append(",");
|
|
|
+ ProEconPowerFittingAnalySis fittingAnalySis = proEconPowerFittingAnalySisService.getById(processkey);
|
|
|
List<String> line = FileUtil.readFile(processMap.get(processkey), true);
|
|
|
csvParse(line, arraySpeed, arrayPower, vo.getMins(), vo.getMaxs(), vo.getMinp(), vo.getMaxp());
|
|
|
- List<ProBasicModelPower> mp = InitialRunner.modelPowerDetailNewMap.get(InitialRunner.wtNewMap.get(processkey).getModelId());
|
|
|
+ List<ProBasicModelPower> mp = InitialRunner.modelPowerDetailNewMap.get(InitialRunner.wtNewMap.get(fittingAnalySis.getWindturbineId()).getModelId());
|
|
|
Double maxPower = mp.stream().map(ProBasicModelPower::getEnsurePower).max(Comparator.comparing(Double::doubleValue)).get();
|
|
|
if (maxPower > maxP.get()) maxP.set(maxPower);
|
|
|
}
|
|
|
-// object.set(fittingMode(list, maxP.get(), arraySpeed, arrayPower, dimension, mode));
|
|
|
+ List<ProEconPowerFittingAnalySis> list = proEconPowerFittingAnalySisService.selectListByIds(ids.toString());
|
|
|
+
|
|
|
+ object.set(fittingMode(list, maxP.get(), arraySpeed, arrayPower, vo.getDimension(), vo.getMode()));
|
|
|
}
|
|
|
if (vo.getMode() == 2){ //同名拟合(暂时不支持)
|
|
|
//// List<ProEconPowerFittingAnalySis> list = powerService.selectListByIds(ids);
|
|
@@ -297,7 +306,7 @@ public class NewDataFittingService {
|
|
|
map.put("sjgl", sjglList); //实际功率
|
|
|
map.put("llgl", bzglList); //保证功率
|
|
|
map.put("cpz", cpzList); //Cp值
|
|
|
- map.put("obj", obj); //对象
|
|
|
+ map.put("obj", obj); //对w象
|
|
|
map.put("yyd", listYY); //有用散点
|
|
|
map.put("wyd", listWY); //无用散点
|
|
|
|
|
@@ -376,7 +385,14 @@ public class NewDataFittingService {
|
|
|
sb.append(DateUtil.format(data.get(i).getTs(), DateUtil.DATE_TIME_PATTERN)).append(",");
|
|
|
sb.append(data.get(i).getDoubleValue()).append(",");
|
|
|
for (int j = 1; j < list.size(); j++){
|
|
|
- sb.append(list.get(j).get(i).getDoubleValue()).append(",");
|
|
|
+
|
|
|
+ //
|
|
|
+ if(null != list.get(j) && list.get(j).size()>0){
|
|
|
+ sb.append(list.get(j).get(i).getDoubleValue()).append(",");
|
|
|
+ }else {
|
|
|
+ sb.append(0).append(",");
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
sb.deleteCharAt(sb.lastIndexOf(","));
|
|
|
sb.append("\n");
|
|
@@ -466,6 +482,7 @@ public class NewDataFittingService {
|
|
|
}
|
|
|
boolean flag = FileUtil.writeFile(fileName, content);
|
|
|
if (flag) { // TODO 保存数据库
|
|
|
+ obj.setId(null);
|
|
|
obj.setPath(fileName);
|
|
|
obj.setProcessid(processId);
|
|
|
obj.setCpavg(lf.getCpAvg());
|