完成排产(测试过了)

This commit is contained in:
2026-03-08 16:02:44 +08:00
parent b660ddcc3e
commit 7736ac3311
125 changed files with 10418 additions and 15 deletions

View File

@@ -0,0 +1,22 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 自动排程请求
*/
@Data
public class ApsAutoScheduleReq {
/** 必填计划ID */
@NotNull(message = "planId 不能为空")
private Long planId;
/** 是否清理旧排程(默认 true仅删除未锁定记录 */
private Boolean clearOld;
/** 备注/预留 */
private String remark;
}

View File

@@ -0,0 +1,18 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class ApsConvertFromCrmReq {
@NotBlank(message = "crmOrderId 不能为空")
private String crmOrderId;
/**
* 可选:指定转换的 CRM 明细 itemId 列表;为空则转换该订单全部明细
*/
private List<String> crmItemIds;
}

View File

@@ -0,0 +1,12 @@
package com.klp.aps.domain.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class ApsConvertFromCrmResp {
private Long wmsOrderId;
private String wmsOrderCode;
}

View File

@@ -0,0 +1,22 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data
public class ApsConvertFromProductReq {
@NotNull(message = "productId 不能为空")
private Long productId;
@NotNull(message = "quantity 不能为空")
@DecimalMin(value = "0.0001", message = "quantity 必须大于 0")
private BigDecimal quantity;
private String productName;
private String remark;
}

View File

@@ -0,0 +1,17 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApsConvertFromProductsReq {
@Valid
@NotEmpty(message = "items 不能为空")
private List<ApsConvertFromProductReq> items;
private String remark;
}

View File

@@ -0,0 +1,33 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 甘特查询参数
*/
@Data
public class ApsGanttQueryReq {
/** 可空:不传则查全部产线 */
private Long lineId;
/** 必填:查询开始时间 */
@NotNull(message = "queryStart 不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryStart;
/** 必填:查询结束时间 */
@NotNull(message = "queryEnd 不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryEnd;
/** 可空:按计划过滤 */
private Long planId;
/** 可空:按订单过滤 */
private Long orderId;
}

View File

@@ -0,0 +1,30 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 排产锁定请求
*/
@Data
public class ApsLockReq {
/**
* 锁定类型1计划 2产线时间窗 3工序
*/
private Integer lockType;
private Long planId;
private Long lineId;
private Long operationId;
private LocalDateTime lockStartTime;
private LocalDateTime lockEndTime;
private String lockReason;
}

View File

@@ -0,0 +1,38 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 创建计划请求
*/
@Data
public class ApsPlanCreateReq {
/** 必填订单ID */
@NotNull(message = "orderId 不能为空")
private Long orderId;
/** 可空:排产计划编号,不传则后端生成 */
private String planCode;
/** 可空:版本,不传默认 V1 */
private String version;
/** 可空优先级0低 1中 2高 3VIP */
private Integer priority;
/** 可空目标产线ID不传则按默认产线 */
private Long lineId;
/** 可空:计划开始时间 */
private LocalDateTime startDate;
/** 可空:计划结束时间 */
private LocalDateTime endDate;
/** 可空:备注 */
private String remark;
}

View File

@@ -0,0 +1,34 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 单工序重排请求
*/
@Data
public class ApsRescheduleReq {
/** 必填工序排程ID */
@NotNull(message = "operationId 不能为空")
private Long operationId;
/** 必填目标产线ID */
@NotNull(message = "targetLineId 不能为空")
private Long targetLineId;
/** 必填:目标开始时间 */
@NotNull(message = "targetStartTime 不能为空")
private LocalDateTime targetStartTime;
/** 必填:目标结束时间 */
@NotNull(message = "targetEndTime 不能为空")
private LocalDateTime targetEndTime;
/** 必填:重排原因 */
@NotNull(message = "reason 不能为空")
private String reason;
}

View File

@@ -0,0 +1,33 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 统一排产表查询参数MVP
*/
@Data
public class ApsScheduleSheetQueryReq {
/** 可空:计划查询关键字(支持 planId 或 planCode */
private String planId;
/** 可空:订单查询关键字(支持 orderId 或 orderCode */
private String orderId;
/** 可空产线ID不传查全部产线 */
private Long lineId;
/** 必填:查询开始时间 */
@NotNull(message = "queryStart 不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryStart;
/** 必填:查询结束时间 */
@NotNull(message = "queryEnd 不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryEnd;
}

View File

@@ -0,0 +1,31 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Data
public class ApsScheduleSheetSupplementSaveReq {
@Valid
@NotEmpty(message = "rows 不能为空")
private List<Row> rows;
@Data
public static class Row {
@NotNull(message = "operationId 不能为空")
private Long operationId;
private Long rawMaterialId;
private String rawCoilNos;
private BigDecimal rawNetWeight;
private String rawPackaging;
private String rawEdgeReq;
private String rawCoatingType;
private String rawLocation;
}
}

View File

@@ -0,0 +1,20 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApsWmsOrderCreateReq {
private String orderCode;
private Long customerId;
private String customerName;
private String salesManager;
private Integer orderStatus;
private String remark;
private BigDecimal taxAmount;
private BigDecimal noTaxAmount;
private String createBy;
private String updateBy;
}

View File

@@ -0,0 +1,21 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApsWmsOrderDetailCreateReq {
private Long orderId;
private Long productId;
private BigDecimal quantity;
private String unit;
private String remark;
private BigDecimal taxPrice;
private BigDecimal noTaxPrice;
private Long groupId;
private Integer delFlag;
private String createBy;
private String updateBy;
}