diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformRealData/service/BiPlatformRealDataService.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformRealData/service/BiPlatformRealDataService.java index 0069c653f..da9fba312 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformRealData/service/BiPlatformRealDataService.java +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformRealData/service/BiPlatformRealDataService.java @@ -5,10 +5,18 @@ import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformVehiclePO; import com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformOverviewPO; import com.mhd.bi.domain.biPlatformRealData.repository.po.RealVehicleStatusPO; import com.mhd.bi.domain.biPlatformRealData.repository.po.RealTaskLoadPO; +import com.mhd.bi.domain.biSnapshotSync.support.BiSnapshotWeeklyRandomDataBuilder; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformVehicleItemVO; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.TaskLoadItemVO; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Random; /** * 月台监测-真实数据业务层(封装 YMS 跨库查询) @@ -89,4 +97,88 @@ public class BiPlatformRealDataService { return java.util.Collections.emptyList(); } } + + /** + * 实时组装月台监测数据:真实字段查 YMS 库,写死字段保留静态值。 + * 每次调用实时查库,不经过快照表。 + */ + public PlatformSurveillanceVO buildRealTimePlatformSurveillance() { + Random r = new Random(); + PlatformSurveillanceVO template = BiSnapshotWeeklyRandomDataBuilder.platformSurveillance(r); + + // 作业车辆列表 + List realVehicles = queryVehicles(); + List vehicleVos = new ArrayList<>(); + for (RealPlatformVehiclePO rv : realVehicles) { + PlatformVehicleItemVO v = new PlatformVehicleItemVO(); + v.setAppointmentTime(rv.getAppointmentTime()); + v.setWorkFloor(rv.getWorkFloor()); + v.setPlateNumber(rv.getPlateNumber()); + v.setStatus(rv.getStatus()); + v.setPlatformId(rv.getPlatformId()); + v.setPlatformDuration(rv.getPlatformDuration() == null ? 0 : rv.getPlatformDuration().intValue()); + vehicleVos.add(v); + } + if (!vehicleVos.isEmpty()) { + template.setVehicles(vehicleVos); + } + + // 月台实时概览 + RealPlatformOverviewPO ov = queryPlatformOverview(); + if (template.getPlatformOverview() != null) { + template.getPlatformOverview().setTotalPlatforms(ov.getTotalPlatforms().intValue()); + template.getPlatformOverview().setOperatingPlatforms(ov.getOperatingPlatforms().intValue()); + int total = ov.getTotalPlatforms().intValue(); + int occ = ov.getOperatingPlatforms().intValue(); + int rate = total > 0 ? (int) Math.round(((double) occ / total) * 100.0) : 0; + template.getPlatformOverview().setCurrentOccupancyRate(rate); + } + long todayTasks = countTodayTasks(); + if (template.getPlatformOverview() != null) { + template.getPlatformOverview().setTodayTasks((int) todayTasks); + } + + // 作业车辆状态统计 + RealVehicleStatusPO vs = queryVehicleStatusToday(); + if (template.getVehicleStatus() != null) { + template.getVehicleStatus().setTodayReservedVehicles(vs.getTodayReservedVehicles().intValue()); + template.getVehicleStatus().setNotCheckedIn(vs.getNotCheckedIn().intValue()); + template.getVehicleStatus().setOperatingVehicles(vs.getOperatingVehicles().intValue()); + template.getVehicleStatus().setCompletedVehicles(vs.getCompletedVehicles().intValue()); + } + + // 本月任务统计 taskTotal + long monthTasks = countMonthTasks(); + if (template.getMonthlyTaskStatistics() != null) { + template.getMonthlyTaskStatistics().setTaskTotal((int) monthTasks); + } + + // 任务负荷(今日 24 小时) + List loads = queryTaskLoadToday(); + if (!loads.isEmpty() && template.getTaskLoadStatistics() != null) { + Map hourMap = new HashMap<>(); + for (RealTaskLoadPO l : loads) { + hourMap.put(l.getHourOfDay(), l.getTaskCount()); + } + for (TaskLoadItemVO item : template.getTaskLoadStatistics()) { + Integer hour = parseHourFromLabel(item.getTime()); + if (hour != null) { + Long n = hourMap.get(hour); + if (n != null) item.setTaskCount(n.intValue()); + } + } + } + + return template; + } + + private static Integer parseHourFromLabel(String label) { + if (label == null) return null; + try { + String s = label.replace("时", "").trim(); + return Integer.parseInt(s); + } catch (Exception e) { + return null; + } + } } \ No newline at end of file diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java index 6d6156940..4aa56c70f 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java @@ -3,6 +3,7 @@ package com.mhd.bi.interfaces.facadeApi.biReport; import com.mhd.bi.domain.biSnapshotSync.service.BiReportSnapshotSyncService; import com.mhd.bi.domain.biComprehensive.service.BiComprehensiveReportService; import com.mhd.bi.domain.biPlatformSurveillance.service.BiPlatformSurveillanceReportService; +import com.mhd.bi.domain.biPlatformRealData.service.BiPlatformRealDataService; import com.mhd.bi.domain.biOverallOperation.service.BiOverallOperationReportService; import com.mhd.bi.domain.biHkMacaoServiceZone.service.BiHkMacaoServiceZoneReportService; import com.mhd.bi.domain.biTransportOperationZone.service.BiTransportOperationZoneReportService; @@ -48,6 +49,9 @@ public class BiReportApi extends BaseController { @Autowired private BiPlatformSurveillanceReportService biPlatformSurveillanceReportService; + @Autowired + private BiPlatformRealDataService biPlatformRealDataService; + @Autowired private BiOverallOperationReportService biOverallOperationReportService; @@ -92,12 +96,12 @@ public class BiReportApi extends BaseController { } /** - * 月台监测指标查询(按照 del_flag=1,按 create_time 最新一条) + * 月台监测指标查询(实时查 YMS 库,真实字段 + 写死字段) */ - @ApiOperation(value = "月台监测指标查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新的一条快照") + @ApiOperation(value = "月台监测指标查询", notes = "每次调用实时查询 YMS 库组装;部分字段为真实业务数据,部分为写死数据") @GetMapping("/platformSurveillance") public BiApiResult platformSurveillance() { - PlatformSurveillanceVO data = biPlatformSurveillanceReportService.loadLatestPlatformSurveillance(); + PlatformSurveillanceVO data = biPlatformRealDataService.buildRealTimePlatformSurveillance(); return BiApiResult.ok(data); } //园区物流大屏接口----------------------------------------------------------------------