This commit is contained in:
2026-07-25 14:25:26 +08:00
parent d27cf48571
commit b461169df5
34 changed files with 1782 additions and 1 deletions

View File

@@ -0,0 +1,19 @@
package com.njcn.relational.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.relational.pojo.po.LineBak;
/**
* <p>
* Mapper 接口
* </p>
*
* @author cdf
* @since 2022-01-04
*/
public interface LineBakMapper extends BaseMapper<LineBak> {
}

View File

@@ -0,0 +1,25 @@
package com.njcn.relational.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.relational.pojo.po.LineDetail;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author cdf
* @since 2022-01-04
*/
public interface LineDetailMapper extends BaseMapper<LineDetail> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.relational.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.relational.pojo.po.Line;
/**
* <p>
* Mapper 接口
* </p>
*
* @author cdf
* @since 2022-01-04
*/
public interface LineMapper extends BaseMapper<Line> {
}

View File

@@ -0,0 +1,10 @@
package com.njcn.relational.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.relational.pojo.po.SgConPlantBNewenergy;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SgConPlantBNewenergyMapper extends BaseMapper<SgConPlantBNewenergy> {
}

View File

@@ -0,0 +1,10 @@
package com.njcn.relational.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.relational.pojo.po.SgDevAclineB;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SgDevAclineBMapper extends BaseMapper<SgDevAclineB> {
}

View File

@@ -0,0 +1,11 @@
package com.njcn.relational.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.relational.pojo.po.SupervisionUserReportBak;
/**
* 监测对象中间关系表 Mapper
*/
public interface SupervisionUserReportBakMapper extends BaseMapper<SupervisionUserReportBak> {
}

View File

@@ -0,0 +1,10 @@
package com.njcn.relational.mapper;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.relational.pojo.po.UserReportBakPO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserReportBakMapper extends MppBaseMapper<UserReportBakPO> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.relational.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.relational.pojo.po.UserReportPO;
/**
*
* Description:
* Date: 2024/4/25 10:07【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface UserReportPOMapper extends BaseMapper<UserReportPO> {
}

View File

@@ -82,4 +82,26 @@ public class DcloudSyncQuery {
query.setPropertyList("D5000_ID,D5000_NAME,DCC_ID,DCLOUD_ID,DCLOUD_NAME,DCLOUD_VOLTAGELEVEL,OMS_ID,OMS_NAME,OWNER,PMS_ID,PSDB_DEV_TYPE,PSDB_ID,PSDB_NAME,SETTING_ID,SETTING_NAME,STATUS"); query.setPropertyList("D5000_ID,D5000_NAME,DCC_ID,DCLOUD_ID,DCLOUD_NAME,DCLOUD_VOLTAGELEVEL,OMS_ID,OMS_NAME,OWNER,PMS_ID,PSDB_DEV_TYPE,PSDB_ID,PSDB_NAME,SETTING_ID,SETTING_NAME,STATUS");
return query; return query;
} }
public static DcloudSyncQuery buildSgConPlantBNewenergy(String filter, String orderStr, Integer pageIndex, Integer pageSize) {
DcloudSyncQuery query = new DcloudSyncQuery();
query.setTableName("SG_CON_PLANT_B_NEWENERGY");
query.setFilter(filter);
query.setOrderStr(orderStr);
query.setPageIndex(pageIndex);
query.setPageSize(pageSize);
query.setPropertyList("ID,COMPENSATION_VAR_CAP,CONNECTIVE_STATION_ID,ENERGY_STORAGE_CAPACITY,ENERGY_STORAGE_DEVICE_COUNT,INVERTER_COUNT,OWNER,STAMP,TYPE_NUM,WINDTURBINE_NUM,GROUND_TYPE,FILT_NUM,HOUR_NUM,WINDTOWER_NUM,PHOTOMETER_NUM,WINDRANGE,INSTALL_LOCATION");
return query;
}
public static DcloudSyncQuery buildSgSgDevAclineB(String filter, String orderStr, Integer pageIndex, Integer pageSize) {
DcloudSyncQuery query = new DcloudSyncQuery();
query.setTableName("SG_DEV_ACLINE_B");
query.setFilter(filter);
query.setOrderStr(orderStr);
query.setPageIndex(pageIndex);
query.setPageSize(pageSize);
query.setPropertyList("ID,NAME,VOLTAGE_TYPE,GRID_ID,SUPPLIER_ID,SYS_FLAG,TAG,ASSETS_COMPANY_ID,CHECK_CODE,COMPACT_ZONE,DEV_ID,DISPATCH_ORG_ID,START_BAY_ID,START_ST_ID,START_TOWER_ID,END_BAY_ID,END_ST_ID,END_TOWER_ID,ERECTINGMETHOD,EXPIRY_DATE,OFF_TIME,ON_TIME,OPERATE_DATE,OWNER,RUNNING_STATE,STAMP,ISOPTICFIBEREQUIPED,IS_COMPACT,LENGTH,LICENSE_ORG_ID,LINETYPE,MEMBER_FEATURE_TAG,STRIDE_FEATURE_TAG");
return query;
}
} }

View File

@@ -0,0 +1,71 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.relational.pojo.bo.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author cdf
* @since 2022-01-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("pq_line")
public class Line extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 监测点Id
*/
private String id;
/**
* 父节点0为根节点
*/
private String pid;
/**
* 上层所有节点
*/
private String pids;
/**
* 名称
*/
private String name;
/**
* 等级0-项目名称1- 工程名称2-单位3-部门4-终端5-母线6-监测点
*/
private Integer level;
/**
* 排序默认为0有特殊排序需要时候人为输入
*/
private Integer sort;
/**
* 备注
*/
private String remark;
/**
* 状态 0-删除1-正常;默认正常
*/
private Integer state;
@TableField(exist = false)
private List<Line> children;
}

View File

@@ -0,0 +1,31 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* <p>
* </p>
*
* @author cdf
* @since 2022-01-04
*/
@Data
@TableName("pq_line_bak")
public class LineBak {
private static final long serialVersionUID = 1L;
/**
* 监测点Id
*/
private String id;
/**
* 原始监测点Id
*/
private Integer lineId;
}

View File

@@ -0,0 +1,217 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* <p>
*
* </p>
*
* @author cdf
* @since 2022-01-04
*/
@Data
@TableName("pq_line_detail")
public class LineDetail {
private static final long serialVersionUID = 1L;
/**
* 监测点序号
*/
@TableId
private String id;
@TableField(exist = false)
private String monitorName;
/**
* 线路号(在同一台设备中的监测点号)
*/
private Integer num;
/**
* PT一次变比
*/
private Float pt1;
/**
* PT二次变比
*/
private Float pt2;
/**
* CT一次变比
*/
private Float ct1;
/**
* CT二次变比
*/
private Float ct2;
/**
* 设备容量
*/
private Float devCapacity;
/**
* 短路容量
*/
private Float shortCapacity;
/**
* 基准容量
*/
private Float standardCapacity;
/**
* 协议容量
*/
private Float dealCapacity;
/**
* 接线类型(0:星型接法;1:三角型接法;2:开口三角型接法)
*/
private Integer ptType;
/**
* 测量间隔1-10分钟
*/
private Integer timeInterval;
/**
* 干扰源类型,字典表
*/
private String loadType;
/**
* 行业类型,字典表
*/
private String businessType;
/**
* 网公司谐波监测平台标志(0-否;1-是),默认否
*/
private Integer monitorFlag;
/**
* 电网标志0-电网侧1-非电网侧)
*/
private Integer powerFlag;
/**
* 国网谐波监测平台监测点号
*/
private String monitorId;
/**
* 监测点对象名称
*/
private String objName;
/**
* 监测点对象id
*/
private String objId;
/**
* 监测对象大类
*/
private String bigObjType;
/**
* 监测对象小类
*/
private String smallObjType;
/**
* 人为干预 0 不参与统计 1 参与统计
*/
private Integer statFlag;
/**
* 关联字典的终端等级
*/
private String lineGrade;
/**
* 备注
*/
private String remark;
/**
* 电网侧变电站
*/
private String powerSubstationName;
/**
* 分类等级
*/
private String calssificationGrade;
/**
* 上级电站
*/
@Deprecated
private String superiorsSubstation;
/**
* 挂接线路
*/
@Deprecated
private String hangLine;
/**
* 监测点拥有者
*/
private String owner;
/**
* 拥有者职务
*/
private String ownerDuty;
/**
* 拥有者联系方式
*/
private String ownerTel;
/**
* 接线图
*/
private String wiringDiagram;
/**
* 监测点接线相别0单相,1三相默认三相
*/
private Integer ptPhaseType;
/**
* 监测点实际安装位置
*/
private String actualArea;
/**
* 监测点运行状态0运行1检修2停运3调试4退运
*/
private Integer runFlag;
/**
* 新能源场站信息ID
*/
@Deprecated
private String newStationId;
/**
* 通讯状态
*/
@TableField(exist = false)
private Integer comFlag;
}

View File

@@ -0,0 +1,121 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.Data;
/**
* 新能源发电厂基础信息
* 表名SG_CON_PLANT_B_NEWENERGY
*/
@Data
@TableName("SG_CON_PLANT_B_NEWENERGY")
public class SgConPlantBNewenergy implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 电站ID主键
*/
@TableId("ID")
private String id;
/**
* 无功补偿容量(Mvar)
*/
@TableField("COMPENSATION_VAR_CAP")
private BigDecimal compensationVarCap;
/**
* 并网变电站ID引用变电站基本信息表
*/
@TableField("CONNECTIVE_STATION_ID")
private String connectiveStationId;
/**
* 储能容量(MW)
*/
@TableField("ENERGY_STORAGE_CAPACITY")
private BigDecimal energyStorageCapacity;
/**
* 储能设备台数
*/
@TableField("ENERGY_STORAGE_DEVICE_COUNT")
private Integer energyStorageDeviceCount;
/**
* 逆变器台数
*/
@TableField("INVERTER_COUNT")
private Integer inverterCount;
/**
* 拥有者
*/
@TableField("OWNER")
private String owner;
/**
* 更新标志:机构代码+人员代码+时间
*/
@TableField("STAMP")
private String stamp;
/**
* 逆变器或风机类型数
*/
@TableField("TYPE_NUM")
private Integer typeNum;
/**
* 风机台数
*/
@TableField("WINDTURBINE_NUM")
private Integer windturbineNum;
/**
* 汇集系统中性点接地方式
*/
@TableField("GROUND_TYPE")
private Integer groundType;
/**
* 滤波器组数
*/
@TableField("FILT_NUM")
private Integer filtNum;
/**
* 设计利用小时数
*/
@TableField("HOUR_NUM")
private BigDecimal hourNum;
/**
* 测风塔数量
*/
@TableField("WINDTOWER_NUM")
private Integer windtowerNum;
/**
* 测光检测仪器数量
*/
@TableField("PHOTOMETER_NUM")
private Integer photometerNum;
/**
* 风电布置类型
*/
@TableField("WINDRANGE")
private Integer windrange;
/**
* 风电场安装位置
*/
@TableField("INSTALL_LOCATION")
private Integer installLocation;
}

View File

@@ -0,0 +1,223 @@
package com.njcn.relational.pojo.po;
/**
* @Author: cdf
* @CreateTime: 2026-07-22
* @Description:
*/
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* 交流线路基础信息
* 表名SG_DEV_ACLINE_B
*/
@Data
@TableName("SG_DEV_ACLINE_B")
public class SgDevAclineB implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID 主键
*/
@TableId("ID")
private String id;
/**
* 线路名称
*/
@TableField("NAME")
private String name;
/**
* 电压等级
*/
@TableField("VOLTAGE_TYPE")
private Integer voltageType;
/**
* 所属电网
*/
@TableField("GRID_ID")
private String gridId;
/**
* 生产厂家
*/
@TableField("SUPPLIER_ID")
private String supplierId;
/**
* 系统属性
*/
@TableField("SYS_FLAG")
private String sysFlag;
/**
* 标签
*/
@TableField("TAG")
private String tag;
/**
* 资产单位
*/
@TableField("ASSETS_COMPANY_ID")
private String assetsCompanyId;
/**
* 校验码
*/
@TableField("CHECK_CODE")
private String checkCode;
/**
* 紧凑型区段
*/
@TableField("COMPACT_ZONE")
private String compactZone;
/**
* 设备ID
*/
@TableField("DEV_ID")
private String devId;
/**
* 调度机构
*/
@TableField("DISPATCH_ORG_ID")
private String dispatchOrgId;
/**
* 起点所属间隔
*/
@TableField("START_BAY_ID")
private String startBayId;
/**
* 起点厂站
*/
@TableField("START_ST_ID")
private String startStId;
/**
* 起点杆塔
*/
@TableField("START_TOWER_ID")
private String startTowerId;
/**
* 终点所属间隔
*/
@TableField("END_BAY_ID")
private String endBayId;
/**
* 终点厂站
*/
@TableField("END_ST_ID")
private String endStId;
/**
* 终点杆塔
*/
@TableField("END_TOWER_ID")
private String endTowerId;
/**
* 架设方式
*/
@TableField("ERECTINGMETHOD")
private Integer erectingmethod;
/**
* 退役日期
*/
@TableField("EXPIRY_DATE")
private String expiryDate;
/**
* 失效时间
*/
@TableField("OFF_TIME")
private String offTime;
/**
* 生效时间
*/
@TableField("ON_TIME")
private String onTime;
/**
* 投运日期
*/
@TableField("OPERATE_DATE")
private String operateDate;
/**
* 拥有者
*/
@TableField("OWNER")
private String owner;
/**
* 运行状态
*/
@TableField("RUNNING_STATE")
private Integer runningState;
/**
* 更新标志
*/
@TableField("STAMP")
private String stamp;
/**
* 光纤类型
*/
@TableField("ISOPTICFIBEREQUIPED")
private String isopticfiberequiped;
/**
* 是否紧凑型
*/
@TableField("IS_COMPACT")
private String isCompact;
/**
* 线路全长(km)
*/
@TableField("LENGTH")
private BigDecimal length;
/**
* 许可机构
*/
@TableField("LICENSE_ORG_ID")
private String licenseOrgId;
/**
* 线路类型
*/
@TableField("LINETYPE")
private Integer linetype;
/**
* 成员特征标签
*/
@TableField("MEMBER_FEATURE_TAG")
private String memberFeatureTag;
/**
* 跨域特征标签
*/
@TableField("STRIDE_FEATURE_TAG")
private String strideFeatureTag;
}

View File

@@ -0,0 +1,30 @@
package com.njcn.relational.pojo.po;
/**
* @Author: cdf
* @CreateTime: 2026-07-23
* @Description:
*/
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 监测对象中间关系表
*/
@Data
@TableName("SUPERVISION_USER_REPORT_BAK")
public class SupervisionUserReportBak {
/**
* 本地系统监测对象id
*/
private String userId;
/**
* 其他系统监测对象id
*/
private String midId;
}

View File

@@ -0,0 +1,29 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
/**
* @Author: cdf
* @CreateTime: 2026-07-25
* @Description:
*/
@Data
@TableName("user_report_bak")
public class UserReportBakPO {
/**
* 用户id
*/
@MppMultiId
private String userId;
/**
* 中间表id
*/
@MppMultiId
private String midId;
}

View File

@@ -0,0 +1,182 @@
package com.njcn.relational.pojo.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.relational.pojo.bo.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
*
* Description:
* Date: 2024/4/25 10:07【需求编号】
*
* @author clam
* @version V1.0.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "supervision_user_report")
public class UserReportPO extends BaseEntity {
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 填报人
*/
@TableField(value = "reporter")
private String reporter;
/**
* 填报日期
*/
@TableField(value = "report_date")
private LocalDate reportDate;
/**
* 填报部门
*/
@TableField(value = "org_id")
private String orgId;
/**
* 工程预期投产日期
*/
@TableField(value = "expected_production_date")
private LocalDate expectedProductionDate;
/**
* 用户性质
*/
@TableField(value = "user_type")
private Integer userType;
/**
* 所属地市
*/
@TableField(value = "city")
private String city;
/**
* 归口管理部门
*/
@TableField(value = "responsible_department")
private String responsibleDepartment;
/**
* 用户状态
*/
@TableField(value = "user_status")
private Integer userStatus;
/**
* 变电站
*/
@TableField(value = "substation")
private String substation;
/**
* 电压等级
*/
@TableField(value = "voltage_level")
private String voltageLevel;
/**
* 工程名称
*/
@TableField(value = "project_name")
private String projectName;
/**
* 预测评估单位
*/
@TableField(value = "evaluation_dept")
private String evaluationDept;
/**
* 预测评估结论
*/
@TableField(value = "evaluation_conclusion")
private String evaluationConclusion;
/**
* 流程实例的编号
*/
@TableField(value = "process_instance_id")
private String processInstanceId;
@TableField(value = "history_instance_id")
private String historyInstanceId;
/**
* 数据来源类型 0.正常流程审核入库 1.批量导入
*/
@TableField(value = "data_type")
private Integer dataType;
/**
* 电站id
*/
private String stationId;
/**
* 额定容量
*/
private Double ratePower;
/**
* 经度
*/
private BigDecimal longitude;
/**
* 纬度
*/
private BigDecimal latitude;
/**
* 终端id
*/
@TableField(value = "dev_id")
private String devId;
/**
* 监测点id
*/
@TableField(value = "line_id")
private String lineId;
@TableField(value = "second_assessment_id")
private String secondAssessmentId;
/**
* 审批状态1:审批中2审批通过3审批不通过4已取消
*/
@TableField(value = "status")
private Integer status;
/**
* 状态0-删除 1-正常
*/
@TableField(value = "State")
private Integer state;
}

View File

@@ -42,4 +42,16 @@ public class DcloudBusController {
DcloudSyncQuery query = DcloudSyncQuery.buildPlantBdC(null, null, null, null); DcloudSyncQuery query = DcloudSyncQuery.buildPlantBdC(null, null, null, null);
dcloudBusService.syncDataToDb(query); dcloudBusService.syncDataToDb(query);
} }
@GetMapping("/sync5")
public void syncData5() {
DcloudSyncQuery query = DcloudSyncQuery.buildSgConPlantBNewenergy(null, null, null, null);
dcloudBusService.syncDataToDb(query);
}
@GetMapping("/sync6")
public void syncData6() {
DcloudSyncQuery query = DcloudSyncQuery.buildSgSgDevAclineB(null, null, null, null);
dcloudBusService.syncDataToDb(query);
}
} }

View File

@@ -34,4 +34,10 @@ public class IndexController {
public String logs() { public String logs() {
return "forward:/pages/logs.html"; return "forward:/pages/logs.html";
} }
@GetMapping("/taizhang")
public String taizhang() {
return "forward:/pages/userLedger.html";
}
} }

View File

@@ -0,0 +1,81 @@
package com.njcn.relational.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.relational.pojo.po.Line;
import com.njcn.relational.pojo.po.UserReportPO;
import com.njcn.relational.service.LineService;
import com.njcn.relational.service.UserLedgerService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/userLedger")
@RequiredArgsConstructor
@Slf4j
public class UserLedgerController {
private final LineService lineService;
private final UserLedgerService userLedgerService;
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>ѯ (Line, level=6)
*/
@GetMapping("/line/page")
public IPage<Line> linePage(
@RequestParam(defaultValue = "1") long pageNum,
@RequestParam(defaultValue = "10") long pageSize,
Line query
) {
Page<Line> page = new Page<>(pageNum, pageSize);
LambdaQueryWrapper<Line> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Line::getLevel, 6);
wrapper.eq(Line::getState, 1);
wrapper.like(query.getName() != null, Line::getName, query.getName());
wrapper.orderByAsc(Line::getSort);
return lineService.page(page, wrapper);
}
/**
* <20><><EFBFBD><EFBFBD>վ<EFBFBD><D5BE>ҳ<EFBFBD><D2B3>ѯ (Line, level=3)
*/
@GetMapping("/station/page")
public IPage<Line> stationPage(
@RequestParam(defaultValue = "1") long pageNum,
@RequestParam(defaultValue = "10") long pageSize,
Line query
) {
Page<Line> page = new Page<>(pageNum, pageSize);
LambdaQueryWrapper<Line> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Line::getLevel, 3);
wrapper.eq(Line::getState, 1);
wrapper.like(query.getName() != null, Line::getName, query.getName());
wrapper.orderByAsc(Line::getSort);
return lineService.page(page, wrapper);
}
/**
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>վ<EFBFBD><D5BE>ҳ<EFBFBD><D2B3>ѯ (UserReportPO)
*/
@GetMapping("/report/page")
public IPage<UserReportPO> reportPage(
@RequestParam(defaultValue = "1") long pageNum,
@RequestParam(defaultValue = "10") long pageSize,
UserReportPO query
) {
Page<UserReportPO> page = new Page<>(pageNum, pageSize);
LambdaQueryWrapper<UserReportPO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserReportPO::getState, 1);
wrapper.like(query.getProjectName() != null, UserReportPO::getProjectName, query.getProjectName());
wrapper.like(query.getSubstation() != null, UserReportPO::getSubstation, query.getSubstation());
wrapper.like(query.getCity() != null, UserReportPO::getCity, query.getCity());
wrapper.orderByDesc(UserReportPO::getCreateTime);
return userLedgerService.page(page, wrapper);
}
}

View File

@@ -0,0 +1,10 @@
package com.njcn.relational.service;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.relational.pojo.po.SgConPlantBNewenergy;
public interface SgConPlantBNewenergyService extends IService<SgConPlantBNewenergy> {
public boolean batchSyncFromDcloud(JSONArray dataArr);
}

View File

@@ -0,0 +1,8 @@
package com.njcn.relational.service;
import com.alibaba.fastjson.JSONArray;
public interface SgDevAclineBService {
boolean batchSyncFromDcloud(JSONArray dataArr);
}

View File

@@ -0,0 +1,12 @@
package com.njcn.relational.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.relational.pojo.po.SupervisionUserReportBak;
/**
* 监测对象中间关系表 Service
*/
public interface SupervisionUserReportBakService extends IService<SupervisionUserReportBak> {
}

View File

@@ -0,0 +1,19 @@
package com.njcn.relational.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.relational.pojo.po.UserReportPO;
import java.util.List;
/**
* @Description:
* @Author: wr
* @Date: 2026/3/4 9:12
*/
public interface UserLedgerService extends IService<UserReportPO> {
}

View File

@@ -0,0 +1,4 @@
package com.njcn.relational.service;
public interface UserReportBakService {
}

View File

@@ -33,6 +33,10 @@ public class DcloudBusServiceImpl implements DcloudBusService {
private final SGConSubstationCService sgConSubstationCService; private final SGConSubstationCService sgConSubstationCService;
private final SgConPlantBNewenergyService sgConPlantBNewenergyService;
private final SgDevAclineBService sgDevAclineBService;
/** /**
* 数据入库入口 * 数据入库入口
@@ -218,6 +222,12 @@ public class DcloudBusServiceImpl implements DcloudBusService {
}else if("SG_CON_SUBSTATION_C".equals(tableName)){ }else if("SG_CON_SUBSTATION_C".equals(tableName)){
log.info("【全量同步入口】执行变电站站绑定数据---------"); log.info("【全量同步入口】执行变电站站绑定数据---------");
batchResult = sgConSubstationCService.batchSyncFromDcloud(pageData); batchResult = sgConSubstationCService.batchSyncFromDcloud(pageData);
}else if("SG_CON_PLANT_B_NEWENERGY".equals(tableName)){
log.info("【全量同步入口】执行新能源场站基本信息---------");
batchResult = sgConPlantBNewenergyService.batchSyncFromDcloud(pageData);
}else if("SG_DEV_ACLINE_B".equals(tableName)){
log.info("【全量同步入口】执行线路表同步---------");
batchResult = sgDevAclineBService.batchSyncFromDcloud(pageData);
} }
if (batchResult) { if (batchResult) {
successCount += pageData.size(); successCount += pageData.size();

View File

@@ -0,0 +1,58 @@
package com.njcn.relational.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.relational.mapper.SgConPlantBNewenergyMapper;
import com.njcn.relational.pojo.po.SgConPlantBNewenergy;
import com.njcn.relational.service.SgConPlantBNewenergyService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: cdf
* @CreateTime: 2026-07-22
* @Description:
*/
@Service
public class SgConPlantBNewenergyServiceImpl
extends ServiceImpl<SgConPlantBNewenergyMapper, SgConPlantBNewenergy>
implements SgConPlantBNewenergyService {
@Override
public boolean batchSyncFromDcloud(JSONArray dataArr) {
if (CollUtil.isEmpty(dataArr)) {
return true;
}
List<SgConPlantBNewenergy> entityList = new ArrayList<>(dataArr.size());
for (Object obj : dataArr) {
JSONObject json = (JSONObject) obj;
SgConPlantBNewenergy entity = new SgConPlantBNewenergy();
entity.setId(json.getString("ID"));
entity.setCompensationVarCap(json.getBigDecimal("COMPENSATION_VAR_CAP"));
entity.setConnectiveStationId(json.getString("CONNECTIVE_STATION_ID"));
entity.setEnergyStorageCapacity(json.getBigDecimal("ENERGY_STORAGE_CAPACITY"));
entity.setEnergyStorageDeviceCount(json.getInteger("ENERGY_STORAGE_DEVICE_COUNT"));
entity.setInverterCount(json.getInteger("INVERTER_COUNT"));
entity.setOwner(json.getString("OWNER"));
entity.setStamp(json.getString("STAMP"));
entity.setTypeNum(json.getInteger("TYPE_NUM"));
entity.setWindturbineNum(json.getInteger("WINDTURBINE_NUM"));
entity.setGroundType(json.getInteger("GROUND_TYPE"));
entity.setFiltNum(json.getInteger("FILT_NUM"));
entity.setHourNum(json.getBigDecimal("HOUR_NUM"));
entity.setWindtowerNum(json.getInteger("WINDTOWER_NUM"));
entity.setPhotometerNum(json.getInteger("PHOTOMETER_NUM"));
entity.setWindrange(json.getInteger("WINDRANGE"));
entity.setInstallLocation(json.getInteger("INSTALL_LOCATION"));
entityList.add(entity);
}
// 批次500条主键冲突自动更新
return saveOrUpdateBatch(entityList, 500);
}
}

View File

@@ -0,0 +1,86 @@
package com.njcn.relational.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.relational.mapper.SgDevAclineBMapper;
import com.njcn.relational.pojo.po.SgDevAclineB;
import com.njcn.relational.service.SgDevAclineBService;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: cdf
* @CreateTime: 2026-07-22
* @Description:
*/
@Service
public class SgDevAclineBServiceImpl
extends ServiceImpl<SgDevAclineBMapper, SgDevAclineB>
implements SgDevAclineBService {
@Override
public boolean batchSyncFromDcloud(JSONArray dataArr) {
if (CollUtil.isEmpty(dataArr)) {
return true;
}
List<SgDevAclineB> entityList = new ArrayList<>(dataArr.size());
for (Object obj : dataArr) {
JSONObject json = (JSONObject) obj;
SgDevAclineB entity = new SgDevAclineB();
entity.setId(json.getString("ID"));
entity.setName(json.getString("NAME"));
entity.setVoltageType(json.getInteger("VOLTAGE_TYPE"));
entity.setGridId(json.getString("GRID_ID"));
entity.setSupplierId(json.getString("SUPPLIER_ID"));
entity.setSysFlag(json.getString("SYS_FLAG"));
entity.setTag(json.getString("TAG"));
entity.setAssetsCompanyId(json.getString("ASSETS_COMPANY_ID"));
entity.setCheckCode(json.getString("CHECK_CODE"));
entity.setCompactZone(json.getString("COMPACT_ZONE"));
entity.setDevId(json.getString("DEV_ID"));
entity.setDispatchOrgId(json.getString("DISPATCH_ORG_ID"));
entity.setStartBayId(json.getString("START_BAY_ID"));
entity.setStartStId(json.getString("START_ST_ID"));
entity.setStartTowerId(json.getString("START_TOWER_ID"));
entity.setEndBayId(json.getString("END_BAY_ID"));
entity.setEndStId(json.getString("END_ST_ID"));
entity.setEndTowerId(json.getString("END_TOWER_ID"));
entity.setErectingmethod(json.getInteger("ERECTINGMETHOD"));
entity.setLength(json.getBigDecimal("LENGTH"));
entity.setLicenseOrgId(json.getString("LICENSE_ORG_ID"));
entity.setLinetype(json.getInteger("LINETYPE"));
entity.setMemberFeatureTag(json.getString("MEMBER_FEATURE_TAG"));
entity.setStrideFeatureTag(json.getString("STRIDE_FEATURE_TAG"));
entity.setIsopticfiberequiped(json.getString("ISOPTICFIBEREQUIPED"));
entity.setIsCompact(json.getString("IS_COMPACT"));
entity.setOwner(json.getString("OWNER"));
entity.setRunningState(json.getInteger("RUNNING_STATE"));
entity.setStamp(json.getString("STAMP"));
// LocalDate 日期字段判空处理
if(json.containsKey("EXPIRY_DATE") && json.get("EXPIRY_DATE") != null){
entity.setExpiryDate(json.getString("EXPIRY_DATE"));
}
if(json.containsKey("OFF_TIME") && json.get("OFF_TIME") != null){
entity.setOffTime(json.getString("OFF_TIME"));
}
if(json.containsKey("ON_TIME") && json.get("ON_TIME") != null){
entity.setOnTime(json.getString("ON_TIME"));
}
if(json.containsKey("OPERATE_DATE") && json.get("OPERATE_DATE") != null){
entity.setOperateDate(json.getString("OPERATE_DATE"));
}
entityList.add(entity);
}
// 批次500条主键冲突自动更新
return saveOrUpdateBatch(entityList, 500);
}
}

View File

@@ -0,0 +1,23 @@
package com.njcn.relational.service.impl;
/**
* @Author: cdf
* @CreateTime: 2026-07-23
* @Description:
*/
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.relational.mapper.SupervisionUserReportBakMapper;
import com.njcn.relational.pojo.po.SupervisionUserReportBak;
import com.njcn.relational.service.SupervisionUserReportBakService;
import org.springframework.stereotype.Service;
/**
* 监测对象中间关系表 Service实现
*/
@Service
public class SupervisionUserReportBakServiceImpl extends ServiceImpl<SupervisionUserReportBakMapper, SupervisionUserReportBak>
implements SupervisionUserReportBakService {
}

View File

@@ -0,0 +1,20 @@
package com.njcn.relational.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.relational.mapper.UserReportPOMapper;
import com.njcn.relational.pojo.po.UserReportPO;
import com.njcn.relational.service.UserLedgerService;
import org.springframework.stereotype.Service;
/**
* @Author: cdf
* @CreateTime: 2026-07-23
* @Description:
*/
@Service
public class UserLedgerServiceImpl extends ServiceImpl<UserReportPOMapper, UserReportPO> implements UserLedgerService {
}

View File

@@ -0,0 +1,19 @@
package com.njcn.relational.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.relational.pojo.po.UserReportBakPO;
import com.njcn.relational.service.UserReportBakService;
import org.springframework.stereotype.Service;
/**
* @Author: cdf
* @CreateTime: 2026-07-25
* @Description:
*/
@Service
public class UserReportBakServiceImpl
extends ServiceImpl<MppBaseMapper<UserReportBakPO>, UserReportBakPO>
implements UserReportBakService {
}

View File

@@ -10,7 +10,7 @@ spring:
name: dmTransport name: dmTransport
profiles: profiles:
#active: 二区query_up 三区insert_up #active: 二区query_up 三区insert_up
active: insert_up active: insert
security: security:
user: user:
name: njcn name: njcn

View File

@@ -217,6 +217,10 @@
<el-button type="text" icon="el-icon-setting" @click="goToConfigPage" style="color: white; font-size: 16px;"> <el-button type="text" icon="el-icon-setting" @click="goToConfigPage" style="color: white; font-size: 16px;">
传输配置 传输配置
</el-button> </el-button>
<el-button type="text" icon="el-icon-setting" @click="goToTaizhang" style="color: white; font-size: 16px;">
台账管理
</el-button>
<el-button type="text" icon="el-icon-refresh" @click="refreshAll" style="color: white; font-size: 14px;"> <el-button type="text" icon="el-icon-refresh" @click="refreshAll" style="color: white; font-size: 14px;">
刷新 刷新
</el-button> </el-button>
@@ -602,6 +606,13 @@
// window.open('config.html', '_blank'); // window.open('config.html', '_blank');
}, },
goToTaizhang() {
// 方式1当前窗口跳转独立页面
window.location.href = 'taizhang';
// 方式2新窗口打开可选
// window.open('config.html', '_blank');
},
goToLogsPage() { goToLogsPage() {
// 方式1当前窗口跳转独立页面 // 方式1当前窗口跳转独立页面
window.location.href = 'logs'; window.location.href = 'logs';

View File

@@ -0,0 +1,356 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>用户台账管理</title>
<link rel="stylesheet" href="js/element-ui.css">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Microsoft YaHei", sans-serif;
background-color: #f0f2f5;
padding: 20px;
}
.container { margin: 0 auto; }
.header {
background: linear-gradient(135deg, #409eff 0%, #36a3f7 100%);
color: white;
padding: 20px 30px;
border-radius: 8px;
margin-bottom: 24px;
display: flex;
justify-content: space-between;
align-items: center;
}
.header h1 { font-size: 24px; font-weight: 500; }
.header .sub { font-size: 14px; opacity: 0.85; margin-top: 4px; }
.header-actions .el-button {
border-color: rgba(255,255,255,0.4);
color: white;
background: rgba(255,255,255,0.1);
}
.header-actions .el-button:hover {
background: rgba(255,255,255,0.25);
border-color: rgba(255,255,255,0.6);
}
.tabs-card {
background: #fff;
border-radius: 8px;
padding: 0 24px 20px;
box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.tab-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16px 0;
flex-wrap: wrap;
gap: 12px;
}
.tab-header .el-form-item { margin-bottom: 0; }
.table-wrap { margin-top: 8px; }
.pagination-wrap {
margin-top: 16px;
display: flex;
justify-content: flex-end;
}
</style>
</head>
<body>
<div id="app">
<div class="container">
<div class="header">
<div>
<h1>用户台账管理</h1>
<div class="sub">监测点 · 变电站 · 新能源场站</div>
</div>
<div class="header-actions">
<el-button type="text" icon="el-icon-back" @click="goBack" style="color: white; font-size: 14px;">
返回主页面
</el-button>
</div>
</div>
<div class="tabs-card">
<el-tabs v-model="activeTab" @tab-click="onTabClick">
<el-tab-pane label="监测点" name="line">
<div class="tab-header">
<el-form :inline="true" size="small">
<el-form-item label="名称">
<el-input v-model="lineSearch.name" placeholder="模糊搜索" clearable style="width:200px;"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="fetchLinePage">查询</el-button>
<el-button icon="el-icon-refresh" @click="resetLineSearch">重置</el-button>
</el-form-item>
</el-form>
<span style="font-size:13px; color:#909399;">共 {{ lineTotal }} 条</span>
</div>
<div class="table-wrap">
<el-table :data="lineTableData" stripe border v-loading="lineLoading" style="width:100%;">
<el-table-column prop="id" label="ID" width="200" show-overflow-tooltip></el-table-column>
<el-table-column prop="name" label="名称" width="200"></el-table-column>
<el-table-column prop="pid" label="父节点" width="200" show-overflow-tooltip></el-table-column>
<el-table-column prop="sort" label="排序" width="80" align="center"></el-table-column>
<el-table-column prop="remark" label="备注" min-width="200" show-overflow-tooltip></el-table-column>
<el-table-column prop="state" label="状态" width="80" align="center">
<template slot-scope="{ row }">
<el-tag :type="row.state === 1 ? 'success' : 'danger'" size="small">
{{ row.state === 1 ? '正常' : '删除' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160"></el-table-column>
</el-table>
<div class="pagination-wrap">
<el-pagination
background
layout="total, sizes, prev, pager, next"
:current-page="linePageNum"
:page-sizes="[10, 20, 50, 100]"
:page-size="linePageSize"
:total="lineTotal"
@size-change="(val) => { linePageSize = val; fetchLinePage(); }"
@current-change="(val) => { linePageNum = val; fetchLinePage(); }">
</el-pagination>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="变电站" name="station">
<div class="tab-header">
<el-form :inline="true" size="small">
<el-form-item label="名称">
<el-input v-model="stationSearch.name" placeholder="模糊搜索" clearable style="width:200px;"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="fetchStationPage">查询</el-button>
<el-button icon="el-icon-refresh" @click="resetStationSearch">重置</el-button>
</el-form-item>
</el-form>
<span style="font-size:13px; color:#909399;">共 {{ stationTotal }} 条</span>
</div>
<div class="table-wrap">
<el-table :data="stationTableData" stripe border v-loading="stationLoading" style="width:100%;">
<el-table-column prop="id" label="ID" width="200" show-overflow-tooltip></el-table-column>
<el-table-column prop="name" label="名称" width="200"></el-table-column>
<el-table-column prop="pid" label="父节点" width="200" show-overflow-tooltip></el-table-column>
<el-table-column prop="sort" label="排序" width="80" align="center"></el-table-column>
<el-table-column prop="remark" label="备注" min-width="200" show-overflow-tooltip></el-table-column>
<el-table-column prop="state" label="状态" width="80" align="center">
<template slot-scope="{ row }">
<el-tag :type="row.state === 1 ? 'success' : 'danger'" size="small">
{{ row.state === 1 ? '正常' : '删除' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160"></el-table-column>
</el-table>
<div class="pagination-wrap">
<el-pagination
background
layout="total, sizes, prev, pager, next"
:current-page="stationPageNum"
:page-sizes="[10, 20, 50, 100]"
:page-size="stationPageSize"
:total="stationTotal"
@size-change="(val) => { stationPageSize = val; fetchStationPage(); }"
@current-change="(val) => { stationPageNum = val; fetchStationPage(); }">
</el-pagination>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="新能源场站" name="report">
<div class="tab-header">
<el-form :inline="true" size="small">
<el-form-item label="工程名称">
<el-input v-model="reportSearch.projectName" placeholder="模糊搜索" clearable style="width:180px;"></el-input>
</el-form-item>
<el-form-item label="变电站">
<el-input v-model="reportSearch.substation" placeholder="模糊搜索" clearable style="width:160px;"></el-input>
</el-form-item>
<el-form-item label="城市">
<el-input v-model="reportSearch.city" placeholder="模糊搜索" clearable style="width:140px;"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="fetchReportPage">查询</el-button>
<el-button icon="el-icon-refresh" @click="resetReportSearch">重置</el-button>
</el-form-item>
</el-form>
<span style="font-size:13px; color:#909399;">共 {{ reportTotal }} 条</span>
</div>
<div class="table-wrap">
<el-table :data="reportTableData" stripe border v-loading="reportLoading" style="width:100%;">
<el-table-column prop="projectName" label="工程名称" width="200" show-overflow-tooltip></el-table-column>
<el-table-column prop="substation" label="变电站" width="160" show-overflow-tooltip></el-table-column>
<el-table-column prop="voltageLevel" label="电压等级" width="100" align="center"></el-table-column>
<el-table-column prop="city" label="城市" width="100"></el-table-column>
<el-table-column prop="reporter" label="填报人" width="100"></el-table-column>
<el-table-column prop="reportDate" label="填报日期" width="120"></el-table-column>
<el-table-column prop="userType" label="用户性质" width="100" align="center">
<template slot-scope="{ row }">
<el-tag size="small">{{ row.userType }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="userStatus" label="用户状态" width="100" align="center">
<template slot-scope="{ row }">
<el-tag size="small">{{ row.userStatus }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="expectedProductionDate" label="预期投产" width="120"></el-table-column>
<el-table-column prop="ratePower" label="额定容量" width="100" align="center"></el-table-column>
<el-table-column prop="status" label="审批状态" width="100" align="center">
<template slot-scope="{ row }">
<el-tag :type="row.status === 2 ? 'success' : row.status === 3 ? 'danger' : 'warning'" size="small">
{{ row.status === 1 ? '审批中' : row.status === 2 ? '已通过' : row.status === 3 ? '未通过' : row.status === 4 ? '已取消' : row.status }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160"></el-table-column>
</el-table>
<div class="pagination-wrap">
<el-pagination
background
layout="total, sizes, prev, pager, next"
:current-page="reportPageNum"
:page-sizes="[10, 20, 50, 100]"
:page-size="reportPageSize"
:total="reportTotal"
@size-change="(val) => { reportPageSize = val; fetchReportPage(); }"
@current-change="(val) => { reportPageNum = val; fetchReportPage(); }">
</el-pagination>
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
<script src="js/vue.js"></script>
<script src="js/element-ui.js"></script>
<script src="js/axios.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
activeTab: 'line',
lineSearch: { name: '' },
lineTableData: [],
lineLoading: false,
linePageNum: 1,
linePageSize: 10,
lineTotal: 0,
stationSearch: { name: '' },
stationTableData: [],
stationLoading: false,
stationPageNum: 1,
stationPageSize: 10,
stationTotal: 0,
reportSearch: { projectName: '', substation: '', city: '' },
reportTableData: [],
reportLoading: false,
reportPageNum: 1,
reportPageSize: 10,
reportTotal: 0,
},
mounted() {
this.fetchLinePage();
},
methods: {
onTabClick(tab) {
if (tab.name === 'line') this.fetchLinePage();
else if (tab.name === 'station') this.fetchStationPage();
else if (tab.name === 'report') this.fetchReportPage();
},
async fetchLinePage() {
this.lineLoading = true;
try {
const res = await axios.get('userLedger/line/page', {
params: {
pageNum: this.linePageNum,
pageSize: this.linePageSize,
name: this.lineSearch.name || undefined
}
});
const data = res.data;
this.lineTableData = data.records || [];
this.lineTotal = data.total || 0;
} catch (err) {
this.$message.error('查询监测点失败: ' + (err.response?.data?.msg || err.message));
} finally {
this.lineLoading = false;
}
},
resetLineSearch() {
this.lineSearch = { name: '' };
this.linePageNum = 1;
this.fetchLinePage();
},
async fetchStationPage() {
this.stationLoading = true;
try {
const res = await axios.get('userLedger/station/page', {
params: {
pageNum: this.stationPageNum,
pageSize: this.stationPageSize,
name: this.stationSearch.name || undefined
}
});
const data = res.data;
this.stationTableData = data.records || [];
this.stationTotal = data.total || 0;
} catch (err) {
this.$message.error('查询变电站失败: ' + (err.response?.data?.msg || err.message));
} finally {
this.stationLoading = false;
}
},
resetStationSearch() {
this.stationSearch = { name: '' };
this.stationPageNum = 1;
this.fetchStationPage();
},
async fetchReportPage() {
this.reportLoading = true;
try {
const res = await axios.get('userLedger/report/page', {
params: {
pageNum: this.reportPageNum,
pageSize: this.reportPageSize,
projectName: this.reportSearch.projectName || undefined,
substation: this.reportSearch.substation || undefined,
city: this.reportSearch.city || undefined
}
});
const data = res.data;
this.reportTableData = data.records || [];
this.reportTotal = data.total || 0;
} catch (err) {
this.$message.error('查询新能源场站失败: ' + (err.response?.data?.msg || err.message));
} finally {
this.reportLoading = false;
}
},
resetReportSearch() {
this.reportSearch = { projectName: '', substation: '', city: '' };
this.reportPageNum = 1;
this.fetchReportPage();
},
goBack() {
window.location.href = 'index';
}
}
});
</script>
</body>
</html>