Explorar el Código

发电量计算点

malijun hace 2 años
padre
commit
d483101c33

+ 90 - 0
electricity/meter/logs/warn.log

@@ -142,3 +142,93 @@
 2023-05-12 13:34:10.114  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
 2023-05-12 13:34:10.115  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
 2023-05-12 13:34:10.115  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:26:52.762  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:26:52.772  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:26:52.781  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:26:52.789  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:27:05.079  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:27:15.905  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:27:15.905  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:27:15.906  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:27:15.906  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:29:43.756  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:29:43.764  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:29:43.772  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:29:43.780  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:29:55.343  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:29:57.038  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:29:57.038  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:29:57.038  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:29:57.039  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:30:54.173  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:30:54.181  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:30:54.188  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:30:54.197  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:31:06.083  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:31:09.716  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:31:09.716  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:31:09.717  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:31:09.718  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:34:18.097  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:34:18.105  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:34:18.113  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:34:18.121  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:34:31.891  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:34:33.914  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:34:33.915  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:34:33.915  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:34:33.917  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:36:09.945  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:36:09.957  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:36:09.964  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:36:09.973  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:36:21.362  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:36:23.132  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:36:23.132  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:36:23.132  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:36:23.134  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:42:53.437  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:42:53.446  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:42:53.455  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:42:53.463  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:43:04.516  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:43:16.328  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:43:16.328  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:43:16.328  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:43:16.329  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:43:44.074  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:43:44.082  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:43:44.091  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:43:44.099  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:43:55.223  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:44:06.128  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:44:06.129  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:44:06.129  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:44:06.130  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:44:32.458  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:44:32.466  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:44:32.473  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:44:32.480  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:44:43.649  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:44:54.292  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:44:54.293  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:44:54.293  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:44:54.294  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:45:15.820  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:45:15.830  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:45:15.837  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:45:15.844  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:45:27.067  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:45:38.273  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:45:38.273  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:45:38.274  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end
+2023-05-12 17:45:38.274  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:58:19.757  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[application-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:58:19.767  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter] & group[DEFAULT_GROUP]
+2023-05-12 17:58:19.775  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:58:19.781  WARN main loadNacosData(NacosPropertySourceBuilder.java:87) Ignore the empty nacos configuration and get it based on dataId[meter-dev.yml] & group[DEFAULT_GROUP]
+2023-05-12 17:58:31.253  WARN main initEmbedServer(XxlJobExecutor.java:152) >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
+2023-05-12 17:58:42.960  WARN Thread-6 shutdown(NotifyCenter.java:136) [NotifyCenter] Start destroying Publisher
+2023-05-12 17:58:42.960  WARN Thread-6 shutdown(NotifyCenter.java:153) [NotifyCenter] Destruction of the end
+2023-05-12 17:58:42.960  WARN Thread-2 shutdown(HttpClientBeanHolder.java:108) [HttpClientBeanHolder] Start destroying common HttpClient
+2023-05-12 17:58:42.962  WARN Thread-2 shutdown(HttpClientBeanHolder.java:114) [HttpClientBeanHolder] Destruction of the end

+ 23 - 11
electricity/meter/src/main/java/com/gyee/gaia/meter/service/SaveMeterInfoCalculatingTest.java

@@ -74,6 +74,8 @@ public class SaveMeterInfoCalculatingTest {
         System.out.println("有公式数量" + meterPointJSDList.size());
 
         for (MeterPoint meterPoint : meterPointJSDList) {
+            System.out.println("测点名:"+meterPoint.getName());
+            System.out.println("测点公式:"+meterPoint.getFormula());
 
             //得到公式字符串(.已经替换为_)
             String formula2 = meterPoint.getFormula2();
@@ -86,7 +88,7 @@ public class SaveMeterInfoCalculatingTest {
             meterPointCodes = Arrays.stream(meterPointCodes)
                     .filter(meterPointCode -> !(meterPointCode.length() < 10))
                     .toArray(String[]::new);
-            System.out.println("数组长度" + meterPointCodes.length);
+            System.out.println("公式中测点数:" + meterPointCodes.length);
             System.out.println(Arrays.toString(meterPointCodes));
 
             HashMap<String, Object> map = new HashMap<>();
@@ -96,23 +98,32 @@ public class SaveMeterInfoCalculatingTest {
                 //开始时间
                 DateTime dateTime1 = DateUtil.offsetSecond(DateUtil.offsetDay(startDateTime, i), 1);
 
+                System.out.println("遍历测点集合");
+
                 //遍历code数据,拿到每一个code,用code和时间,在meter_info_bottom中拿到dayValue
                 for (String meterPointCode : meterPointCodes) {
                     String meterPointCode_ = meterPointCode.replaceAll("\\.", "_");
-                    System.out.println("meterPointCode:" + meterPointCode);
+                    System.out.println("meterPointCode测点:" );
 
                     //查询code所在场站
 
-
                     //如果字符串以DL开头,从meter_info_calclating表中取,否则从meter_info_bottom表中取
-
-                    if (meterPointCode.startsWith("DL")) {
-                        MeterInfoCalculating meterInfoCalculating = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", meterPointCode).eq("DATE", dateTime1));
-                        map.put(meterPointCode_, meterInfoCalculating.getValue());
-                    }else {
-                        MeterInfoBottomcode meterInfoBottomcode = meterInfoBottomcodeService.getOne(new QueryWrapper<MeterInfoBottomcode>().eq("code", meterPointCode).eq("start_time", dateTime1));
-                        map.put(meterPointCode_, meterInfoBottomcode.getDayValue());
+                    try {
+                        if (meterPointCode.startsWith("DL")) {
+                            System.out.println("计算测点DL:"+meterPointCode);
+                            MeterInfoCalculating meterInfoCalculating = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", meterPointCode).eq("DATE", dateTime1));
+                            System.out.println("测点数据:"+meterInfoCalculating.getValue());
+                            map.put(meterPointCode_, meterInfoCalculating.getValue());
+                        }else {
+                            System.out.println("计算测点Bottom:"+meterPointCode);
+                            MeterInfoBottomcode meterInfoBottomcode = meterInfoBottomcodeService.getOne(new QueryWrapper<MeterInfoBottomcode>().eq("code", meterPointCode).eq("start_time", dateTime1));
+                            System.out.println("测点数据日电量:"+meterInfoBottomcode.getDayValue());
+                            map.put(meterPointCode_, meterInfoBottomcode.getDayValue());
+                        }
+                    }catch (Exception e) {
+                        System.out.println("获取数据异常  :"+e.getMessage());
                     }
+
                 }
 
                 try {
@@ -133,7 +144,8 @@ public class SaveMeterInfoCalculatingTest {
                         meterInfoCalculating.insert();
                     }
                 } catch (Exception e) {
-                    System.out.println(e.getMessage());
+
+                    System.out.println("存入异常   :"+e.getMessage());
                 }
 
 

+ 159 - 61
electricity/meter/src/main/java/com/gyee/gaia/meter/service/SaveMeterInfoHistoryTest.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.gyee.gaia.meter.adapter.Adapter;
 import com.gyee.gaia.meter.entity.*;
 import com.gyee.gaia.meter.service.impl.*;
+import com.gyee.gaia.meter.util.ScriptShell;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -16,6 +18,8 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -224,8 +228,10 @@ class SaveMeterInfoHistoryTest {
         }
     }
 
+    //项目期期风机总发电量
     @Test
-    void saveCalculating() {
+    void saveCalculatingProjectFDL() {
+
 
         //设置取值开始时间
         String startString = startTimeString;
@@ -239,57 +245,150 @@ class SaveMeterInfoHistoryTest {
         LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
         LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
         long between = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差天数" + between);
 
 
-        List<MeterPoint> meterPointList = meterPointService.list(new QueryWrapper<MeterPoint>().eq("property", "JSD").eq("meter_type", "集电线路发电量").ne("meter_class", "总"));
+        //1,所有期次发电量测点
+        List<MeterPoint> meterPointList = meterPointService.list(new QueryWrapper<MeterPoint>().eq("property", "JSD_QCFDL"));
         System.out.println(meterPointList.size());
-        //遍历所有集电线路发电量计算点
-        for (MeterPoint meterPoint : meterPointList) {
 
-            List<MeterPoint> meterPointJDXLCD = meterPointService.list(new QueryWrapper<MeterPoint>().eq("windpowerstation_id", meterPoint.getWindpowerstationId()).eq("meter_class", "集电线路" + meterPoint.getMeterClass()));
-            System.out.println(meterPoint.getWindpowerstationId());
-            System.out.println("meterPointJDXLCD          " + meterPointJDXLCD.size());
+        //遍历期次发电量测点,拿到场站id,
+        for (MeterPoint meterPoint : meterPointList) {
+            String projectId = meterPoint.getProjectId();
 
             for (int i = 0; i <= between; i++) {
                 //开始时间00:00:01
                 DateTime dateTime1 = DateUtil.offsetSecond(DateUtil.offsetDay(startDateTime, i), 1);
+                //结束时间第二天00:00:01
+                DateTime dateTime2 = DateUtil.offsetSecond(DateUtil.offsetDay(startDateTime, i + 1), 1);
 
-                List<MeterInfoBottomcode> meterInfoBottomcodeList = null;
-                if (meterPointJDXLCD.size() == 2) {
-                    meterInfoBottomcodeList = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>().eq("start_time", dateTime1).in("code", meterPointJDXLCD.get(0).getNemCode(), meterPointJDXLCD.get(1).getNemCode()));
-                } else if (meterPointJDXLCD.size() == 1) {
-                    meterInfoBottomcodeList = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>().eq("start_time", dateTime1).in("code", meterPointJDXLCD.get(0).getNemCode()));
-                }
-                meterInfoBottomcodeList = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>().eq("start_time", dateTime1).in("code", meterPointJDXLCD.get(0).getNemCode(), meterPointJDXLCD.get(1).getNemCode(), meterPointJDXLCD.get(2).getNemCode()));
-                BigDecimal bigDecimal1 = BigDecimal.valueOf(0);
-                for (MeterInfoBottomcode meterInfoBottomcode : meterInfoBottomcodeList) {
-                    bigDecimal1 = bigDecimal1.add(meterInfoBottomcode.getDayValue());
+                List<MeterInfoEquipment> meterInfoEquipments = meterInfoEquipmentService.list(new QueryWrapper<MeterInfoEquipment>().eq("project_nem_code", projectId).eq("date", dateTime1));
+                BigDecimal bigDecimal = BigDecimal.valueOf(0);
+                for (MeterInfoEquipment meterInfoEquipment : meterInfoEquipments) {
+                    bigDecimal = bigDecimal.add(meterInfoEquipment.getRfdl());
                 }
-                MeterInfoCalculating meterInfoCalculating = new MeterInfoCalculating();
-                meterInfoCalculating.setName(meterPoint.getName());
-                meterInfoCalculating.setCode(meterPoint.getNemCode());
-                meterInfoCalculating.setDate(dateTime1.toLocalDateTime());
-                meterInfoCalculating.setValue(bigDecimal1.divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_EVEN));
-                meterInfoCalculating.setWindpowerstationId(meterPoint.getWindpowerstationId());
 
-                QueryWrapper<MeterInfoCalculating> queryWrapper = new QueryWrapper<>();
-                queryWrapper.eq("date", dateTime1.toLocalDateTime()).eq("code", meterPoint.getNemCode());
-                List<MeterInfoCalculating> list = meterInfoCalculatingService.list(queryWrapper);
+                MeterInfoBottomcode meterInfoBottomcode = new MeterInfoBottomcode();
+                meterInfoBottomcode.setName(meterPoint.getName());
+                meterInfoBottomcode.setStartTime(dateTime1.toLocalDateTime());
+                meterInfoBottomcode.setEndTime(dateTime2.toLocalDateTime());
+                meterInfoBottomcode.setDayValue(bigDecimal.divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_EVEN));
+                meterInfoBottomcode.setCode(meterPoint.getNemCode());
+                meterInfoBottomcode.setWindpowerstationId(meterPoint.getWindpowerstationId());
+
+                QueryWrapper<MeterInfoBottomcode> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("start_time", dateTime1.toLocalDateTime()).eq("code", meterPoint.getNemCode());
+                List<MeterInfoBottomcode> list = meterInfoBottomcodeService.list(queryWrapper);
+                System.out.println(list.size());
                 if (list.size() > 0) {
-                    meterInfoCalculating.update(queryWrapper);
+                    meterInfoBottomcode.update(queryWrapper);
                 } else {
-                    meterInfoCalculating.insert();
+                    meterInfoBottomcode.insert();
                 }
+
+
             }
+
+
         }
 
-    }
 
+    }
 
-    //项目期期风机总发电量
+    //用公式计算
     @Test
-    void saveCalculatingProjectFDL() {
+    void saveCalculating() {
 
+        //设置取值开始时间
+        String startString = startTimeString;
+        DateTime startDateTime = DateUtil.parse(startString);
+
+        //设置取值结束时间
+        String endDateString = endTimeString;
+        DateTime endDateTime = DateUtil.parse(endDateString);
+
+        //指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.DAYS.between(day1, day2);
+
+        List<MeterPoint> meterPointJSDList = meterPointService.list(new QueryWrapper<MeterPoint>().eq("property", "JSD").ne("formula", ""));
+        System.out.println("有公式数量" + meterPointJSDList.size());
+
+        for (MeterPoint meterPoint : meterPointJSDList) {
+
+            //得到公式字符串(.已经替换为_)
+            String formula2 = meterPoint.getFormula2();
+
+            String formula1 = meterPoint.getFormula();
+            //分割公式字符串,得到每一的个ode
+//            String[] meterPointCodes = formula2.split("[+\\-*/]");
+
+            String[] meterPointCodes = StringUtils.split(formula1, "[+\\-*/()]");
+            meterPointCodes = Arrays.stream(meterPointCodes)
+                    .filter(meterPointCode -> !(meterPointCode.length() < 10))
+                    .toArray(String[]::new);
+            System.out.println("数组长度" + meterPointCodes.length);
+            System.out.println(Arrays.toString(meterPointCodes));
+
+            HashMap<String, Object> map = new HashMap<>();
+
+            for (int i = 0; i <= between; i++) {
+
+                //开始时间
+                DateTime dateTime1 = DateUtil.offsetSecond(DateUtil.offsetDay(startDateTime, i), 1);
+
+                //遍历code数据,拿到每一个code,用code和时间,在meter_info_bottom中拿到dayValue
+                for (String meterPointCode : meterPointCodes) {
+                    String meterPointCode_ = meterPointCode.replaceAll("\\.", "_");
+                    System.out.println("meterPointCode:" + meterPointCode);
+
+                    //查询code所在场站
+
+
+                    //如果字符串以DL开头,从meter_info_calclating表中取,否则从meter_info_bottom表中取
+
+                    if (meterPointCode.startsWith("DL")) {
+                        MeterInfoCalculating meterInfoCalculating = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", meterPointCode).eq("DATE", dateTime1));
+                        map.put(meterPointCode_, meterInfoCalculating.getValue());
+                    }else {
+                        MeterInfoBottomcode meterInfoBottomcode = meterInfoBottomcodeService.getOne(new QueryWrapper<MeterInfoBottomcode>().eq("code", meterPointCode).eq("start_time", dateTime1));
+                        map.put(meterPointCode_, meterInfoBottomcode.getDayValue());
+                    }
+                }
+
+                try {
+                    BigDecimal bigDecimal1 = (BigDecimal) ScriptShell.parseExpr(formula2, map);
+                    System.out.println(bigDecimal1);
+                    MeterInfoCalculating meterInfoCalculating = new MeterInfoCalculating();
+                    meterInfoCalculating.setName(meterPoint.getName());
+                    meterInfoCalculating.setCode(meterPoint.getNemCode());
+                    meterInfoCalculating.setDate(dateTime1.toLocalDateTime());
+                    meterInfoCalculating.setValue(bigDecimal1);
+                    meterInfoCalculating.setWindpowerstationId(meterPoint.getWindpowerstationId());
+                    QueryWrapper<MeterInfoCalculating> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("date", dateTime1.toLocalDateTime()).eq("code", meterPoint.getNemCode());
+                    List<MeterInfoCalculating> list = meterInfoCalculatingService.list(queryWrapper);
+                    if (list.size() > 0) {
+                        meterInfoCalculating.update(queryWrapper);
+                    } else {
+                        meterInfoCalculating.insert();
+                    }
+                } catch (Exception e) {
+                    System.out.println(e.getMessage());
+                }
+
+
+            }
+        }
+
+
+    }
+
+
+    //这个不用公式计算,不用了
+    @Test
+    void saveCalculating1() {
 
         //设置取值开始时间
         String startString = startTimeString;
@@ -303,55 +402,54 @@ class SaveMeterInfoHistoryTest {
         LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
         LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
         long between = ChronoUnit.DAYS.between(day1, day2);
-        System.out.println("相差天数" + between);
 
 
-        //1,所有期次发电量测点
-        List<MeterPoint> meterPointList = meterPointService.list(new QueryWrapper<MeterPoint>().eq("property", "JSD_QCFDL"));
+        List<MeterPoint> meterPointList = meterPointService.list(new QueryWrapper<MeterPoint>().eq("property", "JSD").eq("meter_type", "集电线路发电量").ne("meter_class", "总"));
         System.out.println(meterPointList.size());
-
-        //遍历期次发电量测点,拿到场站id,
+        //遍历所有集电线路发电量计算点
         for (MeterPoint meterPoint : meterPointList) {
-            String projectId = meterPoint.getProjectId();
+
+            List<MeterPoint> meterPointJDXLCD = meterPointService.list(new QueryWrapper<MeterPoint>().eq("windpowerstation_id", meterPoint.getWindpowerstationId()).eq("meter_class", "集电线路" + meterPoint.getMeterClass()));
+            System.out.println(meterPoint.getWindpowerstationId());
+            System.out.println("meterPointJDXLCD          " + meterPointJDXLCD.size());
 
             for (int i = 0; i <= between; i++) {
                 //开始时间00:00:01
                 DateTime dateTime1 = DateUtil.offsetSecond(DateUtil.offsetDay(startDateTime, i), 1);
-                //结束时间第二天00:00:01
-                DateTime dateTime2 = DateUtil.offsetSecond(DateUtil.offsetDay(startDateTime, i + 1), 1);
 
-                List<MeterInfoEquipment> meterInfoEquipments = meterInfoEquipmentService.list(new QueryWrapper<MeterInfoEquipment>().eq("project_nem_code", projectId).eq("date", dateTime1));
-                BigDecimal bigDecimal = BigDecimal.valueOf(0);
-                for (MeterInfoEquipment meterInfoEquipment : meterInfoEquipments) {
-                    bigDecimal = bigDecimal.add(meterInfoEquipment.getRfdl());
+                List<MeterInfoBottomcode> meterInfoBottomcodeList = null;
+                if (meterPointJDXLCD.size() == 2) {
+                    meterInfoBottomcodeList = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>().eq("start_time", dateTime1).in("code", meterPointJDXLCD.get(0).getNemCode(), meterPointJDXLCD.get(1).getNemCode()));
+                } else if (meterPointJDXLCD.size() == 1) {
+                    meterInfoBottomcodeList = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>().eq("start_time", dateTime1).in("code", meterPointJDXLCD.get(0).getNemCode()));
                 }
+                meterInfoBottomcodeList = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>().eq("start_time", dateTime1).in("code", meterPointJDXLCD.get(0).getNemCode(), meterPointJDXLCD.get(1).getNemCode(), meterPointJDXLCD.get(2).getNemCode()));
+                BigDecimal bigDecimal1 = BigDecimal.valueOf(0);
+                for (MeterInfoBottomcode meterInfoBottomcode : meterInfoBottomcodeList) {
+                    bigDecimal1 = bigDecimal1.add(meterInfoBottomcode.getDayValue());
+                }
+                MeterInfoCalculating meterInfoCalculating = new MeterInfoCalculating();
+                meterInfoCalculating.setName(meterPoint.getName());
+                meterInfoCalculating.setCode(meterPoint.getNemCode());
+                meterInfoCalculating.setDate(dateTime1.toLocalDateTime());
+                meterInfoCalculating.setValue(bigDecimal1.divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_EVEN));
+                meterInfoCalculating.setWindpowerstationId(meterPoint.getWindpowerstationId());
 
-                MeterInfoBottomcode meterInfoBottomcode = new MeterInfoBottomcode();
-                meterInfoBottomcode.setName(meterPoint.getName());
-                meterInfoBottomcode.setStartTime(dateTime1.toLocalDateTime());
-                meterInfoBottomcode.setEndTime(dateTime2.toLocalDateTime());
-                meterInfoBottomcode.setDayValue(bigDecimal.divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_EVEN));
-                meterInfoBottomcode.setCode(meterPoint.getNemCode());
-                meterInfoBottomcode.setWindpowerstationId(meterPoint.getWindpowerstationId());
-
-                QueryWrapper<MeterInfoBottomcode> queryWrapper = new QueryWrapper<>();
-                queryWrapper.eq("start_time", dateTime1.toLocalDateTime()).eq("code", meterPoint.getNemCode());
-                List<MeterInfoBottomcode> list = meterInfoBottomcodeService.list(queryWrapper);
-                System.out.println(list.size());
+                QueryWrapper<MeterInfoCalculating> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("date", dateTime1.toLocalDateTime()).eq("code", meterPoint.getNemCode());
+                List<MeterInfoCalculating> list = meterInfoCalculatingService.list(queryWrapper);
                 if (list.size() > 0) {
-                    meterInfoBottomcode.update(queryWrapper);
+                    meterInfoCalculating.update(queryWrapper);
                 } else {
-                    meterInfoBottomcode.insert();
+                    meterInfoCalculating.insert();
                 }
-
-
             }
+        }
 
+    }
 
-        }
 
 
-    }
 
 }