全业务考评 1 год назад
Родитель
Сommit
361b210eac

+ 35 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/controller/fj/BladeController.java

@@ -0,0 +1,35 @@
+package com.gyee.power.fitting.controller.fj;
+
+import com.alibaba.fastjson.JSONObject;
+import com.gyee.power.fitting.common.result.JsonResult;
+import com.gyee.power.fitting.common.result.ResultCode;
+import com.gyee.power.fitting.service.custom.windresource.BladeService;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 桨叶分析
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/blade")
+public class BladeController {
+
+    @Resource
+    private BladeService bladeService;
+
+    /**
+     * 叶片角度
+     * @param ids   数据预处理
+     * @returnv
+     */
+    @GetMapping("angle")
+    public JSONObject bladeAngle(String ids){
+        Object o = bladeService.bladeAngle(ids);
+        return JsonResult.successData(ResultCode.SUCCESS, o);
+    }
+}

+ 12 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/model/custom/PowerPointData.java

@@ -28,6 +28,9 @@ public class PowerPointData {
             this.dfwc = Double.valueOf(df.format(Double.valueOf(str[8])));
             this.angle = Double.valueOf(df.format(Double.valueOf(str[9])));
             this.hjwd = Double.valueOf(df.format(Double.valueOf(str[10])));
+            this.yp1 = Double.valueOf(df.format(Double.valueOf(str[11])));
+            this.yp2 = Double.valueOf(df.format(Double.valueOf(str[12])));
+            this.yp3 = Double.valueOf(df.format(Double.valueOf(str[13])));
         }
         if (isFilter)
             this.filter = Integer.valueOf(str[str.length - 1]);
@@ -81,6 +84,15 @@ public class PowerPointData {
     @Desc(des = "环境温度",  uniformCode = "AI072", remark = "1")
     private double hjwd = 0;
 
+    @Desc(des = "叶片1",  uniformCode = "AI082", remark = "1")
+    private double yp1 = 0;
+
+    @Desc(des = "叶片2",  uniformCode = "AI083", remark = "1")
+    private double yp2 = 0;
+
+    @Desc(des = "叶片3",  uniformCode = "AI084", remark = "1")
+    private double yp3 = 0;
+
     //是否过滤  0:不过滤 1:过滤
     @Desc(des = "筛选", remark = "0")
     private int filter = 0;

+ 7 - 9
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/custom/curve/DataFittingService.java

@@ -13,13 +13,11 @@ import com.gyee.power.fitting.model.*;
 import com.gyee.power.fitting.model.anno.AnnotationTool;
 import com.gyee.power.fitting.model.anno.FixedVo;
 import com.gyee.power.fitting.model.custom.*;
-import com.gyee.power.fitting.service.PowerfittinganalysisService;
-import com.gyee.power.fitting.service.PowermodelService;
 import com.gyee.power.fitting.service.ProEconPowerFittingAnalySisService;
+import com.gyee.power.fitting.service.ProEconPowerModelService;
 import lombok.extern.slf4j.Slf4j;
 import lombok.val;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -40,7 +38,7 @@ public class DataFittingService {
     @Resource
     private InitialRunner initialRunner;
     @Resource
-    private PowermodelService modelService;
+    private ProEconPowerModelService modelService;
     @Resource
     private DataScanService dataScanService;
     @Resource
@@ -525,7 +523,7 @@ public class DataFittingService {
      * 通过拟合的id保存理论功率
      * @param ids
      */
-    @Async
+    //@Async
     public void curveSave(String ids) {
         List<ProEconPowerFittingAnalySis> list = powerService.selectListByIds(ids);
         if (list.size() == 0)
@@ -533,13 +531,13 @@ public class DataFittingService {
 
         list.forEach(f -> {
             try {
-                List<Powermodel> result = new ArrayList<>();
+                List<ProEconPowerModel> result = new ArrayList<>();
                 List<String> ls = FileUtil.readFile(f.getPath(), true);
                 for (int i = 1; i < ls.size(); i++){
                     String[] split = ls.get(i).split(",");
-                    Powermodel obj = new Powermodel();
-                    obj.setWindturbineid(f.getWindturbineId());
-                    obj.setModel(InitialRunner.wtNewMap.get(f.getWindturbineId()).getModelId());
+                    ProEconPowerModel obj = new ProEconPowerModel();
+                    obj.setWindturbineId(f.getWindturbineId());
+                    obj.setModelId(InitialRunner.wtNewMap.get(f.getWindturbineId()).getModelId());
                     obj.setSpeed(new BigDecimal(split[0]).setScale(2, RoundingMode.FLOOR).doubleValue());
                     obj.setPower(new BigDecimal(split[1]).setScale(2, RoundingMode.FLOOR).doubleValue());
                     result.add(obj);

+ 1 - 1
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/custom/curve/DataPrepareService.java

@@ -67,7 +67,7 @@ public class DataPrepareService {
                 for (int i = 0; i < points.size(); i++){
                     ProBasicEquipmentPoint point = collect.get(points.get(i)).get(0);
                     log.info("测点:" + point.getId() + "----" + point.getName());
-                    List<TsDoubleData> data = remoteService.adapterfd().getHistorySnap(point.getId(), st, et, interval);
+                    List<TsDoubleData> data = remoteService.adapterfd().getHistorySnap(point.getNemCode(), st, et, interval);
                     if (data == null || data.size() < 0)
                         break;
                     result.add(data);

+ 22 - 25
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/custom/fiveloss/FiveLossService.java

@@ -15,12 +15,9 @@ import com.gyee.power.fitting.model.anno.FixedVo;
 import com.gyee.power.fitting.model.custom.FjjxbVo;
 import com.gyee.power.fitting.model.custom.PowerPointData;
 import com.gyee.power.fitting.model.custom.TableTitle;
-import com.gyee.power.fitting.model.custom.TsDoubleData;
-import com.gyee.power.fitting.service.PowerfittinganalysisService;
+import com.gyee.power.fitting.service.ProEconPowerFittingAnalySisService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -34,7 +31,7 @@ import java.util.stream.Collectors;
 public class FiveLossService {
 
     @Resource
-    private PowerfittinganalysisService analysisService;
+    private ProEconPowerFittingAnalySisService analysisService;
 
     @Resource
     private RemoteServiceBuilder remoteService;
@@ -92,19 +89,19 @@ public class FiveLossService {
         List<FjjxbVo> result = new ArrayList<>();
         Map<String, Map<Double, Double>> zsglmap = InitialRunner.zsllglNewMap;
 
-        List<Powerfittinganalysis> analyses = analysisService.selectListByIds(ids);
+        List<ProEconPowerFittingAnalySis> analyses = analysisService.selectListByIds(ids);
         if (analyses.size() == 0){
             log.info("======风机榜效帮计算结束,数据为空.............");
             throw new CustomException(ResultCode.ERROR);
         }
 
-        for (Powerfittinganalysis p : analyses) {
+        for (ProEconPowerFittingAnalySis p : analyses) {
             List<String> content = FileUtil.readFile(p.getPath(), true);
-            if (content.size() == 0 || zsglmap.size() == 0 || zsglmap.get(p.getWindturbine()) == null){
-                log.info("======风机榜效帮计算结束," + p.getWindturbine() + "文件内容或当前风机的自算功率为空.............");
+            if (content.size() == 0 || zsglmap.size() == 0 || zsglmap.get(p.getWindturbineId()) == null){
+                log.info("======风机榜效帮计算结束," + p.getWindturbineId() + "文件内容或当前风机的自算功率为空.............");
                 continue;
             }
-            log.info("======风机绩效榜计算:" + p.getWindturbine());
+            log.info("======风机绩效榜计算:" + p.getWindturbineId());
             double llfdl = 0.0; //理论发电量
             double rfdl = 0.0; //日发电量
             double jhjxssdl = 0.0;//计划检修损失电量
@@ -118,19 +115,19 @@ public class FiveLossService {
             List<List<String>> coll = CollectUtil.groupListByQty(content, count);
             for (List<String> ls : coll) {
                 List<PowerPointData> pdl = ls.stream().map(mp -> new PowerPointData(mp.split(","), false)).collect(Collectors.toList());
-                double lldl = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), -1); //理论发电量
-                double dj = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 0); //待机
-                double sdtj = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 1); //手动停机
-                double zcfd = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 2); //正常发电
-                double xdss = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 5);  //限电损失电量
-                double qxjcl = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 3); //缺陷降出力损失电量
-                double xdjcl = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 4); //限电降出力损失电量
-                double cnsltj = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 7); //场内受累停机损失电量
-                double cnsljx = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 9); //场内受累检修损失电量
-                double dwsl = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 10); //电网受累损失电量
-                double hjsl = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 11); //环境受累损失电量
-                double gzss = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 6); //故障损失电量
-                double tjjx = generalLoss(pdl, zsglmap.get(p.getWindturbine()), p.getInterp(), 8); //停机检修
+                double lldl = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), -1); //理论发电量
+                double dj = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 0); //待机
+                double sdtj = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 1); //手动停机
+                double zcfd = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 2); //正常发电
+                double xdss = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 5);  //限电损失电量
+                double qxjcl = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 3); //缺陷降出力损失电量
+                double xdjcl = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 4); //限电降出力损失电量
+                double cnsltj = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 7); //场内受累停机损失电量
+                double cnsljx = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 9); //场内受累检修损失电量
+                double dwsl = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 10); //电网受累损失电量
+                double hjsl = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 11); //环境受累损失电量
+                double gzss = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 6); //故障损失电量
+                double tjjx = generalLoss(pdl, zsglmap.get(p.getWindturbineId()), p.getInterp(), 8); //停机检修
 
                 llfdl += lldl;
                 jhjxssdl += (tjjx + cnsljx);
@@ -142,8 +139,8 @@ public class FiveLossService {
                 speed += pdl.stream().mapToDouble(PowerPointData::getSpeed).sum();
             }
             FjjxbVo vo = new FjjxbVo();
-            vo.setId(p.getWindturbine());
-            vo.setName(p.getWindturbine());
+            vo.setId(p.getWindturbineId());
+            vo.setName(p.getWindturbineId());
             vo.setLlfdl(new BigDecimal(llfdl).setScale(2, RoundingMode.FLOOR).doubleValue());
             vo.setSjfdl(new BigDecimal(rfdl).setScale(2, RoundingMode.FLOOR).doubleValue());
             vo.setJhjx(new BigDecimal(jhjxssdl).setScale(2, RoundingMode.FLOOR).doubleValue());

+ 16 - 16
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/custom/temperature/PowerTemperatureService.java

@@ -3,12 +3,12 @@ package com.gyee.power.fitting.service.custom.temperature;
 import com.gyee.power.fitting.common.alg.PowerTemperatureAlg;
 import com.gyee.power.fitting.common.spring.InitialRunner;
 import com.gyee.power.fitting.common.util.FileUtil;
-import com.gyee.power.fitting.model.Powerfittinganalysis;
 import com.gyee.power.fitting.model.ProBasicModelPower;
+import com.gyee.power.fitting.model.ProEconPowerFittingAnalySis;
 import com.gyee.power.fitting.model.anno.AnnotationTool;
 import com.gyee.power.fitting.model.anno.FixedVo;
 import com.gyee.power.fitting.model.custom.*;
-import com.gyee.power.fitting.service.PowerfittinganalysisService;
+import com.gyee.power.fitting.service.ProEconPowerFittingAnalySisService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -20,7 +20,7 @@ import java.util.stream.Collectors;
 public class PowerTemperatureService {
 
     @Resource
-    private PowerfittinganalysisService powerService;
+    private ProEconPowerFittingAnalySisService powerService;
 
     /**
      * 与温度有关的额定功率
@@ -28,15 +28,15 @@ public class PowerTemperatureService {
      */
     public Object ratedPower(String ids) {
         List<Object> result = new ArrayList<>();
-        List<Powerfittinganalysis> list = powerService.selectListByIds(ids);
+        List<ProEconPowerFittingAnalySis> list = powerService.selectListByIds(ids);
         if (list == null || list.size() == 0)
             return result;
 
-        for (Powerfittinganalysis obj : list){
+        for (ProEconPowerFittingAnalySis obj : list){
             String[] pids = obj.getProcessid().split(",");
             for (String id : pids){
-                Powerfittinganalysis pf = powerService.selectItemById(id);
-                List<ProBasicModelPower> ls = InitialRunner.modelPowerDetailNewMap.get(InitialRunner.wtNewMap.get(obj.getWindturbine()).getModelId());
+                ProEconPowerFittingAnalySis pf = powerService.selectItemById(id);
+                List<ProBasicModelPower> ls = InitialRunner.modelPowerDetailNewMap.get(InitialRunner.wtNewMap.get(obj.getWindturbineId()).getModelId());
                 Double theoryPower = ls.get(ls.size() - 1).getTheoryPower(); //理论功率
                 Map<String, Object> map = csvParse(pf);//数据解析
                 List<PowerPointData> data = (List<PowerPointData>) map.get("data");
@@ -44,8 +44,8 @@ public class PowerTemperatureService {
                 List<int[]> rp = PowerTemperatureAlg.temperatureRatedPower(data);
 
                 Map<String, Object> mp = new HashMap<>();
-                mp.put("wt", pf.getWindturbine());
-                mp.put("power", InitialRunner.equipmentNewMap.get(InitialRunner.wtNewMap.get(pf.getWindturbine()).getModelId()));
+                mp.put("wt", pf.getWindturbineId());
+                mp.put("power", InitialRunner.equipmentNewMap.get(InitialRunner.wtNewMap.get(pf.getWindturbineId()).getModelId()));
                 mp.put("res1", res); //额定功率vs.温度分析
                 mp.put("res2", rp);  //额定功率vs.温度分析
                 result.add(mp);
@@ -58,7 +58,7 @@ public class PowerTemperatureService {
 
     public Object curveAnalysis(String id) {
         Map<String, Object> map = new HashMap<>();
-        Powerfittinganalysis obj = powerService.selectItemById(id);
+        ProEconPowerFittingAnalySis obj = powerService.selectItemById(id);
         if (obj == null)
             return map;
 
@@ -71,7 +71,7 @@ public class PowerTemperatureService {
         }
 
         //保证功率
-        List<ProBasicModelPower> modelPower = InitialRunner.modelPowerDetailNewMap.get(InitialRunner.wtNewMap.get(obj.getWindturbine()).getModelId());
+        List<ProBasicModelPower> modelPower = InitialRunner.modelPowerDetailNewMap.get(InitialRunner.wtNewMap.get(obj.getWindturbineId()).getModelId());
         List<Object> bzglList = modelPower.stream().sorted(Comparator.comparing(ProBasicModelPower::getSpeed)).map(m -> new double[]{m.getSpeed(), m.getEnsurePower()}).collect(Collectors.toList());
         //散点
         List<Object[]> scatter = new ArrayList<>();
@@ -79,7 +79,7 @@ public class PowerTemperatureService {
         //散点ID
         String[] ids = obj.getProcessid().split(",");
         for (String pid : ids) {
-            Powerfittinganalysis pf = powerService.selectItemById(pid);
+            ProEconPowerFittingAnalySis pf = powerService.selectItemById(pid);
             List<String> lp = FileUtil.readFile(pf.getPath(), true);   //数据解析
             for (int i = 1; i < lp.size(); i++){
                 String[] split = lp.get(i).split(",");
@@ -109,7 +109,7 @@ public class PowerTemperatureService {
      * @param obj
      * @return
      */
-    private Map<String, Object> csvParse(Powerfittinganalysis obj){
+    private Map<String, Object> csvParse(ProEconPowerFittingAnalySis obj){
         Map<String, Object> map = new HashMap<>();
         double minT = 0.0;
         double maxT = 0.0;
@@ -120,7 +120,7 @@ public class PowerTemperatureService {
             PowerPointData data = new PowerPointData(split, true);
             if (data.getSpeed() < 0 || data.getPower() < 0)
                 continue;
-            data.setWtId(obj.getWindturbine());
+            data.setWtId(obj.getWindturbineId());
 
             minT = data.getHjwd() < minT ? data.getHjwd() : minT;
             maxT = data.getHjwd() > maxT ? data.getHjwd() : maxT;
@@ -148,11 +148,11 @@ public class PowerTemperatureService {
 
         /** 添加内容 **/
         List<PowerPointData> list = new ArrayList<>();
-        Powerfittinganalysis obj = powerService.selectItemById(id);
+        ProEconPowerFittingAnalySis obj = powerService.selectItemById(id);
         if (obj == null)
             return map;
         String[] ids = obj.getProcessid().split(",");
-        Powerfittinganalysis item = powerService.selectItemById(ids[0]);
+        ProEconPowerFittingAnalySis item = powerService.selectItemById(ids[0]);
         List<String> ls = FileUtil.readFile(item.getPath(), false);
         for (int i = 1; i < ls.size(); i++){
             PowerPointData data = new PowerPointData(ls.get(i).split(","), false);

+ 10 - 10
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/custom/windresource/AvgSpeedInfoService.java

@@ -6,8 +6,8 @@ import com.gyee.power.fitting.common.util.DateUtil;
 import com.gyee.power.fitting.common.util.FileUtil;
 import com.gyee.power.fitting.model.*;
 import com.gyee.power.fitting.model.custom.PowerPointData;
-import com.gyee.power.fitting.service.PowerfittinganalysisService;
 import com.gyee.power.fitting.service.PowerwindinfoService;
+import com.gyee.power.fitting.service.ProEconPowerFittingAnalySisService;
 import lombok.val;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
@@ -25,7 +25,7 @@ public class AvgSpeedInfoService {
     @Resource
     private PowerwindinfoService windInfoService;
     @Resource
-    private PowerfittinganalysisService powerService;
+    private ProEconPowerFittingAnalySisService powerService;
 
     /**
      * 平均风速、毛容系数
@@ -34,11 +34,11 @@ public class AvgSpeedInfoService {
         List<Object> result = new ArrayList<>();
         Map<String, ProEconEquipmentmodel> eqMap = InitialRunner.equipmentNewMap;
         Map<String, ProBasicEquipment> wtMap = InitialRunner.wtNewMap;
-        List<Powerfittinganalysis> listObj = powerService.selectListByIds(ids);
+        List<ProEconPowerFittingAnalySis> listObj = powerService.selectListByIds(ids);
         if (listObj == null || listObj.size() == 0)
             return result;
 
-        for (Powerfittinganalysis obj : listObj){
+        for (ProEconPowerFittingAnalySis obj : listObj){
             TreeMap<String, Object> map = new TreeMap<>();
             List<Powerwindinfo> currentList = new ArrayList<>();
             List<PowerPointData> ls = csvParse(obj);
@@ -46,25 +46,25 @@ public class AvgSpeedInfoService {
             collect.forEach((k, v) -> {
                 Powerwindinfo info = new Powerwindinfo();
                 info.setStation(obj.getStation());
-                info.setWindturbine(obj.getWindturbine());
+                info.setWindturbine(obj.getWindturbineId());
                 info.setTime(DateUtil.format(k, DateUtil.DATE_PATTERN));
                 double speed = v.stream().mapToDouble(PowerPointData::getSpeed).average().getAsDouble();
                 //毛容系数=生产电量(MWh)/ (风机容量MW * 总时间(h))
-                double mrxs = (v.get(v.size() - 1).getDl() / 1000) / (eqMap.get(wtMap.get(obj.getWindturbine()).getModelId()).getPowerProduction() / 1000 * 24);
+                double mrxs = (v.get(v.size() - 1).getDl() / 1000) / (eqMap.get(wtMap.get(obj.getWindturbineId()).getModelId()).getPowerProduction() / 1000 * 24);
                 info.setAvgspeed(new BigDecimal(speed).setScale(2, RoundingMode.FLOOR).doubleValue());
                 info.setMrxs(new BigDecimal(mrxs).setScale(4, RoundingMode.FLOOR).doubleValue());
                 currentList.add(info);
             });
             // 删除已有数据同时保存新数据
             List<String> dates = currentList.stream().map(m -> m.getTime()).collect(Collectors.toList());
-            windInfoService.deleteBatch(obj.getWindturbine(), dates);
+            windInfoService.deleteBatch(obj.getWindturbineId(), dates);
             windInfoService.insertBatch(currentList);
 
             //同期数据
             List<String> preDate = dates.stream().map(f -> DateUtil.getLastYearCurrentDate(f, DateUtil.DATE_PATTERN)).collect(Collectors.toList());
-            List<Powerwindinfo> preList = windInfoService.selectListByWtIdAndTime(obj.getWindturbine(), preDate);
+            List<Powerwindinfo> preList = windInfoService.selectListByWtIdAndTime(obj.getWindturbineId(), preDate);
 
-            map.put("wtId", obj.getWindturbine());
+            map.put("wtId", obj.getWindturbineId());
             map.put("currentData", currentList);
             map.put("preData", preList);
 
@@ -79,7 +79,7 @@ public class AvgSpeedInfoService {
      * @param obj
      * @return
      */
-    private List<PowerPointData> csvParse(Powerfittinganalysis obj){
+    private List<PowerPointData> csvParse(ProEconPowerFittingAnalySis obj){
         List<PowerPointData> list = new ArrayList<>();
         val content = FileUtil.readFile(obj.getPath(), true);
         for (int i = 1; i < content.size(); i++){

+ 90 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/custom/windresource/BladeService.java

@@ -0,0 +1,90 @@
+package com.gyee.power.fitting.service.custom.windresource;
+
+import com.gyee.power.fitting.common.util.FileUtil;
+import com.gyee.power.fitting.model.ProEconPowerFittingAnalySis;
+import com.gyee.power.fitting.model.custom.PowerPointData;
+import com.gyee.power.fitting.service.ProEconPowerFittingAnalySisService;
+import lombok.val;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
+@Service
+public class BladeService {
+
+
+    @Resource
+    private ProEconPowerFittingAnalySisService powerService;
+
+
+    /**
+     * 3个叶片的角度
+     * 并网状态下开桨是否趋近于0度,停机状态下收桨是否趋近于90度
+     * @param ids
+     * @return
+     */
+    public Object bladeAngle(String ids){
+        TreeMap<String, Object> map = new TreeMap<>();
+        List<ProEconPowerFittingAnalySis> list = powerService.listByIds(Arrays.asList(ids.split(",")));
+        if (list.size() == 0) {
+            return map;
+        }
+
+        ProEconPowerFittingAnalySis obj = list.get(0);
+        List<Map<String, Object>> pbw = new ArrayList<>();
+        List<Map<String, Object>> ptj = new ArrayList<>();
+        List<PowerPointData> ls = csvParse(obj);
+        for (PowerPointData item : ls){
+            double v = (item.getYp1() + item.getYp2() + item.getYp3()) / 3;
+            double avg = new BigDecimal(v).setScale(2, RoundingMode.CEILING).doubleValue();
+            if (item.getFilter() == 0){
+                //风机正常并网且风速在5-12m
+                if (item.getMxzt() == 2 && item.getSpeed() >= 5 && item.getSpeed() <= 12 && avg < 20){
+                    Map<String, Object> mbw = new HashMap<>();
+                    mbw.put("time", item.getTime());
+                    mbw.put("value", avg);
+                    pbw.add(mbw);
+                }
+            }
+            //风机在不发电情况下
+            if (item.getFilter() == 2 && avg > 70){
+                Map<String, Object> mtj = new HashMap<>();
+                mtj.put("time", item.getTime());
+                mtj.put("value", new BigDecimal(90 - avg).setScale(2, RoundingMode.CEILING).doubleValue());
+                ptj.add(mtj);
+            }
+        }
+        map.put("bw", pbw);
+        map.put("tj", ptj);
+        map.put("wtId", obj.getWindturbineId());
+
+        return map;
+    }
+
+
+    /**
+     * csv 文件解析成对象
+     * @param obj
+     * @return
+     */
+    private List<PowerPointData> csvParse(ProEconPowerFittingAnalySis obj){
+        List<PowerPointData> list = null;
+        try {
+            list = new ArrayList<>();
+            val content = FileUtil.readFile(obj.getPath(), true);
+            for (int i = 1; i < content.size(); i++) {
+                String[] split = content.get(i).split(",");
+                PowerPointData data = new PowerPointData(split, true);
+                list.add(data);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return list;
+    }
+
+}

+ 6 - 4
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/custom/windresource/RatioService.java

@@ -4,9 +4,11 @@ package com.gyee.power.fitting.service.custom.windresource;
 import com.gyee.power.fitting.common.alg.WindDirectionALG;
 import com.gyee.power.fitting.common.util.FileUtil;
 import com.gyee.power.fitting.model.Powerfittinganalysis;
+import com.gyee.power.fitting.model.ProEconPowerFittingAnalySis;
 import com.gyee.power.fitting.model.custom.Point;
 import com.gyee.power.fitting.model.custom.PowerPointData;
 import com.gyee.power.fitting.service.PowerfittinganalysisService;
+import com.gyee.power.fitting.service.ProEconPowerFittingAnalySisService;
 import lombok.val;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -23,7 +25,7 @@ import java.util.Map;
 public class RatioService {
 
     @Autowired
-    private PowerfittinganalysisService powerService;
+    private ProEconPowerFittingAnalySisService powerService;
 
 
     /**
@@ -34,14 +36,14 @@ public class RatioService {
     public List<Object> windDeviationRatio(String ids, int mode){
         List<Object> list = new ArrayList<>();
 
-        List<Powerfittinganalysis> listObj = powerService.selectListByIds(ids);
+        List<ProEconPowerFittingAnalySis> listObj = powerService.selectListByIds(ids);
         if (mode == 0){
             listObj.forEach(obj -> {
                 List<PowerPointData> points = csvParse(obj);
                 int[] count = WindDirectionALG.windDeviationRatio(points);
                 List<Point> scatter = WindDirectionALG.windDeviationScatter(points);
                 Map<String, Object> map = new HashMap<>();
-                map.put("wtId", obj.getWindturbine());
+                map.put("wtId", obj.getWindturbineId());
                 map.put("count", count);
                 map.put("scatter", scatter);
                 list.add(map);
@@ -70,7 +72,7 @@ public class RatioService {
      * @param obj
      * @return
      */
-    private List<PowerPointData> csvParse(Powerfittinganalysis obj){
+    private List<PowerPointData> csvParse(ProEconPowerFittingAnalySis obj){
         List<PowerPointData> list = new ArrayList<>();
         val content = FileUtil.readFile(obj.getPath(), true);
         for (int i = 1; i < content.size(); i++){

+ 14 - 14
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/custom/windresource/WindDirectionService.java

@@ -1,11 +1,10 @@
 package com.gyee.power.fitting.service.custom.windresource;
 
-import com.gyee.power.fitting.common.alg.PowerFittingALG;
 import com.gyee.power.fitting.common.alg.WindDirectionALG;
 import com.gyee.power.fitting.common.util.FileUtil;
-import com.gyee.power.fitting.model.Powerfittinganalysis;
+import com.gyee.power.fitting.model.ProEconPowerFittingAnalySis;
 import com.gyee.power.fitting.model.custom.PowerPointData;
-import com.gyee.power.fitting.service.PowerfittinganalysisService;
+import com.gyee.power.fitting.service.ProEconPowerFittingAnalySisService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -19,7 +18,8 @@ import java.util.Map;
 public class WindDirectionService {
 
     @Autowired
-    private PowerfittinganalysisService powerService;
+    private ProEconPowerFittingAnalySisService powerService;
+
 
 
     /**
@@ -29,16 +29,16 @@ public class WindDirectionService {
      * @return
      */
     public Object fxRoses(String ids, int mode){
-        List<Powerfittinganalysis> list = powerService.selectListByIds(ids);
+        List<ProEconPowerFittingAnalySis> list = powerService.selectListByIds(ids);
         if (list == null || list.size() == 0)
             return null;
 
         List<Object> result = new ArrayList<>();
         if (mode == 0){
-            for (Powerfittinganalysis obj : list){
+            for (ProEconPowerFittingAnalySis obj : list){
                 Map<String, Object> map = new HashMap<>();
                 List<PowerPointData> ls = csvParse(obj);
-                map.put("wt", obj.getWindturbine());
+                map.put("wt", obj.getWindturbineId());
                 map.put("roses", WindDirectionALG.fxRoses(ls));
                 map.put("count", WindDirectionALG.fxCountRoses(ls));
                 map.put("radar", WindDirectionALG.fxRadarRoses(ls));
@@ -48,7 +48,7 @@ public class WindDirectionService {
         }
         if (mode == 1){
             List<PowerPointData> ls = new ArrayList<>();
-            for (Powerfittinganalysis obj : list)
+            for (ProEconPowerFittingAnalySis obj : list)
                 ls.addAll(csvParse(obj));
             Map<String, Object> map = new HashMap<>();
             map.put("wt", "merge");
@@ -70,24 +70,24 @@ public class WindDirectionService {
      * @return
      */
     public Object fxCountRoses(String ids, int mode){
-        List<Powerfittinganalysis> list = powerService.selectListByIds(ids);
+        List<ProEconPowerFittingAnalySis> list = powerService.selectListByIds(ids);
         if (list == null || list.size() == 0)
             return null;
 
         List<Object> result = new ArrayList<>();
         if (mode == 0){
-            for (Powerfittinganalysis obj : list){
+            for (ProEconPowerFittingAnalySis obj : list){
                 Map<String, Object> map = new HashMap<>();
                 List<PowerPointData> ls = csvParse(obj);
                 int[][] ints = WindDirectionALG.fxCountRoses(ls);
-                map.put("wt", obj.getWindturbine());
+                map.put("wt", obj.getWindturbineId());
                 map.put("data", ints);
                 result.add(map);
             }
         }
         if (mode == 1){
             List<PowerPointData> ls = new ArrayList<>();
-            for (Powerfittinganalysis obj : list)
+            for (ProEconPowerFittingAnalySis obj : list)
                 ls.addAll(csvParse(obj));
 
             Map<String, Object> map = new HashMap<>();
@@ -106,7 +106,7 @@ public class WindDirectionService {
      * @param obj
      * @return
      */
-    private List<PowerPointData> csvParse(Powerfittinganalysis obj){
+    private List<PowerPointData> csvParse(ProEconPowerFittingAnalySis obj){
         List<PowerPointData> ls = new ArrayList<>();
         List<String> content = FileUtil.readFile(obj.getPath(), true);
         for (int i = 1; i < content.size(); i++){
@@ -114,7 +114,7 @@ public class WindDirectionService {
             PowerPointData data = new PowerPointData(split, true);
             if (data.getSpeed() < 0 || data.getPower() < 0)
                 continue;
-            data.setWtId(obj.getWindturbine());
+            data.setWtId(obj.getWindturbineId());
             ls.add(data);
         }
         return ls;