|
@@ -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());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|