3 Commits

Author SHA1 Message Date
贾同学
770fb09223 refactor(harmonic): 优化数据源配置并移除冗余依赖
- 为 RStatLimitRateDetailDServiceImpl 和 RStatLimitRateDServiceImpl 添加 @DS 注解以支持多数据源切换
- 在 harmonic-common 模块中引入 dynamic-datasource-spring-boot-starter 依赖
- 移除 harmonic-boot 模块中对 harmonic-common 的冗余依赖声明
- 调整 AlarmClientFallbackFactory 组件名称以避免命名冲突
2025-12-02 08:44:01 +08:00
wr
eb334cc7c7 Merge remote-tracking branch 'origin/main' 2025-11-28 10:58:11 +08:00
wr
404d11526a 冀北终端评价列表信息增加 2025-11-28 10:47:50 +08:00
9 changed files with 103 additions and 47 deletions

View File

@@ -3,9 +3,9 @@ package com.njcn.device.pq.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.utils.DeviceEnumUtil;
import com.njcn.device.pq.api.AlarmClient; import com.njcn.device.pq.api.AlarmClient;
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO; import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
import com.njcn.device.biz.utils.DeviceEnumUtil;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -14,11 +14,12 @@ import java.util.List;
/** /**
* 告警管理熔断降级 * 告警管理熔断降级
*
* @author yzh * @author yzh
* @date 2022/9/19 * @date 2022/9/19
*/ */
@Slf4j @Slf4j
@Component @Component("deviceAlarmClientFallbackFactory")
public class AlarmClientFallbackFactory implements FallbackFactory<AlarmClient> { public class AlarmClientFallbackFactory implements FallbackFactory<AlarmClient> {
@Override @Override
public AlarmClient create(Throwable throwable) { public AlarmClient create(Throwable throwable) {

View File

@@ -11,6 +11,15 @@ import lombok.Data;
@Data @Data
public class DevDetailVO { public class DevDetailVO {
@ApiModelProperty("地市")
private String cit;
@ApiModelProperty("供电公司")
private String company;
@ApiModelProperty("终端厂家")
private String manufacturer;
@ApiModelProperty(name = "lineId",value = "监测点索引") @ApiModelProperty(name = "lineId",value = "监测点索引")
private String lineId; private String lineId;
@@ -32,4 +41,6 @@ public class DevDetailVO {
@ApiModelProperty(name = "subName",value = "对象id(新能源用户)") @ApiModelProperty(name = "subName",value = "对象id(新能源用户)")
private String ObjId; private String ObjId;
@ApiModelProperty("终端运行状态0运行1检修2停运3调试4退运")
private Integer runFlag;
} }

View File

@@ -29,6 +29,18 @@ public class DeviceRunEvaluateVO {
@ApiModelProperty("评价") @ApiModelProperty("评价")
private BigDecimal evaluate; private BigDecimal evaluate;
@ApiModelProperty("地市")
private String cit;
@ApiModelProperty("供电公司")
private String company;
@ApiModelProperty("终端厂家")
private String manufacturer;
@ApiModelProperty("终端运行状态0运行1检修2停运3调试4退运")
private String runFlag;
@ApiModelProperty("完整率") @ApiModelProperty("完整率")
private BigDecimal integrityRate; private BigDecimal integrityRate;

View File

@@ -36,6 +36,11 @@ import com.njcn.harmonic.pojo.param.RStatLimitQueryParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.supervision.api.UserLedgerFeignClient; import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.pojo.vo.user.NewUserReportVO; import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -66,7 +71,8 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
private final DeptLineService deptLineService; private final DeptLineService deptLineService;
private final GeneralDeviceService deviceService; private final GeneralDeviceService deviceService;
private final OnLineRateMapper onLineRateMapper; private final OnLineRateMapper onLineRateMapper;
private final LineService lineService; private final DicDataFeignClient dicDataFeignClient;
private final DeptFeignClient deptFeignClient;
/** /**
* 数据完整性:50% * 数据完整性:50%
*/ */
@@ -340,6 +346,11 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
@Override @Override
public List<DeviceRunEvaluateVO.Detail> getRunEvaluate(DeviceInfoParam.BusinessParam param) { public List<DeviceRunEvaluateVO.Detail> getRunEvaluate(DeviceInfoParam.BusinessParam param) {
List<DictData> manufacturerList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_MANUFACTURER.getCode()).getData();
Map<String, String> manufacturerMap = manufacturerList.stream().collect(Collectors.toMap(DictData::getId, DictData::getName));
List<Dept> deptList = deptFeignClient.getAllDept().getData();
Map<String, String> deptMap = deptList.stream().collect(Collectors.toMap(Dept::getId, Dept::getName));
List<DeviceRunEvaluateVO.Detail> info = new ArrayList<>(); List<DeviceRunEvaluateVO.Detail> info = new ArrayList<>();
//获取终端台账类信息 //获取终端台账类信息
List<GeneralDeviceDTO> deviceInfo = deviceService.getDeviceInfo(param, ObjectUtil.isNull(param.getLineRunFlag()) ? null : Arrays.asList(param.getLineRunFlag()), Arrays.asList(1)); List<GeneralDeviceDTO> deviceInfo = deviceService.getDeviceInfo(param, ObjectUtil.isNull(param.getLineRunFlag()) ? null : Arrays.asList(param.getLineRunFlag()), Arrays.asList(1));
@@ -395,6 +406,14 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
evaluateVO.setName(value.get(0).getDevName()); evaluateVO.setName(value.get(0).getDevName());
evaluateVO.setSubName(value.get(0).getSubName()); evaluateVO.setSubName(value.get(0).getSubName());
evaluateVO.setIp(value.get(0).getIp()); evaluateVO.setIp(value.get(0).getIp());
//部门
if (deptMap.containsKey(value.get(0).getCit())) {
evaluateVO.setCit(deptMap.get(value.get(0).getCit()));
}
//终端厂商
if (manufacturerMap.containsKey(value.get(0).getManufacturer())) {
evaluateVO.setManufacturer(manufacturerMap.get(value.get(0).getManufacturer()));
}
evaluateVO.setOnLineRate(onLineRate(onlineRateByDev, Arrays.asList(key))); evaluateVO.setOnLineRate(onLineRate(onlineRateByDev, Arrays.asList(key)));
evaluateVO.setIntegrityRate(integrity(integrityList, ids)); evaluateVO.setIntegrityRate(integrity(integrityList, ids));
evaluateVO.setPassRate(limitRate(limitRatePOList, ids)); evaluateVO.setPassRate(limitRate(limitRatePOList, ids));

View File

@@ -1851,42 +1851,55 @@
where t1.state = 1 where t1.state = 1
</select> </select>
<select id="getLineDeviceByDevIds" resultType="com.njcn.device.pq.pojo.vo.DevDetailVO"> <select id="getLineDeviceByDevIds" resultType="com.njcn.device.pq.pojo.vo.DevDetailVO">
SELECT distinct SELECT DISTINCT
t.id lineId, line.id as lineId,
t.NAME lineName, line.name as lineName,
dev.id devId, device.id as devId,
dev.NAME devName, pd.Id as cit,
sub.NAME subName, gd.NAME as company,
td.Obj_Id objId, substation.NAME as subName,
device.ip device.NAME as devName,
lineDetail.Line_Grade AS lineGrade,
deviceDetail.Update_Time AS timeID,
deviceDetail.ip as ip,
deviceDetail.Com_Flag as comFlag,
deviceDetail.run_Flag as runFlag,
deviceDetail.Manufacturer as manufacturer,
deviceDetail.Next_Time_Check as nextTimeCheck,
lineDetail.Obj_Id objId
FROM FROM
pq_line t, pq_line line,
pq_line_detail td, pq_dept_line pd,
pq_line subv, pq_line voltage,
pq_line dev, pq_line device,
pq_device device, pq_line substation,
pq_line sub pq_line gd,
WHERE pq_device deviceDetail,
t.id = td.id pq_line_detail lineDetail
AND subv.id = t.pid <where>
AND dev.id = subv.pid line.pid = voltage.id
AND dev.id = device.id AND line.id = pd.Line_Id
AND sub.id = dev.pid AND voltage.pid = device.id
<if test="powerFlag!=null and powerFlag!=2"> AND device.pid = substation.id
AND td.Power_Flag =#{powerFlag} AND substation.pid = gd.id
</if> AND device.id = deviceDetail.id
<if test="lineIds!=null and lineIds.size()!=0"> AND line.id = lineDetail.id
AND t.id in <if test="powerFlag!=null and powerFlag!=2">
<foreach item="item" collection="lineIds" separator="," open="(" close=")"> AND lineDetail.Power_Flag =#{powerFlag}
#{item} </if>
</foreach> <if test="lineIds!=null and lineIds.size()!=0">
</if> AND line.id in
<if test="devIds!=null and devIds.size()!=0"> <foreach item="item" collection="lineIds" separator="," open="(" close=")">
AND dev.id in #{item}
<foreach item="item" collection="devIds" separator="," open="(" close=")"> </foreach>
#{item} </if>
</foreach> <if test="devIds!=null and devIds.size()!=0">
</if> AND device.id in
<foreach item="item" collection="devIds" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</where>
</select> </select>
<select id="getSubIdByPid" resultType="String"> <select id="getSubIdByPid" resultType="String">

View File

@@ -131,12 +131,6 @@
<version>1.0.0</version> <version>1.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>harmonic-common</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -30,8 +30,11 @@
<version>1.0.0</version> <version>1.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -42,6 +43,7 @@ import java.util.stream.Collectors;
* @author wr * @author wr
* @since 2023-04-03 * @since 2023-04-03
*/ */
@DS("sjzx")
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class RStatLimitRateDServiceImpl extends ServiceImpl<RStatLimitRateDMapper, RStatLimitRateDPO> implements IRStatLimitRateDService { public class RStatLimitRateDServiceImpl extends ServiceImpl<RStatLimitRateDMapper, RStatLimitRateDPO> implements IRStatLimitRateDService {

View File

@@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -36,7 +37,7 @@ import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@DS("sjzx")
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class RStatLimitRateDetailDServiceImpl extends ServiceImpl<RStatLimitRateDetailDMapper, RStatLimitRateDetailDPO> implements IRStatLimitRateDetailDService { public class RStatLimitRateDetailDServiceImpl extends ServiceImpl<RStatLimitRateDetailDMapper, RStatLimitRateDetailDPO> implements IRStatLimitRateDetailDService {