Browse Source

计算点,10分钟数据保存

malijun 2 years ago
parent
commit
8424c47aa9

+ 133 - 0
electricity/meter/src/main/java/com/gyee/gaia/meter/job/SaveMeterInfoCalculating10Min.java

@@ -0,0 +1,133 @@
+package com.gyee.gaia.meter.job;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.gaia.meter.entity.MeterInfoBottomcode;
+import com.gyee.gaia.meter.entity.MeterInfoCalculating;
+import com.gyee.gaia.meter.entity.MeterJSCD;
+import com.gyee.gaia.meter.entity.MeterPoint;
+import com.gyee.gaia.meter.service.impl.MeterInfoBottomcodeServiceImpl;
+import com.gyee.gaia.meter.service.impl.MeterInfoCalculatingServiceImpl;
+import com.gyee.gaia.meter.service.impl.MeterPointServiceImpl;
+import com.gyee.gaia.meter.util.ScriptShell;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Author: malijun
+ * Data  : 2023: 05: 11
+ **/
+@Component
+public class SaveMeterInfoCalculating10Min {
+
+    @Resource
+    MeterPointServiceImpl meterPointService;
+    @Resource
+    MeterInfoBottomcodeServiceImpl meterInfoBottomcodeService;
+    @Resource
+    MeterInfoCalculatingServiceImpl meterInfoCalculatingService;
+
+    @Resource
+    MeterJSCD meterJSCD;
+
+    @XxlJob("SaveMeterInfoCalculating10Min")
+    void saveCalculating() {
+
+        //获取当前日期,当日开始时间
+        String nowString = DateUtil.now();
+        DateTime nowDateTime = DateUtil.parse(nowString);
+        DateTime startDateTime = DateUtil.beginOfDay(nowDateTime);
+
+        List<MeterPoint> meterPointJSDList = meterPointService.list(new QueryWrapper<MeterPoint>().eq("property", "JSD").ne("formula", ""));
+        System.out.println("有公式数量" + meterPointJSDList.size());
+
+        for (MeterPoint meterPoint : meterPointJSDList) {
+            System.out.println("测点名:" + meterPoint.getName());
+            System.out.println("测点公式:" + meterPoint.getFormula());
+
+            //得到公式字符串(.已经替换为_)
+            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<>();
+
+            //开始时间
+            DateTime dateTime1 = DateUtil.offsetSecond(startDateTime, 1);
+
+            System.out.println("遍历测点集合");
+
+            //遍历code数据,拿到每一个code,用code和时间,在meter_info_bottom中拿到dayValue
+            for (String meterPointCode : meterPointCodes) {
+                String meterPointCode_ = meterPointCode.replaceAll("\\.", "_");
+                System.out.println("meterPointCode测点:");
+
+                //查询code所在场站
+
+                //如果字符串以DL开头,从meter_info_calclating表中取,否则从meter_info_bottom表中取
+                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 {
+                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());
+            }
+
+
+        }
+
+
+    }
+}
+
+
+

+ 99 - 11
electricity/meter/src/main/java/com/gyee/gaia/meter/service/SaveMeterInfoCalculating10MinTest.java

@@ -1,45 +1,133 @@
 package com.gyee.gaia.meter.service;
 
-import com.gyee.gaia.meter.adapter.Adapter;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.gaia.meter.entity.MeterInfoBottomcode;
+import com.gyee.gaia.meter.entity.MeterInfoCalculating;
+import com.gyee.gaia.meter.entity.MeterJSCD;
+import com.gyee.gaia.meter.entity.MeterPoint;
 import com.gyee.gaia.meter.service.impl.MeterInfoBottomcodeServiceImpl;
+import com.gyee.gaia.meter.service.impl.MeterInfoCalculatingServiceImpl;
 import com.gyee.gaia.meter.service.impl.MeterPointServiceImpl;
-import com.gyee.gaia.meter.service.impl.PowerStationServiceImpl;
+import com.gyee.gaia.meter.util.ScriptShell;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * Author: malijun
- * Data  : 2023: 05: 09
+ * Data  : 2023: 05: 11
  **/
-
 @SpringBootTest
 public class SaveMeterInfoCalculating10MinTest {
 
-
-    @Resource
-    PowerStationServiceImpl powerStationService;
-
     @Resource
     MeterPointServiceImpl meterPointService;
-
     @Resource
     MeterInfoBottomcodeServiceImpl meterInfoBottomcodeService;
+    @Resource
+    MeterInfoCalculatingServiceImpl meterInfoCalculatingService;
 
     @Resource
-    Adapter adapter;
+    MeterJSCD meterJSCD;
 
     @Test
     void saveCalculating() {
 
+        //获取当前日期,当日开始时间
+        String nowString = DateUtil.now();
+        DateTime nowDateTime = DateUtil.parse(nowString);
+        DateTime startDateTime = DateUtil.beginOfDay(nowDateTime);
+
+        List<MeterPoint> meterPointJSDList = meterPointService.list(new QueryWrapper<MeterPoint>().eq("property", "JSD").ne("formula", ""));
+        System.out.println("有公式数量" + meterPointJSDList.size());
+
+        for (MeterPoint meterPoint : meterPointJSDList) {
+            System.out.println("测点名:" + meterPoint.getName());
+            System.out.println("测点公式:" + meterPoint.getFormula());
+
+            //得到公式字符串(.已经替换为_)
+            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<>();
+
+            //开始时间
+            DateTime dateTime1 = DateUtil.offsetSecond(startDateTime, 1);
+
+            System.out.println("遍历测点集合");
+
+            //遍历code数据,拿到每一个code,用code和时间,在meter_info_bottom中拿到dayValue
+            for (String meterPointCode : meterPointCodes) {
+                String meterPointCode_ = meterPointCode.replaceAll("\\.", "_");
+                System.out.println("meterPointCode测点:");
+
+                //查询code所在场站
+
+                //如果字符串以DL开头,从meter_info_calclating表中取,否则从meter_info_bottom表中取
+                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 {
+                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());
+            }
 
 
+        }
+
 
+    }
+}
 
 
 

+ 0 - 160
electricity/meter/src/main/java/com/gyee/gaia/meter/service/SaveMeterInfoCalculatingTest.java

@@ -1,160 +0,0 @@
-package com.gyee.gaia.meter.service;
-
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.LocalDateTimeUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.gyee.gaia.meter.adapter.Adapter;
-import com.gyee.gaia.meter.entity.MeterInfoBottomcode;
-import com.gyee.gaia.meter.entity.MeterInfoCalculating;
-import com.gyee.gaia.meter.entity.MeterJSCD;
-import com.gyee.gaia.meter.entity.MeterPoint;
-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;
-
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.time.temporal.ChronoUnit;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * Author: malijun
- * Data  : 2023: 05: 11
- **/
-@SpringBootTest
-public class SaveMeterInfoCalculatingTest {
-    @Resource
-    Adapter adapter;
-    @Resource
-    TestingPointServiceImpl testingPointService;
-    @Resource
-    EquipmentServiceImpl equipmentService;
-    @Resource
-    PowerStationServiceImpl powerStationService;
-    @Resource
-    MeterPointServiceImpl meterPointService;
-    @Resource
-    MeterInfoBottomcodeServiceImpl meterInfoBottomcodeService;
-    @Resource
-    MeterInfoEquipmentServiceImpl meterInfoEquipmentService;
-    @Resource
-    MeterInfoCalculatingServiceImpl meterInfoCalculatingService;
-    @Value("${start.time}")
-    private String startTimeString;
-    @Value("${end.time}")
-    private String endTimeString;
-
-    @Resource
-    MeterJSCD meterJSCD;
-
-    @Test
-    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) {
-            System.out.println("测点名:"+meterPoint.getName());
-            System.out.println("测点公式:"+meterPoint.getFormula());
-
-            //得到公式字符串(.已经替换为_)
-            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);
-
-                System.out.println("遍历测点集合");
-
-                //遍历code数据,拿到每一个code,用code和时间,在meter_info_bottom中拿到dayValue
-                for (String meterPointCode : meterPointCodes) {
-                    String meterPointCode_ = meterPointCode.replaceAll("\\.", "_");
-                    System.out.println("meterPointCode测点:" );
-
-                    //查询code所在场站
-
-                    //如果字符串以DL开头,从meter_info_calclating表中取,否则从meter_info_bottom表中取
-                    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 {
-                    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());
-                }
-
-
-            }
-        }
-
-
-    }
-}
-
-
-

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

@@ -349,7 +349,7 @@ class SaveMeterInfoHistoryTest {
                     //如果字符串以DL开头,从meter_info_calclating表中取,否则从meter_info_bottom表中取
 
                     if (meterPointCode.startsWith("DL")) {
-                        MeterInfoCalculating meterInfoCalculating = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", meterPointCode).eq("DATE", dateTime1));
+                        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));