diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateD.java
new file mode 100644
index 000000000..6cf02aec3
--- /dev/null
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateD.java
@@ -0,0 +1,40 @@
+package com.njcn.harmonic.pojo.po.dim;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import com.njcn.db.bo.BaseEntity;
+import java.io.Serializable;
+import java.time.LocalDate;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Getter
+@Setter
+@TableName("r_dim_monitor_rate_d")
+public class RDimMonitorRateD{
+
+ private static final long serialVersionUID = 1L;
+
+ @MppMultiId
+ private String orgId;
+
+ @MppMultiId
+ private LocalDate statisDate;
+
+ /**
+ * 母线监测率(%)
+ */
+ private Float busMonitorRate;
+
+ private Float stationMonitorRate;
+
+
+}
diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateM.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateM.java
new file mode 100644
index 000000000..c7eb1389c
--- /dev/null
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateM.java
@@ -0,0 +1,39 @@
+package com.njcn.harmonic.pojo.po.dim;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import com.njcn.db.bo.BaseEntity;
+
+import java.time.LocalDate;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Getter
+@Setter
+@TableName("r_dim_monitor_rate_m")
+public class RDimMonitorRateM {
+
+ private static final long serialVersionUID = 1L;
+
+ @MppMultiId
+ private String orgId;
+ @MppMultiId
+ private LocalDate statisDate;
+
+ /**
+ * 母线监测率(%)
+ */
+ private Float busMonitorRate;
+
+ private Float stationMonitorRate;
+
+
+}
diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateY.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateY.java
new file mode 100644
index 000000000..3e35b60d5
--- /dev/null
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimMonitorRateY.java
@@ -0,0 +1,38 @@
+package com.njcn.harmonic.pojo.po.dim;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import com.njcn.db.bo.BaseEntity;
+import java.io.Serializable;
+import java.time.LocalDate;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Getter
+@Setter
+@TableName("r_dim_monitor_rate_y")
+public class RDimMonitorRateY{
+
+ private static final long serialVersionUID = 1L;
+ @MppMultiId
+ private String orgId;
+ @MppMultiId
+ private LocalDate statisDate;
+
+ /**
+ * 母线监测率(%)
+ */
+ private Float busMonitorRate;
+
+ private Float stationMonitorRate;
+
+
+}
diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateD.java
new file mode 100644
index 000000000..0125d534b
--- /dev/null
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateD.java
@@ -0,0 +1,42 @@
+package com.njcn.harmonic.pojo.po.dim;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import com.njcn.db.bo.BaseEntity;
+import java.io.Serializable;
+import java.time.LocalDate;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Getter
+@Setter
+@TableName("r_dim_obj_rate_d")
+public class RDimObjRateD{
+
+ private static final long serialVersionUID = 1L;
+ @MppMultiId
+ private String orgId;
+ @MppMultiId
+ private LocalDate statisDate;
+
+ /**
+ * 源荷对象类别
+ */
+ @MppMultiId
+ private String objType;
+
+ /**
+ * **源荷对象监测率(%)
+ */
+ private Float objMonitorRate;
+
+
+}
diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateM.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateM.java
new file mode 100644
index 000000000..95d28e7c9
--- /dev/null
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateM.java
@@ -0,0 +1,42 @@
+package com.njcn.harmonic.pojo.po.dim;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import com.njcn.db.bo.BaseEntity;
+import java.io.Serializable;
+import java.time.LocalDate;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Getter
+@Setter
+@TableName("r_dim_obj_rate_m")
+public class RDimObjRateM{
+
+ private static final long serialVersionUID = 1L;
+ @MppMultiId
+ private String orgId;
+ @MppMultiId
+ private LocalDate statisDate;
+
+ /**
+ * 源荷对象类别
+ */
+ @MppMultiId
+ private String objType;
+
+ /**
+ * **源荷对象监测率(%)
+ */
+ private Float objMonitorRate;
+
+
+}
diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateY.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateY.java
new file mode 100644
index 000000000..4b25667af
--- /dev/null
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimObjRateY.java
@@ -0,0 +1,42 @@
+package com.njcn.harmonic.pojo.po.dim;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import com.njcn.db.bo.BaseEntity;
+import java.io.Serializable;
+import java.time.LocalDate;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Getter
+@Setter
+@TableName("r_dim_obj_rate_y")
+public class RDimObjRateY{
+
+ private static final long serialVersionUID = 1L;
+ @MppMultiId
+ private String orgId;
+ @MppMultiId
+ private LocalDate statisDate;
+
+ /**
+ * 源荷对象类别
+ */
+ @MppMultiId
+ private String objType;
+
+ /**
+ * **源荷对象监测率(%)
+ */
+ private Float objMonitorRate;
+
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/dim/IRDimBusGlobalDController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/dim/IRDimBusGlobalDController.java
index 1655a92a7..bbc3c58c0 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/dim/IRDimBusGlobalDController.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/dim/IRDimBusGlobalDController.java
@@ -5,10 +5,15 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
+import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
+import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.DeviceAbnormaStatisticsParam;
-import com.njcn.prepare.harmonic.service.mysql.dim.IRDimBusGlobalDService;
+import com.njcn.prepare.harmonic.service.mysql.dim.*;
+import com.njcn.user.api.DeptFeignClient;
+import com.njcn.user.pojo.po.Dept;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -20,6 +25,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.time.LocalDate;
+import java.util.List;
+
/**
* pqs
*
@@ -36,6 +44,22 @@ public class IRDimBusGlobalDController extends BaseController {
private final IRDimBusGlobalDService irDimBusGlobalDService;
+ private final IRDimMonitorRateDService irDimMonitorRateDService;
+
+ private final IRDimMonitorRateMService irDimMonitorRateMService;
+
+ private final IRDimObjRateDService irDimObjRateDService;
+
+ private final IRDimObjRateMService irDimObjRateMService;
+
+ private final IRDimObjRateYService irDimObjRateYService;
+
+ private final IRDimMonitorRateYService irDimMonitorRateYService;
+
+ private final CommTerminalGeneralClient commTerminalGeneralClient;
+
+ private final DeptFeignClient deptFeignClient;
+
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/dayDimGlobal")
@ApiOperation("母线变电站每日运行情况统计")
@@ -48,4 +72,56 @@ public class IRDimBusGlobalDController extends BaseController {
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON)
+ @PostMapping("/monitorRate")
+ @ApiOperation("母线变电站监测率统计")
+ @ApiImplicitParam(name = "calculatedParam", value = "参数", required = true)
+ public HttpResult monitorRate(@RequestBody CalculatedParam calculatedParam) {
+ String methodDescribe = getMethodDescribe("monitorRate");
+
+ Dept data = deptFeignClient.getRootDept().getData();
+ DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
+ deptGetLineParam.setDeptId(data.getId());
+ deptGetLineParam.setSystemType(0);
+ List dept = commTerminalGeneralClient.deptGetLineList(deptGetLineParam).getData();
+ calculatedParam.setIdList(dept);
+ calculatedParam.setDataDate("2023-11-22");
+
+ irDimMonitorRateDService.monitorRateDay(calculatedParam);
+
+
+ irDimMonitorRateMService.monitorRateMonth(calculatedParam);
+
+
+ irDimMonitorRateYService.monitorRateYear(calculatedParam);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
+ }
+
+
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON)
+ @PostMapping("/objMonitorRate")
+ @ApiOperation("源荷类型监测率统计")
+ @ApiImplicitParam(name = "calculatedParam", value = "参数", required = true)
+ public HttpResult objMonitorRate(@RequestBody CalculatedParam calculatedParam) {
+ String methodDescribe = getMethodDescribe("objMonitorRate");
+
+ Dept data = deptFeignClient.getRootDept().getData();
+ DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
+ deptGetLineParam.setDeptId(data.getId());
+ deptGetLineParam.setSystemType(0);
+ List dept = commTerminalGeneralClient.deptGetLineList(deptGetLineParam).getData();
+ calculatedParam.setIdList(dept);
+
+
+ irDimObjRateDService.objMonitorRateDay(calculatedParam);
+
+
+ irDimObjRateMService.objMonitorRateMonth(calculatedParam);
+
+
+ irDimObjRateYService.objMonitorRateYear(calculatedParam);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
+ }
+
+
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateDMapper.java
new file mode 100644
index 000000000..46528e9db
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateDMapper.java
@@ -0,0 +1,17 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateD;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface RDimMonitorRateDMapper extends MppBaseMapper {
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateMMapper.java
new file mode 100644
index 000000000..398f67c08
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateMMapper.java
@@ -0,0 +1,17 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateM;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface RDimMonitorRateMMapper extends MppBaseMapper {
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateYMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateYMapper.java
new file mode 100644
index 000000000..50128f369
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimMonitorRateYMapper.java
@@ -0,0 +1,17 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateY;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface RDimMonitorRateYMapper extends MppBaseMapper {
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateDMapper.java
new file mode 100644
index 000000000..8361fcff7
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateDMapper.java
@@ -0,0 +1,17 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateD;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface RDimObjRateDMapper extends MppBaseMapper {
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateMMapper.java
new file mode 100644
index 000000000..932f9dc52
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateMMapper.java
@@ -0,0 +1,17 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateM;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface RDimObjRateMMapper extends MppBaseMapper {
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateYMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateYMapper.java
new file mode 100644
index 000000000..cc33db625
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjRateYMapper.java
@@ -0,0 +1,17 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateY;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface RDimObjRateYMapper extends MppBaseMapper {
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimBusGlobalDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimBusGlobalDService.java
index 5c7fb9645..a526ade28 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimBusGlobalDService.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimBusGlobalDService.java
@@ -25,4 +25,6 @@ public interface IRDimBusGlobalDService extends IMppService {
void globalCalBusBarYear(CalculatedParam calculatedParam);
+
+
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateDService.java
new file mode 100644
index 000000000..2bb131fdf
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateDService.java
@@ -0,0 +1,27 @@
+package com.njcn.prepare.harmonic.service.mysql.dim;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jeffreyning.mybatisplus.service.IMppService;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateD;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface IRDimMonitorRateDService extends IMppService {
+
+ /**
+ * 母线,电站监测率
+ * @author cdf
+ * @date 2023/11/23
+ */
+ void monitorRateDay(CalculatedParam calculatedParam);
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateMService.java
new file mode 100644
index 000000000..18f032b6c
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateMService.java
@@ -0,0 +1,25 @@
+package com.njcn.prepare.harmonic.service.mysql.dim;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jeffreyning.mybatisplus.service.IMppService;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateM;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface IRDimMonitorRateMService extends IMppService {
+ /**
+ * 母线,电站监测率
+ * @author cdf
+ * @date 2023/11/23
+ */
+ void monitorRateMonth(CalculatedParam calculatedParam);
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateYService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateYService.java
new file mode 100644
index 000000000..658dd933b
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimMonitorRateYService.java
@@ -0,0 +1,22 @@
+package com.njcn.prepare.harmonic.service.mysql.dim;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jeffreyning.mybatisplus.service.IMppService;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateY;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface IRDimMonitorRateYService extends IMppService {
+
+ void monitorRateYear(CalculatedParam calculatedParam);
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjGlobalDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjGlobalDService.java
index cbd6b317c..a97abae16 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjGlobalDService.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjGlobalDService.java
@@ -1,7 +1,9 @@
package com.njcn.prepare.harmonic.service.mysql.dim;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.harmonic.pojo.po.dim.RDimObjGlobalD;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
/**
*
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateDService.java
new file mode 100644
index 000000000..de3d9e52f
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateDService.java
@@ -0,0 +1,25 @@
+package com.njcn.prepare.harmonic.service.mysql.dim;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jeffreyning.mybatisplus.service.IMppService;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateD;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface IRDimObjRateDService extends IMppService {
+
+ /**
+ * 源荷对象监测率
+ * @author cdf
+ * @date 2023/11/23
+ */
+ void objMonitorRateDay(CalculatedParam calculatedParam);
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateMService.java
new file mode 100644
index 000000000..3bb2872e6
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateMService.java
@@ -0,0 +1,25 @@
+package com.njcn.prepare.harmonic.service.mysql.dim;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jeffreyning.mybatisplus.service.IMppService;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateM;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface IRDimObjRateMService extends IMppService {
+
+ /**
+ * 源荷对象监测率
+ * @author cdf
+ * @date 2023/11/23
+ */
+ void objMonitorRateMonth(CalculatedParam calculatedParam);
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateYService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateYService.java
new file mode 100644
index 000000000..a7422d8a5
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjRateYService.java
@@ -0,0 +1,25 @@
+package com.njcn.prepare.harmonic.service.mysql.dim;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jeffreyning.mybatisplus.service.IMppService;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateY;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+public interface IRDimObjRateYService extends IMppService {
+
+ /**
+ * 源荷对象监测率
+ * @author cdf
+ * @date 2023/11/23
+ */
+ void objMonitorRateYear(CalculatedParam calculatedParam);
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusGlobalDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusGlobalDServiceImpl.java
index 82ae1b983..425851644 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusGlobalDServiceImpl.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusGlobalDServiceImpl.java
@@ -21,14 +21,18 @@ import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateD;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.area.ROperatingIndexDPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitTargetDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper;
import com.njcn.prepare.harmonic.mapper.mysql.dim.PmsCountLedgerMapper;
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusGlobalDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimBusGlobalDService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
@@ -75,6 +79,9 @@ public class RDimBusGlobalDServiceImpl extends MppServiceImpl dayDataList = this.list(lambdaQueryWrapper);
if (CollUtil.isNotEmpty(dayDataList)) {
- Map deptMap = calculatedParam.getIdList().stream().collect(Collectors.toMap(DeptGetChildrenDTO::getDeptId,Function.identity()));
+ Map deptMap = calculatedParam.getIdList().stream().collect(Collectors.toMap(DeptGetChildrenDTO::getDeptId, Function.identity()));
Map> map = dayDataList.stream().collect(Collectors.groupingBy(RDimBusGlobalD::getOrgId));
map.forEach((key, val) -> {
@@ -248,4 +255,6 @@ public class RDimBusGlobalDServiceImpl extends MppServiceImpl
+ * 服务实现类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Service
+@RequiredArgsConstructor
+public class RDimMonitorRateDServiceImpl extends MppServiceImpl implements IRDimMonitorRateDService {
+
+ private final PmsCountLedgerMapper pmsCountLedgerMapper;
+
+ private final ROperatingMonitorDMapper rOperatingMonitorDMapper;
+
+ private final PmsMonitorPOMapper pmsMonitorPOMapper;
+
+ @Override
+ public void monitorRateDay(CalculatedParam calculatedParam) {
+ List poList = new ArrayList<>();
+ LocalDate date = LocalDate.parse(calculatedParam.getDataDate());
+
+ List pmsMidLedgerList = pmsCountLedgerMapper.newDateData();
+ Map map = pmsMidLedgerList.stream().collect(Collectors.toMap(PmsCountLedger::getSection, Function.identity()));
+
+ List deptList = calculatedParam.getIdList();
+ for (DeptGetChildrenDTO dto : deptList) {
+ Float busMonitorRate = 0f;
+ Float stationMonitorRate = 0f;
+ RDimMonitorRateD rDimMonitorRateD = new RDimMonitorRateD();
+ rDimMonitorRateD.setOrgId(dto.getDeptId());
+ rDimMonitorRateD.setStatisDate(date);
+
+ List monitorIds = dto.getLineIds();
+ if (CollUtil.isEmpty(monitorIds)) {
+ rDimMonitorRateD.setBusMonitorRate(busMonitorRate);
+ rDimMonitorRateD.setStationMonitorRate(stationMonitorRate);
+ poList.add(rDimMonitorRateD);
+ continue;
+ }
+
+ if (map.containsKey(dto.getDeptId())) {
+ PmsCountLedger pmsCountLedger = map.get(dto.getDeptId());
+ Integer stationNum = pmsCountLedger.getSubCount();
+ Integer busBarNum = pmsCountLedger.getSubvCount();
+
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(ROperatingMonitorDPO::getDataDate, date).in(ROperatingMonitorDPO::getMeasurementPointId, monitorIds);
+ List rOperatingMonitorDPOList = rOperatingMonitorDMapper.selectList(lambdaQueryWrapper);
+
+
+ List goodList = rOperatingMonitorDPOList.stream().filter(item -> item.getIsUnusual() == 0 && item.getIndexIntegrityRate().floatValue() >= 0.95).collect(Collectors.toList());
+ List ids = goodList.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(ids)) {
+
+ List monitorList = pmsMonitorPOMapper.selectList(new LambdaQueryWrapper().in(Monitor::getId, ids));
+
+ if (busBarNum > 0) {
+ long count = monitorList.stream().map(Monitor::getLineId).distinct().count();
+ if (count > 0) {
+ busMonitorRate = (float) count / busBarNum;
+ }
+ }
+ if (stationNum > 0) {
+ long count = monitorList.stream().map(Monitor::getPowerrId).distinct().count();
+ if (count > 0) {
+ stationMonitorRate = (float) count / stationNum;
+ }
+ }
+ }
+
+ } else {
+ rDimMonitorRateD.setBusMonitorRate(busMonitorRate);
+ rDimMonitorRateD.setStationMonitorRate(stationMonitorRate);
+ poList.add(rDimMonitorRateD);
+ continue;
+ }
+ rDimMonitorRateD.setBusMonitorRate(busMonitorRate);
+ rDimMonitorRateD.setStationMonitorRate(stationMonitorRate);
+ poList.add(rDimMonitorRateD);
+ }
+
+ if (CollUtil.isNotEmpty(poList)) {
+ this.saveOrUpdateBatchByMultiId(poList,100);
+ }
+
+
+ }
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimMonitorRateMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimMonitorRateMServiceImpl.java
new file mode 100644
index 000000000..fedbc6459
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimMonitorRateMServiceImpl.java
@@ -0,0 +1,63 @@
+package com.njcn.prepare.harmonic.service.mysql.dim.impl;
+
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateD;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateM;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimMonitorRateMMapper;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimMonitorRateDService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimMonitorRateMService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Service
+@RequiredArgsConstructor
+public class RDimMonitorRateMServiceImpl extends MppServiceImpl implements IRDimMonitorRateMService {
+
+ private final IRDimMonitorRateDService irDimMonitorRateDService;
+
+ @Override
+ public void monitorRateMonth(CalculatedParam calculatedParam) {
+ List poList = new ArrayList<>();
+ DateTime start = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate()));
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().between(RDimMonitorRateD::getStatisDate,start,DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(),DatePattern.NORM_DATE_FORMAT)));
+ queryWrapper.select("Org_Id as orgId,avg(Bus_Monitor_Rate) as busMonitorRate,avg(Station_Monitor_Rate) as stationMonitorRate").groupBy("Org_Id");
+ List rDimMonitorRateDList = irDimMonitorRateDService.list(queryWrapper);
+
+ if(CollUtil.isNotEmpty(rDimMonitorRateDList)){
+ for(RDimMonitorRateD rDimMonitorRateD : rDimMonitorRateDList){
+ RDimMonitorRateM rDimMonitorRateM = new RDimMonitorRateM();
+ rDimMonitorRateM.setBusMonitorRate(rDimMonitorRateD.getBusMonitorRate());
+ rDimMonitorRateM.setStationMonitorRate(rDimMonitorRateD.getStationMonitorRate());
+ rDimMonitorRateM.setOrgId(rDimMonitorRateD.getOrgId());
+ rDimMonitorRateM.setStatisDate(LocalDate.parse(DateUtil.format(start,DatePattern.NORM_DATE_PATTERN)));
+ poList.add(rDimMonitorRateM);
+ }
+ this.saveOrUpdateBatchByMultiId(poList,100);
+ }
+
+ }
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimMonitorRateYServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimMonitorRateYServiceImpl.java
new file mode 100644
index 000000000..2b6900064
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimMonitorRateYServiceImpl.java
@@ -0,0 +1,63 @@
+package com.njcn.prepare.harmonic.service.mysql.dim.impl;
+
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateD;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateM;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateY;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimMonitorRateYMapper;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimMonitorRateDService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimMonitorRateMService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimMonitorRateYService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Service
+@RequiredArgsConstructor
+public class RDimMonitorRateYServiceImpl extends MppServiceImpl implements IRDimMonitorRateYService {
+
+ private final IRDimMonitorRateMService irDimMonitorRateMService;
+
+ @Override
+ public void monitorRateYear(CalculatedParam calculatedParam) {
+ List poList = new ArrayList<>();
+ DateTime start = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(),DatePattern.NORM_DATE_FORMAT));
+
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().between(RDimMonitorRateM::getStatisDate,start,DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(),DatePattern.NORM_DATE_FORMAT)));
+ queryWrapper.select("Org_Id as orgId,avg(Bus_Monitor_Rate) as busMonitorRate,avg(Station_Monitor_Rate) as stationMonitorRate").groupBy("Org_Id");
+ List rDimMonitorRateMDList = irDimMonitorRateMService.list(queryWrapper);
+
+ if(CollUtil.isNotEmpty(rDimMonitorRateMDList)){
+ for(RDimMonitorRateM rDimMonitorRateM : rDimMonitorRateMDList){
+ RDimMonitorRateY rDimMonitorRateY = new RDimMonitorRateY();
+ rDimMonitorRateY.setBusMonitorRate(rDimMonitorRateM.getBusMonitorRate());
+ rDimMonitorRateY.setStationMonitorRate(rDimMonitorRateM.getStationMonitorRate());
+ rDimMonitorRateY.setOrgId(rDimMonitorRateM.getOrgId());
+ rDimMonitorRateY.setStatisDate(LocalDate.parse(DateUtil.format(start,DatePattern.NORM_DATE_PATTERN)));
+ poList.add(rDimMonitorRateY);
+ }
+ this.saveOrUpdateBatchByMultiId(poList,100);
+ }
+ }
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateDServiceImpl.java
new file mode 100644
index 000000000..f723bfa0c
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateDServiceImpl.java
@@ -0,0 +1,115 @@
+package com.njcn.prepare.harmonic.service.mysql.dim.impl;
+
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.device.pms.pojo.po.Monitor;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateD;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateD;
+import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimObjRateDMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjRateDService;
+import com.njcn.system.api.DicDataFeignClient;
+import com.njcn.system.enums.DicDataEnum;
+import com.njcn.system.enums.DicDataTypeEnum;
+import com.njcn.system.pojo.po.DictData;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Service
+@RequiredArgsConstructor
+public class RDimObjRateDServiceImpl extends MppServiceImpl implements IRDimObjRateDService {
+
+ private final DicDataFeignClient dicDataFeignClient;
+
+ private final ROperatingMonitorDMapper rOperatingMonitorDMapper;
+
+ private final PmsMonitorPOMapper pmsMonitorPOMapper;
+
+
+ @Override
+ public void objMonitorRateDay(CalculatedParam calculatedParam) {
+ List poList = new ArrayList<>();
+ LocalDate date = LocalDate.parse(calculatedParam.getDataDate());
+
+ List dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
+ dictDataList = dictDataList.stream().filter(item -> item.getCode().equals(DicDataEnum.ONSHORE_WIND.getCode()) || item.getCode().equals(DicDataEnum.POWER_STATION.getCode()) || item.getCode().equals(DicDataEnum.POWER_STATION.getCode()) || item.getCode().equals(DicDataEnum.ONSHORE_WIND.getCode())).collect(Collectors.toList());
+
+ List deptList = calculatedParam.getIdList();
+ for (DeptGetChildrenDTO dto : deptList) {
+ List monitorIds = dto.getLineIds();
+
+ if (CollUtil.isEmpty(monitorIds)) {
+ for (DictData dictData : dictDataList) {
+ RDimObjRateD rDimObjRateD = new RDimObjRateD();
+ rDimObjRateD.setOrgId(dto.getDeptId());
+ rDimObjRateD.setStatisDate(date);
+ rDimObjRateD.setObjType(dictData.getId());
+ rDimObjRateD.setObjMonitorRate(0f);
+ poList.add(rDimObjRateD);
+ }
+ continue;
+ }
+
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(ROperatingMonitorDPO::getDataDate, date)
+ .in(ROperatingMonitorDPO::getMeasurementPointId, monitorIds)
+ .eq(ROperatingMonitorDPO::getIsUnusual, 1).ge(ROperatingMonitorDPO::getIndexIntegrityRate, 0.95);
+ List rOperatingMonitorDPOList = rOperatingMonitorDMapper.selectList(lambdaQueryWrapper);
+
+ if (CollUtil.isNotEmpty(rOperatingMonitorDPOList)) {
+ List ids = rOperatingMonitorDPOList.stream().map(ROperatingMonitorDPO::getMeasurementPointId).collect(Collectors.toList());
+
+ LambdaQueryWrapper monitorLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ monitorLambdaQueryWrapper.in(Monitor::getId, ids);
+ List monitorList = pmsMonitorPOMapper.selectList(monitorLambdaQueryWrapper);
+ Map> map = monitorList.stream().collect(Collectors.groupingBy(Monitor::getMonitorTag));
+
+ for (DictData dictData : dictDataList) {
+ RDimObjRateD rDimObjRateD = new RDimObjRateD();
+ rDimObjRateD.setOrgId(dto.getDeptId());
+ rDimObjRateD.setStatisDate(date);
+ rDimObjRateD.setObjType(dictData.getId());
+ if(map.containsKey(dictData.getId())){
+ List temList = map.get(dictData.getId());
+ rDimObjRateD.setObjMonitorRate((float)temList.size()/100);
+ }else {
+ rDimObjRateD.setObjMonitorRate(0f);
+ }
+ poList.add(rDimObjRateD);
+ }
+ }else {
+ for (DictData dictData : dictDataList) {
+ RDimObjRateD rDimObjRateD = new RDimObjRateD();
+ rDimObjRateD.setOrgId(dto.getDeptId());
+ rDimObjRateD.setStatisDate(date);
+ rDimObjRateD.setObjType(dictData.getId());
+ rDimObjRateD.setObjMonitorRate(0f);
+ poList.add(rDimObjRateD);
+ }
+ }
+
+ }
+ this.saveOrUpdateBatchByMultiId(poList,100);
+ }
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateMServiceImpl.java
new file mode 100644
index 000000000..2aab3070a
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateMServiceImpl.java
@@ -0,0 +1,62 @@
+package com.njcn.prepare.harmonic.service.mysql.dim.impl;
+
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateD;
+import com.njcn.harmonic.pojo.po.dim.RDimMonitorRateM;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateD;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateM;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimObjRateMMapper;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjRateDService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjRateMService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Service
+@RequiredArgsConstructor
+public class RDimObjRateMServiceImpl extends MppServiceImpl implements IRDimObjRateMService {
+
+ private final IRDimObjRateDService irDimObjRateService;
+
+ @Override
+ public void objMonitorRateMonth(CalculatedParam calculatedParam) {
+ List poList = new ArrayList<>();
+ DateTime start = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate()));
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().between(RDimObjRateD::getStatisDate,start,DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_FORMAT)));
+ queryWrapper.select("Org_Id as orgId,Obj_type as objType,avg(Obj_Monitor_Rate) as objMonitorRate").groupBy("Org_Id","Obj_type");
+ List rDimObjRateDList = irDimObjRateService.list(queryWrapper);
+
+ if(CollUtil.isNotEmpty(rDimObjRateDList)){
+ for(RDimObjRateD rDimObjRateD : rDimObjRateDList){
+ RDimObjRateM rDimMonitorRateM = new RDimObjRateM();
+ rDimMonitorRateM.setObjType(rDimObjRateD.getObjType());
+ rDimMonitorRateM.setObjMonitorRate(rDimObjRateD.getObjMonitorRate());
+ rDimMonitorRateM.setOrgId(rDimObjRateD.getOrgId());
+ rDimMonitorRateM.setStatisDate(LocalDate.parse(DateUtil.format(start,DatePattern.NORM_DATE_PATTERN)));
+ poList.add(rDimMonitorRateM);
+ }
+ this.saveOrUpdateBatchByMultiId(poList,100);
+ }
+ }
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateYServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateYServiceImpl.java
new file mode 100644
index 000000000..2de897405
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjRateYServiceImpl.java
@@ -0,0 +1,62 @@
+package com.njcn.prepare.harmonic.service.mysql.dim.impl;
+
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateD;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateM;
+import com.njcn.harmonic.pojo.po.dim.RDimObjRateY;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimObjRateYMapper;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjRateDService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjRateMService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjRateYService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author cdf
+ * @since 2023-11-23
+ */
+@Service
+@RequiredArgsConstructor
+public class RDimObjRateYServiceImpl extends MppServiceImpl implements IRDimObjRateYService {
+
+ private final IRDimObjRateMService irDimObjRateMService;
+
+ @Override
+ public void objMonitorRateYear(CalculatedParam calculatedParam) {
+ List poList = new ArrayList<>();
+ DateTime start = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate()));
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().between(RDimObjRateM::getStatisDate,start,DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_FORMAT)));
+ queryWrapper.select("Org_Id as orgId,Obj_type as objType,avg(Obj_Monitor_Rate) as objMonitorRate").groupBy("Org_Id","Obj_type");
+ List rDimObjRateDList = irDimObjRateMService.list(queryWrapper);
+
+ if(CollUtil.isNotEmpty(rDimObjRateDList)){
+ for(RDimObjRateM rDimObjRateM : rDimObjRateDList){
+ RDimObjRateY rDimObjRateY = new RDimObjRateY();
+ rDimObjRateY.setObjMonitorRate(rDimObjRateM.getObjMonitorRate());
+ rDimObjRateY.setObjType(rDimObjRateM.getObjType());
+ rDimObjRateY.setOrgId(rDimObjRateM.getOrgId());
+ rDimObjRateY.setStatisDate(LocalDate.parse(DateUtil.format(start,DatePattern.NORM_DATE_PATTERN)));
+ poList.add(rDimObjRateY);
+ }
+ this.saveOrUpdateBatchByMultiId(poList,100);
+ }
+ }
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimStationBaseDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimStationBaseDServiceImpl.java
index dcf11bdd3..7f01c73ff 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimStationBaseDServiceImpl.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimStationBaseDServiceImpl.java
@@ -55,6 +55,8 @@ public class RDimStationBaseDServiceImpl extends ServiceImpl calculatedParam) {
List poList = new ArrayList<>();
@@ -62,7 +64,7 @@ public class RDimStationBaseDServiceImpl extends ServiceImpl