稳态报表功能适配台账

This commit is contained in:
cdf
2025-12-22 19:56:21 +08:00
parent 240ec304b0
commit 2894a4780b
7 changed files with 32 additions and 23 deletions

View File

@@ -15,7 +15,6 @@ import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD; import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.pojo.vo.DevDetail; import com.njcn.device.pq.pojo.vo.DevDetail;
import com.njcn.device.pq.pojo.vo.LineDeviceStateVO; import com.njcn.device.pq.pojo.vo.LineDeviceStateVO;
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
import com.njcn.user.api.UserFeignClient; import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User; import com.njcn.user.pojo.po.User;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -81,4 +80,4 @@ public class DataIntegrityServiceImpl implements DataIntegrityService {
} }
} }

View File

@@ -10,12 +10,14 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.pojo.param.OnlineRateParam; import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.vo.DevDetail; import com.njcn.device.pq.pojo.vo.DevDetail;
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO; import com.njcn.device.pq.pojo.vo.RStatOnlineRateVO;
import com.njcn.user.api.UserFeignClient; import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User; import com.njcn.user.pojo.po.User;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -54,7 +56,7 @@ public class StaticServiceImpl implements StaticService {
//获取终端信息 //获取终端信息
List<DevDetail> devDetails = generalDeviceInfoClient.getDevInfoByIds(new ArrayList<>()).getData(); List<DevDetail> devDetails = generalDeviceInfoClient.getDevInfoByIds(new ArrayList<>()).getData();
//获取终端在线率 //获取终端在线率
List<RStatOnlinerateVO> onlineRates = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData(); List<RStatOnlineRateVO> onlineRates = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData();
//异常终端数据 //异常终端数据
long count = devDetails.stream().filter(x -> 0==x.getComFlag()).count(); long count = devDetails.stream().filter(x -> 0==x.getComFlag()).count();
StaticInfo info=new StaticInfo(); StaticInfo info=new StaticInfo();
@@ -63,14 +65,14 @@ public class StaticServiceImpl implements StaticService {
info.setOnlineRatez(data); info.setOnlineRatez(data);
info.setComError(count); info.setComError(count);
List<StaticInfo.DevStatic> list=new ArrayList<>(); List<StaticInfo.DevStatic> list=new ArrayList<>();
Map<String, Float> onlineRateMap = onlineRates.stream().collect(Collectors.toMap(RStatOnlinerateVO::getDevIndex, RStatOnlinerateVO::getOnlineRate)); Map<String, BigDecimal> onlineRateMap = onlineRates.stream().collect(Collectors.toMap(RStatOnlineRateVO::getDevIndex, RStatOnlineRateVO::getOnlineRate));
StaticInfo.DevStatic devStatic; StaticInfo.DevStatic devStatic;
for (DevDetail devDetail : devDetails) { for (DevDetail devDetail : devDetails) {
devStatic=new StaticInfo.DevStatic(); devStatic=new StaticInfo.DevStatic();
devStatic.setDevIndex(devDetail.getDevIndex()); devStatic.setDevIndex(devDetail.getDevIndex());
devStatic.setDevName(devDetail.getDevName()); devStatic.setDevName(devDetail.getDevName());
devStatic.setIp(devDetail.getIp()); devStatic.setIp(devDetail.getIp());
devStatic.setOnlineRate(onlineRateMap.get(devDetail.getDevIndex())); devStatic.setOnlineRate(onlineRateMap.get(devDetail.getDevIndex()).setScale(3, RoundingMode.HALF_UP).floatValue());
devStatic.setGdName(devDetail.getGdName()); devStatic.setGdName(devDetail.getGdName());
devStatic.setSubName(devDetail.getBdzName()); devStatic.setSubName(devDetail.getBdzName());
devStatic.setTimeId(devDetail.getTimeID()); devStatic.setTimeId(devDetail.getTimeID());
@@ -80,4 +82,4 @@ public class StaticServiceImpl implements StaticService {
return info; return info;
} }
} }

View File

@@ -19,7 +19,7 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
line_id, dev_id, `name`, `position`, vol_grade, pt_ratio, ct_ratio, `status`, create_by, line_id, dev_id, `name`, `position`, vol_grade, pt_ratio, ct_ratio, `status`, create_by,
create_time, update_by, update_time create_time, update_by, update_time
</sql> </sql>
@@ -37,7 +37,7 @@
<select id="getCustomDetailByLineId" resultType="map"> <select id="getCustomDetailByLineId" resultType="map">
SELECT SELECT
line.id AS lineId, line.line_id as lineId,
line.name as lineName, line.name as lineName,
concat(round(line.pt_ratio,0),concat(':',round(line.pt2_ratio,0))) as pt, concat(round(line.pt_ratio,0),concat(':',round(line.pt2_ratio,0))) as pt,
concat(round(line.ct_ratio,0),concat(':',round(line.ct2_ratio,0))) as ct, concat(round(line.ct_ratio,0),concat(':',round(line.ct2_ratio,0))) as ct,
@@ -49,6 +49,6 @@
FROM FROM
cs_line line cs_line line
WHERE WHERE
line.id = #{lineId} line.line_id = #{lineId}
</select> </select>
</mapper> </mapper>

View File

@@ -16,13 +16,13 @@ public class SensitiveUserReportQueryParam {
@ApiModelProperty(name = "tempId",value = "模板ID") @ApiModelProperty(name = "tempId",value = "模板ID")
private String tempId; private String tempId;
@ApiModelProperty(name = "searchBeginTime", value = "开始时间") @ApiModelProperty(name = "startTime", value = "开始时间")
@NotBlank(message = "起始时间不可为空") @NotBlank(message = "起始时间不可为空")
@DateTimeStrValid(message = "起始时间格式出错") @DateTimeStrValid(message = "起始时间格式出错")
private String searchBeginTime; private String startTime;
@ApiModelProperty(name = "searchEndTime", value = "结束时间") @ApiModelProperty(name = "endTime", value = "结束时间")
@NotBlank(message = "结束时间不可为空") @NotBlank(message = "结束时间不可为空")
private String searchEndTime; private String endTime;
} }

View File

@@ -100,7 +100,7 @@ public class CustomReportController extends BaseController {
@GetMapping("/getTemplateByDept") @GetMapping("/getTemplateByDept")
@ApiOperation("根据部门查询模板") @ApiOperation("根据部门查询模板")
@ApiImplicitParam(name = "id", value = "id", required = true) @ApiImplicitParam(name = "id", value = "id", required = true)
public HttpResult<List<ReportTemplateVO>> getTemplateByDept(@RequestParam("id") String id){ public HttpResult<List<ReportTemplateVO>> getTemplateByDept(@RequestParam(value = "id",required = false) String id){
String methodDescribe = getMethodDescribe("getTemplateList"); String methodDescribe = getMethodDescribe("getTemplateList");
List<ReportTemplateVO> list = customReportService.getTemplateByDept(id); List<ReportTemplateVO> list = customReportService.getTemplateByDept(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);

View File

@@ -375,7 +375,7 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
} else if (v.contains("start_time") && v.contains("end_time")){ } else if (v.contains("start_time") && v.contains("end_time")){
//如时间是大于当前时间则用当前时间 //如时间是大于当前时间则用当前时间
LocalDate startDate = LocalDateTimeUtil.parseDate(queryParam.getSearchBeginTime(), DatePattern.NORM_DATE_PATTERN); LocalDate startDate = LocalDateTimeUtil.parseDate(queryParam.getStartTime(), DatePattern.NORM_DATE_PATTERN);
LocalDate nowDate = LocalDate.now(); LocalDate nowDate = LocalDate.now();
if (!nowDate.isAfter(startDate)) { if (!nowDate.isAfter(startDate)) {
startDate = LocalDate.now(); startDate = LocalDate.now();
@@ -383,11 +383,11 @@ public class CustomReportServiceImpl implements CustomReportService {
String startTime = LocalDateTimeUtil.format(startDate, DatePattern.NORM_DATE_PATTERN) + InfluxDbSqlConstant.START_TIME; String startTime = LocalDateTimeUtil.format(startDate, DatePattern.NORM_DATE_PATTERN) + InfluxDbSqlConstant.START_TIME;
//如时间是大于当前时间则用当前时间 //如时间是大于当前时间则用当前时间
String localTime = InfluxDbSqlConstant.END_TIME; String localTime = InfluxDbSqlConstant.END_TIME;
LocalDate endDate = LocalDateTimeUtil.parseDate(queryParam.getSearchEndTime(), DatePattern.NORM_DATE_PATTERN); LocalDate endDate = LocalDateTimeUtil.parseDate(queryParam.getEndTime(), DatePattern.NORM_DATE_PATTERN);
if (nowDate.isAfter(endDate)) { if (nowDate.isAfter(endDate)) {
localTime = " " + LocalTime.now().format(DatePattern.NORM_TIME_FORMATTER); localTime = " " + LocalTime.now().format(DatePattern.NORM_TIME_FORMATTER);
} }
String endTime = queryParam.getSearchEndTime() + localTime; String endTime = queryParam.getEndTime() + localTime;
String val = v.replace(STR_THREE, "").replace("start_time", startTime).replace("end_time", endTime); String val = v.replace(STR_THREE, "").replace("start_time", startTime).replace("end_time", endTime);
son.putOpt(V, val); son.putOpt(V, val);
@@ -1050,9 +1050,9 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
//时间范围处理 //时间范围处理
sql.append(InfluxDbSqlConstant.AND) sql.append(InfluxDbSqlConstant.AND)
.append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.GE).append(InfluxDbSqlConstant.QM).append(queryParam.getSearchBeginTime()).append(InfluxDbSqlConstant.START_TIME).append(InfluxDbSqlConstant.QM) .append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.GE).append(InfluxDbSqlConstant.QM).append(queryParam.getStartTime()).append(InfluxDbSqlConstant.START_TIME).append(InfluxDbSqlConstant.QM)
.append(InfluxDbSqlConstant.AND) .append(InfluxDbSqlConstant.AND)
.append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.LT).append(InfluxDbSqlConstant.QM).append(queryParam.getSearchEndTime()).append(InfluxDbSqlConstant.END_TIME).append(InfluxDbSqlConstant.QM); .append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.LT).append(InfluxDbSqlConstant.QM).append(queryParam.getEndTime()).append(InfluxDbSqlConstant.END_TIME).append(InfluxDbSqlConstant.QM);
System.out.println(sql); System.out.println(sql);
List<Map<String, Object>> mapList = Collections.emptyList(); List<Map<String, Object>> mapList = Collections.emptyList();
@@ -1130,6 +1130,8 @@ public class CustomReportServiceImpl implements CustomReportService {
Map<String, List<ReportTemplateDTO>> valueTypeMap = templateValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod)); Map<String, List<ReportTemplateDTO>> valueTypeMap = templateValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod));
//每张表开启一个独立线程查询 //每张表开启一个独立线程查询
futures.add(executorService.submit(() -> { futures.add(executorService.submit(() -> {
// 子线程中手动指定数据源(关键)
DynamicDataSourceContextHolder.push("sjzx");
//avg.max,min,cp95 //avg.max,min,cp95
valueTypeMap.forEach((valueTypeKey, valueTypeVal) -> { valueTypeMap.forEach((valueTypeKey, valueTypeVal) -> {
//相别分组 //相别分组
@@ -1174,7 +1176,7 @@ public class CustomReportServiceImpl implements CustomReportService {
//处理台账信息 //处理台账信息
Map<String, String> finalTerminalMap; Map<String, String> finalTerminalMap;
if (CollUtil.isNotEmpty(terminalList)) { if (CollUtil.isNotEmpty(terminalList)) {
finalTerminalMap = convertKeysToUpperCase(commTerminalGeneralClient.getCustomDetailByLineId(reportSearchParam.getLineId()).getData()); finalTerminalMap = convertKeysToUpperCase(csLineFeignClient.getCustomDetailByLineId(reportSearchParam.getLineId()).getData());
} else { } else {
finalTerminalMap = new HashMap<>(); finalTerminalMap = new HashMap<>();
} }

View File

@@ -33,6 +33,10 @@ spring:
refresh: true refresh: true
main: main:
allow-bean-definition-overriding: true allow-bean-definition-overriding: true
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
#项目日志的配置 #项目日志的配置
@@ -46,6 +50,8 @@ logging:
mybatis-plus: mybatis-plus:
#别名扫描 #别名扫描
type-aliases-package: com.njcn.harmonic.pojo type-aliases-package: com.njcn.harmonic.pojo
global-config:
enable-sql-runner: true
mqtt: mqtt:
client-id: @artifactId@${random.value} client-id: @artifactId@${random.value}