|
@@ -0,0 +1,168 @@
|
|
|
+package com.gyee.gaia.meter.service.meterinfo;
|
|
|
+
|
|
|
+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.MeterInfoCalculating;
|
|
|
+import com.gyee.gaia.meter.entity.MeterPoint;
|
|
|
+import com.gyee.gaia.meter.entity.Project;
|
|
|
+import com.gyee.gaia.meter.entity.vo.MeterInfoVO;
|
|
|
+import com.gyee.gaia.meter.service.impl.MeterInfoCalculatingServiceImpl;
|
|
|
+import com.gyee.gaia.meter.service.impl.MeterPointServiceImpl;
|
|
|
+import com.gyee.gaia.meter.service.impl.ProjectServiceImpl;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Author: malijun
|
|
|
+ * Data : 2023: 05: 22
|
|
|
+ **/
|
|
|
+
|
|
|
+@Service
|
|
|
+public class GetProjectInfoById {
|
|
|
+ @Resource
|
|
|
+ MeterInfoCalculatingServiceImpl meterInfoCalculatingService;
|
|
|
+ @Resource
|
|
|
+ ProjectServiceImpl projectService;
|
|
|
+ @Resource
|
|
|
+ MeterPointServiceImpl meterPointService;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public List<MeterInfoVO> getMeterInfoFDC_Day(String id) {
|
|
|
+ //根据id传过来的旧code,拿到新nem_code
|
|
|
+ Project oneProject = projectService.getOne(new QueryWrapper<Project>().eq("code", id));
|
|
|
+ String nemCode = oneProject.getNemCode();
|
|
|
+
|
|
|
+ //当前时间
|
|
|
+ DateTime now = DateTime.now();
|
|
|
+ //当月开始时间
|
|
|
+ DateTime beginOfMonth = DateUtil.beginOfMonth(now);
|
|
|
+ //当月第几天
|
|
|
+ int days = DateUtil.dayOfMonth(now);
|
|
|
+
|
|
|
+ //meter中拿到期次发电量code,上网电量code,购网电量code
|
|
|
+ MeterPoint oneMeterPointFDL = meterPointService.getOne(new QueryWrapper<MeterPoint>().eq("project_id", nemCode).eq("meter_type", "集电线路发电量"));
|
|
|
+ MeterPoint oneMeterPointSWDL = meterPointService.getOne(new QueryWrapper<MeterPoint>().eq("project_id", nemCode).eq("meter_type", "上网电量"));
|
|
|
+ MeterPoint oneMeterPointGWDL = meterPointService.getOne(new QueryWrapper<MeterPoint>().eq("project_id", nemCode).eq("meter_type", "购网电量"));
|
|
|
+
|
|
|
+ //创建一个MeterInfoVO的list集合
|
|
|
+ List<MeterInfoVO> list = new ArrayList<>();
|
|
|
+
|
|
|
+ //循环遍历每一天,取每天的数据
|
|
|
+ for (int i = 1; i <= days; i++) {
|
|
|
+ //开始时间
|
|
|
+ DateTime dateTime1 = DateUtil.offsetDay(beginOfMonth, i - 1);
|
|
|
+
|
|
|
+ //初始化
|
|
|
+ BigDecimal rfdl = BigDecimal.valueOf(0);
|
|
|
+ BigDecimal rswdl = BigDecimal.valueOf(0);
|
|
|
+ BigDecimal rgwdl = BigDecimal.valueOf(0);
|
|
|
+ BigDecimal speed = BigDecimal.valueOf(0);
|
|
|
+
|
|
|
+ //根据时间和code查询获取到期次日发电量,日上网电量,日购网电量
|
|
|
+ if (null != oneMeterPointFDL) {
|
|
|
+ MeterInfoCalculating oneFDL = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", oneMeterPointFDL.getNemCode()).eq("date", dateTime1));
|
|
|
+ if (oneFDL != null) {
|
|
|
+ rfdl = oneFDL.getValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (null != oneMeterPointSWDL) {
|
|
|
+ MeterInfoCalculating oneSWDL = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", oneMeterPointSWDL.getNemCode()).eq("date", dateTime1));
|
|
|
+ if (oneSWDL != null) {
|
|
|
+ rswdl = oneSWDL.getValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (null != oneMeterPointGWDL) {
|
|
|
+ MeterInfoCalculating oneGWDL = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", oneMeterPointGWDL.getNemCode()).eq("date", dateTime1));
|
|
|
+ if (oneGWDL != null) {
|
|
|
+ rgwdl = oneGWDL.getValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //VO对象属性赋值
|
|
|
+ MeterInfoVO meterInfoVO = new MeterInfoVO();
|
|
|
+ meterInfoVO.setTimestr(String.valueOf(i));
|
|
|
+ meterInfoVO.setDate(dateTime1);
|
|
|
+ meterInfoVO.setValue1(rfdl);
|
|
|
+ meterInfoVO.setValue2(rswdl);
|
|
|
+ meterInfoVO.setValue3(rgwdl.divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_EVEN));
|
|
|
+ meterInfoVO.setSpeed(speed);
|
|
|
+
|
|
|
+ //添加入集合
|
|
|
+ list.add(meterInfoVO);
|
|
|
+
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public MeterInfoVO getMeterInfoFDCFDL_DayMonthYear(String id) {
|
|
|
+
|
|
|
+ Project oneProject = projectService.getOne(new QueryWrapper<Project>().eq("code", id));
|
|
|
+ String nemCode = oneProject.getNemCode();
|
|
|
+
|
|
|
+ //当前时间
|
|
|
+ DateTime now = DateTime.now();
|
|
|
+ //当天开始时间
|
|
|
+ DateTime beginOfDay = DateUtil.beginOfDay(now);
|
|
|
+ //当月开始时间
|
|
|
+ DateTime beginOfMonth = DateUtil.beginOfMonth(now);
|
|
|
+ //当年开始时间
|
|
|
+ DateTime beginOfYear = DateUtil.beginOfYear(now);
|
|
|
+
|
|
|
+ //根据code和特定属性从meterPoint表中拿到,日发电量code,月发电量code,年发电量code,日上网电量code
|
|
|
+ MeterPoint oneMeterPointFDL = meterPointService.getOne(new QueryWrapper<MeterPoint>().eq("project_id", nemCode).eq("meter_type", "集电线路发电量"));
|
|
|
+ MeterPoint oneMeterPointFDLMonth = meterPointService.getOne(new QueryWrapper<MeterPoint>().eq("project_id", nemCode).eq("property", "JSD_PROJECTFDL_MONTH"));
|
|
|
+ MeterPoint oneMeterPointFDLYear = meterPointService.getOne(new QueryWrapper<MeterPoint>().eq("project_id", nemCode).eq("property", "JSD_PROJECTFDL_YEAR"));
|
|
|
+ MeterPoint oneMeterPointSWDL = meterPointService.getOne(new QueryWrapper<MeterPoint>().eq("project_id", nemCode).eq("meter_type", "上网电量"));
|
|
|
+
|
|
|
+ //根据时间和code查询获取到期次的日发电量,日上网电量,月发电量,年发电量
|
|
|
+ MeterInfoCalculating dayFDL = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", oneMeterPointFDL.getNemCode()).eq("date", beginOfDay));
|
|
|
+ MeterInfoCalculating monthFDL = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", oneMeterPointFDLMonth.getNemCode()).eq("date", beginOfMonth));
|
|
|
+ MeterInfoCalculating yearFDL = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", oneMeterPointFDLYear.getNemCode()).eq("date", beginOfYear));
|
|
|
+ MeterInfoCalculating oneSWDL = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", oneMeterPointSWDL.getNemCode()).eq("date", beginOfDay));
|
|
|
+
|
|
|
+ //装机容量
|
|
|
+ List<Project> windCapacity = projectService.list(new QueryWrapper<Project>().eq("nem_code", nemCode));
|
|
|
+ BigDecimal zjrl = BigDecimal.valueOf(0);
|
|
|
+ if (null != windCapacity) {
|
|
|
+ for (Project project : windCapacity) {
|
|
|
+ zjrl = zjrl.add(project.getCapacity());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal rfdl = BigDecimal.valueOf(0);
|
|
|
+ BigDecimal yfdl = BigDecimal.valueOf(0);
|
|
|
+ BigDecimal nfdl = BigDecimal.valueOf(0);
|
|
|
+ BigDecimal rswdl = BigDecimal.valueOf(0);
|
|
|
+
|
|
|
+ if (dayFDL != null) {
|
|
|
+ rfdl = dayFDL.getValue();
|
|
|
+ }
|
|
|
+ if (monthFDL != null) {
|
|
|
+ yfdl = monthFDL.getValue();
|
|
|
+ }
|
|
|
+ if (yearFDL != null) {
|
|
|
+ nfdl = yearFDL.getValue();
|
|
|
+ }
|
|
|
+ if (oneSWDL != null) {
|
|
|
+ rswdl = oneSWDL.getValue();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ MeterInfoVO meterInfoVO = new MeterInfoVO();
|
|
|
+ meterInfoVO.setDayFDL(rfdl);
|
|
|
+ meterInfoVO.setMonthFDL(yfdl);
|
|
|
+ meterInfoVO.setYearFDL(nfdl);
|
|
|
+ meterInfoVO.setValue2(rswdl);
|
|
|
+ meterInfoVO.setZjrl(zjrl.divide(BigDecimal.valueOf(10000), 2,RoundingMode.HALF_EVEN));
|
|
|
+ return meterInfoVO;
|
|
|
+
|
|
|
+ }
|
|
|
+}
|