1.lineDetail数据同步

This commit is contained in:
wr
2024-05-17 15:26:01 +08:00
parent 6b352d62e1
commit b3640b840b
18 changed files with 690 additions and 2 deletions

View File

@@ -0,0 +1,206 @@
package com.njcn.influx.bo.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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import lombok.Data;
/**
* Description:
* Date: 2024/5/17 11:21【需求编号】
*
* @author clam
* @version V1.0.0
*/
@ApiModel(description = "PQ_LINEDETAIL")
@Data
@TableName(value = "PQ_LINEDETAIL")
public class OraclePqLineDetail {
/**
* 监测点id
*/
@TableField(value = "LINE_INDEX")
private String lineIndex;
/**
* 供电公司序号
*/
@TableField(value = "GD_INDEX")
private Integer gdIndex;
/**
* 变电站序号
*/
@TableField(value = "SUB_INDEX")
private Integer subIndex;
/**
* 监测点名称
*/
@TableField(value = "LINE_NAME")
private String lineName;
/**
* 接线类型(0:星型接法;1:三角型接法;2:开口三角型接法)
*/
@TableField(value = "PTTYPE")
private Integer pttype;
/**
* 上次数据更新时间
*/
@TableField(value = "LAST_TIME")
private LocalDateTime lastTime;
/**
* 测量间隔1~10
*/
@TableField(value = "TINTERVAL")
private Short tinterval;
/**
* 关联PQS_Dicdata表负荷类型Guid
*/
@TableField(value = "LOADTYPE")
private String loadtype;
/**
* 关联PQS_Dicdata表行业类型Guid
*/
@TableField(value = "BUSINESSTYPE")
private String businesstype;
/**
* 备注
*/
@TableField(value = "REMARK")
private String remark;
/**
* 国网谐波监测平台监测点号
*/
@TableField(value = "MONITOR_ID")
private String monitorId;
/**
* 监测点性质
*/
@TableField(value = "POWERID")
private Integer powerid;
/**
*监测点对象名称
*/
@TableField(value = "OBJNAME")
private String objname;
/**
* 统计类型
*/
@TableField(value = "STATFLAG")
private Short statflag;
/**
*
*/
@TableField(value = "LINE_GRADE")
private String lineGrade;
/**
* 电网侧变电站名称
*/
@TableField(value = "POWER_SUBSTATION_NAME")
private String powerSubstationName;
/**
* 挂接线路
*/
@TableField(value = "HANG_LINE")
private String hangLine;
/**
* 拥有者职务
*/
@TableField(value = "OWNER_DUTY")
private String ownerDuty;
/**
* 监测点拥有者
*/
@TableField(value = "OWNER")
private String owner;
/**
* 拥有者联系方式
*/
@TableField(value = "OWNER_TEL")
private String ownerTel;
/**
* 接线图
*/
@TableField(value = "WIRING_DIAGRAM")
private String wiringDiagram;
/**
* 上级电站
*/
@TableField(value = "SUPERIORS_SUBSTATION")
private String superiorsSubstation;
/**
* 分类等级 内容为Ⅰ、Ⅱ、Ⅲ、Ⅳ
*/
@TableField(value = "CLASSIFICATION_GRADE")
private String classificationGrade;
/**
* PT一次变比
*/
@TableField(exist = false)
private Float pt1;
/**
* PT二次变比
*/
@TableField(exist = false)
private Float pt2;
/**
* CT一次变比
*/
@TableField(exist = false)
private Float ct1;
/**
* CT二次变比
*/
@TableField(exist = false)
private Float ct2;
//设备容量
@TableField(exist = false)
private Float devcMp;
//短路容量
@TableField(exist = false)
private Float dlcMp;
//基准容量
@TableField(exist = false)
private Float jzcMp;
//协议容量
@TableField(exist = false)
private Float xycMp;
}

View File

@@ -15,9 +15,16 @@ import lombok.Data;
@Data @Data
@TableName(value = "pq_line_bak") @TableName(value = "pq_line_bak")
public class PqLineBak { public class PqLineBak {
/**
* 监测点id
*/
@TableId(value = "id") @TableId(value = "id")
private String id; private String id;
/**
* oracle监测点id
*/
@TableField(value = "line_id") @TableField(value = "line_id")
private String lineId; private String lineId;
} }

View File

@@ -0,0 +1,208 @@
package com.njcn.influx.bo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
*
* </p>
*
* @author wr
* @since 2024-05-17
*/
@Getter
@Setter
@TableName("pq_line_detail")
public class PqLineDetail {
private static final long serialVersionUID = 1L;
/**
* 监测点序号
*/
@TableId("Id")
private String id;
/**
* 线路号(在同一台设备中的监测点号)
*/
@TableField("Num")
private Integer num;
/**
* PT一次变比
*/
@TableField("PT1")
private Float pt1;
/**
* PT二次变比
*/
@TableField("PT2")
private Float pt2;
/**
* CT一次变比
*/
@TableField("CT1")
private Float ct1;
/**
* CT二次变比
*/
@TableField("CT2")
private Float ct2;
/**
* 设备容量
*/
@TableField("Dev_Capacity")
private Float devCapacity;
/**
* 短路容量
*/
@TableField("Short_Capacity")
private Float shortCapacity;
/**
* 基准容量
*/
@TableField("Standard_Capacity")
private Float standardCapacity;
/**
* 协议容量
*/
@TableField("Deal_Capacity")
private Float dealCapacity;
/**
* 接线类型(0:星型接法;1:三角型接法;2:开口三角型接法)
*/
@TableField("PT_Type")
private Integer ptType;
/**
* 测量间隔1-10分钟
*/
@TableField("Time_Interval")
private Integer timeInterval;
/**
* 干扰源类型,字典表
*/
@TableField("Load_Type")
private String loadType;
/**
* 行业类型,字典表
*/
@TableField("Business_Type")
private String businessType;
/**
* 网公司谐波监测平台标志(0-否;1-是),默认否
*/
@TableField("Monitor_Flag")
private Boolean monitorFlag;
/**
* 电网标志0-电网侧1-非电网侧)
*/
@TableField("Power_Flag")
private Boolean powerFlag;
/**
* 国网谐波监测平台监测点号
*/
@TableField("Monitor_Id")
private String monitorId;
/**
* 监测点对象名称
*/
@TableField("Obj_Name")
private String objName;
/**
* 人为干预是否参与统计0不参与1参与默认参与统计
*/
@TableField("Stat_Flag")
private Boolean statFlag;
/**
* 终端等级,关联字典表
*/
@TableField("Line_Grade")
private String lineGrade;
/**
* 电网侧变电站
*/
@TableField("Power_Substation_Name")
private String powerSubstationName;
/**
* 分类等级
*/
@TableField("Calssification_Grade")
private String calssificationGrade;
/**
* 上级变电站
*/
@TableField("Superiors_Substation")
private String superiorsSubstation;
/**
* 挂接线路
*/
@TableField("Hang_Line")
private String hangLine;
/**
* 用户联系人
*/
@TableField("Owner")
private String owner;
/**
* 联系人职务
*/
@TableField("Owner_Duty")
private String ownerDuty;
/**
* 联系人号码
*/
@TableField("Owner_Tel")
private String ownerTel;
@TableField("Remark")
private String remark;
/**
* 主接线图路径
*/
@TableField("Wiring_Diagram")
private String wiringDiagram;
/**
* 监测点接线相别0单相,1三相默认三相
*/
@TableField("PT_Phase_Type")
private Boolean ptPhaseType;
/**
* 监测点实际安装位置
*/
@TableField("Actual_Area")
private String actualArea;
}

View File

@@ -0,0 +1,19 @@
package com.njcn.influx.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.influx.bo.po.OraclePqLineDetail;
import java.util.List;
/**
*
* Description:
* Date: 2024/5/17 11:21【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface OraclePqLineDetailMapper extends BaseMapper<OraclePqLineDetail> {
List<OraclePqLineDetail> lineDetailList();
}

View File

@@ -18,4 +18,7 @@ import java.util.List;
public interface OracleRmpEventDetailPOMapper extends BaseMapper<OracleRmpEventDetailPO> { public interface OracleRmpEventDetailPOMapper extends BaseMapper<OracleRmpEventDetailPO> {
List<DictData> selectByDicCodeList(@Param("code") String code); List<DictData> selectByDicCodeList(@Param("code") String code);
List<DictData> selectDicByIds(@Param("ids") List<String> ids);
} }

View File

@@ -0,0 +1,16 @@
package com.njcn.influx.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.influx.bo.po.PqLineDetail;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wr
* @since 2024-05-17
*/
public interface PqLineDetailMapper extends BaseMapper<PqLineDetail> {
}

View File

@@ -18,4 +18,13 @@ import java.util.List;
public interface RmpEventDetailPOMapper extends BaseMapper<RmpEventDetailPO> { public interface RmpEventDetailPOMapper extends BaseMapper<RmpEventDetailPO> {
List<DictData> selectByDicCodeList(@Param("code") String code); List<DictData> selectByDicCodeList(@Param("code") String code);
/**
* 根据字典类型名称&数据名称获取字典数据
*
* @param dicTypeName 字典类型名称
* @param dicDataName 字典数据名称
* @return 字典数据
*/
DictData getDicDataByNameAndTypeName(@Param("dicTypeName") String dicTypeName, @Param("dicDataName") String dicDataName);
} }

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.influx.mapper.OraclePqLineDetailMapper">
<select id="lineDetailList" resultType="com.njcn.influx.bo.po.OraclePqLineDetail">
SELECT
d.* ,
p.CT1 as ct1,
p.CT2 as ct2,
p.PT1 as pt1,
p.PT2 as pt2,
p.DEVCMP as devcMp,
p.DLCMP as dlcMp,
p.JZCMP as jzcMp,
p.XYCMP as xycMp
FROM
PQ_LINEDETAIL d
INNER JOIN PQ_LINE p ON p.LINE_INDEX = d.LINE_INDEX
</select>
</mapper>

View File

@@ -17,4 +17,24 @@
AND sys_dict_type.DICTYPE_NAME = #{code} AND sys_dict_type.DICTYPE_NAME = #{code}
ORDER BY DIC_NUMBER ORDER BY DIC_NUMBER
</select> </select>
<select id="selectDicByIds" resultType="com.njcn.influx.bo.po.DictData">
SELECT
sys_dict_data.DIC_INDEX as id,
sys_dict_data.DIC_TYPE as typeId,
sys_dict_data.DIC_NAME as name,
sys_dict_data.DIC_NUMBER as code,
sys_dict_data.TRIPHASE as algoDescribe
FROM
PQS_DICDATA sys_dict_data
<where>
<if test="ids != null and ids.size()>0" >
sys_dict_data.DIC_INDEX IN
<foreach collection="ids" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
</select>
</mapper> </mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.influx.mapper.PqLineDetailMapper">
</mapper>

View File

@@ -10,4 +10,18 @@
AND sys_dict_type.code = #{code} AND sys_dict_type.code = #{code}
order by sort order by sort
</select> </select>
<select id="getDicDataByNameAndTypeName" resultType="com.njcn.influx.bo.po.DictData">
SELECT
T2.*
FROM
sys_dict_type t1,
sys_dict_data t2
WHERE
t1.id = t2.Type_Id
AND T1.State = 1
AND T2.State = 1
AND t1.NAME = #{dicTypeName}
AND t2.NAME = #{dicDataName}
</select>
</mapper> </mapper>

View File

@@ -0,0 +1,16 @@
package com.njcn.influx.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.influx.bo.po.PqLineDetail;
/**
* <p>
* 服务类
* </p>
*
* @author wr
* @since 2024-05-17
*/
public interface IPqLineDetailService extends IService<PqLineDetail> {
}

View File

@@ -14,7 +14,13 @@ public interface OracleMonitorStatusToMysqlService {
void monitorStatusSync(); void monitorStatusSync();
/** /**
* 修改终端状态 * 修改终端最新更新时间
*/ */
void devUpdateTimeSync(); void devUpdateTimeSync();
/**
* 修改监测点部分详细信息
*/
void monitorTimeSync();
} }

View File

@@ -0,0 +1,19 @@
package com.njcn.influx.service;
import com.njcn.influx.bo.po.OraclePqLineDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
*
* Description:
* Date: 2024/5/17 11:21【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface OraclePqLineDetailService extends IService<OraclePqLineDetail>{
List<OraclePqLineDetail> lineDetailList();
}

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.njcn.influx.bo.po.*; import com.njcn.influx.bo.po.*;
import com.njcn.influx.config.IdMappingCache; import com.njcn.influx.config.IdMappingCache;
import com.njcn.influx.mapper.OracleRmpEventDetailPOMapper;
import com.njcn.influx.mapper.PqDeviceMapper; import com.njcn.influx.mapper.PqDeviceMapper;
import com.njcn.influx.mapper.RmpEventDetailPOMapper; import com.njcn.influx.mapper.RmpEventDetailPOMapper;
import com.njcn.influx.service.*; import com.njcn.influx.service.*;
@@ -16,6 +17,7 @@ import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -33,7 +35,10 @@ public class OracleMonitorStatusToMysqlServiceImpl implements OracleMonitorStatu
private final IPmsMonitorService pmsMonitorService; private final IPmsMonitorService pmsMonitorService;
private final IPmsTerminalService pmsTerminalService; private final IPmsTerminalService pmsTerminalService;
private final PqDeviceMysqlService pqDeviceMysqlService; private final PqDeviceMysqlService pqDeviceMysqlService;
private final PqLineBakService pqLineBakService;
private final OraclePqLineDetailService oraclePqLineDetailService;
private final IPqLineDetailService pqLineDetailService;
private final OracleRmpEventDetailPOMapper oracleRmpEventDetailPOMapper;
/** /**
* 1.查询oracle装置表信息 * 1.查询oracle装置表信息
@@ -112,6 +117,64 @@ public class OracleMonitorStatusToMysqlServiceImpl implements OracleMonitorStatu
}); });
} }
@Override
public void monitorTimeSync() {
List<PqLineBak> list = pqLineBakService.list();
//lineId:Oracle监测点ID id:Mysql监测点ID
Map<String, String> oracleRelationMysql = list.stream().collect(Collectors.toMap(PqLineBak::getId, PqLineBak::getLineId));
//oracle监测点信息
List<OraclePqLineDetail> oracleLineDetail = oraclePqLineDetailService.lineDetailList();
Map<String, OraclePqLineDetail> oraclePqLineDetailMap =
oracleLineDetail.stream().collect(Collectors.toMap(OraclePqLineDetail::getLineIndex, Function.identity()));
//msql监测点
List<PqLineDetail> lineDetail = pqLineDetailService.list();
//干扰源类型
List<String> loadTypeIds = oracleLineDetail.stream().map(OraclePqLineDetail::getLoadtype).distinct().collect(Collectors.toList());
List<DictData> loadTypeData = oracleRmpEventDetailPOMapper.selectDicByIds(loadTypeIds);
Map<String, String> loadTypeMap = loadTypeData.stream().collect(Collectors.toMap(DictData::getId, DictData::getName));
//行业类型
List<String> businessTypeIds = oracleLineDetail.stream().map(OraclePqLineDetail::getBusinesstype).distinct().collect(Collectors.toList());
List<DictData> businessTypeData = oracleRmpEventDetailPOMapper.selectDicByIds(businessTypeIds);
Map<String, String> businessTypeMap = businessTypeData.stream().collect(Collectors.toMap(DictData::getId, DictData::getName));
for (PqLineDetail line : lineDetail) {
if (oracleRelationMysql.containsKey(line.getId())) {
String s = oracleRelationMysql.get(line.getId());
if(oraclePqLineDetailMap.containsKey(s)){
OraclePqLineDetail oraclePqLineDetail = oraclePqLineDetailMap.get(s);
LambdaUpdateWrapper<PqLineDetail> eq = new LambdaUpdateWrapper<PqLineDetail>()
.set(PqLineDetail::getPt1, oraclePqLineDetail.getPt1())
.set(PqLineDetail::getPt2, oraclePqLineDetail.getPt2())
.set(PqLineDetail::getCt1, oraclePqLineDetail.getCt1())
.set(PqLineDetail::getCt2, oraclePqLineDetail.getCt2())
.set(PqLineDetail::getDevCapacity, oraclePqLineDetail.getDevcMp())
.set(PqLineDetail::getShortCapacity, oraclePqLineDetail.getDlcMp())
.set(PqLineDetail::getStandardCapacity, oraclePqLineDetail.getJzcMp())
.set(PqLineDetail::getDealCapacity, oraclePqLineDetail.getXycMp())
.set(PqLineDetail::getPtType, oraclePqLineDetail.getPttype())
.set(PqLineDetail::getTimeInterval, oraclePqLineDetail.getTinterval())
.eq(PqLineDetail::getId, line.getId());
if(loadTypeMap.containsKey(oraclePqLineDetail.getLoadtype())){
DictData loadType= rmpEventDetailPOMapper.getDicDataByNameAndTypeName("干扰源类型", loadTypeMap.get(oraclePqLineDetail.getLoadtype()));
if(ObjectUtil.isNotNull(loadType)){
eq.set(ObjectUtil.isNotNull(loadType), PqLineDetail::getLoadType, loadType.getId());
}
}
if(businessTypeMap.containsKey(oraclePqLineDetail.getBusinesstype())){
DictData businessType= rmpEventDetailPOMapper.getDicDataByNameAndTypeName("行业类型", businessTypeMap.get(oraclePqLineDetail.getBusinesstype()));
if(ObjectUtil.isNotNull(businessType)){
eq.set(ObjectUtil.isNotNull(businessType), PqLineDetail::getBusinessType, businessType.getId());
}
}
pqLineDetailService.update(eq);
}
}
}
}
/** /**
* @Description: 监测点状态类型 * @Description: 监测点状态类型
*/ */

View File

@@ -0,0 +1,26 @@
package com.njcn.influx.service.impl;
import com.njcn.influx.bo.po.OraclePqLineDetail;
import com.njcn.influx.mapper.OraclePqLineDetailMapper;
import com.njcn.influx.service.OraclePqLineDetailService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
/**
*
* Description:
* Date: 2024/5/17 11:21【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class OraclePqLinedetailServiceImpl extends ServiceImpl<OraclePqLineDetailMapper, OraclePqLineDetail> implements OraclePqLineDetailService {
@Override
public List<OraclePqLineDetail> lineDetailList() {
return this.baseMapper.lineDetailList();
}
}

View File

@@ -0,0 +1,22 @@
package com.njcn.influx.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.njcn.influx.bo.po.PqLineDetail;
import com.njcn.influx.mapper.PqLineDetailMapper;
import com.njcn.influx.service.IPqLineDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author wr
* @since 2024-05-17
*/
@Service
@DS("target")
public class PqLineDetailServiceImpl extends ServiceImpl<PqLineDetailMapper, PqLineDetail> implements IPqLineDetailService {
}

View File

@@ -113,4 +113,13 @@ public class OracleToInfluxDBJob {
public void synLedgerUpdateTime() { public void synLedgerUpdateTime() {
oracleMonitorStatusToMysqlService.devUpdateTimeSync(); oracleMonitorStatusToMysqlService.devUpdateTimeSync();
} }
/**
* 每天同步台账监测点部分信息 仅数据中心使用
* @date 2024/3/5
*/
@Scheduled(cron="0 30 0 * * ?")
public void synLedgerMonitor() {
oracleMonitorStatusToMysqlService.monitorTimeSync();
}
} }