package cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @Schema(description = "管理后台 - MES 生产报工新增/修改 Request VO") @Data public class MesProFeedbackSaveReqVO { @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; @Schema(description = "报工单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "FB202503001") @NotNull(message = "报工单编号不能为空") private String code; @Schema(description = "报工类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "报工类型不能为空") private Integer type; @Schema(description = "工作站编号", example = "1") private Long workstationId; @Schema(description = "主计价设备编号,本次报工实际使用的设备;工资单价按工序+工艺路线+设备匹配", example = "8") private Long machineryId; @Schema(description = "工艺路线编号", example = "1") private Long routeId; @Schema(description = "工序编号", example = "1") private Long processId; @Schema(description = "生产工单编号", example = "1") private Long workOrderId; @Schema(description = "生产任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "生产任务不能为空") private Long taskId; @Schema(description = "产品物料编号", example = "100") private Long itemId; @Schema(description = "过期日期") private LocalDateTime expireDate; @Schema(description = "生产批号", example = "LOT20260321") private String lotNumber; @Schema(description = "排产数量", example = "5000.00") private BigDecimal scheduledQuantity; @Schema(description = "本次报工数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "500.00") @NotNull(message = "报工数量不能为空") private BigDecimal feedbackQuantity; @Schema(description = "合格品数量", example = "490.00") private BigDecimal qualifiedQuantity; @Schema(description = "不良品数量", example = "10.00") private BigDecimal unqualifiedQuantity; @Schema(description = "待检测数量", example = "0") private BigDecimal uncheckQuantity; @Schema(description = "工废数量", example = "6.00") private BigDecimal laborScrapQuantity; @Schema(description = "料废数量", example = "4.00") private BigDecimal materialScrapQuantity; @Schema(description = "其他废品数量", example = "0") private BigDecimal otherScrapQuantity; @Schema(description = "报工人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "报工人不能为空") private Long feedbackUserId; @Schema(description = "计费类型:1-计时 2-计件(由工序自动带出,前端无需提交)", example = "2") private Integer billingType; @Schema(description = "工资定额(由工序自动带出,前端无需提交)", example = "12.50") private BigDecimal wageRate; @Schema(description = "本次报工工时(小时),计时计薪的工序必填", example = "8.00") private BigDecimal workHours; @Schema(description = "本次报工工资(后端按工序计费类型自动计算,前端无需提交)", example = "100.00") private BigDecimal wageAmount; @Schema(description = "本次生产长度(米),仅用于计算标准工时;报工单位为米时默认等于报工数量", example = "1000.00") private BigDecimal productionLength; @Schema(description = "辅助工时录入项") private List auxList; @Schema(description = "报工时间", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "报工时间不能为空") private LocalDateTime feedbackTime; @Schema(description = "审核人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "审核人不能为空") private Long approveUserId; @Schema(description = "工艺参数值") private List paramValues; @Data public static class AuxValue { @Schema(description = "辅助工时项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") @NotNull(message = "辅助工时项目不能为空") private Long auxItemId; @Schema(description = "次数/个数/盘数/米数", example = "2.00") private BigDecimal quantity; @Schema(description = "换色/换料起始材料(按材料对配置时填写)", example = "PVC") private String materialFrom; @Schema(description = "换色/换料目标材料(按材料对配置时填写)", example = "LSZH") private String materialTo; @Schema(description = "备注") private String remark; } @Data public static class ParamValue { @Schema(description = "任务参数记录明细编号", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "参数明细不能为空") private Long detailId; @Schema(description = "参数值") private String value; } @Schema(description = "备注", example = "备注") private String remark; @Schema(description = "BPM 流程实例编号") private String processInstanceId; @Schema(description = "BPM 流程定义 Key") private String processDefinitionKey; }