ソースを参照

提交电气数据实体

xiaoguohua 4 ヶ月 前
親
コミット
6900b60054
52 ファイル変更、4833 行追加、125 行削除
  1. 34 0
      doc/数据库脚本/gateway-data.sql
  2. 25 0
      forecast-common/src/main/java/cn/oleauto/common/enums/IsTrueFalseType.java
  3. 5 1
      forecast-dao/pom.xml
  4. 222 0
      forecast-dao/src/main/java/cn/oleauto/biz/domain/BizYkLog.java
  5. 214 0
      forecast-dao/src/main/java/cn/oleauto/biz/domain/BizYtLog.java
  6. 62 0
      forecast-dao/src/main/java/cn/oleauto/biz/mapper/BizYkLogMapper.java
  7. 62 0
      forecast-dao/src/main/java/cn/oleauto/biz/mapper/BizYtLogMapper.java
  8. 62 0
      forecast-dao/src/main/java/cn/oleauto/biz/service/IBizYkLogService.java
  9. 62 0
      forecast-dao/src/main/java/cn/oleauto/biz/service/IBizYtLogService.java
  10. 97 0
      forecast-dao/src/main/java/cn/oleauto/biz/service/impl/BizYkLogServiceImpl.java
  11. 97 0
      forecast-dao/src/main/java/cn/oleauto/biz/service/impl/BizYtLogServiceImpl.java
  12. 120 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigChannelController.java
  13. 155 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigDeviceController.java
  14. 105 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigElectricityLocalController.java
  15. 146 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigPointController.java
  16. 104 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigProtocolController.java
  17. 121 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigStationController.java
  18. 104 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigTransmitController.java
  19. 105 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigWeatherLocalController.java
  20. 125 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigYkController.java
  21. 126 0
      forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigYtController.java
  22. 3 3
      forecast-dao/src/main/java/cn/oleauto/config/domain/ConfigElectricityLocal.java
  23. 5 14
      forecast-dao/src/main/java/cn/oleauto/config/domain/ConfigPoint.java
  24. 299 107
      forecast-dao/src/main/java/cn/oleauto/config/domain/ConfigStation.java
  25. 61 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigChannelService.java
  26. 61 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigDeviceService.java
  27. 61 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigElectricityLocalService.java
  28. 63 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigPointService.java
  29. 61 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigProtocolService.java
  30. 61 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigStationService.java
  31. 61 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigTransmitService.java
  32. 61 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigWeatherLocalService.java
  33. 64 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigYkService.java
  34. 63 0
      forecast-dao/src/main/java/cn/oleauto/config/service/IConfigYtService.java
  35. 96 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigChannelServiceImpl.java
  36. 93 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigDeviceServiceImpl.java
  37. 97 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigElectricityLocalServiceImpl.java
  38. 145 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigPointServiceImpl.java
  39. 93 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigProtocolServiceImpl.java
  40. 93 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigStationServiceImpl.java
  41. 93 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigTransmitServiceImpl.java
  42. 97 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigWeatherLocalServiceImpl.java
  43. 161 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigYkServiceImpl.java
  44. 139 0
      forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigYtServiceImpl.java
  45. 107 0
      forecast-dao/src/main/java/cn/oleauto/data/controller/DataElectricityLocalController.java
  46. 106 0
      forecast-dao/src/main/java/cn/oleauto/data/controller/DataWeatherLocalController.java
  47. 62 0
      forecast-dao/src/main/java/cn/oleauto/data/mapper/DataElectricityLocalMapper.java
  48. 62 0
      forecast-dao/src/main/java/cn/oleauto/data/mapper/DataWeatherLocalMapper.java
  49. 62 0
      forecast-dao/src/main/java/cn/oleauto/data/service/IDataElectricityLocalService.java
  50. 62 0
      forecast-dao/src/main/java/cn/oleauto/data/service/IDataWeatherLocalService.java
  51. 94 0
      forecast-dao/src/main/java/cn/oleauto/data/service/impl/DataElectricityLocalServiceImpl.java
  52. 94 0
      forecast-dao/src/main/java/cn/oleauto/data/service/impl/DataWeatherLocalServiceImpl.java

+ 34 - 0
doc/数据库脚本/gateway-data.sql

@@ -0,0 +1,34 @@
+---- 通信的协议
+INSERT INTO config_transmit VALUES (1, 'TCP异步客户端', 'cn.oleauto.transmit.tcp.TcpClient', E'host=设备ip\r\nport=设备端口');
+
+---- 设备的协议
+INSERT INTO config_protocol VALUES (1, 'IEC60870-104平衡', 'cn.oleauto.iec104.ProtocolImpl', E'cotFieldLength=cot信息字节数\r\ncommonAddressFieldLength=公共地址字节数\r\nioaFieldLength=测点编号字节数\r\ncommonAddress=公共地址\r\norginAddress=源地址');
+
+---- 通信信道
+INSERT INTO config_channel VALUES (0, '000', 'mute 通道', '1', 1, '', 1, '', '', '2026-07-03 14:13:27', '2026-07-03 14:13:27', '', '');
+INSERT INTO config_channel VALUES (1, '001', '电气设备通道', '0', 1, E'host=192.168.1.137\nport=2405', 1, ' ', '', '2026-07-03 15:43:11', '2026-07-03 15:38:53', 'admin', 'admin');
+
+---- 场站数据
+INSERT INTO public.config_station (id, station_name,station_code,superior_area_id,period_total,longitude,latitude,province_number,city_number,"position",installed_capacity,grid_connected_capacity,fans_pv_panelquantity,elevation,operation_time,boosterstation_voltage_level,booster_station_longitude,boosterstation_latitude,responsible_person_name,responsible_person_phone,is_enable,push_status,subject_total,is_full_power,is_del,create_by,create_time,update_by,update_time,station_type,system_power_uuid,area_id) VALUES
+    (1, '江门','JMJD01','EAST01',0,'124','37','370000','370000','广东省',120000,120000,75,12.500000,'2026-7-6','110KV','121.2223','38.9087','张工','13800000000',true,1,1,true,false,'admin','2026-07-01 13:23:25.447','admin','2026-07-01 13:23:25.447',0,'','EAST01');
+
+---- 设备数据
+INSERT INTO config_device (id, name,config_channel_id,config_station_id,ilk,config_device_id,remark) VALUES (1, '电气设备',1,'1','ELEC',NULL,'Demo');
+INSERT INTO config_device (id, name,config_channel_id,config_station_id,ilk,config_device_id,remark) VALUES (2, '气象设备',1,'1','ELEC',NULL,'Demo');
+
+---- 测点数据
+INSERT INTO public.config_point (name,code,addr,category,config_device_id,init_value,will_inverse,kb_composite,k,b,zero_filter,will_check_ud,up1,up2,down1,down2,hop_filter,lazy_tm,config_alarm_template_id,create_time,update_time,create_by,update_by) VALUES
+          ('斜面辐照度','yc16392',16392,'YC',2,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('温度','yc16393',16393,'YC',2,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('气压','yc16394',16394,'YC',2,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('湿度','yc16395',16395,'YC',2,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('风速','yc16396',16396,'YC',2,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('风向','yc16397',16397,'YC',2,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('并网状态','yx4',4,'YX',1,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('限电功率','yc16389',16389,'YC',1,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('可用率','yc16390',16390,'YC',1,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('水平面总辐照度','yc16391',16391,'YC',2,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','','');
+INSERT INTO public.config_point (name,code,addr,category,config_device_id,init_value,will_inverse,kb_composite,k,b,zero_filter,will_check_ud,up1,up2,down1,down2,hop_filter,lazy_tm,config_alarm_template_id,create_time,update_time,create_by,update_by) VALUES
+          ('实际发电功率','yc16385',16385,'YC',1,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('理论发电功率','yc16405',16405,'YC',1,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','',''),
+          ('设备状态','yx2',2,'YX',1,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2026-07-03 11:05:09','2026-07-03 11:05:09','','');                                                                                                                                                                                                                                               ('开关分合1','001',1,'YX',1,'0','N','0',1.0,0.0,0.0,'N',0.0,0.0,0.0,0.0,0,0,NULL,'2025-09-11 11:26:55','2025-09-11 15:40:11','','');

+ 25 - 0
forecast-common/src/main/java/cn/oleauto/common/enums/IsTrueFalseType.java

@@ -0,0 +1,25 @@
+package cn.oleauto.common.enums;
+
+import org.apache.commons.lang3.StringUtils;
+
+public enum IsTrueFalseType {
+    TRUE("t"),
+    FALSE("F");
+
+    private String type;
+    private IsTrueFalseType(String type){
+        this.type = type;
+    }
+
+    public String getType(){
+        return type;
+    }
+
+    public static boolean isTrue(String val){
+        return StringUtils.equalsIgnoreCase(TRUE.getType(), val);
+    }
+
+    public static boolean isFalse(String val){
+        return StringUtils.equalsIgnoreCase(FALSE.getType(), val);
+    }
+}

+ 5 - 1
forecast-dao/pom.xml

@@ -13,7 +13,6 @@
         <version>${revision}</version>
     </parent>
 
-
     <dependencies>
         <dependency>
             <groupId>jakarta.servlet</groupId>
@@ -24,6 +23,11 @@
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
         <!-- 通用工具-->
         <dependency>
             <groupId>cn.oleauto</groupId>

+ 222 - 0
forecast-dao/src/main/java/cn/oleauto/biz/domain/BizYkLog.java

@@ -0,0 +1,222 @@
+package cn.oleauto.biz.domain;
+
+import cn.oleauto.common.annotation.Excel;
+import cn.oleauto.common.core.domain.BaseEntity;
+import cn.oleauto.common.core.domain.entity.SysUser;
+import cn.oleauto.config.domain.ConfigYk;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 遥控记录对象 biz_yk_log
+ * 
+ * @author oleauto
+ * @date 2025-10-11
+ */
+public class BizYkLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 遥调 */
+    @Excel(name = "遥调")
+    private Long configYkId;
+
+    /** 设备 */
+    @Excel(name = "设备")
+    private Long configDeviceId;
+
+    /** 地址编号 */
+    @Excel(name = "地址编号")
+    private String addrCode;
+
+    /** 单双步 */
+    @Excel(name = "单双步")
+    private String controlStep;
+
+    /** 值 */
+    @Excel(name = "值")
+    private String controlVal;
+
+    /** 超时时间 */
+    @Excel(name = "超时时间")
+    private Long tmOut;
+
+    /** 功能码 */
+    @Excel(name = "功能码")
+    private String fun;
+
+    /** 参数 */
+    @Excel(name = "参数")
+    private String param;
+
+    /** 操作时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date tmOperate;
+
+    /** 操作人 */
+    @Excel(name = "操作人")
+    private Long sysUserId;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private String state;
+
+    private ConfigYk configYk;
+
+    private SysUser sysUser;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setConfigYkId(Long configYkId) 
+    {
+        this.configYkId = configYkId;
+    }
+
+    public Long getConfigYkId() 
+    {
+        return configYkId;
+    }
+
+    public void setConfigDeviceId(Long configDeviceId) 
+    {
+        this.configDeviceId = configDeviceId;
+    }
+
+    public Long getConfigDeviceId() 
+    {
+        return configDeviceId;
+    }
+
+    public void setAddrCode(String addrCode) 
+    {
+        this.addrCode = addrCode;
+    }
+
+    public String getAddrCode() 
+    {
+        return addrCode;
+    }
+
+    public String getControlStep() { return controlStep; }
+
+    public void setControlStep(String controlStep) { this.controlStep = controlStep; }
+
+    public void setControlVal(String controlVal)
+    {
+        this.controlVal = controlVal;
+    }
+
+    public String getControlVal() 
+    {
+        return controlVal;
+    }
+
+    public void setTmOut(Long tmOut) 
+    {
+        this.tmOut = tmOut;
+    }
+
+    public Long getTmOut() 
+    {
+        return tmOut;
+    }
+
+    public String getFun() {
+        return fun;
+    }
+
+    public void setFun(String fun) {
+        this.fun = fun;
+    }
+
+    public void setParam(String param)
+    {
+        this.param = param;
+    }
+
+    public String getParam() 
+    {
+        return param;
+    }
+
+    public void setTmOperate(Date tmOperate) 
+    {
+        this.tmOperate = tmOperate;
+    }
+
+    public Date getTmOperate() 
+    {
+        return tmOperate;
+    }
+
+    public void setSysUserId(Long sysUserId) 
+    {
+        this.sysUserId = sysUserId;
+    }
+
+    public Long getSysUserId() 
+    {
+        return sysUserId;
+    }
+
+    public void setState(String state) 
+    {
+        this.state = state;
+    }
+
+    public String getState() 
+    {
+        return state;
+    }
+    public ConfigYk getConfigYk() {
+        return configYk;
+    }
+
+    public void setConfigYk(ConfigYk configYk) {
+        this.configYk = configYk;
+    }
+
+    public SysUser getSysUser() {
+        return sysUser;
+    }
+
+    public void setSysUser(SysUser sysUser) {
+        this.sysUser = sysUser;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("configYkId", getConfigYkId())
+            .append("configDeviceId", getConfigDeviceId())
+            .append("addrCode", getAddrCode())
+            .append("controlVal", getControlVal())
+            .append("tmOut", getTmOut())
+            .append("param", getParam())
+            .append("tmOperate", getTmOperate())
+            .append("sysUserId", getSysUserId())
+            .append("state", getState())
+            .append("remark", getRemark())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+            .append("createBy", getCreateBy())
+            .append("updateBy", getUpdateBy())
+            .toString();
+    }
+}

+ 214 - 0
forecast-dao/src/main/java/cn/oleauto/biz/domain/BizYtLog.java

@@ -0,0 +1,214 @@
+package cn.oleauto.biz.domain;
+
+import cn.oleauto.common.annotation.Excel;
+import cn.oleauto.common.core.domain.BaseEntity;
+import cn.oleauto.common.core.domain.entity.SysUser;
+import cn.oleauto.config.domain.ConfigYt;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 遥调日志对象 biz_yt_log
+ * 
+ * @author oleauto
+ * @date 2025-10-11
+ */
+public class BizYtLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 遥调 */
+    @Excel(name = "遥调")
+    private Long configYtId;
+
+    /** 设备 */
+    @Excel(name = "设备")
+    private Long configDeviceId;
+
+    /** 地址编号 */
+    @Excel(name = "地址编号")
+    private String addrCode;
+
+    /** 值 */
+    @Excel(name = "值")
+    private String controlVal;
+
+    /** 超时时间 */
+    @Excel(name = "超时时间")
+    private Long tmOut;
+
+    /** 功能码 */
+    @Excel(name = "功能码")
+    private String fun;
+
+    /** 参数 */
+    @Excel(name = "参数")
+    private String param;
+
+    /** 操作时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date tmOperate;
+
+    /** 操作人 */
+    @Excel(name = "操作人")
+    private Long sysUserId;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private String state;
+
+    private ConfigYt configYt;
+    private SysUser sysUser;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setConfigYtId(Long configYtId) 
+    {
+        this.configYtId = configYtId;
+    }
+
+    public Long getConfigYtId() 
+    {
+        return configYtId;
+    }
+
+    public void setConfigDeviceId(Long configDeviceId) 
+    {
+        this.configDeviceId = configDeviceId;
+    }
+
+    public Long getConfigDeviceId() 
+    {
+        return configDeviceId;
+    }
+
+    public void setAddrCode(String addrCode) 
+    {
+        this.addrCode = addrCode;
+    }
+
+    public String getAddrCode() 
+    {
+        return addrCode;
+    }
+
+    public void setControlVal(String controlVal) 
+    {
+        this.controlVal = controlVal;
+    }
+
+    public String getControlVal() 
+    {
+        return controlVal;
+    }
+
+    public void setTmOut(Long tmOut) 
+    {
+        this.tmOut = tmOut;
+    }
+
+    public Long getTmOut() 
+    {
+        return tmOut;
+    }
+
+    public String getFun() {
+        return fun;
+    }
+
+    public void setFun(String fun) {
+        this.fun = fun;
+    }
+
+    public void setParam(String param)
+    {
+        this.param = param;
+    }
+
+    public String getParam() 
+    {
+        return param;
+    }
+
+    public void setTmOperate(Date tmOperate) 
+    {
+        this.tmOperate = tmOperate;
+    }
+
+    public Date getTmOperate() 
+    {
+        return tmOperate;
+    }
+
+    public void setSysUserId(Long sysUserId) 
+    {
+        this.sysUserId = sysUserId;
+    }
+
+    public Long getSysUserId() 
+    {
+        return sysUserId;
+    }
+
+    public void setState(String state) 
+    {
+        this.state = state;
+    }
+
+    public String getState() 
+    {
+        return state;
+    }
+
+    public ConfigYt getConfigYt() {
+        return configYt;
+    }
+
+    public void setConfigYt(ConfigYt configYt) {
+        this.configYt = configYt;
+    }
+
+    public SysUser getSysUser() {
+        return sysUser;
+    }
+
+    public void setSysUser(SysUser sysUser) {
+        this.sysUser = sysUser;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("configYtId", getConfigYtId())
+            .append("configDeviceId", getConfigDeviceId())
+            .append("addrCode", getAddrCode())
+            .append("controlVal", getControlVal())
+            .append("tmOut", getTmOut())
+            .append("param", getParam())
+            .append("tmOperate", getTmOperate())
+            .append("sysUserId", getSysUserId())
+            .append("state", getState())
+            .append("remark", getRemark())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+            .append("createBy", getCreateBy())
+            .append("updateBy", getUpdateBy())
+            .toString();
+    }
+}

+ 62 - 0
forecast-dao/src/main/java/cn/oleauto/biz/mapper/BizYkLogMapper.java

@@ -0,0 +1,62 @@
+package cn.oleauto.biz.mapper;
+
+import cn.oleauto.biz.domain.BizYkLog;
+
+import java.util.List;
+
+/**
+ * 遥控记录Mapper接口
+ * 
+ * @author oleauto
+ * @date 2025-10-11
+ */
+public interface BizYkLogMapper 
+{
+    /**
+     * 查询遥控记录
+     * 
+     * @param id 遥控记录主键
+     * @return 遥控记录
+     */
+    public BizYkLog selectBizYkLogById(Long id);
+
+    /**
+     * 查询遥控记录列表
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 遥控记录集合
+     */
+    public List<BizYkLog> selectBizYkLogList(BizYkLog bizYkLog);
+
+    /**
+     * 新增遥控记录
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 结果
+     */
+    public int insertBizYkLog(BizYkLog bizYkLog);
+
+    /**
+     * 修改遥控记录
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 结果
+     */
+    public int updateBizYkLog(BizYkLog bizYkLog);
+
+    /**
+     * 删除遥控记录
+     * 
+     * @param id 遥控记录主键
+     * @return 结果
+     */
+    public int deleteBizYkLogById(Long id);
+
+    /**
+     * 批量删除遥控记录
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBizYkLogByIds(Long[] ids);
+}

+ 62 - 0
forecast-dao/src/main/java/cn/oleauto/biz/mapper/BizYtLogMapper.java

@@ -0,0 +1,62 @@
+package cn.oleauto.biz.mapper;
+
+import cn.oleauto.biz.domain.BizYtLog;
+
+import java.util.List;
+
+/**
+ * 遥调日志Mapper接口
+ * 
+ * @author oleauto
+ * @date 2025-10-11
+ */
+public interface BizYtLogMapper 
+{
+    /**
+     * 查询遥调日志
+     * 
+     * @param id 遥调日志主键
+     * @return 遥调日志
+     */
+    public BizYtLog selectBizYtLogById(Long id);
+
+    /**
+     * 查询遥调日志列表
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 遥调日志集合
+     */
+    public List<BizYtLog> selectBizYtLogList(BizYtLog bizYtLog);
+
+    /**
+     * 新增遥调日志
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 结果
+     */
+    public int insertBizYtLog(BizYtLog bizYtLog);
+
+    /**
+     * 修改遥调日志
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 结果
+     */
+    public int updateBizYtLog(BizYtLog bizYtLog);
+
+    /**
+     * 删除遥调日志
+     * 
+     * @param id 遥调日志主键
+     * @return 结果
+     */
+    public int deleteBizYtLogById(Long id);
+
+    /**
+     * 批量删除遥调日志
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBizYtLogByIds(Long[] ids);
+}

+ 62 - 0
forecast-dao/src/main/java/cn/oleauto/biz/service/IBizYkLogService.java

@@ -0,0 +1,62 @@
+package cn.oleauto.biz.service;
+
+import cn.oleauto.biz.domain.BizYkLog;
+
+import java.util.List;
+
+/**
+ * 遥控记录Service接口
+ * 
+ * @author oleauto
+ * @date 2025-10-11
+ */
+public interface IBizYkLogService 
+{
+    /**
+     * 查询遥控记录
+     * 
+     * @param id 遥控记录主键
+     * @return 遥控记录
+     */
+    public BizYkLog selectBizYkLogById(Long id);
+
+    /**
+     * 查询遥控记录列表
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 遥控记录集合
+     */
+    public List<BizYkLog> selectBizYkLogList(BizYkLog bizYkLog);
+
+    /**
+     * 新增遥控记录
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 结果
+     */
+    public int insertBizYkLog(BizYkLog bizYkLog);
+
+    /**
+     * 修改遥控记录
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 结果
+     */
+    public int updateBizYkLog(BizYkLog bizYkLog);
+
+    /**
+     * 批量删除遥控记录
+     * 
+     * @param ids 需要删除的遥控记录主键集合
+     * @return 结果
+     */
+    public int deleteBizYkLogByIds(Long[] ids);
+
+    /**
+     * 删除遥控记录信息
+     * 
+     * @param id 遥控记录主键
+     * @return 结果
+     */
+    public int deleteBizYkLogById(Long id);
+}

+ 62 - 0
forecast-dao/src/main/java/cn/oleauto/biz/service/IBizYtLogService.java

@@ -0,0 +1,62 @@
+package cn.oleauto.biz.service;
+
+import cn.oleauto.biz.domain.BizYtLog;
+
+import java.util.List;
+
+/**
+ * 遥调日志Service接口
+ * 
+ * @author oleauto
+ * @date 2025-10-11
+ */
+public interface IBizYtLogService 
+{
+    /**
+     * 查询遥调日志
+     * 
+     * @param id 遥调日志主键
+     * @return 遥调日志
+     */
+    public BizYtLog selectBizYtLogById(Long id);
+
+    /**
+     * 查询遥调日志列表
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 遥调日志集合
+     */
+    public List<BizYtLog> selectBizYtLogList(BizYtLog bizYtLog);
+
+    /**
+     * 新增遥调日志
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 结果
+     */
+    public int insertBizYtLog(BizYtLog bizYtLog);
+
+    /**
+     * 修改遥调日志
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 结果
+     */
+    public int updateBizYtLog(BizYtLog bizYtLog);
+
+    /**
+     * 批量删除遥调日志
+     * 
+     * @param ids 需要删除的遥调日志主键集合
+     * @return 结果
+     */
+    public int deleteBizYtLogByIds(Long[] ids);
+
+    /**
+     * 删除遥调日志信息
+     * 
+     * @param id 遥调日志主键
+     * @return 结果
+     */
+    public int deleteBizYtLogById(Long id);
+}

+ 97 - 0
forecast-dao/src/main/java/cn/oleauto/biz/service/impl/BizYkLogServiceImpl.java

@@ -0,0 +1,97 @@
+package cn.oleauto.biz.service.impl;
+
+import cn.oleauto.biz.domain.BizYkLog;
+import cn.oleauto.biz.mapper.BizYkLogMapper;
+import cn.oleauto.biz.service.IBizYkLogService;
+import cn.oleauto.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 遥控记录Service业务层处理
+ * 
+ * @author oleauto
+ * @date 2025-10-11
+ */
+@Service
+public class BizYkLogServiceImpl implements IBizYkLogService 
+{
+    @Autowired
+    private BizYkLogMapper bizYkLogMapper;
+
+    /**
+     * 查询遥控记录
+     * 
+     * @param id 遥控记录主键
+     * @return 遥控记录
+     */
+    @Override
+    public BizYkLog selectBizYkLogById(Long id)
+    {
+        return bizYkLogMapper.selectBizYkLogById(id);
+    }
+
+    /**
+     * 查询遥控记录列表
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 遥控记录
+     */
+    @Override
+    public List<BizYkLog> selectBizYkLogList(BizYkLog bizYkLog)
+    {
+        return bizYkLogMapper.selectBizYkLogList(bizYkLog);
+    }
+
+    /**
+     * 新增遥控记录
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 结果
+     */
+    @Override
+    public int insertBizYkLog(BizYkLog bizYkLog)
+    {
+        bizYkLog.setCreateTime(DateUtils.getNowDate());
+        return bizYkLogMapper.insertBizYkLog(bizYkLog);
+    }
+
+    /**
+     * 修改遥控记录
+     * 
+     * @param bizYkLog 遥控记录
+     * @return 结果
+     */
+    @Override
+    public int updateBizYkLog(BizYkLog bizYkLog)
+    {
+        bizYkLog.setUpdateTime(DateUtils.getNowDate());
+        return bizYkLogMapper.updateBizYkLog(bizYkLog);
+    }
+
+    /**
+     * 批量删除遥控记录
+     * 
+     * @param ids 需要删除的遥控记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBizYkLogByIds(Long[] ids)
+    {
+        return bizYkLogMapper.deleteBizYkLogByIds(ids);
+    }
+
+    /**
+     * 删除遥控记录信息
+     * 
+     * @param id 遥控记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBizYkLogById(Long id)
+    {
+        return bizYkLogMapper.deleteBizYkLogById(id);
+    }
+}

+ 97 - 0
forecast-dao/src/main/java/cn/oleauto/biz/service/impl/BizYtLogServiceImpl.java

@@ -0,0 +1,97 @@
+package cn.oleauto.biz.service.impl;
+
+import cn.oleauto.biz.domain.BizYtLog;
+import cn.oleauto.biz.mapper.BizYtLogMapper;
+import cn.oleauto.biz.service.IBizYtLogService;
+import cn.oleauto.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 遥调日志Service业务层处理
+ * 
+ * @author oleauto
+ * @date 2025-10-11
+ */
+@Service
+public class BizYtLogServiceImpl implements IBizYtLogService 
+{
+    @Autowired
+    private BizYtLogMapper bizYtLogMapper;
+
+    /**
+     * 查询遥调日志
+     * 
+     * @param id 遥调日志主键
+     * @return 遥调日志
+     */
+    @Override
+    public BizYtLog selectBizYtLogById(Long id)
+    {
+        return bizYtLogMapper.selectBizYtLogById(id);
+    }
+
+    /**
+     * 查询遥调日志列表
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 遥调日志
+     */
+    @Override
+    public List<BizYtLog> selectBizYtLogList(BizYtLog bizYtLog)
+    {
+        return bizYtLogMapper.selectBizYtLogList(bizYtLog);
+    }
+
+    /**
+     * 新增遥调日志
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 结果
+     */
+    @Override
+    public int insertBizYtLog(BizYtLog bizYtLog)
+    {
+        bizYtLog.setCreateTime(DateUtils.getNowDate());
+        return bizYtLogMapper.insertBizYtLog(bizYtLog);
+    }
+
+    /**
+     * 修改遥调日志
+     * 
+     * @param bizYtLog 遥调日志
+     * @return 结果
+     */
+    @Override
+    public int updateBizYtLog(BizYtLog bizYtLog)
+    {
+        bizYtLog.setUpdateTime(DateUtils.getNowDate());
+        return bizYtLogMapper.updateBizYtLog(bizYtLog);
+    }
+
+    /**
+     * 批量删除遥调日志
+     * 
+     * @param ids 需要删除的遥调日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBizYtLogByIds(Long[] ids)
+    {
+        return bizYtLogMapper.deleteBizYtLogByIds(ids);
+    }
+
+    /**
+     * 删除遥调日志信息
+     * 
+     * @param id 遥调日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBizYtLogById(Long id)
+    {
+        return bizYtLogMapper.deleteBizYtLogById(id);
+    }
+}

+ 120 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigChannelController.java

@@ -0,0 +1,120 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+
+import cn.oleauto.common.core.domain.IdNameSelect;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.BeanUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.config.domain.ConfigChannel;
+import cn.oleauto.config.service.IConfigChannelService;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import cn.oleauto.common.core.page.TableDataInfo;
+
+/**
+ * 通道Controller
+ * 
+ * @author oleauto
+ * @date
+ */
+@RestController
+@RequestMapping("/dev/channel")
+public class ConfigChannelController extends BaseController
+{
+    @Autowired
+    private IConfigChannelService configChannelService;
+
+    /**
+     * 查询通道列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:channel:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigChannel configChannel)
+    {
+        startPage();
+        List<ConfigChannel> list = configChannelService.selectConfigChannelList(configChannel);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('dev:channel:list')")
+    @GetMapping("/select-items")
+    public AjaxResult list()
+    {
+        clearPage();
+        List<ConfigChannel> list = configChannelService.selectConfigChannelList(null);
+        List<IdNameSelect> idNames = list.stream().map(r -> {
+            IdNameSelect item = new IdNameSelect();
+            BeanUtils.copyProperties(r, item);
+            return item;
+        }).toList();
+        return success(idNames);
+    }
+    /**
+     * 导出通道列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:channel:export')")
+    @Log(title = "通道", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigChannel configChannel)
+    {
+        List<ConfigChannel> list = configChannelService.selectConfigChannelList(configChannel);
+        ExcelUtil<ConfigChannel> util = new ExcelUtil<ConfigChannel>(ConfigChannel.class);
+        util.exportExcel(response, list, "通道数据");
+    }
+
+    /**
+     * 获取通道详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:channel:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configChannelService.selectConfigChannelById(id));
+    }
+
+    /**
+     * 新增通道
+     */
+    @PreAuthorize("@ss.hasPermi('dev:channel:add')")
+    @Log(title = "通道", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigChannel configChannel)
+    {
+        return toAjax(configChannelService.insertConfigChannel(configChannel));
+    }
+
+    /**
+     * 修改通道
+     */
+    @PreAuthorize("@ss.hasPermi('dev:channel:edit')")
+    @Log(title = "通道", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigChannel configChannel)
+    {
+        return toAjax(configChannelService.updateConfigChannel(configChannel));
+    }
+
+    /**
+     * 删除通道
+     */
+    @PreAuthorize("@ss.hasPermi('dev:channel:remove')")
+    @Log(title = "通道", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configChannelService.deleteConfigChannelByIds(ids));
+    }
+}

+ 155 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigDeviceController.java

@@ -0,0 +1,155 @@
+package cn.oleauto.config.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cn.oleauto.common.core.domain.IdNameSelect;
+import cn.oleauto.common.core.domain.TreeSelect;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.BeanUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.config.domain.ConfigDevice;
+import cn.oleauto.config.service.IConfigDeviceService;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import cn.oleauto.common.core.page.TableDataInfo;
+
+/**
+ * 设备信息Controller
+ * 
+ * @author oleauto
+ * @date
+ */
+@RestController
+@RequestMapping("/dev/device")
+public class ConfigDeviceController extends BaseController
+{
+    @Autowired
+    private IConfigDeviceService configDeviceService;
+
+    /**
+     * 查询设备信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:device:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigDevice configDevice)
+    {
+        startPage();
+        List<ConfigDevice> list = configDeviceService.selectConfigDeviceList(configDevice);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('dev:device:list')")
+    @GetMapping("/select-items")
+    public AjaxResult list()
+    {
+        clearPage();
+        List<ConfigDevice> list = configDeviceService.selectConfigDeviceList(null);
+        List<IdNameSelect> idNames = list.stream().map(r -> {
+            IdNameSelect item = new IdNameSelect();
+            BeanUtils.copyProperties(r, item);
+            return item;
+        }).toList();
+        return success(idNames);
+    }
+
+    @PreAuthorize("@ss.hasPermi('dev:device:list')")
+    @GetMapping("/select-channel-device")
+    public AjaxResult listSelectChannelItems(ConfigDevice ConfigDevice)
+    {
+        clearPage();
+        List<ConfigDevice> configDeviceList = configDeviceService.selectConfigDeviceList(ConfigDevice);
+        List<TreeSelect> treeChannelList = new ArrayList<>();
+        configDeviceList.forEach(r->{
+            boolean bFound = false;
+            TreeSelect treeDevice = new TreeSelect();
+            treeDevice.setId(r.getId());
+            treeDevice.setLabel(r.getName());
+            for(TreeSelect item: treeChannelList){
+                if(item.getId() == r.getConfigChannelId()){
+                    bFound = true;
+                    item.getChildren().add(treeDevice);
+                    break;
+                }
+            }
+            if(!bFound){
+                TreeSelect treeChannel = new TreeSelect();
+                treeChannel.setId(r.getConfigChannelId());
+                treeChannel.setLabel(r.getConfigChannel().getName());
+                treeChannel.setChildren(new ArrayList<>());
+                treeChannel.getChildren().add(treeDevice);
+                treeChannelList.add(treeChannel);
+                r.setConfigChannel(null);
+            }
+        });
+        return success(treeChannelList);
+    }
+
+    /**
+     * 导出设备信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:device:export')")
+    @Log(title = "设备信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigDevice configDevice)
+    {
+        List<ConfigDevice> list = configDeviceService.selectConfigDeviceList(configDevice);
+        ExcelUtil<ConfigDevice> util = new ExcelUtil<ConfigDevice>(ConfigDevice.class);
+        util.exportExcel(response, list, "设备信息数据");
+    }
+
+    /**
+     * 获取设备信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:device:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configDeviceService.selectConfigDeviceById(id));
+    }
+
+    /**
+     * 新增设备信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:device:add')")
+    @Log(title = "设备信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigDevice configDevice)
+    {
+        return toAjax(configDeviceService.insertConfigDevice(configDevice));
+    }
+
+    /**
+     * 修改设备信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:device:edit')")
+    @Log(title = "设备信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigDevice configDevice)
+    {
+        return toAjax(configDeviceService.updateConfigDevice(configDevice));
+    }
+
+    /**
+     * 删除设备信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:device:remove')")
+    @Log(title = "设备信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configDeviceService.deleteConfigDeviceByIds(ids));
+    }
+}

+ 105 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigElectricityLocalController.java

@@ -0,0 +1,105 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.core.page.TableDataInfo;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.config.domain.ConfigElectricityLocal;
+import cn.oleauto.config.service.IConfigElectricityLocalService;
+
+/**
+ * 配置data_electricity_local中的电气量来源Controller
+ * 
+ * @author oleauto
+ * @date 2026-06-22
+ */
+@RestController
+@RequestMapping("/config/ConfigElectricityLocal")
+public class ConfigElectricityLocalController extends BaseController
+{
+    @Autowired
+    private IConfigElectricityLocalService configElectricityLocalService;
+
+    /**
+     * 查询配置data_electricity_local中的电气量来源列表
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigElectricityLocal configElectricityLocal)
+    {
+        startPage();
+        List<ConfigElectricityLocal> list = configElectricityLocalService.selectConfigElectricityLocalList(configElectricityLocal);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出配置data_electricity_local中的电气量来源列表
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:export')")
+    @Log(title = "配置data_electricity_local中的电气量来源", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigElectricityLocal configElectricityLocal)
+    {
+        List<ConfigElectricityLocal> list = configElectricityLocalService.selectConfigElectricityLocalList(configElectricityLocal);
+        ExcelUtil<ConfigElectricityLocal> util = new ExcelUtil<ConfigElectricityLocal>(ConfigElectricityLocal.class);
+        util.exportExcel(response, list, "配置data_electricity_local中的电气量来源数据");
+    }
+
+    /**
+     * 获取配置data_electricity_local中的电气量来源详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configElectricityLocalService.selectConfigElectricityLocalById(id));
+    }
+
+    /**
+     * 新增配置data_electricity_local中的电气量来源
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:add')")
+    @Log(title = "配置data_electricity_local中的电气量来源", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigElectricityLocal configElectricityLocal)
+    {
+        return toAjax(configElectricityLocalService.insertConfigElectricityLocal(configElectricityLocal));
+    }
+
+    /**
+     * 修改配置data_electricity_local中的电气量来源
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:edit')")
+    @Log(title = "配置data_electricity_local中的电气量来源", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigElectricityLocal configElectricityLocal)
+    {
+        return toAjax(configElectricityLocalService.updateConfigElectricityLocal(configElectricityLocal));
+    }
+
+    /**
+     * 删除配置data_electricity_local中的电气量来源
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:remove')")
+    @Log(title = "配置data_electricity_local中的电气量来源", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configElectricityLocalService.deleteConfigElectricityLocalByIds(ids));
+    }
+}

+ 146 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigPointController.java

@@ -0,0 +1,146 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+import cn.hutool.core.util.EnumUtil;
+import cn.oleauto.common.core.domain.IdNameSelect;
+import cn.oleauto.common.enums.PointType;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.BeanUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.config.domain.ConfigPoint;
+import cn.oleauto.config.service.IConfigPointService;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import cn.oleauto.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 测点Controller
+ * 
+ * @author oleauto
+ * @date
+ */
+@RestController
+@RequestMapping("/dev/point")
+public class ConfigPointController extends BaseController
+{
+    @Autowired
+    private IConfigPointService configPointService;
+
+    /**
+     * 查询测点列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:point:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigPoint configPoint)
+    {
+        startPage();
+        List<ConfigPoint> list = configPointService.selectConfigPointList(configPoint);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('dev:point:list')")
+    @GetMapping("/select-items")
+    public AjaxResult listSelectItems(ConfigPoint configPoint){
+        clearPage();
+        List<ConfigPoint> list = configPointService.selectConfigPointList(configPoint);
+        List<IdNameSelect> idNames = list.stream().map(r -> {
+            IdNameSelect item = new IdNameSelect();
+            BeanUtils.copyProperties(r, item);
+            return item;
+        }).toList();
+        return success(idNames);
+    }
+    @Log(title = "导入测点", businessType = BusinessType.IMPORT)
+    @PreAuthorize("@ss.hasPermi('dev:point::import')")
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport, Long deviceId) throws Exception
+    {
+        ExcelUtil<ConfigPoint> util = new ExcelUtil<>(ConfigPoint.class);
+        List<ConfigPoint> configPointList = util.importExcel(file.getInputStream());
+        String operName = getUsername();
+        String message = configPointService.importData(deviceId, configPointList, updateSupport, operName);
+        return success(message);
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        ExcelUtil<ConfigPoint> util = new ExcelUtil<>(ConfigPoint.class);
+        util.importTemplateExcel(response, "测点数据");
+    }
+    /**
+     * 导出测点列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:point:export')")
+    @Log(title = "测点", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigPoint configPoint)
+    {
+        List<ConfigPoint> list = configPointService.selectConfigPointList(configPoint);
+        // 排序
+        // list.sort(Comparator.comparing(ConfigPoint::getCategory));
+        list.sort((l, r)->{
+            int il = EnumUtil.getBy(PointType::getType, l.getCategory()).ordinal();
+            int ir = EnumUtil.getBy(PointType::getType, r.getCategory()).ordinal();
+            return il -ir;
+        });
+        ExcelUtil<ConfigPoint> util = new ExcelUtil<ConfigPoint>(ConfigPoint.class);
+        util.exportExcel(response, list, "测点数据");
+    }
+
+    /**
+     * 获取测点详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:point:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configPointService.selectConfigPointById(id));
+    }
+
+    /**
+     * 新增测点
+     */
+    @PreAuthorize("@ss.hasPermi('dev:point:add')")
+    @Log(title = "测点", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigPoint configPoint)
+    {
+        return toAjax(configPointService.insertConfigPoint(configPoint));
+    }
+
+    /**
+     * 修改测点
+     */
+    @PreAuthorize("@ss.hasPermi('dev:point:edit')")
+    @Log(title = "测点", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigPoint configPoint)
+    {
+        return toAjax(configPointService.updateConfigPoint(configPoint));
+    }
+
+    /**
+     * 删除测点
+     */
+    @PreAuthorize("@ss.hasPermi('dev:point:remove')")
+    @Log(title = "测点", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configPointService.deleteConfigPointByIds(ids));
+    }
+}

+ 104 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigProtocolController.java

@@ -0,0 +1,104 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.config.domain.ConfigProtocol;
+import cn.oleauto.config.service.IConfigProtocolService;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import cn.oleauto.common.core.page.TableDataInfo;
+
+/**
+ * 协议Controller
+ * 
+ * @author oleauto
+ * @date
+ */
+@RestController
+@RequestMapping("/dev/protocol")
+public class ConfigProtocolController extends BaseController
+{
+    @Autowired
+    private IConfigProtocolService configProtocolService;
+
+    /**
+     * 查询协议列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:protocol:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigProtocol configProtocol)
+    {
+        startPage();
+        List<ConfigProtocol> list = configProtocolService.selectConfigProtocolList(configProtocol);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出协议列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:protocol:export')")
+    @Log(title = "协议", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigProtocol configProtocol)
+    {
+        List<ConfigProtocol> list = configProtocolService.selectConfigProtocolList(configProtocol);
+        ExcelUtil<ConfigProtocol> util = new ExcelUtil<ConfigProtocol>(ConfigProtocol.class);
+        util.exportExcel(response, list, "协议数据");
+    }
+
+    /**
+     * 获取协议详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:protocol:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configProtocolService.selectConfigProtocolById(id));
+    }
+
+    /**
+     * 新增协议
+     */
+    @PreAuthorize("@ss.hasPermi('dev:protocol:add')")
+    @Log(title = "协议", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigProtocol configProtocol)
+    {
+        return toAjax(configProtocolService.insertConfigProtocol(configProtocol));
+    }
+
+    /**
+     * 修改协议
+     */
+    @PreAuthorize("@ss.hasPermi('dev:protocol:edit')")
+    @Log(title = "协议", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigProtocol configProtocol)
+    {
+        return toAjax(configProtocolService.updateConfigProtocol(configProtocol));
+    }
+
+    /**
+     * 删除协议
+     */
+    @PreAuthorize("@ss.hasPermi('dev:protocol:remove')")
+    @Log(title = "协议", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configProtocolService.deleteConfigProtocolByIds(ids));
+    }
+}

+ 121 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigStationController.java

@@ -0,0 +1,121 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+
+import cn.oleauto.common.core.domain.IdNameSelect;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.BeanUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.config.domain.ConfigStation;
+import cn.oleauto.config.service.IConfigStationService;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import cn.oleauto.common.core.page.TableDataInfo;
+
+/**
+ * 光伏场站Controller
+ * 
+ * @author oleauto
+ * @date
+ */
+@RestController
+@RequestMapping("/dev/station")
+public class ConfigStationController extends BaseController
+{
+    @Autowired
+    private IConfigStationService configStationService;
+
+    /**
+     * 查询光伏场站列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:station:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigStation configStation)
+    {
+        startPage();
+        List<ConfigStation> list = configStationService.selectConfigStationList(configStation);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('dev:station:list')")
+    @GetMapping("/select-items")
+    public AjaxResult list()
+    {
+        clearPage();
+        List<ConfigStation> list = configStationService.selectConfigStationList(null);
+        List<IdNameSelect> idNames = list.stream().map(r -> {
+            IdNameSelect item = new IdNameSelect();
+            BeanUtils.copyProperties(r, item);
+            return item;
+        }).toList();
+        return success(idNames);
+    }
+
+    /**
+     * 导出光伏场站列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:station:export')")
+    @Log(title = "光伏场站", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigStation configStation)
+    {
+        List<ConfigStation> list = configStationService.selectConfigStationList(configStation);
+        ExcelUtil<ConfigStation> util = new ExcelUtil<ConfigStation>(ConfigStation.class);
+        util.exportExcel(response, list, "光伏场站数据");
+    }
+
+    /**
+     * 获取光伏场站详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:station:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configStationService.selectConfigStationById(id));
+    }
+
+    /**
+     * 新增光伏场站
+     */
+    @PreAuthorize("@ss.hasPermi('dev:station:add')")
+    @Log(title = "光伏场站", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigStation configStation)
+    {
+        return toAjax(configStationService.insertConfigStation(configStation));
+    }
+
+    /**
+     * 修改光伏场站
+     */
+    @PreAuthorize("@ss.hasPermi('dev:station:edit')")
+    @Log(title = "光伏场站", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigStation configStation)
+    {
+        return toAjax(configStationService.updateConfigStation(configStation));
+    }
+
+    /**
+     * 删除光伏场站
+     */
+    @PreAuthorize("@ss.hasPermi('dev:station:remove')")
+    @Log(title = "光伏场站", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configStationService.deleteConfigStationByIds(ids));
+    }
+}

+ 104 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigTransmitController.java

@@ -0,0 +1,104 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.config.domain.ConfigTransmit;
+import cn.oleauto.config.service.IConfigTransmitService;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import cn.oleauto.common.core.page.TableDataInfo;
+
+/**
+ * 通信Controller
+ * 
+ * @author oleauto
+ * @date
+ */
+@RestController
+@RequestMapping("/dev/transmit")
+public class ConfigTransmitController extends BaseController
+{
+    @Autowired
+    private IConfigTransmitService configTransmitService;
+
+    /**
+     * 查询通信列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:transmit:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigTransmit configTransmit)
+    {
+        startPage();
+        List<ConfigTransmit> list = configTransmitService.selectConfigTransmitList(configTransmit);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出通信列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:transmit:export')")
+    @Log(title = "通信", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigTransmit configTransmit)
+    {
+        List<ConfigTransmit> list = configTransmitService.selectConfigTransmitList(configTransmit);
+        ExcelUtil<ConfigTransmit> util = new ExcelUtil<ConfigTransmit>(ConfigTransmit.class);
+        util.exportExcel(response, list, "通信数据");
+    }
+
+    /**
+     * 获取通信详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:transmit:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configTransmitService.selectConfigTransmitById(id));
+    }
+
+    /**
+     * 新增通信
+     */
+    @PreAuthorize("@ss.hasPermi('dev:transmit:add')")
+    @Log(title = "通信", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigTransmit configTransmit)
+    {
+        return toAjax(configTransmitService.insertConfigTransmit(configTransmit));
+    }
+
+    /**
+     * 修改通信
+     */
+    @PreAuthorize("@ss.hasPermi('dev:transmit:edit')")
+    @Log(title = "通信", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigTransmit configTransmit)
+    {
+        return toAjax(configTransmitService.updateConfigTransmit(configTransmit));
+    }
+
+    /**
+     * 删除通信
+     */
+    @PreAuthorize("@ss.hasPermi('dev:transmit:remove')")
+    @Log(title = "通信", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configTransmitService.deleteConfigTransmitByIds(ids));
+    }
+}

+ 105 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigWeatherLocalController.java

@@ -0,0 +1,105 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.core.page.TableDataInfo;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.config.domain.ConfigWeatherLocal;
+import cn.oleauto.config.service.IConfigWeatherLocalService;
+
+/**
+ * 配置data_electricity_local中的电气量来源Controller
+ * 
+ * @author oleauto
+ * @date 2026-06-22
+ */
+@RestController
+@RequestMapping("/config/ConfigWeatherLocal")
+public class ConfigWeatherLocalController extends BaseController
+{
+    @Autowired
+    private IConfigWeatherLocalService configWeatherLocalService;
+
+    /**
+     * 查询配置data_electricity_local中的电气量来源列表
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigWeatherLocal configWeatherLocal)
+    {
+        startPage();
+        List<ConfigWeatherLocal> list = configWeatherLocalService.selectConfigWeatherLocalList(configWeatherLocal);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出配置data_electricity_local中的电气量来源列表
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:export')")
+    @Log(title = "配置data_electricity_local中的电气量来源", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigWeatherLocal configWeatherLocal)
+    {
+        List<ConfigWeatherLocal> list = configWeatherLocalService.selectConfigWeatherLocalList(configWeatherLocal);
+        ExcelUtil<ConfigWeatherLocal> util = new ExcelUtil<ConfigWeatherLocal>(ConfigWeatherLocal.class);
+        util.exportExcel(response, list, "配置data_electricity_local中的电气量来源数据");
+    }
+
+    /**
+     * 获取配置data_electricity_local中的电气量来源详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configWeatherLocalService.selectConfigWeatherLocalById(id));
+    }
+
+    /**
+     * 新增配置data_electricity_local中的电气量来源
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:add')")
+    @Log(title = "配置data_electricity_local中的电气量来源", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigWeatherLocal configWeatherLocal)
+    {
+        return toAjax(configWeatherLocalService.insertConfigWeatherLocal(configWeatherLocal));
+    }
+
+    /**
+     * 修改配置data_electricity_local中的电气量来源
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:edit')")
+    @Log(title = "配置data_electricity_local中的电气量来源", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigWeatherLocal configWeatherLocal)
+    {
+        return toAjax(configWeatherLocalService.updateConfigWeatherLocal(configWeatherLocal));
+    }
+
+    /**
+     * 删除配置data_electricity_local中的电气量来源
+     */
+    @PreAuthorize("@ss.hasPermi('config:ConfigElectricityLocal:remove')")
+    @Log(title = "配置data_electricity_local中的电气量来源", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configWeatherLocalService.deleteConfigWeatherLocalByIds(ids));
+    }
+}

+ 125 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigYkController.java

@@ -0,0 +1,125 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.config.domain.ConfigYk;
+import cn.oleauto.config.service.IConfigYkService;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import cn.oleauto.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 遥控Controller
+ * 
+ * @author oleauto
+ * @date
+ */
+@RestController
+@RequestMapping("/dev/yk")
+public class ConfigYkController extends BaseController
+{
+    @Autowired
+    private IConfigYkService configYkService;
+
+    /**
+     * 查询遥控列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yk:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigYk configYk)
+    {
+        startPage();
+        List<ConfigYk> list = configYkService.selectConfigYkList(configYk);
+        return getDataTable(list);
+    }
+
+    @Log(title = "导入遥控", businessType = BusinessType.IMPORT)
+    @PreAuthorize("@ss.hasPermi('dev:yk::import')")
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport, Long deviceId) throws Exception
+    {
+        ExcelUtil<ConfigYk> util = new ExcelUtil<>(ConfigYk.class);
+        List<ConfigYk> configYkList = util.importExcel(file.getInputStream());
+        String operName = getUsername();
+        String message = configYkService.importData(deviceId, configYkList, updateSupport, operName);
+        return success(message);
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        ExcelUtil<ConfigYk> util = new ExcelUtil<>(ConfigYk.class);
+        util.importTemplateExcel(response, "遥控数据");
+    }
+
+    /**
+     * 导出遥控列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yk:export')")
+    @Log(title = "遥控", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigYk configYk)
+    {
+        List<ConfigYk> list = configYkService.selectConfigYkList(configYk);
+        ExcelUtil<ConfigYk> util = new ExcelUtil<ConfigYk>(ConfigYk.class);
+        util.exportExcel(response, list, "遥控数据");
+    }
+
+    /**
+     * 获取遥控详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yk:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configYkService.selectConfigYkById(id));
+    }
+
+    /**
+     * 新增遥控
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yk:add')")
+    @Log(title = "遥控", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigYk configYk)
+    {
+        return toAjax(configYkService.insertConfigYk(configYk));
+    }
+
+    /**
+     * 修改遥控
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yk:edit')")
+    @Log(title = "遥控", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigYk configYk)
+    {
+        return toAjax(configYkService.updateConfigYk(configYk));
+    }
+
+    /**
+     * 删除遥控
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yk:remove')")
+    @Log(title = "遥控", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configYkService.deleteConfigYkByIds(ids));
+    }
+}

+ 126 - 0
forecast-dao/src/main/java/cn/oleauto/config/controller/ConfigYtController.java

@@ -0,0 +1,126 @@
+package cn.oleauto.config.controller;
+
+import java.util.List;
+
+import cn.oleauto.config.domain.ConfigYk;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.config.domain.ConfigYt;
+import cn.oleauto.config.service.IConfigYtService;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import cn.oleauto.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 遥调Controller
+ * 
+ * @author oleauto
+ * @date
+ */
+@RestController
+@RequestMapping("/dev/yt")
+public class ConfigYtController extends BaseController
+{
+    @Autowired
+    private IConfigYtService configYtService;
+
+    /**
+     * 查询遥调列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yt:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ConfigYt configYt)
+    {
+        startPage();
+        List<ConfigYt> list = configYtService.selectConfigYtList(configYt);
+        return getDataTable(list);
+    }
+
+    @Log(title = "导入遥调", businessType = BusinessType.IMPORT)
+    @PreAuthorize("@ss.hasPermi('dev:yt::import')")
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport, Long deviceId) throws Exception
+    {
+        ExcelUtil<ConfigYt> util = new ExcelUtil<>(ConfigYt.class);
+        List<ConfigYt> configYkList = util.importExcel(file.getInputStream());
+        String operName = getUsername();
+        String message = configYtService.importData(deviceId, configYkList, updateSupport, operName);
+        return success(message);
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        ExcelUtil<ConfigYk> util = new ExcelUtil<>(ConfigYk.class);
+        util.importTemplateExcel(response, "遥调数据");
+    }
+
+    /**
+     * 导出遥调列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yt:export')")
+    @Log(title = "遥调", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ConfigYt configYt)
+    {
+        List<ConfigYt> list = configYtService.selectConfigYtList(configYt);
+        ExcelUtil<ConfigYt> util = new ExcelUtil<ConfigYt>(ConfigYt.class);
+        util.exportExcel(response, list, "遥调数据");
+    }
+
+    /**
+     * 获取遥调详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yt:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(configYtService.selectConfigYtById(id));
+    }
+
+    /**
+     * 新增遥调
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yt:add')")
+    @Log(title = "遥调", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ConfigYt configYt)
+    {
+        return toAjax(configYtService.insertConfigYt(configYt));
+    }
+
+    /**
+     * 修改遥调
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yt:edit')")
+    @Log(title = "遥调", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ConfigYt configYt)
+    {
+        return toAjax(configYtService.updateConfigYt(configYt));
+    }
+
+    /**
+     * 删除遥调
+     */
+    @PreAuthorize("@ss.hasPermi('dev:yt:remove')")
+    @Log(title = "遥调", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(configYtService.deleteConfigYtByIds(ids));
+    }
+}

+ 3 - 3
forecast-dao/src/main/java/cn/oleauto/config/domain/ConfigElectricityLocal.java

@@ -20,7 +20,7 @@ public class ConfigElectricityLocal extends BaseEntity
 
     /** 场站id */
     @Excel(name = "场站id")
-    private String configStationId;
+    private Long configStationId;
 
     /** 实际发电功率测点配置
     {
@@ -60,12 +60,12 @@ public class ConfigElectricityLocal extends BaseEntity
     {
         return id;
     }
-    public void setConfigStationId(String configStationId) 
+    public void setConfigStationId(Long configStationId)
     {
         this.configStationId = configStationId;
     }
 
-    public String getConfigStationId() 
+    public Long getConfigStationId()
     {
         return configStationId;
     }

+ 5 - 14
forecast-dao/src/main/java/cn/oleauto/config/domain/ConfigPoint.java

@@ -1,12 +1,12 @@
 package cn.oleauto.config.domain;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import cn.oleauto.common.annotation.Excel;
 import cn.oleauto.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
- * 测点对象 config_point
+ *
  * 
  * @author oleauto
  * @date
@@ -94,7 +94,6 @@ public class ConfigPoint extends BaseEntity
     private Long configAlarmTemplateId;
 
     private ConfigDevice configDevice;
-    private ConfigAlarmTemplate configAlarmTemplate;
 
     public void setId(Long id) 
     {
@@ -146,12 +145,12 @@ public class ConfigPoint extends BaseEntity
         return category;
     }
 
-    public void setConfigDeviceId(Long configDeviceId) 
+    public void setConfigDeviceId(Long configDeviceId)
     {
         this.configDeviceId = configDeviceId;
     }
 
-    public Long getConfigDeviceId() 
+    public Long getConfigDeviceId()
     {
         return configDeviceId;
     }
@@ -302,14 +301,6 @@ public class ConfigPoint extends BaseEntity
         this.configDevice = configDevice;
     }
 
-    public ConfigAlarmTemplate getConfigAlarmTemplate() {
-        return configAlarmTemplate;
-    }
-
-    public void setConfigAlarmTemplate(ConfigAlarmTemplate configAlarmTemplate) {
-        this.configAlarmTemplate = configAlarmTemplate;
-    }
-
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 299 - 107
forecast-dao/src/main/java/cn/oleauto/config/domain/ConfigStation.java

@@ -14,224 +14,416 @@ import cn.oleauto.common.core.domain.BaseEntity;
  * @author oleauto
  * @date
  */
+
+/**
+ * 场站信息对象 config_station
+ *
+ * @author ufo
+ * @date 2026-05-05
+ */
 public class ConfigStation extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
+    /** 唯一标识 */
     private Long id;
 
-    /** 调度分配标识序号 */
-    @Excel(name = "调度分配标识序号")
-    private String dispatchSeq;
+    /** 场站名称 */
+    @Excel(name = "场站名称")
+    private String stationName;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String name;
+    /** 场站统一编码 */
+    @Excel(name = "场站统一编码")
+    private String stationCode;
 
-    /** 有功容量-单位是-瓦(W) */
-    @Excel(name = "有功容量-单位是-瓦(W)")
-    private BigDecimal activePowerCapacity;
+    /** 所属大区 */
+    @Excel(name = "所属大区")
+    private String superiorAreaId;
 
-    /** 无功容量-单位是-乏(var) */
-    @Excel(name = "无功容量-单位是-乏(var)")
-    private BigDecimal reactivePowerCapacity;
-
-    /** 面积-单位是(平方米) */
-    @Excel(name = "面积-单位是(平方米)")
-    private BigDecimal areaSize;
+    /** 0时表示整个场站所有期次,其他表示具体各项目期次即 */
+    @Excel(name = "0时表示整个场站所有期次,其他表示具体各项目期次即")
+    private Long periodTotal;
 
     /** 经度 */
     @Excel(name = "经度")
-    private BigDecimal longitude;
+    private String longitude;
 
     /** 纬度 */
     @Excel(name = "纬度")
-    private BigDecimal latitude;
+    private String latitude;
+
+    /** 省份编号 */
+    @Excel(name = "省份编号")
+    private String provinceNumber;
+
+    /** 市编号 */
+    @Excel(name = "市编号")
+    private String cityNumber;
+
+    /** 省市县 */
+    @Excel(name = "省市县")
+    private String position;
+
+    /** 单位KW */
+    @Excel(name = "单位KW")
+    private Long installedCapacity;
+
+    /** 单位KW */
+    @Excel(name = "单位KW")
+    private Long gridConnectedCapacity;
+
+    /** 风机/光伏板数量 */
+    @Excel(name = "风机/光伏板数量")
+    private Long fansPvPanelquantity;
+
+    /** 海拔 */
+    @Excel(name = "海拔")
+    private String elevation;
 
     /** 投运时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "投运时间", width = 30, dateFormat = "yyyy-MM-dd")
-    private Date gmtBegin;
+    @Excel(name = "投运时间")
+    private String operationTime;
 
-    /** 场站类型(0:分布式, 1:地面) */
-    @Excel(name = "场站类型(0:分布式, 1:地面)")
-    private String category;
+    /** 升压站电压等级 */
+    @Excel(name = "升压站电压等级")
+    private String boosterstationVoltageLevel;
 
-    /** 地形 */
-    @Excel(name = "地形")
-    private String terrain;
+    /** 升压站经度 */
+    @Excel(name = "升压站经度")
+    private String boosterStationLongitude;
 
-    /** 建设地址 */
-    @Excel(name = "建设地址")
-    private String address;
+    /** 升压站维度 */
+    @Excel(name = "升压站维度")
+    private String boosterstationLatitude;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Date createTime;
+    /** 负责人名称 */
+    @Excel(name = "负责人名称")
+    private String responsiblePersonName;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Date updateTime;
+    /** 负责人电话 */
+    @Excel(name = "负责人电话")
+    private String responsiblePersonPhone;
 
-    public void setId(Long id) 
+    /** 是否启用 */
+    @Excel(name = "是否启用")
+    private String isEnable;
+
+    /** 推送状态 */
+    @Excel(name = "推送状态")
+    private Long pushStatus;
+
+    /** 交易主体数量 */
+    @Excel(name = "交易主体数量")
+    private Long subjectTotal;
+
+    /** 0-无,1-有;所有预报数据源的数据解析入库完成后,查询此字段=0的场站,把该场站所有交易主体的预测数据加和得到整场预测功率 */
+    @Excel(name = "0-无,1-有;所有预报数据源的数据解析入库完成后,查询此字段=0的场站,把该场站所有交易主体的预测数据加和得到整场预测功率")
+    private String isFullPower;
+
+    /** 是否删除 */
+    @Excel(name = "是否删除")
+    private String isDel;
+
+    /** 0-风机1-光伏 */
+    @Excel(name = "0-风机1-光伏")
+    private Long stationType;
+
+    /** 场站功率系统uuid */
+    @Excel(name = "场站功率系统uuid")
+    private String systemPowerUuid;
+
+    /** 区域公司 */
+    @Excel(name = "区域公司")
+    private String areaId;
+
+    public void setId(Long id)
     {
         this.id = id;
     }
 
-    public Long getId() 
+    public Long getId()
     {
         return id;
     }
+    public void setStationName(String stationName)
+    {
+        this.stationName = stationName;
+    }
 
-    public void setDispatchSeq(String dispatchSeq) 
+    public String getStationName()
     {
-        this.dispatchSeq = dispatchSeq;
+        return stationName;
+    }
+    public void setStationCode(String stationCode)
+    {
+        this.stationCode = stationCode;
     }
 
-    public String getDispatchSeq() 
+    public String getStationCode()
+    {
+        return stationCode;
+    }
+    public void setSuperiorAreaId(String superiorAreaId)
     {
-        return dispatchSeq;
+        this.superiorAreaId = superiorAreaId;
     }
 
-    public void setName(String name) 
+    public String getSuperiorAreaId()
+    {
+        return superiorAreaId;
+    }
+    public void setPeriodTotal(Long periodTotal)
     {
-        this.name = name;
+        this.periodTotal = periodTotal;
     }
 
-    public String getName() 
+    public Long getPeriodTotal()
     {
-        return name;
+        return periodTotal;
+    }
+    public void setLongitude(String longitude)
+    {
+        this.longitude = longitude;
     }
 
-    public void setActivePowerCapacity(BigDecimal activePowerCapacity) 
+    public String getLongitude()
     {
-        this.activePowerCapacity = activePowerCapacity;
+        return longitude;
+    }
+    public void setLatitude(String latitude)
+    {
+        this.latitude = latitude;
+    }
+
+    public String getLatitude()
+    {
+        return latitude;
+    }
+    public void setProvinceNumber(String provinceNumber)
+    {
+        this.provinceNumber = provinceNumber;
     }
 
-    public BigDecimal getActivePowerCapacity() 
+    public String getProvinceNumber()
+    {
+        return provinceNumber;
+    }
+    public void setCityNumber(String cityNumber)
     {
-        return activePowerCapacity;
+        this.cityNumber = cityNumber;
     }
 
-    public void setReactivePowerCapacity(BigDecimal reactivePowerCapacity) 
+    public String getCityNumber()
     {
-        this.reactivePowerCapacity = reactivePowerCapacity;
+        return cityNumber;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
     }
 
-    public BigDecimal getReactivePowerCapacity() 
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setInstalledCapacity(Long installedCapacity)
     {
-        return reactivePowerCapacity;
+        this.installedCapacity = installedCapacity;
     }
 
-    public void setAreaSize(BigDecimal areaSize) 
+    public Long getInstalledCapacity()
+    {
+        return installedCapacity;
+    }
+    public void setGridConnectedCapacity(Long gridConnectedCapacity)
     {
-        this.areaSize = areaSize;
+        this.gridConnectedCapacity = gridConnectedCapacity;
     }
 
-    public BigDecimal getAreaSize() 
+    public Long getGridConnectedCapacity()
     {
-        return areaSize;
+        return gridConnectedCapacity;
+    }
+    public void setFansPvPanelquantity(Long fansPvPanelquantity)
+    {
+        this.fansPvPanelquantity = fansPvPanelquantity;
     }
 
-    public void setLongitude(BigDecimal longitude) 
+    public Long getFansPvPanelquantity()
     {
-        this.longitude = longitude;
+        return fansPvPanelquantity;
+    }
+    public void setElevation(String elevation)
+    {
+        this.elevation = elevation;
     }
 
-    public BigDecimal getLongitude() 
+    public String getElevation()
     {
-        return longitude;
+        return elevation;
+    }
+    public void setOperationTime(String operationTime)
+    {
+        this.operationTime = operationTime;
     }
 
-    public void setLatitude(BigDecimal latitude) 
+    public String getOperationTime()
     {
-        this.latitude = latitude;
+        return operationTime;
+    }
+    public void setBoosterstationVoltageLevel(String boosterstationVoltageLevel)
+    {
+        this.boosterstationVoltageLevel = boosterstationVoltageLevel;
     }
 
-    public BigDecimal getLatitude() 
+    public String getBoosterstationVoltageLevel()
     {
-        return latitude;
+        return boosterstationVoltageLevel;
+    }
+    public void setBoosterStationLongitude(String boosterStationLongitude)
+    {
+        this.boosterStationLongitude = boosterStationLongitude;
     }
 
-    public void setGmtBegin(Date gmtBegin) 
+    public String getBoosterStationLongitude()
+    {
+        return boosterStationLongitude;
+    }
+    public void setBoosterstationLatitude(String boosterstationLatitude)
     {
-        this.gmtBegin = gmtBegin;
+        this.boosterstationLatitude = boosterstationLatitude;
     }
 
-    public Date getGmtBegin() 
+    public String getBoosterstationLatitude()
+    {
+        return boosterstationLatitude;
+    }
+    public void setResponsiblePersonName(String responsiblePersonName)
     {
-        return gmtBegin;
+        this.responsiblePersonName = responsiblePersonName;
     }
 
-    public void setCategory(String category)
+    public String getResponsiblePersonName()
     {
-        this.category = category;
+        return responsiblePersonName;
+    }
+    public void setResponsiblePersonPhone(String responsiblePersonPhone)
+    {
+        this.responsiblePersonPhone = responsiblePersonPhone;
     }
 
-    public String getCategory()
+    public String getResponsiblePersonPhone()
     {
-        return category;
+        return responsiblePersonPhone;
+    }
+    public void setIsEnable(String isEnable)
+    {
+        this.isEnable = isEnable;
     }
 
-    public void setTerrain(String terrain) 
+    public String getIsEnable()
+    {
+        return isEnable;
+    }
+    public void setPushStatus(Long pushStatus)
     {
-        this.terrain = terrain;
+        this.pushStatus = pushStatus;
     }
 
-    public String getTerrain() 
+    public Long getPushStatus()
+    {
+        return pushStatus;
+    }
+    public void setSubjectTotal(Long subjectTotal)
     {
-        return terrain;
+        this.subjectTotal = subjectTotal;
     }
 
-    public void setAddress(String address) 
+    public Long getSubjectTotal()
     {
-        this.address = address;
+        return subjectTotal;
+    }
+    public void setIsFullPower(String isFullPower)
+    {
+        this.isFullPower = isFullPower;
     }
 
-    public String getAddress() 
+    public String getIsFullPower()
     {
-        return address;
+        return isFullPower;
+    }
+    public void setIsDel(String isDel)
+    {
+        this.isDel = isDel;
     }
 
-    public void setCreateTime(Date createTime)
+    public String getIsDel()
+    {
+        return isDel;
+    }
+    public void setStationType(Long stationType)
     {
-        this.createTime = createTime;
+        this.stationType = stationType;
     }
 
-    public Date getCreateTime()
+    public Long getStationType()
+    {
+        return stationType;
+    }
+    public void setSystemPowerUuid(String systemPowerUuid)
     {
-        return createTime;
+        this.systemPowerUuid = systemPowerUuid;
     }
 
-    public void setUpdateTime(Date updateTime)
+    public String getSystemPowerUuid()
+    {
+        return systemPowerUuid;
+    }
+    public void setAreaId(String areaId)
     {
-        this.updateTime = updateTime;
+        this.areaId = areaId;
     }
 
-    public Date getUpdateTime()
+    public String getAreaId()
     {
-        return updateTime;
+        return areaId;
     }
 
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("dispatchSeq", getDispatchSeq())
-            .append("name", getName())
-            .append("activePowerCapacity", getActivePowerCapacity())
-            .append("reactivePowerCapacity", getReactivePowerCapacity())
-            .append("areaSize", getAreaSize())
-            .append("longitude", getLongitude())
-            .append("latitude", getLatitude())
-            .append("gmtBegin", getGmtBegin())
-            .append("category", getCategory())
-            .append("terrain", getTerrain())
-            .append("address", getAddress())
-            .append("remark", getRemark())
-            .append("createTime", getCreateTime())
-            .append("updateTime", getUpdateTime())
-            .toString();
+                .append("id", getId())
+                .append("stationName", getStationName())
+                .append("stationCode", getStationCode())
+                .append("superiorAreaId", getSuperiorAreaId())
+                .append("periodTotal", getPeriodTotal())
+                .append("longitude", getLongitude())
+                .append("latitude", getLatitude())
+                .append("provinceNumber", getProvinceNumber())
+                .append("cityNumber", getCityNumber())
+                .append("position", getPosition())
+                .append("installedCapacity", getInstalledCapacity())
+                .append("gridConnectedCapacity", getGridConnectedCapacity())
+                .append("fansPvPanelquantity", getFansPvPanelquantity())
+                .append("elevation", getElevation())
+                .append("operationTime", getOperationTime())
+                .append("boosterstationVoltageLevel", getBoosterstationVoltageLevel())
+                .append("boosterStationLongitude", getBoosterStationLongitude())
+                .append("boosterstationLatitude", getBoosterstationLatitude())
+                .append("responsiblePersonName", getResponsiblePersonName())
+                .append("responsiblePersonPhone", getResponsiblePersonPhone())
+                .append("isEnable", getIsEnable())
+                .append("pushStatus", getPushStatus())
+                .append("subjectTotal", getSubjectTotal())
+                .append("isFullPower", getIsFullPower())
+                .append("isDel", getIsDel())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("stationType", getStationType())
+                .append("systemPowerUuid", getSystemPowerUuid())
+                .append("areaId", getAreaId())
+                .toString();
     }
 }

+ 61 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigChannelService.java

@@ -0,0 +1,61 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigChannel;
+
+/**
+ * 通道Service接口
+ * 
+ * @author oleauto
+ * @date
+ */
+public interface IConfigChannelService 
+{
+    /**
+     * 查询通道
+     * 
+     * @param id 通道主键
+     * @return 通道
+     */
+    public ConfigChannel selectConfigChannelById(Long id);
+
+    /**
+     * 查询通道列表
+     * 
+     * @param configChannel 通道
+     * @return 通道集合
+     */
+    public List<ConfigChannel> selectConfigChannelList(ConfigChannel configChannel);
+
+    /**
+     * 新增通道
+     * 
+     * @param configChannel 通道
+     * @return 结果
+     */
+    public int insertConfigChannel(ConfigChannel configChannel);
+
+    /**
+     * 修改通道
+     * 
+     * @param configChannel 通道
+     * @return 结果
+     */
+    public int updateConfigChannel(ConfigChannel configChannel);
+
+    /**
+     * 批量删除通道
+     * 
+     * @param ids 需要删除的通道主键集合
+     * @return 结果
+     */
+    public int deleteConfigChannelByIds(Long[] ids);
+
+    /**
+     * 删除通道信息
+     * 
+     * @param id 通道主键
+     * @return 结果
+     */
+    public int deleteConfigChannelById(Long id);
+}

+ 61 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigDeviceService.java

@@ -0,0 +1,61 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigDevice;
+
+/**
+ * 设备信息Service接口
+ * 
+ * @author oleauto
+ * @date
+ */
+public interface IConfigDeviceService 
+{
+    /**
+     * 查询设备信息
+     * 
+     * @param id 设备信息主键
+     * @return 设备信息
+     */
+    public ConfigDevice selectConfigDeviceById(Long id);
+
+    /**
+     * 查询设备信息列表
+     * 
+     * @param configDevice 设备信息
+     * @return 设备信息集合
+     */
+    public List<ConfigDevice> selectConfigDeviceList(ConfigDevice configDevice);
+
+    /**
+     * 新增设备信息
+     * 
+     * @param configDevice 设备信息
+     * @return 结果
+     */
+    public int insertConfigDevice(ConfigDevice configDevice);
+
+    /**
+     * 修改设备信息
+     * 
+     * @param configDevice 设备信息
+     * @return 结果
+     */
+    public int updateConfigDevice(ConfigDevice configDevice);
+
+    /**
+     * 批量删除设备信息
+     * 
+     * @param ids 需要删除的设备信息主键集合
+     * @return 结果
+     */
+    public int deleteConfigDeviceByIds(Long[] ids);
+
+    /**
+     * 删除设备信息信息
+     * 
+     * @param id 设备信息主键
+     * @return 结果
+     */
+    public int deleteConfigDeviceById(Long id);
+}

+ 61 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigElectricityLocalService.java

@@ -0,0 +1,61 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigElectricityLocal;
+
+/**
+ * 配置data_electricity_local中的电气量来源Service接口
+ * 
+ * @author oleauto
+ * @date 2026-06-22
+ */
+public interface IConfigElectricityLocalService 
+{
+    /**
+     * 查询配置data_electricity_local中的电气量来源
+     * 
+     * @param id 配置data_electricity_local中的电气量来源主键
+     * @return 配置data_electricity_local中的电气量来源
+     */
+    public ConfigElectricityLocal selectConfigElectricityLocalById(Long id);
+
+    /**
+     * 查询配置data_electricity_local中的电气量来源列表
+     * 
+     * @param configElectricityLocal 配置data_electricity_local中的电气量来源
+     * @return 配置data_electricity_local中的电气量来源集合
+     */
+    public List<ConfigElectricityLocal> selectConfigElectricityLocalList(ConfigElectricityLocal configElectricityLocal);
+
+    /**
+     * 新增配置data_electricity_local中的电气量来源
+     * 
+     * @param configElectricityLocal 配置data_electricity_local中的电气量来源
+     * @return 结果
+     */
+    public int insertConfigElectricityLocal(ConfigElectricityLocal configElectricityLocal);
+
+    /**
+     * 修改配置data_electricity_local中的电气量来源
+     * 
+     * @param configElectricityLocal 配置data_electricity_local中的电气量来源
+     * @return 结果
+     */
+    public int updateConfigElectricityLocal(ConfigElectricityLocal configElectricityLocal);
+
+    /**
+     * 批量删除配置data_electricity_local中的电气量来源
+     * 
+     * @param ids 需要删除的配置data_electricity_local中的电气量来源主键集合
+     * @return 结果
+     */
+    public int deleteConfigElectricityLocalByIds(Long[] ids);
+
+    /**
+     * 删除配置data_electricity_local中的电气量来源信息
+     * 
+     * @param id 配置data_electricity_local中的电气量来源主键
+     * @return 结果
+     */
+    public int deleteConfigElectricityLocalById(Long id);
+}

+ 63 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigPointService.java

@@ -0,0 +1,63 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigPoint;
+
+/**
+ * 测点Service接口
+ * 
+ * @author oleauto
+ * @date
+ */
+public interface IConfigPointService 
+{
+    /**
+     * 查询测点
+     * 
+     * @param id 测点主键
+     * @return 测点
+     */
+    public ConfigPoint selectConfigPointById(Long id);
+
+    /**
+     * 查询测点列表
+     * 
+     * @param configPoint 测点
+     * @return 测点集合
+     */
+    public List<ConfigPoint> selectConfigPointList(ConfigPoint configPoint);
+
+    /**
+     * 新增测点
+     * 
+     * @param configPoint 测点
+     * @return 结果
+     */
+    public int insertConfigPoint(ConfigPoint configPoint);
+
+    /**
+     * 修改测点
+     * 
+     * @param configPoint 测点
+     * @return 结果
+     */
+    public int updateConfigPoint(ConfigPoint configPoint);
+
+    /**
+     * 批量删除测点
+     * 
+     * @param ids 需要删除的测点主键集合
+     * @return 结果
+     */
+    public int deleteConfigPointByIds(Long[] ids);
+
+    /**
+     * 删除测点信息
+     * 
+     * @param id 测点主键
+     * @return 结果
+     */
+    int deleteConfigPointById(Long id);
+
+    String importData(Long deviceId, List<ConfigPoint> configPointList, boolean updateSupport, String operName);
+}

+ 61 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigProtocolService.java

@@ -0,0 +1,61 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigProtocol;
+
+/**
+ * 协议Service接口
+ * 
+ * @author oleauto
+ * @date
+ */
+public interface IConfigProtocolService 
+{
+    /**
+     * 查询协议
+     * 
+     * @param id 协议主键
+     * @return 协议
+     */
+    public ConfigProtocol selectConfigProtocolById(Long id);
+
+    /**
+     * 查询协议列表
+     * 
+     * @param configProtocol 协议
+     * @return 协议集合
+     */
+    public List<ConfigProtocol> selectConfigProtocolList(ConfigProtocol configProtocol);
+
+    /**
+     * 新增协议
+     * 
+     * @param configProtocol 协议
+     * @return 结果
+     */
+    public int insertConfigProtocol(ConfigProtocol configProtocol);
+
+    /**
+     * 修改协议
+     * 
+     * @param configProtocol 协议
+     * @return 结果
+     */
+    public int updateConfigProtocol(ConfigProtocol configProtocol);
+
+    /**
+     * 批量删除协议
+     * 
+     * @param ids 需要删除的协议主键集合
+     * @return 结果
+     */
+    public int deleteConfigProtocolByIds(Long[] ids);
+
+    /**
+     * 删除协议信息
+     * 
+     * @param id 协议主键
+     * @return 结果
+     */
+    public int deleteConfigProtocolById(Long id);
+}

+ 61 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigStationService.java

@@ -0,0 +1,61 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigStation;
+
+/**
+ * 光伏场站Service接口
+ * 
+ * @author oleauto
+ * @date
+ */
+public interface IConfigStationService 
+{
+    /**
+     * 查询光伏场站
+     * 
+     * @param id 光伏场站主键
+     * @return 光伏场站
+     */
+    public ConfigStation selectConfigStationById(Long id);
+
+    /**
+     * 查询光伏场站列表
+     * 
+     * @param configStation 光伏场站
+     * @return 光伏场站集合
+     */
+    public List<ConfigStation> selectConfigStationList(ConfigStation configStation);
+
+    /**
+     * 新增光伏场站
+     * 
+     * @param configStation 光伏场站
+     * @return 结果
+     */
+    public int insertConfigStation(ConfigStation configStation);
+
+    /**
+     * 修改光伏场站
+     * 
+     * @param configStation 光伏场站
+     * @return 结果
+     */
+    public int updateConfigStation(ConfigStation configStation);
+
+    /**
+     * 批量删除光伏场站
+     * 
+     * @param ids 需要删除的光伏场站主键集合
+     * @return 结果
+     */
+    public int deleteConfigStationByIds(Long[] ids);
+
+    /**
+     * 删除光伏场站信息
+     * 
+     * @param id 光伏场站主键
+     * @return 结果
+     */
+    public int deleteConfigStationById(Long id);
+}

+ 61 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigTransmitService.java

@@ -0,0 +1,61 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigTransmit;
+
+/**
+ * 通信Service接口
+ * 
+ * @author oleauto
+ * @date
+ */
+public interface IConfigTransmitService 
+{
+    /**
+     * 查询通信
+     * 
+     * @param id 通信主键
+     * @return 通信
+     */
+    public ConfigTransmit selectConfigTransmitById(Long id);
+
+    /**
+     * 查询通信列表
+     * 
+     * @param configTransmit 通信
+     * @return 通信集合
+     */
+    public List<ConfigTransmit> selectConfigTransmitList(ConfigTransmit configTransmit);
+
+    /**
+     * 新增通信
+     * 
+     * @param configTransmit 通信
+     * @return 结果
+     */
+    public int insertConfigTransmit(ConfigTransmit configTransmit);
+
+    /**
+     * 修改通信
+     * 
+     * @param configTransmit 通信
+     * @return 结果
+     */
+    public int updateConfigTransmit(ConfigTransmit configTransmit);
+
+    /**
+     * 批量删除通信
+     * 
+     * @param ids 需要删除的通信主键集合
+     * @return 结果
+     */
+    public int deleteConfigTransmitByIds(Long[] ids);
+
+    /**
+     * 删除通信信息
+     * 
+     * @param id 通信主键
+     * @return 结果
+     */
+    public int deleteConfigTransmitById(Long id);
+}

+ 61 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigWeatherLocalService.java

@@ -0,0 +1,61 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigWeatherLocal;
+
+/**
+ * 配置data_electricity_local中的电气量来源Service接口
+ * 
+ * @author oleauto
+ * @date 2026-06-22
+ */
+public interface IConfigWeatherLocalService 
+{
+    /**
+     * 查询配置data_electricity_local中的电气量来源
+     * 
+     * @param id 配置data_electricity_local中的电气量来源主键
+     * @return 配置data_electricity_local中的电气量来源
+     */
+    public ConfigWeatherLocal selectConfigWeatherLocalById(Long id);
+
+    /**
+     * 查询配置data_electricity_local中的电气量来源列表
+     * 
+     * @param configWeatherLocal 配置data_electricity_local中的电气量来源
+     * @return 配置data_electricity_local中的电气量来源集合
+     */
+    public List<ConfigWeatherLocal> selectConfigWeatherLocalList(ConfigWeatherLocal configWeatherLocal);
+
+    /**
+     * 新增配置data_electricity_local中的电气量来源
+     * 
+     * @param configWeatherLocal 配置data_electricity_local中的电气量来源
+     * @return 结果
+     */
+    public int insertConfigWeatherLocal(ConfigWeatherLocal configWeatherLocal);
+
+    /**
+     * 修改配置data_electricity_local中的电气量来源
+     * 
+     * @param configWeatherLocal 配置data_electricity_local中的电气量来源
+     * @return 结果
+     */
+    public int updateConfigWeatherLocal(ConfigWeatherLocal configWeatherLocal);
+
+    /**
+     * 批量删除配置data_electricity_local中的电气量来源
+     * 
+     * @param ids 需要删除的配置data_electricity_local中的电气量来源主键集合
+     * @return 结果
+     */
+    public int deleteConfigWeatherLocalByIds(Long[] ids);
+
+    /**
+     * 删除配置data_electricity_local中的电气量来源信息
+     * 
+     * @param id 配置data_electricity_local中的电气量来源主键
+     * @return 结果
+     */
+    public int deleteConfigWeatherLocalById(Long id);
+}

+ 64 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigYkService.java

@@ -0,0 +1,64 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+
+import cn.oleauto.config.domain.ConfigYk;
+
+/**
+ * 遥控Service接口
+ * 
+ * @author oleauto
+ * @date
+ */
+public interface IConfigYkService 
+{
+    /**
+     * 查询遥控
+     * 
+     * @param id 遥控主键
+     * @return 遥控
+     */
+    public ConfigYk selectConfigYkById(Long id);
+
+    /**
+     * 查询遥控列表
+     * 
+     * @param configYk 遥控
+     * @return 遥控集合
+     */
+    public List<ConfigYk> selectConfigYkList(ConfigYk configYk);
+
+    /**
+     * 新增遥控
+     * 
+     * @param configYk 遥控
+     * @return 结果
+     */
+    public int insertConfigYk(ConfigYk configYk);
+
+    /**
+     * 修改遥控
+     * 
+     * @param configYk 遥控
+     * @return 结果
+     */
+    public int updateConfigYk(ConfigYk configYk);
+
+    /**
+     * 批量删除遥控
+     * 
+     * @param ids 需要删除的遥控主键集合
+     * @return 结果
+     */
+    public int deleteConfigYkByIds(Long[] ids);
+
+    /**
+     * 删除遥控信息
+     * 
+     * @param id 遥控主键
+     * @return 结果
+     */
+    public int deleteConfigYkById(Long id);
+
+    String importData(Long deviceId, List<ConfigYk> configPointList, boolean updateSupport, String operName);
+}

+ 63 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/IConfigYtService.java

@@ -0,0 +1,63 @@
+package cn.oleauto.config.service;
+
+import java.util.List;
+import cn.oleauto.config.domain.ConfigYt;
+
+/**
+ * 遥调Service接口
+ * 
+ * @author oleauto
+ * @date
+ */
+public interface IConfigYtService 
+{
+    /**
+     * 查询遥调
+     * 
+     * @param id 遥调主键
+     * @return 遥调
+     */
+    public ConfigYt selectConfigYtById(Long id);
+
+    /**
+     * 查询遥调列表
+     * 
+     * @param configYt 遥调
+     * @return 遥调集合
+     */
+    public List<ConfigYt> selectConfigYtList(ConfigYt configYt);
+
+    /**
+     * 新增遥调
+     * 
+     * @param configYt 遥调
+     * @return 结果
+     */
+    public int insertConfigYt(ConfigYt configYt);
+
+    /**
+     * 修改遥调
+     * 
+     * @param configYt 遥调
+     * @return 结果
+     */
+    public int updateConfigYt(ConfigYt configYt);
+
+    /**
+     * 批量删除遥调
+     * 
+     * @param ids 需要删除的遥调主键集合
+     * @return 结果
+     */
+    public int deleteConfigYtByIds(Long[] ids);
+
+    /**
+     * 删除遥调信息
+     * 
+     * @param id 遥调主键
+     * @return 结果
+     */
+    public int deleteConfigYtById(Long id);
+
+    String importData(Long deviceId, List<ConfigYt> configYkList, boolean updateSupport, String operName);
+}

+ 96 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigChannelServiceImpl.java

@@ -0,0 +1,96 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+import cn.oleauto.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigChannelMapper;
+import cn.oleauto.config.domain.ConfigChannel;
+import cn.oleauto.config.service.IConfigChannelService;
+
+/**
+ * 通道Service业务层处理
+ * 
+ * @author oleauto
+ * @date
+ */
+@Service
+public class ConfigChannelServiceImpl implements IConfigChannelService 
+{
+    @Autowired
+    private ConfigChannelMapper configChannelMapper;
+
+    /**
+     * 查询通道
+     * 
+     * @param id 通道主键
+     * @return 通道
+     */
+    @Override
+    public ConfigChannel selectConfigChannelById(Long id)
+    {
+        return configChannelMapper.selectConfigChannelById(id);
+    }
+
+    /**
+     * 查询通道列表
+     * 
+     * @param configChannel 通道
+     * @return 通道
+     */
+    @Override
+    public List<ConfigChannel> selectConfigChannelList(ConfigChannel configChannel)
+    {
+        return configChannelMapper.selectConfigChannelList(configChannel);
+    }
+
+    /**
+     * 新增通道
+     * 
+     * @param configChannel 通道
+     * @return 结果
+     */
+    @Override
+    public int insertConfigChannel(ConfigChannel configChannel)
+    {
+        configChannel.setCreateTime(DateUtils.getNowDate());
+        return configChannelMapper.insertConfigChannel(configChannel);
+    }
+
+    /**
+     * 修改通道
+     * 
+     * @param configChannel 通道
+     * @return 结果
+     */
+    @Override
+    public int updateConfigChannel(ConfigChannel configChannel)
+    {
+        configChannel.setUpdateTime(DateUtils.getNowDate());
+        return configChannelMapper.updateConfigChannel(configChannel);
+    }
+
+    /**
+     * 批量删除通道
+     * 
+     * @param ids 需要删除的通道主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigChannelByIds(Long[] ids)
+    {
+        return configChannelMapper.deleteConfigChannelByIds(ids);
+    }
+
+    /**
+     * 删除通道信息
+     * 
+     * @param id 通道主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigChannelById(Long id)
+    {
+        return configChannelMapper.deleteConfigChannelById(id);
+    }
+}

+ 93 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigDeviceServiceImpl.java

@@ -0,0 +1,93 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigDeviceMapper;
+import cn.oleauto.config.domain.ConfigDevice;
+import cn.oleauto.config.service.IConfigDeviceService;
+
+/**
+ * 设备信息Service业务层处理
+ * 
+ * @author oleauto
+ * @date
+ */
+@Service
+public class ConfigDeviceServiceImpl implements IConfigDeviceService 
+{
+    @Autowired
+    private ConfigDeviceMapper configDeviceMapper;
+
+    /**
+     * 查询设备信息
+     * 
+     * @param id 设备信息主键
+     * @return 设备信息
+     */
+    @Override
+    public ConfigDevice selectConfigDeviceById(Long id)
+    {
+        return configDeviceMapper.selectConfigDeviceById(id);
+    }
+
+    /**
+     * 查询设备信息列表
+     * 
+     * @param configDevice 设备信息
+     * @return 设备信息
+     */
+    @Override
+    public List<ConfigDevice> selectConfigDeviceList(ConfigDevice configDevice)
+    {
+        return configDeviceMapper.selectConfigDeviceList(configDevice);
+    }
+
+    /**
+     * 新增设备信息
+     * 
+     * @param configDevice 设备信息
+     * @return 结果
+     */
+    @Override
+    public int insertConfigDevice(ConfigDevice configDevice)
+    {
+        return configDeviceMapper.insertConfigDevice(configDevice);
+    }
+
+    /**
+     * 修改设备信息
+     * 
+     * @param configDevice 设备信息
+     * @return 结果
+     */
+    @Override
+    public int updateConfigDevice(ConfigDevice configDevice)
+    {
+        return configDeviceMapper.updateConfigDevice(configDevice);
+    }
+
+    /**
+     * 批量删除设备信息
+     * 
+     * @param ids 需要删除的设备信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigDeviceByIds(Long[] ids)
+    {
+        return configDeviceMapper.deleteConfigDeviceByIds(ids);
+    }
+
+    /**
+     * 删除设备信息信息
+     * 
+     * @param id 设备信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigDeviceById(Long id)
+    {
+        return configDeviceMapper.deleteConfigDeviceById(id);
+    }
+}

+ 97 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigElectricityLocalServiceImpl.java

@@ -0,0 +1,97 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+
+import cn.oleauto.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigElectricityLocalMapper;
+import cn.oleauto.config.domain.ConfigElectricityLocal;
+import cn.oleauto.config.service.IConfigElectricityLocalService;
+
+/**
+ * 配置data_electricity_local中的电气量来源Service业务层处理
+ * 
+ * @author oleauto
+ * @date 2026-06-22
+ */
+@Service
+public class ConfigElectricityLocalServiceImpl implements IConfigElectricityLocalService 
+{
+    @Autowired
+    private ConfigElectricityLocalMapper configElectricityLocalMapper;
+
+    /**
+     * 查询配置data_electricity_local中的电气量来源
+     * 
+     * @param id 配置data_electricity_local中的电气量来源主键
+     * @return 配置data_electricity_local中的电气量来源
+     */
+    @Override
+    public ConfigElectricityLocal selectConfigElectricityLocalById(Long id)
+    {
+        return configElectricityLocalMapper.selectConfigElectricityLocalById(id);
+    }
+
+    /**
+     * 查询配置data_electricity_local中的电气量来源列表
+     * 
+     * @param configElectricityLocal 配置data_electricity_local中的电气量来源
+     * @return 配置data_electricity_local中的电气量来源
+     */
+    @Override
+    public List<ConfigElectricityLocal> selectConfigElectricityLocalList(ConfigElectricityLocal configElectricityLocal)
+    {
+        return configElectricityLocalMapper.selectConfigElectricityLocalList(configElectricityLocal);
+    }
+
+    /**
+     * 新增配置data_electricity_local中的电气量来源
+     * 
+     * @param configElectricityLocal 配置data_electricity_local中的电气量来源
+     * @return 结果
+     */
+    @Override
+    public int insertConfigElectricityLocal(ConfigElectricityLocal configElectricityLocal)
+    {
+        configElectricityLocal.setCreateTime(DateUtils.getNowDate());
+        return configElectricityLocalMapper.insertConfigElectricityLocal(configElectricityLocal);
+    }
+
+    /**
+     * 修改配置data_electricity_local中的电气量来源
+     * 
+     * @param configElectricityLocal 配置data_electricity_local中的电气量来源
+     * @return 结果
+     */
+    @Override
+    public int updateConfigElectricityLocal(ConfigElectricityLocal configElectricityLocal)
+    {
+        configElectricityLocal.setUpdateTime(DateUtils.getNowDate());
+        return configElectricityLocalMapper.updateConfigElectricityLocal(configElectricityLocal);
+    }
+
+    /**
+     * 批量删除配置data_electricity_local中的电气量来源
+     * 
+     * @param ids 需要删除的配置data_electricity_local中的电气量来源主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigElectricityLocalByIds(Long[] ids)
+    {
+        return configElectricityLocalMapper.deleteConfigElectricityLocalByIds(ids);
+    }
+
+    /**
+     * 删除配置data_electricity_local中的电气量来源信息
+     * 
+     * @param id 配置data_electricity_local中的电气量来源主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigElectricityLocalById(Long id)
+    {
+        return configElectricityLocalMapper.deleteConfigElectricityLocalById(id);
+    }
+}

+ 145 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigPointServiceImpl.java

@@ -0,0 +1,145 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.oleauto.common.utils.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigPointMapper;
+import cn.oleauto.config.domain.ConfigPoint;
+import cn.oleauto.config.service.IConfigPointService;
+import org.springframework.util.Assert;
+
+/**
+ * 测点Service业务层处理
+ * 
+ * @author oleauto
+ * @date
+ */
+@Slf4j
+@Service
+public class ConfigPointServiceImpl implements IConfigPointService 
+{
+    @Autowired
+    private ConfigPointMapper configPointMapper;
+
+    /**
+     * 查询测点
+     * 
+     * @param id 测点主键
+     * @return 测点
+     */
+    @Override
+    public ConfigPoint selectConfigPointById(Long id)
+    {
+        return configPointMapper.selectConfigPointById(id);
+    }
+
+    /**
+     * 查询测点列表
+     * 
+     * @param configPoint 测点
+     * @return 测点
+     */
+    @Override
+    public List<ConfigPoint> selectConfigPointList(ConfigPoint configPoint)
+    {
+        return configPointMapper.selectConfigPointList(configPoint);
+    }
+
+    /**
+     * 新增测点
+     * 
+     * @param configPoint 测点
+     * @return 结果
+     */
+    @Override
+    public int insertConfigPoint(ConfigPoint configPoint)
+    {
+        configPoint.setCreateTime(DateUtils.getNowDate());
+        return configPointMapper.insertConfigPoint(configPoint);
+    }
+
+    /**
+     * 修改测点
+     * 
+     * @param configPoint 测点
+     * @return 结果
+     */
+    @Override
+    public int updateConfigPoint(ConfigPoint configPoint)
+    {
+        configPoint.setUpdateTime(DateUtils.getNowDate());
+        return configPointMapper.updateConfigPoint(configPoint);
+    }
+
+    /**
+     * 批量删除测点
+     * 
+     * @param ids 需要删除的测点主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigPointByIds(Long[] ids)
+    {
+        if(ArrayUtil.isEmpty(ids)){
+            return 0;
+        }
+        return configPointMapper.deleteConfigPointByIds(ids);
+    }
+
+    /**
+     * 删除测点信息
+     * 
+     * @param id 测点主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigPointById(Long id)
+    {
+        return configPointMapper.deleteConfigPointById(id);
+    }
+
+    @Override
+    public String importData(Long deviceId, List<ConfigPoint> configPointList, boolean updateSupport, String operName){
+        Assert.notNull(deviceId, "Invalid parameter");
+        // 找出属于deviceId的测点来
+        int successRows = 0;
+        StringBuilder failureMsg = new StringBuilder();
+        ConfigPoint dpQuery = new ConfigPoint();
+        dpQuery.setConfigDeviceId(deviceId);
+        List<ConfigPoint> oldConfigPoints = configPointMapper.selectConfigPointList(dpQuery);
+        for(ConfigPoint newItem : configPointList){
+            try {
+                for (ConfigPoint oldItem : oldConfigPoints) {
+                    if (Objects.equals(newItem.getAddr(), oldItem.getAddr())) {
+                        newItem.setId(oldItem.getId());
+                        newItem.setCreateTime(oldItem.getCreateTime());
+                        oldConfigPoints.remove(oldItem);
+                        break;
+                    }
+                }
+                newItem.setConfigDeviceId(deviceId);
+                if (newItem.getId() == null) {
+                    // 添加不在表中的测点
+                    insertConfigPoint(newItem);
+                } else {
+                    // 更新在表中的测点
+                    updateConfigPoint(newItem);
+                }
+                successRows++;
+            } catch (Exception ex){
+                return String.format("导入了 %d 个测点, 导入\"%s\"测点失败", successRows, newItem.getName());
+            }
+        }
+        // 删除不在新集合中的测点
+        List<Long> deleteIds = oldConfigPoints.stream().map(r -> r.getId()).collect(Collectors.toList());
+        Long[] deleteIds2 = deleteIds.toArray(new Long[0]);
+        deleteConfigPointByIds(deleteIds2);
+        return String.format("导入了 %d 个测点,并清理了测点", successRows);
+    }
+}

+ 93 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigProtocolServiceImpl.java

@@ -0,0 +1,93 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigProtocolMapper;
+import cn.oleauto.config.domain.ConfigProtocol;
+import cn.oleauto.config.service.IConfigProtocolService;
+
+/**
+ * 协议Service业务层处理
+ * 
+ * @author oleauto
+ * @date
+ */
+@Service
+public class ConfigProtocolServiceImpl implements IConfigProtocolService 
+{
+    @Autowired
+    private ConfigProtocolMapper configProtocolMapper;
+
+    /**
+     * 查询协议
+     * 
+     * @param id 协议主键
+     * @return 协议
+     */
+    @Override
+    public ConfigProtocol selectConfigProtocolById(Long id)
+    {
+        return configProtocolMapper.selectConfigProtocolById(id);
+    }
+
+    /**
+     * 查询协议列表
+     * 
+     * @param configProtocol 协议
+     * @return 协议
+     */
+    @Override
+    public List<ConfigProtocol> selectConfigProtocolList(ConfigProtocol configProtocol)
+    {
+        return configProtocolMapper.selectConfigProtocolList(configProtocol);
+    }
+
+    /**
+     * 新增协议
+     * 
+     * @param configProtocol 协议
+     * @return 结果
+     */
+    @Override
+    public int insertConfigProtocol(ConfigProtocol configProtocol)
+    {
+        return configProtocolMapper.insertConfigProtocol(configProtocol);
+    }
+
+    /**
+     * 修改协议
+     * 
+     * @param configProtocol 协议
+     * @return 结果
+     */
+    @Override
+    public int updateConfigProtocol(ConfigProtocol configProtocol)
+    {
+        return configProtocolMapper.updateConfigProtocol(configProtocol);
+    }
+
+    /**
+     * 批量删除协议
+     * 
+     * @param ids 需要删除的协议主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigProtocolByIds(Long[] ids)
+    {
+        return configProtocolMapper.deleteConfigProtocolByIds(ids);
+    }
+
+    /**
+     * 删除协议信息
+     * 
+     * @param id 协议主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigProtocolById(Long id)
+    {
+        return configProtocolMapper.deleteConfigProtocolById(id);
+    }
+}

+ 93 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigStationServiceImpl.java

@@ -0,0 +1,93 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigStationMapper;
+import cn.oleauto.config.domain.ConfigStation;
+import cn.oleauto.config.service.IConfigStationService;
+
+/**
+ * 光伏场站Service业务层处理
+ * 
+ * @author oleauto
+ * @date
+ */
+@Service
+public class ConfigStationServiceImpl implements IConfigStationService 
+{
+    @Autowired
+    private ConfigStationMapper configStationMapper;
+
+    /**
+     * 查询光伏场站
+     * 
+     * @param id 光伏场站主键
+     * @return 光伏场站
+     */
+    @Override
+    public ConfigStation selectConfigStationById(Long id)
+    {
+        return configStationMapper.selectConfigStationById(id);
+    }
+
+    /**
+     * 查询光伏场站列表
+     * 
+     * @param configStation 光伏场站
+     * @return 光伏场站
+     */
+    @Override
+    public List<ConfigStation> selectConfigStationList(ConfigStation configStation)
+    {
+        return configStationMapper.selectConfigStationList(configStation);
+    }
+
+    /**
+     * 新增光伏场站
+     * 
+     * @param configStation 光伏场站
+     * @return 结果
+     */
+    @Override
+    public int insertConfigStation(ConfigStation configStation)
+    {
+        return configStationMapper.insertConfigStation(configStation);
+    }
+
+    /**
+     * 修改光伏场站
+     * 
+     * @param configStation 光伏场站
+     * @return 结果
+     */
+    @Override
+    public int updateConfigStation(ConfigStation configStation)
+    {
+        return configStationMapper.updateConfigStation(configStation);
+    }
+
+    /**
+     * 批量删除光伏场站
+     * 
+     * @param ids 需要删除的光伏场站主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigStationByIds(Long[] ids)
+    {
+        return configStationMapper.deleteConfigStationByIds(ids);
+    }
+
+    /**
+     * 删除光伏场站信息
+     * 
+     * @param id 光伏场站主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigStationById(Long id)
+    {
+        return configStationMapper.deleteConfigStationById(id);
+    }
+}

+ 93 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigTransmitServiceImpl.java

@@ -0,0 +1,93 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigTransmitMapper;
+import cn.oleauto.config.domain.ConfigTransmit;
+import cn.oleauto.config.service.IConfigTransmitService;
+
+/**
+ * 通信Service业务层处理
+ * 
+ * @author oleauto
+ * @date
+ */
+@Service
+public class ConfigTransmitServiceImpl implements IConfigTransmitService 
+{
+    @Autowired
+    private ConfigTransmitMapper configTransmitMapper;
+
+    /**
+     * 查询通信
+     * 
+     * @param id 通信主键
+     * @return 通信
+     */
+    @Override
+    public ConfigTransmit selectConfigTransmitById(Long id)
+    {
+        return configTransmitMapper.selectConfigTransmitById(id);
+    }
+
+    /**
+     * 查询通信列表
+     * 
+     * @param configTransmit 通信
+     * @return 通信
+     */
+    @Override
+    public List<ConfigTransmit> selectConfigTransmitList(ConfigTransmit configTransmit)
+    {
+        return configTransmitMapper.selectConfigTransmitList(configTransmit);
+    }
+
+    /**
+     * 新增通信
+     * 
+     * @param configTransmit 通信
+     * @return 结果
+     */
+    @Override
+    public int insertConfigTransmit(ConfigTransmit configTransmit)
+    {
+        return configTransmitMapper.insertConfigTransmit(configTransmit);
+    }
+
+    /**
+     * 修改通信
+     * 
+     * @param configTransmit 通信
+     * @return 结果
+     */
+    @Override
+    public int updateConfigTransmit(ConfigTransmit configTransmit)
+    {
+        return configTransmitMapper.updateConfigTransmit(configTransmit);
+    }
+
+    /**
+     * 批量删除通信
+     * 
+     * @param ids 需要删除的通信主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigTransmitByIds(Long[] ids)
+    {
+        return configTransmitMapper.deleteConfigTransmitByIds(ids);
+    }
+
+    /**
+     * 删除通信信息
+     * 
+     * @param id 通信主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigTransmitById(Long id)
+    {
+        return configTransmitMapper.deleteConfigTransmitById(id);
+    }
+}

+ 97 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigWeatherLocalServiceImpl.java

@@ -0,0 +1,97 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+
+import cn.oleauto.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigWeatherLocalMapper;
+import cn.oleauto.config.domain.ConfigWeatherLocal;
+import cn.oleauto.config.service.IConfigWeatherLocalService;
+
+/**
+ * 配置data_electricity_local中的电气量来源Service业务层处理
+ * 
+ * @author oleauto
+ * @date 2026-06-22
+ */
+@Service
+public class ConfigWeatherLocalServiceImpl implements IConfigWeatherLocalService 
+{
+    @Autowired
+    private ConfigWeatherLocalMapper configWeatherLocalMapper;
+
+    /**
+     * 查询配置data_electricity_local中的电气量来源
+     * 
+     * @param id 配置data_electricity_local中的电气量来源主键
+     * @return 配置data_electricity_local中的电气量来源
+     */
+    @Override
+    public ConfigWeatherLocal selectConfigWeatherLocalById(Long id)
+    {
+        return configWeatherLocalMapper.selectConfigWeatherLocalById(id);
+    }
+
+    /**
+     * 查询配置data_electricity_local中的电气量来源列表
+     * 
+     * @param configWeatherLocal 配置data_electricity_local中的电气量来源
+     * @return 配置data_electricity_local中的电气量来源
+     */
+    @Override
+    public List<ConfigWeatherLocal> selectConfigWeatherLocalList(ConfigWeatherLocal configWeatherLocal)
+    {
+        return configWeatherLocalMapper.selectConfigWeatherLocalList(configWeatherLocal);
+    }
+
+    /**
+     * 新增配置data_electricity_local中的电气量来源
+     * 
+     * @param configWeatherLocal 配置data_electricity_local中的电气量来源
+     * @return 结果
+     */
+    @Override
+    public int insertConfigWeatherLocal(ConfigWeatherLocal configWeatherLocal)
+    {
+        configWeatherLocal.setCreateTime(DateUtils.getNowDate());
+        return configWeatherLocalMapper.insertConfigWeatherLocal(configWeatherLocal);
+    }
+
+    /**
+     * 修改配置data_electricity_local中的电气量来源
+     * 
+     * @param configWeatherLocal 配置data_electricity_local中的电气量来源
+     * @return 结果
+     */
+    @Override
+    public int updateConfigWeatherLocal(ConfigWeatherLocal configWeatherLocal)
+    {
+        configWeatherLocal.setUpdateTime(DateUtils.getNowDate());
+        return configWeatherLocalMapper.updateConfigWeatherLocal(configWeatherLocal);
+    }
+
+    /**
+     * 批量删除配置data_electricity_local中的电气量来源
+     * 
+     * @param ids 需要删除的配置data_electricity_local中的电气量来源主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigWeatherLocalByIds(Long[] ids)
+    {
+        return configWeatherLocalMapper.deleteConfigWeatherLocalByIds(ids);
+    }
+
+    /**
+     * 删除配置data_electricity_local中的电气量来源信息
+     * 
+     * @param id 配置data_electricity_local中的电气量来源主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigWeatherLocalById(Long id)
+    {
+        return configWeatherLocalMapper.deleteConfigWeatherLocalById(id);
+    }
+}

+ 161 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigYkServiceImpl.java

@@ -0,0 +1,161 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.oleauto.common.enums.ControlStepType;
+import cn.oleauto.common.utils.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigYkMapper;
+import cn.oleauto.config.domain.ConfigYk;
+import cn.oleauto.config.service.IConfigYkService;
+import org.springframework.util.Assert;
+
+/**
+ * 遥控Service业务层处理
+ * 
+ * @author oleauto
+ * @date
+ */
+@Slf4j
+@Service
+public class ConfigYkServiceImpl implements IConfigYkService 
+{
+    @Autowired
+    private ConfigYkMapper configYkMapper;
+
+    /**
+     * 查询遥控
+     * 
+     * @param id 遥控主键
+     * @return 遥控
+     */
+    @Override
+    public ConfigYk selectConfigYkById(Long id)
+    {
+        return configYkMapper.selectConfigYkById(id);
+    }
+
+    /**
+     * 查询遥控列表
+     * 
+     * @param configYk 遥控
+     * @return 遥控
+     */
+    @Override
+    public List<ConfigYk> selectConfigYkList(ConfigYk configYk)
+    {
+        return configYkMapper.selectConfigYkList(configYk);
+    }
+
+    /**
+     * 新增遥控
+     * 
+     * @param configYk 遥控
+     * @return 结果
+     */
+    @Override
+    public int insertConfigYk(ConfigYk configYk)
+    {
+        if(!checkConfigYk(configYk)){
+            return 0;
+        }
+        configYk.setCreateTime(DateUtils.getNowDate());
+        return configYkMapper.insertConfigYk(configYk);
+    }
+
+    /**
+     * 修改遥控
+     * 
+     * @param configYk 遥控
+     * @return 结果
+     */
+    @Override
+    public int updateConfigYk(ConfigYk configYk)
+    {
+        if(!checkConfigYk(configYk)){
+            return 0;
+        }
+        configYk.setUpdateTime(DateUtils.getNowDate());
+        return configYkMapper.updateConfigYk(configYk);
+    }
+
+    private boolean checkConfigYk(ConfigYk configYk){
+        if(Objects.equals(configYk.getControlStep(), ControlStepType.TWO)){
+            if(configYk.getTmOut() <= 0){
+                log.error("双步遥控超时时间必须大于0");
+                throw new IllegalArgumentException("双步遥控超时时间必须大于0");
+            }
+        }
+        return true;
+    }
+    /**
+     * 批量删除遥控
+     * 
+     * @param ids 需要删除的遥控主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigYkByIds(Long[] ids)
+    {
+        if(ArrayUtil.isEmpty(ids)) {
+            return 0;
+        }
+        return configYkMapper.deleteConfigYkByIds(ids);
+    }
+
+    /**
+     * 删除遥控信息
+     * 
+     * @param id 遥控主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigYkById(Long id)
+    {
+        return configYkMapper.deleteConfigYkById(id);
+    }
+
+    @Override
+    public String importData(Long deviceId, List<ConfigYk> configYkList, boolean updateSupport, String operName) {
+        Assert.notNull(deviceId, "Invalid parameter");
+        // 找出属于deviceId的测点来
+        int successRows = 0;
+        StringBuilder failureMsg = new StringBuilder();
+        ConfigYk dpQuery = new ConfigYk();
+        dpQuery.setConfigDeviceId(deviceId);
+        List<ConfigYk> oldConfigYks = configYkMapper.selectConfigYkList(dpQuery);
+        for(ConfigYk newItem : configYkList){
+            try {
+                for (ConfigYk oldItem : oldConfigYks) {
+                    if (Objects.equals(newItem.getAddrCode(), oldItem.getAddrCode())) {
+                        newItem.setId(oldItem.getId());
+                        newItem.setCreateTime(oldItem.getCreateTime());
+                        oldConfigYks.remove(oldItem);
+                        break;
+                    }
+                }
+                newItem.setConfigDeviceId(deviceId);
+                if (newItem.getId() == null) {
+                    // 添加不在表中的遥控
+                    insertConfigYk(newItem);
+                } else {
+                    // 更新在表中的遥控
+                    updateConfigYk(newItem);
+                }
+                successRows++;
+            } catch (Exception ex){
+                return String.format("导入了 %d 个遥控, 导入\"%s\"遥控失败", successRows, newItem.getName());
+            }
+        }
+        // 删除不在新集合中的遥控
+        List<Long> deleteIds = oldConfigYks.stream().map(r -> r.getId()).collect(Collectors.toList());
+        Long[] deleteIds2 = deleteIds.toArray(new Long[0]);
+        deleteConfigYkByIds(deleteIds2);
+        return String.format("导入了 %d 个遥控,并清理了遥控", successRows);
+    }
+}

+ 139 - 0
forecast-dao/src/main/java/cn/oleauto/config/service/impl/ConfigYtServiceImpl.java

@@ -0,0 +1,139 @@
+package cn.oleauto.config.service.impl;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import cn.oleauto.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.config.mapper.ConfigYtMapper;
+import cn.oleauto.config.domain.ConfigYt;
+import cn.oleauto.config.service.IConfigYtService;
+import org.springframework.util.Assert;
+
+/**
+ * 遥调Service业务层处理
+ * 
+ * @author oleauto
+ * @date
+ */
+@Service
+public class ConfigYtServiceImpl implements IConfigYtService 
+{
+    @Autowired
+    private ConfigYtMapper configYtMapper;
+
+    /**
+     * 查询遥调
+     * 
+     * @param id 遥调主键
+     * @return 遥调
+     */
+    @Override
+    public ConfigYt selectConfigYtById(Long id)
+    {
+        return configYtMapper.selectConfigYtById(id);
+    }
+
+    /**
+     * 查询遥调列表
+     * 
+     * @param configYt 遥调
+     * @return 遥调
+     */
+    @Override
+    public List<ConfigYt> selectConfigYtList(ConfigYt configYt)
+    {
+        return configYtMapper.selectConfigYtList(configYt);
+    }
+
+    /**
+     * 新增遥调
+     * 
+     * @param configYt 遥调
+     * @return 结果
+     */
+    @Override
+    public int insertConfigYt(ConfigYt configYt)
+    {
+        configYt.setCreateTime(DateUtils.getNowDate());
+        return configYtMapper.insertConfigYt(configYt);
+    }
+
+    /**
+     * 修改遥调
+     * 
+     * @param configYt 遥调
+     * @return 结果
+     */
+    @Override
+    public int updateConfigYt(ConfigYt configYt)
+    {
+        configYt.setUpdateTime(DateUtils.getNowDate());
+        return configYtMapper.updateConfigYt(configYt);
+    }
+
+    /**
+     * 批量删除遥调
+     * 
+     * @param ids 需要删除的遥调主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigYtByIds(Long[] ids)
+    {
+        return configYtMapper.deleteConfigYtByIds(ids);
+    }
+
+    /**
+     * 删除遥调信息
+     * 
+     * @param id 遥调主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConfigYtById(Long id)
+    {
+        return configYtMapper.deleteConfigYtById(id);
+    }
+
+    @Override
+    public String importData(Long deviceId, List<ConfigYt> configYtList, boolean updateSupport, String operName) {
+        Assert.notNull(deviceId, "Invalid parameter");
+        // 找出属于deviceId的测点来
+        int successRows = 0;
+        StringBuilder failureMsg = new StringBuilder();
+        ConfigYt dpQuery = new ConfigYt();
+        dpQuery.setConfigDeviceId(deviceId);
+        List<ConfigYt> oldConfigYts = configYtMapper.selectConfigYtList(dpQuery);
+        for(ConfigYt newItem : configYtList){
+            try {
+                for (ConfigYt oldItem : oldConfigYts) {
+                    if (Objects.equals(newItem.getAddrCode(), oldItem.getAddrCode())) {
+                        newItem.setId(oldItem.getId());
+                        newItem.setCreateTime(oldItem.getCreateTime());
+                        oldConfigYts.remove(oldItem);
+                        break;
+                    }
+                }
+                newItem.setConfigDeviceId(deviceId);
+                if (newItem.getId() == null) {
+                    // 添加不在表中的遥控
+                    insertConfigYt(newItem);
+                } else {
+                    // 更新在表中的遥控
+                    updateConfigYt(newItem);
+                }
+                successRows++;
+            } catch (Exception ex){
+                return String.format("导入了 %d 个遥调, 导入\"%s\"遥调失败", successRows, newItem.getName());
+            }
+        }
+        // 删除不在新集合中的遥控
+        List<Long> deleteIds = oldConfigYts.stream().map(r -> r.getId()).collect(Collectors.toList());
+        Long[] deleteIds2 = deleteIds.toArray(new Long[0]);
+        deleteConfigYtByIds(deleteIds2);
+        return String.format("导入了 %d 个遥控,并清理了遥调", successRows);
+    }
+}

+ 107 - 0
forecast-dao/src/main/java/cn/oleauto/data/controller/DataElectricityLocalController.java

@@ -0,0 +1,107 @@
+package cn.oleauto.data.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.core.page.TableDataInfo;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.data.domain.DataElectricityLocal;
+import cn.oleauto.data.service.IDataElectricityLocalService;
+
+
+/**
+ * 功率采样数据Controller
+ * 
+ * @author oleauto
+ * @date 2026-06-24
+ */
+@RestController
+@RequestMapping("/data/DataElectricityLocal")
+public class DataElectricityLocalController extends BaseController
+{
+    @Autowired
+    private IDataElectricityLocalService dataElectricityLocalService;
+
+    /**
+     * 查询功率采样数据列表
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataElectricityLocal:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DataElectricityLocal dataElectricityLocal)
+    {
+        startPage();
+        List<DataElectricityLocal> list = dataElectricityLocalService.selectDataElectricityLocalList(dataElectricityLocal);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出功率采样数据列表
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataElectricityLocal:export')")
+    @Log(title = "功率采样数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DataElectricityLocal dataElectricityLocal)
+    {
+        List<DataElectricityLocal> list = dataElectricityLocalService.selectDataElectricityLocalList(dataElectricityLocal);
+        ExcelUtil<DataElectricityLocal> util = new ExcelUtil<DataElectricityLocal>(DataElectricityLocal.class);
+        util.exportExcel(response, list, "功率采样数据数据");
+    }
+
+    /**
+     * 获取功率采样数据详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataElectricityLocal:query')")
+    @GetMapping(value = "/{tm}")
+    public AjaxResult getInfo(@PathVariable("tm") Date tm)
+    {
+        return success(dataElectricityLocalService.selectDataElectricityLocalByTm(tm));
+    }
+
+    /**
+     * 新增功率采样数据
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataElectricityLocal:add')")
+    @Log(title = "功率采样数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DataElectricityLocal dataElectricityLocal)
+    {
+        return toAjax(dataElectricityLocalService.insertDataElectricityLocal(dataElectricityLocal));
+    }
+
+    /**
+     * 修改功率采样数据
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataElectricityLocal:edit')")
+    @Log(title = "功率采样数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DataElectricityLocal dataElectricityLocal)
+    {
+        return toAjax(dataElectricityLocalService.updateDataElectricityLocal(dataElectricityLocal));
+    }
+
+    /**
+     * 删除功率采样数据
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataElectricityLocal:remove')")
+    @Log(title = "功率采样数据", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{tms}")
+    public AjaxResult remove(@PathVariable Date[] tms)
+    {
+        return toAjax(dataElectricityLocalService.deleteDataElectricityLocalByTms(tms));
+    }
+}

+ 106 - 0
forecast-dao/src/main/java/cn/oleauto/data/controller/DataWeatherLocalController.java

@@ -0,0 +1,106 @@
+package cn.oleauto.data.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import cn.oleauto.common.annotation.Log;
+import cn.oleauto.common.core.controller.BaseController;
+import cn.oleauto.common.core.domain.AjaxResult;
+import cn.oleauto.common.core.page.TableDataInfo;
+import cn.oleauto.common.enums.BusinessType;
+import cn.oleauto.common.utils.poi.ExcelUtil;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.oleauto.data.domain.DataWeatherLocal;
+import cn.oleauto.data.service.IDataWeatherLocalService;
+
+/**
+ * 本地气象采样数据Controller
+ * 
+ * @author oleauto
+ * @date 2026-06-24
+ */
+@RestController
+@RequestMapping("/data/DataWeatherLocal")
+public class DataWeatherLocalController extends BaseController
+{
+    @Autowired
+    private IDataWeatherLocalService dataWeatherLocalService;
+
+    /**
+     * 查询本地气象采样数据列表
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataWeatherLocal:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DataWeatherLocal dataWeatherLocal)
+    {
+        startPage();
+        List<DataWeatherLocal> list = dataWeatherLocalService.selectDataWeatherLocalList(dataWeatherLocal);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出本地气象采样数据列表
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataWeatherLocal:export')")
+    @Log(title = "本地气象采样数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DataWeatherLocal dataWeatherLocal)
+    {
+        List<DataWeatherLocal> list = dataWeatherLocalService.selectDataWeatherLocalList(dataWeatherLocal);
+        ExcelUtil<DataWeatherLocal> util = new ExcelUtil<DataWeatherLocal>(DataWeatherLocal.class);
+        util.exportExcel(response, list, "本地气象采样数据数据");
+    }
+
+    /**
+     * 获取本地气象采样数据详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataWeatherLocal:query')")
+    @GetMapping(value = "/{tm}")
+    public AjaxResult getInfo(@PathVariable("tm") Date tm)
+    {
+        return success(dataWeatherLocalService.selectDataWeatherLocalByTm(tm));
+    }
+
+    /**
+     * 新增本地气象采样数据
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataWeatherLocal:add')")
+    @Log(title = "本地气象采样数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DataWeatherLocal dataWeatherLocal)
+    {
+        return toAjax(dataWeatherLocalService.insertDataWeatherLocal(dataWeatherLocal));
+    }
+
+    /**
+     * 修改本地气象采样数据
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataWeatherLocal:edit')")
+    @Log(title = "本地气象采样数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DataWeatherLocal dataWeatherLocal)
+    {
+        return toAjax(dataWeatherLocalService.updateDataWeatherLocal(dataWeatherLocal));
+    }
+
+    /**
+     * 删除本地气象采样数据
+     */
+    @PreAuthorize("@ss.hasPermi('data:DataWeatherLocal:remove')")
+    @Log(title = "本地气象采样数据", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{tms}")
+    public AjaxResult remove(@PathVariable Date[] tms)
+    {
+        return toAjax(dataWeatherLocalService.deleteDataWeatherLocalByTms(tms));
+    }
+}

+ 62 - 0
forecast-dao/src/main/java/cn/oleauto/data/mapper/DataElectricityLocalMapper.java

@@ -0,0 +1,62 @@
+package cn.oleauto.data.mapper;
+
+import java.util.Date;
+import java.util.List;
+import cn.oleauto.data.domain.DataElectricityLocal;
+
+/**
+ * 功率采样数据Mapper接口
+ * 
+ * @author oleauto
+ * @date 2026-06-24
+ */
+public interface DataElectricityLocalMapper 
+{
+    /**
+     * 查询功率采样数据
+     * 
+     * @param tm 功率采样数据主键
+     * @return 功率采样数据
+     */
+    public DataElectricityLocal selectDataElectricityLocalByTm(Date tm);
+
+    /**
+     * 查询功率采样数据列表
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 功率采样数据集合
+     */
+    public List<DataElectricityLocal> selectDataElectricityLocalList(DataElectricityLocal dataElectricityLocal);
+
+    /**
+     * 新增功率采样数据
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 结果
+     */
+    public int insertDataElectricityLocal(DataElectricityLocal dataElectricityLocal);
+
+    /**
+     * 修改功率采样数据
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 结果
+     */
+    public int updateDataElectricityLocal(DataElectricityLocal dataElectricityLocal);
+
+    /**
+     * 删除功率采样数据
+     * 
+     * @param tm 功率采样数据主键
+     * @return 结果
+     */
+    public int deleteDataElectricityLocalByTm(Date tm);
+
+    /**
+     * 批量删除功率采样数据
+     * 
+     * @param tms 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDataElectricityLocalByTms(Date[] tms);
+}

+ 62 - 0
forecast-dao/src/main/java/cn/oleauto/data/mapper/DataWeatherLocalMapper.java

@@ -0,0 +1,62 @@
+package cn.oleauto.data.mapper;
+
+import java.util.Date;
+import java.util.List;
+import cn.oleauto.data.domain.DataWeatherLocal;
+
+/**
+ * 本地气象采样数据Mapper接口
+ * 
+ * @author oleauto
+ * @date 2026-06-24
+ */
+public interface DataWeatherLocalMapper 
+{
+    /**
+     * 查询本地气象采样数据
+     * 
+     * @param tm 本地气象采样数据主键
+     * @return 本地气象采样数据
+     */
+    public DataWeatherLocal selectDataWeatherLocalByTm(Date tm);
+
+    /**
+     * 查询本地气象采样数据列表
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 本地气象采样数据集合
+     */
+    public List<DataWeatherLocal> selectDataWeatherLocalList(DataWeatherLocal dataWeatherLocal);
+
+    /**
+     * 新增本地气象采样数据
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 结果
+     */
+    public int insertDataWeatherLocal(DataWeatherLocal dataWeatherLocal);
+
+    /**
+     * 修改本地气象采样数据
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 结果
+     */
+    public int updateDataWeatherLocal(DataWeatherLocal dataWeatherLocal);
+
+    /**
+     * 删除本地气象采样数据
+     * 
+     * @param tm 本地气象采样数据主键
+     * @return 结果
+     */
+    public int deleteDataWeatherLocalByTm(Date tm);
+
+    /**
+     * 批量删除本地气象采样数据
+     * 
+     * @param tms 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDataWeatherLocalByTms(Date[] tms);
+}

+ 62 - 0
forecast-dao/src/main/java/cn/oleauto/data/service/IDataElectricityLocalService.java

@@ -0,0 +1,62 @@
+package cn.oleauto.data.service;
+
+import java.util.Date;
+import java.util.List;
+import cn.oleauto.data.domain.DataElectricityLocal;
+
+/**
+ * 功率采样数据Service接口
+ * 
+ * @author oleauto
+ * @date 2026-06-24
+ */
+public interface IDataElectricityLocalService 
+{
+    /**
+     * 查询功率采样数据
+     * 
+     * @param tm 功率采样数据主键
+     * @return 功率采样数据
+     */
+    public DataElectricityLocal selectDataElectricityLocalByTm(Date tm);
+
+    /**
+     * 查询功率采样数据列表
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 功率采样数据集合
+     */
+    public List<DataElectricityLocal> selectDataElectricityLocalList(DataElectricityLocal dataElectricityLocal);
+
+    /**
+     * 新增功率采样数据
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 结果
+     */
+    public int insertDataElectricityLocal(DataElectricityLocal dataElectricityLocal);
+
+    /**
+     * 修改功率采样数据
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 结果
+     */
+    public int updateDataElectricityLocal(DataElectricityLocal dataElectricityLocal);
+
+    /**
+     * 批量删除功率采样数据
+     * 
+     * @param tms 需要删除的功率采样数据主键集合
+     * @return 结果
+     */
+    public int deleteDataElectricityLocalByTms(Date[] tms);
+
+    /**
+     * 删除功率采样数据信息
+     * 
+     * @param tm 功率采样数据主键
+     * @return 结果
+     */
+    public int deleteDataElectricityLocalByTm(Date tm);
+}

+ 62 - 0
forecast-dao/src/main/java/cn/oleauto/data/service/IDataWeatherLocalService.java

@@ -0,0 +1,62 @@
+package cn.oleauto.data.service;
+
+import java.util.Date;
+import java.util.List;
+import cn.oleauto.data.domain.DataWeatherLocal;
+
+/**
+ * 本地气象采样数据Service接口
+ * 
+ * @author oleauto
+ * @date 2026-06-24
+ */
+public interface IDataWeatherLocalService 
+{
+    /**
+     * 查询本地气象采样数据
+     * 
+     * @param tm 本地气象采样数据主键
+     * @return 本地气象采样数据
+     */
+    public DataWeatherLocal selectDataWeatherLocalByTm(Date tm);
+
+    /**
+     * 查询本地气象采样数据列表
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 本地气象采样数据集合
+     */
+    public List<DataWeatherLocal> selectDataWeatherLocalList(DataWeatherLocal dataWeatherLocal);
+
+    /**
+     * 新增本地气象采样数据
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 结果
+     */
+    public int insertDataWeatherLocal(DataWeatherLocal dataWeatherLocal);
+
+    /**
+     * 修改本地气象采样数据
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 结果
+     */
+    public int updateDataWeatherLocal(DataWeatherLocal dataWeatherLocal);
+
+    /**
+     * 批量删除本地气象采样数据
+     * 
+     * @param tms 需要删除的本地气象采样数据主键集合
+     * @return 结果
+     */
+    public int deleteDataWeatherLocalByTms(Date[] tms);
+
+    /**
+     * 删除本地气象采样数据信息
+     * 
+     * @param tm 本地气象采样数据主键
+     * @return 结果
+     */
+    public int deleteDataWeatherLocalByTm(Date tm);
+}

+ 94 - 0
forecast-dao/src/main/java/cn/oleauto/data/service/impl/DataElectricityLocalServiceImpl.java

@@ -0,0 +1,94 @@
+package cn.oleauto.data.service.impl;
+
+import java.util.Date;
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.data.mapper.DataElectricityLocalMapper;
+import cn.oleauto.data.domain.DataElectricityLocal;
+import cn.oleauto.data.service.IDataElectricityLocalService;
+
+/**
+ * 功率采样数据Service业务层处理
+ * 
+ * @author oleauto
+ * @date 2026-06-24
+ */
+@Service
+public class DataElectricityLocalServiceImpl implements IDataElectricityLocalService 
+{
+    @Autowired
+    private DataElectricityLocalMapper dataElectricityLocalMapper;
+
+    /**
+     * 查询功率采样数据
+     * 
+     * @param tm 功率采样数据主键
+     * @return 功率采样数据
+     */
+    @Override
+    public DataElectricityLocal selectDataElectricityLocalByTm(Date tm)
+    {
+        return dataElectricityLocalMapper.selectDataElectricityLocalByTm(tm);
+    }
+
+    /**
+     * 查询功率采样数据列表
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 功率采样数据
+     */
+    @Override
+    public List<DataElectricityLocal> selectDataElectricityLocalList(DataElectricityLocal dataElectricityLocal)
+    {
+        return dataElectricityLocalMapper.selectDataElectricityLocalList(dataElectricityLocal);
+    }
+
+    /**
+     * 新增功率采样数据
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 结果
+     */
+    @Override
+    public int insertDataElectricityLocal(DataElectricityLocal dataElectricityLocal)
+    {
+        return dataElectricityLocalMapper.insertDataElectricityLocal(dataElectricityLocal);
+    }
+
+    /**
+     * 修改功率采样数据
+     * 
+     * @param dataElectricityLocal 功率采样数据
+     * @return 结果
+     */
+    @Override
+    public int updateDataElectricityLocal(DataElectricityLocal dataElectricityLocal)
+    {
+        return dataElectricityLocalMapper.updateDataElectricityLocal(dataElectricityLocal);
+    }
+
+    /**
+     * 批量删除功率采样数据
+     * 
+     * @param tms 需要删除的功率采样数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDataElectricityLocalByTms(Date[] tms)
+    {
+        return dataElectricityLocalMapper.deleteDataElectricityLocalByTms(tms);
+    }
+
+    /**
+     * 删除功率采样数据信息
+     * 
+     * @param tm 功率采样数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDataElectricityLocalByTm(Date tm)
+    {
+        return dataElectricityLocalMapper.deleteDataElectricityLocalByTm(tm);
+    }
+}

+ 94 - 0
forecast-dao/src/main/java/cn/oleauto/data/service/impl/DataWeatherLocalServiceImpl.java

@@ -0,0 +1,94 @@
+package cn.oleauto.data.service.impl;
+
+import java.util.Date;
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.oleauto.data.mapper.DataWeatherLocalMapper;
+import cn.oleauto.data.domain.DataWeatherLocal;
+import cn.oleauto.data.service.IDataWeatherLocalService;
+
+/**
+ * 本地气象采样数据Service业务层处理
+ * 
+ * @author oleauto
+ * @date 2026-06-24
+ */
+@Service
+public class DataWeatherLocalServiceImpl implements IDataWeatherLocalService 
+{
+    @Autowired
+    private DataWeatherLocalMapper dataWeatherLocalMapper;
+
+    /**
+     * 查询本地气象采样数据
+     * 
+     * @param tm 本地气象采样数据主键
+     * @return 本地气象采样数据
+     */
+    @Override
+    public DataWeatherLocal selectDataWeatherLocalByTm(Date tm)
+    {
+        return dataWeatherLocalMapper.selectDataWeatherLocalByTm(tm);
+    }
+
+    /**
+     * 查询本地气象采样数据列表
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 本地气象采样数据
+     */
+    @Override
+    public List<DataWeatherLocal> selectDataWeatherLocalList(DataWeatherLocal dataWeatherLocal)
+    {
+        return dataWeatherLocalMapper.selectDataWeatherLocalList(dataWeatherLocal);
+    }
+
+    /**
+     * 新增本地气象采样数据
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 结果
+     */
+    @Override
+    public int insertDataWeatherLocal(DataWeatherLocal dataWeatherLocal)
+    {
+        return dataWeatherLocalMapper.insertDataWeatherLocal(dataWeatherLocal);
+    }
+
+    /**
+     * 修改本地气象采样数据
+     * 
+     * @param dataWeatherLocal 本地气象采样数据
+     * @return 结果
+     */
+    @Override
+    public int updateDataWeatherLocal(DataWeatherLocal dataWeatherLocal)
+    {
+        return dataWeatherLocalMapper.updateDataWeatherLocal(dataWeatherLocal);
+    }
+
+    /**
+     * 批量删除本地气象采样数据
+     * 
+     * @param tms 需要删除的本地气象采样数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDataWeatherLocalByTms(Date[] tms)
+    {
+        return dataWeatherLocalMapper.deleteDataWeatherLocalByTms(tms);
+    }
+
+    /**
+     * 删除本地气象采样数据信息
+     * 
+     * @param tm 本地气象采样数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDataWeatherLocalByTm(Date tm)
+    {
+        return dataWeatherLocalMapper.deleteDataWeatherLocalByTm(tm);
+    }
+}