package cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.Map; /** * 管理后台 - 生产任务执行反馈分析 Response VO * *

把计划、实际报工、设备采集、物料消耗、交期偏差汇总到一处, * 供车间与计划员定位延期原因。所有数据均来自现有表,不做推断性补数。 */ @Schema(description = "管理后台 - 生产任务执行反馈分析 Response VO") @Data public class MesProTaskExecutionRespVO { @Schema(description = "任务编号") private Long taskId; @Schema(description = "任务编码") private String taskCode; @Schema(description = "任务名称") private String taskName; @Schema(description = "生产工单编号") private Long workOrderId; @Schema(description = "任务状态") private Integer status; @Schema(description = "计划数量") private BigDecimal plannedQuantity; @Schema(description = "实际报工数量") private BigDecimal producedQuantity; @Schema(description = "合格数量") private BigDecimal qualifyQuantity; @Schema(description = "报废数量") private BigDecimal unqualifyQuantity; @Schema(description = "完成率(%)") private BigDecimal completionRate; @Schema(description = "计划开始时间") private LocalDateTime startTime; @Schema(description = "实际首次报工时间") private LocalDateTime firstFeedbackTime; @Schema(description = "实际最后报工时间") private LocalDateTime lastFeedbackTime; @Schema(description = "计划完成时间") private LocalDateTime finishDate; @Schema(description = "计划工时(分钟)") private Integer plannedDuration; @Schema(description = "实际耗时(分钟,首次到末次报工)") private Long actualDuration; @Schema(description = "是否延期") private Boolean delayed; @Schema(description = "延期天数(正数表示超期)") private Long delayDays; @Schema(description = "延期原因(按可观测信号给出的候选,需人工确认)") private List delayCauses; @Schema(description = "设备运行数据(按设备汇总)") private List deviceRuns; @Schema(description = "物料消耗(按物料汇总)") private List materialConsumptions; @Schema(description = "设备运行汇总项") @Data public static class DeviceRun { @Schema(description = "设备台账编号") private Long machineryId; @Schema(description = "设备编码") private String deviceCode; @Schema(description = "采集次数") private Long sampleCount; @Schema(description = "累计运行时长") private BigDecimal totalRunTime; @Schema(description = "最近采集时间") private LocalDateTime lastCollectTime; @Schema(description = "最近运行状态") private Integer lastRunStatus; @Schema(description = "告警数") private Long alarmCount; } @Schema(description = "物料消耗项") @Data public static class MaterialConsumption { @Schema(description = "物料编号") private Long itemId; @Schema(description = "物料编码") private String itemCode; @Schema(description = "物料名称") private String itemName; @Schema(description = "消耗数量") private BigDecimal quantity; @Schema(description = "单位") private String unit; } }