Преглед изворни кода

try catch数据库配置不全导致的异常;
增加数据导入功能

chenminghua пре 1 година
родитељ
комит
765cdf4ac4

+ 8 - 0
power-fitting/pom.xml

@@ -124,6 +124,14 @@
             <artifactId>commons-lang3</artifactId>
             <artifactId>commons-lang3</artifactId>
         </dependency>
         </dependency>
 
 
+        <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>42.4.1</version>
+        </dependency>
+
+
     </dependencies>
     </dependencies>
 
 
     <build>
     <build>

+ 28 - 1
power-fitting/src/main/java/com/gyee/power/fitting/common/alg/PowerProcessALG.java

@@ -31,15 +31,19 @@ public class PowerProcessALG {
      * @param isqfh  是否欠符合
      * @param isqfh  是否欠符合
      * @param qfhdj  欠符合等级
      * @param qfhdj  欠符合等级
      * @return
      * @return
+     * // 0-待机  1-手动停机  2-正常发电  3-缺陷降出力  4-限电降出力  5-限电停机  6-故障停机
+     * // 7-场内受累停机  8-检修停机  9-场内受累检修  10-电网受累  11-环境受累  12-风机离线
      */
      */
     public static List<PowerPointData> dataProcess(List<PowerPointData> list, Map<Double, Double> map,
     public static List<PowerPointData> dataProcess(List<PowerPointData> list, Map<Double, Double> map,
                                                    Double maxs, Double mins, Double maxp, Double minp, Boolean isfbw,
                                                    Double maxs, Double mins, Double maxp, Double minp, Boolean isfbw,
                                                    Boolean isfhl, Boolean isbw, Boolean istj, Boolean isglpc, Boolean isqfh, Integer qfhdj){
                                                    Boolean isfhl, Boolean isbw, Boolean istj, Boolean isglpc, Boolean isqfh, Integer qfhdj){
         String timeBW = DateUtil.format(new Date(0), DateUtil.DATE_TIME_PATTERN);
         String timeBW = DateUtil.format(new Date(0), DateUtil.DATE_TIME_PATTERN);
+        String timeTJ = DateUtil.format(new Date(0), DateUtil.DATE_TIME_PATTERN);
         List<PowerPointData> tempei = new ArrayList<>();
         List<PowerPointData> tempei = new ArrayList<>();
         List<PowerPointData> tempqf = new ArrayList<>();
         List<PowerPointData> tempqf = new ArrayList<>();
+        List<PowerPointData> temptj = new ArrayList<>();
 
 
-        //TODO 数据过滤  // 0正常,1过滤掉
+        //TODO 数据过滤  // 0正常,1过滤掉,2停机数据过滤
         for (PowerPointData item : list) {
         for (PowerPointData item : list) {
             int filter = 0;
             int filter = 0;
             int fjstatus = 0;
             int fjstatus = 0;
@@ -133,6 +137,29 @@ public class PowerProcessALG {
                     }
                     }
                 }
                 }
             }
             }
+
+            int tjstatus = 0;
+            int tjflag = -1;
+            //过滤停机、待机等后10分钟和并网前10分钟数据
+            if (item.getMxzt() == 0 || item.getMxzt() == 1 || item.getMxzt() == 5 || item.getMxzt() == 6 || item.getMxzt() == 7 || item.getMxzt() == 8 || item.getMxzt() == 9){
+                tjstatus = 1;
+                tjflag = item.getMxzt();
+                timeTJ = item.getTime();
+            } else {
+                tjstatus = 0;
+                tjflag = -1;
+            }
+            if (tjstatus == 1){
+                if (temptj.size() > 0){
+                    if (DateUtil.getTimeDiff(temptj.get(0).getTime(), timeTJ) >= 10 && tjflag == item.getMxzt()){
+                        item.setFilter(2);
+                        temptj.remove(0);
+                    }
+                }
+                temptj.add(item);
+            } else {
+                temptj.clear();
+            }
         }
         }
 
 
         return list;
         return list;

+ 2 - 0
power-fitting/src/main/java/com/gyee/power/fitting/common/result/ResultCode.java

@@ -33,6 +33,8 @@ public enum ResultCode {
     PARAM_NOT_COMPLETE(1004, "参数缺失"),
     PARAM_NOT_COMPLETE(1004, "参数缺失"),
     ERROR_DATA_DIR(1005, "目录创建失败"),
     ERROR_DATA_DIR(1005, "目录创建失败"),
     ERROR_DATA_FILE(1006, "文件上传失败"),
     ERROR_DATA_FILE(1006, "文件上传失败"),
+    ERROR_FILE_BLANK(1007, "文件不能为空"),
+
 
 
     /* 用户错误 */
     /* 用户错误 */
     USER_NOT_LOGIN(2001, "用户未登录"),
     USER_NOT_LOGIN(2001, "用户未登录"),

+ 3 - 0
power-fitting/src/main/java/com/gyee/power/fitting/common/util/NumberUtil.java

@@ -100,6 +100,9 @@ public class NumberUtil {
             case 600:
             case 600:
                 interval = "十分钟";
                 interval = "十分钟";
                 break;
                 break;
+            case 900:
+                interval = "十五分钟";
+                break;
             default:
             default:
                 interval = "一分钟";
                 interval = "一分钟";
         }
         }

+ 49 - 0
power-fitting/src/main/java/com/gyee/power/fitting/controller/fj/DataPrepareController.java

@@ -1,17 +1,26 @@
 package com.gyee.power.fitting.controller.fj;
 package com.gyee.power.fitting.controller.fj;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.gyee.power.fitting.common.config.GyeeConfig;
+import com.gyee.power.fitting.common.constants.Constants;
 import com.gyee.power.fitting.common.result.JsonResult;
 import com.gyee.power.fitting.common.result.JsonResult;
 import com.gyee.power.fitting.common.result.ResultCode;
 import com.gyee.power.fitting.common.result.ResultCode;
+import com.gyee.power.fitting.common.spring.InitialRunner;
+import com.gyee.power.fitting.common.util.DateUtil;
 import com.gyee.power.fitting.common.util.FileUtil;
 import com.gyee.power.fitting.common.util.FileUtil;
+import com.gyee.power.fitting.common.util.NumberUtil;
 import com.gyee.power.fitting.model.Powerfittinganalysis;
 import com.gyee.power.fitting.model.Powerfittinganalysis;
 import com.gyee.power.fitting.service.PowerfittinganalysisService;
 import com.gyee.power.fitting.service.PowerfittinganalysisService;
 import com.gyee.power.fitting.service.custom.curve.DataPrepareService;
 import com.gyee.power.fitting.service.custom.curve.DataPrepareService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
 import java.util.*;
 import java.util.*;
 
 
 
 
@@ -24,6 +33,8 @@ import java.util.*;
 public class DataPrepareController {
 public class DataPrepareController {
 
 
     @Resource
     @Resource
+    private GyeeConfig config;
+    @Resource
     private DataPrepareService prepareService;
     private DataPrepareService prepareService;
     @Resource
     @Resource
     private PowerfittinganalysisService powerService;
     private PowerfittinganalysisService powerService;
@@ -82,4 +93,42 @@ public class DataPrepareController {
         Powerfittinganalysis obj = powerService.getById(id);
         Powerfittinganalysis obj = powerService.getById(id);
         FileUtil.download(obj.getPath(), response);
         FileUtil.download(obj.getPath(), response);
     }
     }
+
+    /**
+     * 文件导入
+     */
+    @PostMapping("upload")
+    public JSONObject dataImport(@RequestParam("file") MultipartFile[] files, HttpServletRequest request,
+                                 String station, int interval, long st, long et){
+        if (Objects.isNull(files) || files.length < 1){
+            return JsonResult.error(ResultCode.ERROR_FILE_BLANK);
+        }
+
+        List<Powerfittinganalysis> list = new ArrayList<>();
+        for (MultipartFile file : files){
+            String[] name = file.getOriginalFilename().split("_");
+            String fileName = config.getFilePathPrepare() + name[0] + "_" + name[1] + "_" + name[2] + "_" + System.currentTimeMillis() / 1000 + ".csv";
+            Powerfittinganalysis obj = new Powerfittinganalysis();
+            obj.setStation(name[0] + "_" + name[1]);
+            obj.setStationcn(station);
+            obj.setWindturbine(name[2]);
+            obj.setCode(name[2]);
+            obj.setTime(DateUtil.format(st, DateUtil.YYYY_MM_DD_CHN) + "-" + DateUtil.format(et, DateUtil.YYYY_MM_DD_CHN));
+            obj.setInterval(NumberUtil.toNum(interval));
+            obj.setPath(fileName);
+            obj.setType(Constants.DATA_PREPARE);
+            obj.setInterp(interval);
+            obj.setCreatetime(DateUtil.parseStrtoDate(DateUtil.format(st, DateUtil.DATE_TIME_PATTERN), DateUtil.DATE_TIME_PATTERN));
+            list.add(obj);
+            try {
+                File dest = new File(fileName);
+                file.transferTo(dest);
+            } catch (IOException e) {
+                e.printStackTrace();
+                return JsonResult.error(ResultCode.ERROR_DATA_TYPE);
+            }
+        }
+        powerService.saveBatch(list);
+        return  JsonResult.success(ResultCode.SUCCESS);
+    }
 }
 }

+ 3 - 1
power-fitting/src/main/java/com/gyee/power/fitting/controller/fj/ReportController.java

@@ -87,7 +87,7 @@ public class ReportController {
 
 
 
 
     @GetMapping("analysis")
     @GetMapping("analysis")
-    public void report(String date) {
+    public String report(String date) {
 //        Date month = DateUtil.addMonths(new Date(), -1);
 //        Date month = DateUtil.addMonths(new Date(), -1);
 //        //上月1号0点值
 //        //上月1号0点值
 //        Date st = DateUtil.dateZeroFormat(month);
 //        Date st = DateUtil.dateZeroFormat(month);
@@ -105,6 +105,8 @@ public class ReportController {
         report.calMRLXS(st, et);
         report.calMRLXS(st, et);
         report.calBlade(st, et);
         report.calBlade(st, et);
         report.calStopTime(st, et);
         report.calStopTime(st, et);
+
+        return "success";
     }
     }
 
 
     public static void main(String[] args){
     public static void main(String[] args){

+ 5 - 6
power-fitting/src/main/java/com/gyee/power/fitting/service/custom/BladeService.java

@@ -43,19 +43,18 @@ public class BladeService {
             double avg = new BigDecimal(v).setScale(2, RoundingMode.CEILING).doubleValue();
             double avg = new BigDecimal(v).setScale(2, RoundingMode.CEILING).doubleValue();
             if (item.getFilter() == 0){
             if (item.getFilter() == 0){
                 //风机正常并网且风速在5-12m
                 //风机正常并网且风速在5-12m
-                if (item.getMxzt() == 2 && item.getSpeed() >= 5 && item.getSpeed() <= 12){
+                if (item.getMxzt() == 2 && item.getSpeed() >= 5 && item.getSpeed() <= 12 && avg < 20){
                     Map<String, Object> mbw = new HashMap<>();
                     Map<String, Object> mbw = new HashMap<>();
-                    mbw.put("time", DateUtil.format(item.getTime(), DateUtil.DATE_PATTERN));
+                    mbw.put("time", item.getTime());
                     mbw.put("value", avg);
                     mbw.put("value", avg);
                     pbw.add(mbw);
                     pbw.add(mbw);
                 }
                 }
             }
             }
             //风机在不发电情况下
             //风机在不发电情况下
-            if (item.getMxzt() != 2 && item.getMxzt() != 3 && item.getMxzt() != 10
-                    && item.getMxzt() != 11 && item.getMxzt() != 12 && avg > 60){
+            if (item.getFilter() == 2 && avg > 70){
                 Map<String, Object> mtj = new HashMap<>();
                 Map<String, Object> mtj = new HashMap<>();
-                mtj.put("time", DateUtil.format(item.getTime(), DateUtil.DATE_PATTERN));
-                mtj.put("value", 90 - avg);
+                mtj.put("time", item.getTime());
+                mtj.put("value", new BigDecimal(90 - avg).setScale(2, RoundingMode.CEILING).doubleValue());
                 ptj.add(mtj);
                 ptj.add(mtj);
             }
             }
         }
         }

+ 9 - 5
power-fitting/src/main/java/com/gyee/power/fitting/service/custom/ReportService.java

@@ -41,6 +41,7 @@ public class ReportService {
      * 曲线偏差率分析
      * 曲线偏差率分析
      */
      */
     public void calCurve(Date st, Date et){
     public void calCurve(Date st, Date et){
+        log.info("=====曲线偏差率分析");
         List<Poweranalysisreport> result = new ArrayList<>();
         List<Poweranalysisreport> result = new ArrayList<>();
         var list = powerService.selectByTime(Constants.DATA_FITTING, st, et);
         var list = powerService.selectByTime(Constants.DATA_FITTING, st, et);
         val collect = list.stream().collect(Collectors.groupingBy(Powerfittinganalysis::getStationcn, Collectors.toList()));
         val collect = list.stream().collect(Collectors.groupingBy(Powerfittinganalysis::getStationcn, Collectors.toList()));
@@ -104,6 +105,7 @@ public class ReportService {
      * 静态偏航对风分析
      * 静态偏航对风分析
      */
      */
     public void calJTPCDF(Date st,  Date et){
     public void calJTPCDF(Date st,  Date et){
+        log.info("=====静态偏航对风分析");
         List<Poweranalysisreport> result = new ArrayList<>();
         List<Poweranalysisreport> result = new ArrayList<>();
         var list = powerService.selectByTime(Constants.DATA_PROCESS, st, et);
         var list = powerService.selectByTime(Constants.DATA_PROCESS, st, et);
         val collect = list.stream().collect(Collectors.groupingBy(Powerfittinganalysis::getStationcn, Collectors.toList()));
         val collect = list.stream().collect(Collectors.groupingBy(Powerfittinganalysis::getStationcn, Collectors.toList()));
@@ -165,6 +167,7 @@ public class ReportService {
      * 容量系数分析
      * 容量系数分析
      */
      */
     public void calMRLXS(Date st,  Date et){
     public void calMRLXS(Date st,  Date et){
+        log.info("=====容量系数分析");
         List<Poweranalysisreport> result = new ArrayList<>();
         List<Poweranalysisreport> result = new ArrayList<>();
         var list = windinfoService.selectByTime(DateUtil.format(st, DateUtil.YYYY_MM), DateUtil.format(et, DateUtil.YYYY_MM));
         var list = windinfoService.selectByTime(DateUtil.format(st, DateUtil.YYYY_MM), DateUtil.format(et, DateUtil.YYYY_MM));
         val collect = list.stream().collect(Collectors.groupingBy(Powerwindinfo::getStation, Collectors.toList()));
         val collect = list.stream().collect(Collectors.groupingBy(Powerwindinfo::getStation, Collectors.toList()));
@@ -204,6 +207,7 @@ public class ReportService {
      * 桨距角分析
      * 桨距角分析
      */
      */
     public void calBlade(Date st,  Date et){
     public void calBlade(Date st,  Date et){
+        log.info("=====桨距角分析");
         List<Poweranalysisreport> result = new ArrayList<>();
         List<Poweranalysisreport> result = new ArrayList<>();
         var list = powerService.selectByTime(Constants.DATA_PROCESS, st, et);
         var list = powerService.selectByTime(Constants.DATA_PROCESS, st, et);
         val collect = list.stream().collect(Collectors.groupingBy(Powerfittinganalysis::getStationcn, Collectors.toList()));
         val collect = list.stream().collect(Collectors.groupingBy(Powerfittinganalysis::getStationcn, Collectors.toList()));
@@ -223,16 +227,15 @@ public class ReportService {
                         }
                         }
                         double angle = (item.getYp1() + item.getYp2() + item.getYp3()) / 3;
                         double angle = (item.getYp1() + item.getYp2() + item.getYp3()) / 3;
                         double avg = new BigDecimal(angle).setScale(2, RoundingMode.CEILING).doubleValue();
                         double avg = new BigDecimal(angle).setScale(2, RoundingMode.CEILING).doubleValue();
-                        if (item.getFilter() == 0){
+                        if (item.getFilter() == 0 && avg < 20){
                             //风机正常并网且风速在5-12m
                             //风机正常并网且风速在5-12m
-                            if (item.getMxzt() == 2 && item.getSpeed() >= 5 && item.getSpeed() <= 12 && avg > 8){
+                            if (item.getMxzt() == 2 && item.getSpeed() >= 5 && item.getSpeed() <= 12 && avg > 6){
                                 countBW += 1;
                                 countBW += 1;
                             }
                             }
                         }
                         }
                         //风机在不发电情况下
                         //风机在不发电情况下
-                        if (item.getMxzt() != 2 && item.getMxzt() != 3 && item.getMxzt() != 10
-                                && item.getMxzt() != 11 && item.getMxzt() != 12 && avg > 60){
-                            if ((90 - avg) > 8){
+                        if (item.getFilter() == 2 && avg > 70){
+                            if ((90 - avg) > 6){
                                 countTJ += 1;
                                 countTJ += 1;
                             }
                             }
                         }
                         }
@@ -263,6 +266,7 @@ public class ReportService {
      * 停机时间
      * 停机时间
      */
      */
     public void calStopTime(Date st,  Date et){
     public void calStopTime(Date st,  Date et){
+        log.info("=====停机时间");
         List<Poweranalysisreport> result = new ArrayList<>();
         List<Poweranalysisreport> result = new ArrayList<>();
         var list = powerService.selectByTime(Constants.DATA_PREPARE, st, et);
         var list = powerService.selectByTime(Constants.DATA_PREPARE, st, et);
         val collect = list.stream().collect(Collectors.groupingBy(Powerfittinganalysis::getStationcn, Collectors.toList()));
         val collect = list.stream().collect(Collectors.groupingBy(Powerfittinganalysis::getStationcn, Collectors.toList()));

+ 19 - 19
power-fitting/src/main/java/com/gyee/power/fitting/service/custom/agc/AgcDeviateService.java

@@ -44,7 +44,7 @@ public class AgcDeviateService {
 
 
 
 
 
 
-    private final AgcDeviateMapper agcDeviateMapper;
+    private final AgcDeviateMapper agcDeviateMapper = null;
     /**
     /**
      * AGC信息缓存
      * AGC信息缓存
      */
      */
@@ -55,24 +55,24 @@ public class AgcDeviateService {
 
 
 
 
     public AgcDeviateService(AgcDeviateMapper agcDeviateMapper, FileService fs, Environment env) {
     public AgcDeviateService(AgcDeviateMapper agcDeviateMapper, FileService fs, Environment env) {
-        this.agcDeviateMapper = agcDeviateMapper;
-        fileService = fs;
-        agcDeviateConfigMap = new HashMap<>();
-
-        isOffline = Boolean.TRUE.equals(env.getProperty("gyee.offline", boolean.class));
-        filePathPower = env.getProperty("gyee.file-path-power");
-
-        AgcDeviateConfig[] adcs = null;
-        if (isOffline) {
-            adcs = fileService.getFromFile(filePathPower + "agc_info_net.json", AgcDeviateConfig[].class);
-            initFiles();
-        } else {
-            AgcDeviateModel adm = agcDeviateMapper.selectById("agc_info_net");
-            adcs = JSON.parseObject(adm.getValue(), AgcDeviateConfig[].class);
-        }
-        for (AgcDeviateConfig adc : adcs) {
-            agcDeviateConfigMap.put(adc.getId(), adc);
-        }
+//        this.agcDeviateMapper = agcDeviateMapper;
+//        fileService = fs;
+//        agcDeviateConfigMap = new HashMap<>();
+//
+//        isOffline = Boolean.TRUE.equals(env.getProperty("gyee.offline", boolean.class));
+//        filePathPower = env.getProperty("gyee.file-path-power");
+//
+//        AgcDeviateConfig[] adcs = null;
+//        if (isOffline) {
+//            adcs = fileService.getFromFile(filePathPower + "agc_info_net.json", AgcDeviateConfig[].class);
+//            initFiles();
+//        } else {
+//            AgcDeviateModel adm = agcDeviateMapper.selectById("agc_info_net");
+//            adcs = JSON.parseObject(adm.getValue(), AgcDeviateConfig[].class);
+//        }
+//        for (AgcDeviateConfig adc : adcs) {
+//            agcDeviateConfigMap.put(adc.getId(), adc);
+//        }
     }
     }
 
 
     private void initFiles() {
     private void initFiles() {

+ 19 - 5
power-fitting/src/main/java/com/gyee/power/fitting/service/custom/curve/DataFittingService.java

@@ -71,8 +71,14 @@ public class DataFittingService {
                 List<Double> arrayPower = new ArrayList<>();
                 List<Double> arrayPower = new ArrayList<>();
                 List<String> line = FileUtil.readFile(list.get(0).getPath(), true);
                 List<String> line = FileUtil.readFile(list.get(0).getPath(), true);
                 csvParse(line, arraySpeed, arrayPower, mins, maxs, minp, maxp);
                 csvParse(line, arraySpeed, arrayPower, mins, maxs, minp, maxp);
-                List<Modelpowerdetails> mp = InitialRunner.modelPowerDetailMap.get(InitialRunner.wtMap.get(list.get(0).getWindturbine()).getModelid());
-                Double maxP = mp.stream().map(Modelpowerdetails::getEnsurepower).max(Comparator.comparing(Double::doubleValue)).get();
+                Double maxP = 0.0;
+                try {
+                    List<Modelpowerdetails> mp = InitialRunner.modelPowerDetailMap.get(InitialRunner.wtMap.get(list.get(0).getWindturbine()).getModelid());
+                    maxP = mp.stream().map(Modelpowerdetails::getEnsurepower).max(Comparator.comparing(Double::doubleValue)).get();
+                } catch (Exception e) {}
+                if (maxP == 0.0){
+                    maxP = 2500.0;
+                }
                 object.set(fittingMode(list, maxP, arraySpeed, arrayPower, dimension, mode));
                 object.set(fittingMode(list, maxP, arraySpeed, arrayPower, dimension, mode));
             }
             }
         }
         }
@@ -188,8 +194,12 @@ public class DataFittingService {
         }
         }
 
 
         //保证功率
         //保证功率
-        List<Modelpowerdetails> modelPower = InitialRunner.modelPowerDetailMap.get(InitialRunner.wtMap.get(obj.getWindturbine()).getModelid());
-        List<Object> bzglList = modelPower.stream().sorted(Comparator.comparing(Modelpowerdetails::getSpeed)).map(m -> new double[]{m.getSpeed(), m.getEnsurepower()}).collect(Collectors.toList());
+        List<Modelpowerdetails> modelPower;
+        List<Object> bzglList = null;
+        try {
+            modelPower = InitialRunner.modelPowerDetailMap.get(InitialRunner.wtMap.get(obj.getWindturbine()).getModelid());
+            bzglList = modelPower.stream().sorted(Comparator.comparing(Modelpowerdetails::getSpeed)).map(m -> new double[]{m.getSpeed(), m.getEnsurepower()}).collect(Collectors.toList());
+        } catch (Exception e){}
 
 
         //散点
         //散点
         String[] ids = obj.getProcessid().split(",");
         String[] ids = obj.getProcessid().split(",");
@@ -296,8 +306,12 @@ public class DataFittingService {
         List<Point> temp = PowerFittingALG.buildLine(arrX, arrY, arraySpeed.size(), dimension, 0.01);
         List<Point> temp = PowerFittingALG.buildLine(arrX, arrY, arraySpeed.size(), dimension, 0.01);
         //推力系数 CP值
         //推力系数 CP值
         LineCurveFitting lf = new LineCurveFitting();
         LineCurveFitting lf = new LineCurveFitting();
+        Double sweptarea = 4600.0;
         lf.setYLines(temp);
         lf.setYLines(temp);
-        lf = PowerFittingALG.buildCp(InitialRunner.equipmentMap.get(InitialRunner.wtMap.get(obj.getWindturbine()).getModelid()).getSweptarea(), lf);
+        try {
+            sweptarea = InitialRunner.equipmentMap.get(InitialRunner.wtMap.get(obj.getWindturbine()).getModelid()).getSweptarea();
+        } catch (Exception e){}
+        lf = PowerFittingALG.buildCp(sweptarea, lf);
         lf.getCpValue().forEach(f -> {if(f.getX() <= 2.5) f.setY(0);});
         lf.getCpValue().forEach(f -> {if(f.getX() <= 2.5) f.setY(0);});
         //曲线偏差率
         //曲线偏差率
         dataCurveRatio(lf, obj);
         dataCurveRatio(lf, obj);

+ 23 - 11
power-fitting/src/main/java/com/gyee/power/fitting/service/custom/curve/DataProcessService.java

@@ -15,6 +15,7 @@ import com.gyee.power.fitting.model.anno.FixedVo;
 import com.gyee.power.fitting.model.custom.PowerPointData;
 import com.gyee.power.fitting.model.custom.PowerPointData;
 import com.gyee.power.fitting.model.custom.TableTitle;
 import com.gyee.power.fitting.model.custom.TableTitle;
 import com.gyee.power.fitting.service.PowerfittinganalysisService;
 import com.gyee.power.fitting.service.PowerfittinganalysisService;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -25,6 +26,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
+@Slf4j
 @Service
 @Service
 public class DataProcessService {
 public class DataProcessService {
 
 
@@ -63,17 +65,27 @@ public class DataProcessService {
                 eis.add(new PowerPointData(list.get(i).split(","), false));
                 eis.add(new PowerPointData(list.get(i).split(","), false));
             }
             }
 
 
-            /** 风速  ->  保证功率  来自数据库 **/
-            List<Modelpowerdetails> modelPowerList = InitialRunner.modelPowerDetailMap.get(InitialRunner.wtMap.get(obj.getWindturbine()).getModelid());
-            Map<Double, Double> modelPowerMap = modelPowerList.stream().collect(Collectors.toMap(Modelpowerdetails::getSpeed, Modelpowerdetails::getEnsurepower));
-            /** 数据预处理 **/
-            List<PowerPointData> data = PowerProcessALG.dataProcess(eis, modelPowerMap, maxs, mins, maxp, minp, isfbw, isfhl, isbw, istj, isglpc, isqfh, qfhdj);
-            /** 静风频率 **/
-            List<Double> ls = WindDirectionALG.frequency(data.stream().map(PowerPointData::getSpeed).collect(Collectors.toList()), 3);
-            double frequency = ls.get(0);
-            double speed = ls.get(1);
-
-            String content = assemble(data);
+            // 静风频率、平均风速
+            double frequency =0;
+            double speed = 0;
+            String content;
+
+            /** 风速  ->  保证功率  来自数据库  没有配置特殊处理 **/
+            try {
+                List<Modelpowerdetails> modelPowerList = InitialRunner.modelPowerDetailMap.get(InitialRunner.wtMap.get(obj.getWindturbine()).getModelid());
+                Map<Double, Double> modelPowerMap = modelPowerList.stream().collect(Collectors.toMap(Modelpowerdetails::getSpeed, Modelpowerdetails::getEnsurepower));
+                /** 数据预处理 **/
+                List<PowerPointData> data = PowerProcessALG.dataProcess(eis, modelPowerMap, maxs, mins, maxp, minp, isfbw, isfhl, isbw, istj, isglpc, isqfh, qfhdj);
+                /** 静风频率 **/
+                List<Double> ls = WindDirectionALG.frequency(data.stream().map(PowerPointData::getSpeed).collect(Collectors.toList()), 3);
+                frequency = ls.get(0);
+                speed = ls.get(1);
+                content = assemble(data);
+            } catch (Exception e){
+                log.error(e.getMessage());
+                content = assemble(eis);
+            }
+
             String fileName = config.getFilePathProcess() + obj.getStation() + "_" + obj.getCode() + "_" + SnowFlakeUtil.generateIdL() / 100000 + ".csv";
             String fileName = config.getFilePathProcess() + obj.getStation() + "_" + obj.getCode() + "_" + SnowFlakeUtil.generateIdL() / 100000 + ".csv";
             boolean flag = FileUtil.writeFile(fileName, content);
             boolean flag = FileUtil.writeFile(fileName, content);
             if (flag) {  // TODO  保存数据库
             if (flag) {  // TODO  保存数据库

+ 11 - 11
power-fitting/src/main/resources/application.yaml

@@ -36,18 +36,18 @@ spring:
   main:
   main:
     allow-bean-definition-overriding: false #当遇到同样名字的时候,是否允许覆盖注册
     allow-bean-definition-overriding: false #当遇到同样名字的时候,是否允许覆盖注册
   datasource:
   datasource:
-    type: com.alibaba.druid.pool.DruidDataSource
-    # 宁夏三区oracle
-    driver-class-name: oracle.jdbc.OracleDriver
-    url: jdbc:oracle:thin:@192.168.1.105:1521:gdnxfd
-    username: nxfdprod
-    password: gdnxfd123
-
-    # 华为云oracle(功率预测的环境)
+#    type: com.alibaba.druid.pool.DruidDataSource
+#    # 宁夏三区oracle
 #    driver-class-name: oracle.jdbc.OracleDriver
 #    driver-class-name: oracle.jdbc.OracleDriver
-#    url: jdbc:oracle:thin:@120.46.129.85:1521:ORCL
-#    username: gyee
-#    password: FRWIND
+#    url: jdbc:oracle:thin:@192.168.1.105:1521:gdnxfd
+#    username: nxfdprod
+#    password: gdnxfd123
+
+    url: jdbc:postgresql://123.60.221.117:5432/powerfitting
+    username: postgres
+    password: gyee@123
+    driver-class-name: org.postgresql.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
 
 
     druid:
     druid:
       # 初始化大小,最小,最大
       # 初始化大小,最小,最大