feat: 增加LMS日计划领域模型

This commit is contained in:
zhouz
2026-08-14 13:50:19 +08:00
parent ff047eae81
commit ff603a7124
9 changed files with 329 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
package cn.code.nl.module.lms.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 日计划订单状态枚举
*/
@Getter
@AllArgsConstructor
public enum DailyPlanOrderStatusEnum {
NOT_STARTED(0),
IN_PROGRESS(1),
FINISHED(2),
CANCELED(3);
/**
* 订单状态编码
*/
private final Integer code;
/**
* 根据编码获取订单状态
*/
public static DailyPlanOrderStatusEnum getByCode(Integer code) {
for (DailyPlanOrderStatusEnum value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}
}

View File

@@ -0,0 +1,32 @@
package cn.code.nl.module.lms.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 日计划来源类型枚举
*/
@Getter
@AllArgsConstructor
public enum DailyPlanSourceTypeEnum {
ERP(1),
MANUAL(2);
/**
* 来源类型编码
*/
private final Integer code;
/**
* 根据编码获取来源类型
*/
public static DailyPlanSourceTypeEnum getByCode(Integer code) {
for (DailyPlanSourceTypeEnum value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}
}

View File

@@ -0,0 +1,32 @@
package cn.code.nl.module.lms.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 日计划策略模式枚举
*/
@Getter
@AllArgsConstructor
public enum DailyPlanStrategyModeEnum {
SEQUENCE(1),
WEIGHT_ROUND_ROBIN(2);
/**
* 策略模式编码
*/
private final Integer code;
/**
* 根据编码获取策略模式
*/
public static DailyPlanStrategyModeEnum getByCode(Integer code) {
for (DailyPlanStrategyModeEnum value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}
}

View File

@@ -0,0 +1,32 @@
package cn.code.nl.module.lms.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 日计划策略类型枚举
*/
@Getter
@AllArgsConstructor
public enum DailyPlanStrategyTypeEnum {
STOCKING(1),
SLEEVING(2);
/**
* 策略类型编码
*/
private final Integer code;
/**
* 根据编码获取策略类型
*/
public static DailyPlanStrategyTypeEnum getByCode(Integer code) {
for (DailyPlanStrategyTypeEnum value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}
}

View File

@@ -0,0 +1,34 @@
package cn.code.nl.module.lms.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 日计划作业状态枚举
*/
@Getter
@AllArgsConstructor
public enum DailyPlanWorkStatusEnum {
NOT_STARTED(0),
IN_PROGRESS(1),
COMPLETED(2),
CANCELED(3);
/**
* 作业状态编码
*/
private final Integer code;
/**
* 根据编码获取作业状态
*/
public static DailyPlanWorkStatusEnum getByCode(Integer code) {
for (DailyPlanWorkStatusEnum value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}
}

View File

@@ -45,4 +45,17 @@ public interface ErrorCodeConstants {
ErrorCode STOCKING_IVT_NOT_EXISTS = new ErrorCode(22, "备货区域点位不存在"); ErrorCode STOCKING_IVT_NOT_EXISTS = new ErrorCode(22, "备货区域点位不存在");
ErrorCode PAPER_VEHICLE_POSITION_DUPLICATED = new ErrorCode(23, "托盘格位重复:{}"); ErrorCode PAPER_VEHICLE_POSITION_DUPLICATED = new ErrorCode(23, "托盘格位重复:{}");
ErrorCode PAPER_VEHICLE_POSITION_OUT_OF_RANGE = new ErrorCode(24, "托盘格位超出5×5范围:{}"); ErrorCode PAPER_VEHICLE_POSITION_OUT_OF_RANGE = new ErrorCode(24, "托盘格位超出5×5范围:{}");
// ========== LMS 日计划 ==========
ErrorCode DAILY_PLAN_NOT_EXISTS = new ErrorCode(25, "日计划不存在");
ErrorCode DAILY_PLAN_ERP_FINAL_STATUS_NOT_UPDATE = new ErrorCode(26, "ERP终态订单不可更新");
ErrorCode DAILY_PLAN_ERP_PLAN_QTY_NOT_DECREASE = new ErrorCode(27, "ERP计划数量不能减少");
ErrorCode DAILY_PLAN_STATUS_OPERATION_NOT_ALLOWED = new ErrorCode(28, "日计划当前状态{}不允许执行{}操作");
ErrorCode DAILY_PLAN_COMPLETED_QTY_EXCEEDS_TOTAL = new ErrorCode(29, "日计划完成数量超过需求总量");
ErrorCode DAILY_PLAN_VERSION_CONFLICT = new ErrorCode(30, "日计划数据已变化,请刷新重试");
ErrorCode DAILY_PLAN_STRATEGY_NOT_EXISTS = new ErrorCode(31, "日计划策略不存在");
ErrorCode DAILY_PLAN_SORT_SEQ_NOT_POSITIVE = new ErrorCode(32, "日计划顺序必须为正整数");
ErrorCode DAILY_PLAN_WEIGHT_NOT_POSITIVE = new ErrorCode(33, "日计划权重必须为正整数");
ErrorCode DAILY_PLAN_CANCEL_OR_RESUME_REASON_EMPTY = new ErrorCode(34, "取消或恢复原因不能为空");
ErrorCode DAILY_PLAN_ERP_TOKEN_ERROR = new ErrorCode(35, "ERP日计划接口令牌错误");
} }

View File

@@ -0,0 +1,81 @@
package cn.code.nl.module.lms.dal.dataobject.dailyplan;
import cn.code.nl.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* LMS 日计划 DO
*/
@TableName("lms_daily_plan")
@Data
@EqualsAndHashCode(callSuper = true)
public class DailyPlanDO extends TenantBaseDO {
/** 日计划 ID */
@TableId
private Long dailyPlanId;
/** 日计划编码 */
private String planCode;
/** 来源类型 */
private Integer sourceType;
/** ERP 订单号 */
private String erpOrderCode;
/** 人工订单号 */
private String manualOrderCode;
/** 计划日期 */
private LocalDate planDate;
/** 物料 ID */
private Long materialId;
/** 物料编码 */
private String materialCode;
/** 物料名称 */
private String materialName;
/** 物料规格 */
private String materialSpec;
/** 计划数量 */
private Integer planQty;
/** 追加数量 */
private Integer appendQty;
/** 已备货数量 */
private Integer stockedQty;
/** 已套管数量 */
private Integer sleevedQty;
/** 包装信息 */
private String packingInfo;
/** 排序序号 */
private Integer sortSeq;
/** 调度权重 */
private Integer weight;
/** 订单状态 */
private Integer orderStatus;
/** 备货状态 */
private Integer stockingStatus;
/** 套管状态 */
private Integer sleevingStatus;
/** 前一订单状态 */
private Integer previousOrderStatus;
/** 前一备货状态 */
private Integer previousStockingStatus;
/** 前一套管状态 */
private Integer previousSleevingStatus;
/** 订单开始时间 */
private LocalDateTime orderStartTime;
/** 订单结束时间 */
private LocalDateTime orderEndTime;
/** 备货开始时间 */
private LocalDateTime stockingStartTime;
/** 备货完成时间 */
private LocalDateTime stockingCompleteTime;
/** 套管开始时间 */
private LocalDateTime sleevingStartTime;
/** 套管完成时间 */
private LocalDateTime sleevingCompleteTime;
/** 乐观锁版本号 */
private Integer version;
}

View File

@@ -0,0 +1,43 @@
package cn.code.nl.module.lms.dal.dataobject.dailyplan;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
* LMS 日计划操作日志 DO
*/
@TableName("lms_daily_plan_operation_log")
@Data
public class DailyPlanOperationLogDO {
/** 操作日志 ID */
@TableId
private Long operationLogId;
/** 日计划 ID */
private Long dailyPlanId;
/** 操作对象 */
private String operationTarget;
/** 操作类型 */
private String operationType;
/** 操作前值 */
private String beforeValue;
/** 操作后值 */
private String afterValue;
/** 变更数量 */
private Integer changeQty;
/** 操作原因 */
private String operationReason;
/** 操作人 */
private String operator;
/** 操作时间 */
private LocalDateTime operationTime;
/** 是否删除 */
@TableLogic
private Boolean deleted;
/** 租户编号 */
private Long tenantId;
}

View File

@@ -0,0 +1,28 @@
package cn.code.nl.module.lms.dal.dataobject.dailyplan;
import cn.code.nl.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* LMS 日计划调度策略 DO
*/
@TableName("lms_daily_plan_strategy")
@Data
@EqualsAndHashCode(callSuper = true)
public class DailyPlanStrategyDO extends TenantBaseDO {
/** 策略 ID */
@TableId
private Long strategyId;
/** 策略类型 */
private Integer strategyType;
/** 策略模式 */
private Integer strategyMode;
/** 当前游标日计划 ID */
private Long cursorDailyPlanId;
/** 乐观锁版本号 */
private Integer version;
}