更新wip-退火 缺少实际库区选择,重新占据库位能力

This commit is contained in:
2026-03-14 18:39:19 +08:00
parent 7740531fc5
commit 9a645100df
56 changed files with 3783 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 退火炉信息表对象 wms_furnace
*
* @author klp
* @date 2026-03-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_furnace")
public class WmsFurnace extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 炉子ID
*/
@TableId(value = "furnace_id")
private Long furnaceId;
/**
* 炉编号
*/
private String furnaceCode;
/**
* 名称
*/
private String furnaceName;
/**
* 是否忙碌0=否1=是)
*/
private Integer busyFlag;
/**
* 状态0=停用1=启用)
*/
private Integer status;
/**
* 备注
*/
private String remark;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,71 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 退火计划对象 wms_furnace_plan
*
* @author klp
* @date 2026-03-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_furnace_plan")
public class WmsFurnacePlan extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 计划ID
*/
@TableId(value = "plan_id")
private Long planId;
/**
* 计划号
*/
private String planNo;
/**
* 计划开始时间
*/
private Date planStartTime;
/**
* 实际开始时间
*/
private Date actualStartTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 目标炉子ID
*/
private Long targetFurnaceId;
/**
* 计划状态0草稿 1已下发 2执行中 3已完成 4已取消
*/
private Integer status;
/**
* 备注
*/
private String remark;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,44 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 退火计划钢卷关系对象 wms_furnace_plan_coil
*
* @author klp
* @date 2026-03-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_furnace_plan_coil")
public class WmsFurnacePlanCoil extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 计划钢卷ID
*/
@TableId(value = "plan_coil_id")
private Long planCoilId;
/**
* 计划ID
*/
private Long planId;
/**
* 钢卷ID
*/
private Long coilId;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,31 @@
package com.klp.domain.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 炉火实绩查询业务对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealPerformanceBo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
private Long targetFurnaceId;
private String planNo;
private String enterCoilNo;
}

View File

@@ -0,0 +1,57 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 退火炉业务对象 wms_furnace
*
* @author klp
* @date 2026-03-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsFurnaceBo extends BaseEntity {
/**
* 炉子ID
*/
private Long furnaceId;
/**
* 炉编号
*/
@NotBlank(message = "炉编号不能为空")
private String furnaceCode;
/**
* 名称
*/
@NotBlank(message = "名称不能为空")
private String furnaceName;
/**
* 是否忙碌0=否1=是)
*/
private Integer busyFlag;
/**
* 状态0=停用1=启用)
*/
private Integer status;
/**
* 备注
*/
private String remark;
/**
* 批量操作ID
*/
@NotNull(message = "主键不能为空", groups = {com.klp.common.core.validate.EditGroup.class})
private Long[] furnaceIds;
}

View File

@@ -0,0 +1,21 @@
package com.klp.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 退火炉忙碌状态更新业务对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsFurnaceBusyBo {
@NotNull(message = "炉子ID不能为空")
private Long furnaceId;
@NotNull(message = "忙碌状态不能为空")
private Integer busyFlag;
}

View File

@@ -0,0 +1,70 @@
package com.klp.domain.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 退火计划业务对象 wms_furnace_plan
*
* @author klp
* @date 2026-03-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsFurnacePlanBo extends BaseEntity {
/**
* 计划ID
*/
private Long planId;
/**
* 计划号
*/
@NotBlank(message = "计划号不能为空")
private String planNo;
/**
* 计划开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date planStartTime;
/**
* 实际开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date actualStartTime;
/**
* 结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**
* 目标炉子ID
*/
@NotNull(message = "目标炉子不能为空")
private Long targetFurnaceId;
/**
* 计划状态0草稿 1已下发 2执行中 3已完成 4已取消
*/
private Integer status;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,49 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
/**
* 退火计划钢卷关系业务对象 wms_furnace_plan_coil
*
* @author klp
* @date 2026-03-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsFurnacePlanCoilBo extends BaseEntity {
/**
* 计划钢卷ID
*/
private Long planCoilId;
/**
* 计划ID
*/
@NotNull(message = "计划ID不能为空")
private Long planId;
/**
* 钢卷ID
*/
private Long coilId;
/**
* 钢卷ID列表逗号分隔
*/
private String coilIds;
/**
* 入场钢卷号(逗号分隔)
*/
private String enterCoilNos;
/**
* 当前钢卷号(逗号分隔)
*/
private String currentCoilNos;
}

View File

@@ -0,0 +1,18 @@
package com.klp.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 退火计划入炉业务对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsFurnacePlanInFurnaceBo {
@NotNull(message = "计划ID不能为空")
private Long planId;
}

View File

@@ -0,0 +1,23 @@
package com.klp.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 退火计划库位分配业务对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsFurnacePlanLocationBo {
@NotNull(message = "计划ID不能为空")
private Long planId;
@NotEmpty(message = "库位分配不能为空")
private List<WmsFurnacePlanLocationItemBo> locations;
}

View File

@@ -0,0 +1,21 @@
package com.klp.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 退火计划钢卷库位分配项
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsFurnacePlanLocationItemBo {
@NotNull(message = "钢卷ID不能为空")
private Long coilId;
@NotNull(message = "实际库位不能为空")
private Long actualWarehouseId;
}

View File

@@ -0,0 +1,21 @@
package com.klp.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 退火计划状态更新业务对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsFurnacePlanStatusBo {
@NotNull(message = "计划ID不能为空")
private Long planId;
@NotNull(message = "状态不能为空")
private Integer status;
}

View File

@@ -0,0 +1,21 @@
package com.klp.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 退火炉启用状态更新业务对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsFurnaceStatusBo {
@NotNull(message = "炉子ID不能为空")
private Long furnaceId;
@NotNull(message = "状态不能为空")
private Integer status;
}

View File

@@ -0,0 +1,37 @@
package com.klp.domain.vo;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 退火炉总览信息
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealFurnaceOverviewVo {
private Long furnaceId;
private String furnaceCode;
private String furnaceName;
private Integer busyFlag;
private Integer status;
/**
* 正在执行的计划
*/
private WmsFurnacePlanVo runningPlan;
/**
* 当前炉内钢卷
*/
private List<WmsFurnacePlanCoilVo> runningCoils;
/**
* 计划结束时间(用于倒计时)
*/
private Date planEndTime;
}

View File

@@ -0,0 +1,43 @@
package com.klp.domain.vo;
import lombok.Data;
/**
* 退火总览统计信息
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealOverviewStatsVo {
/**
* 当前计划数
*/
private Long planCount;
/**
* 炉子总数
*/
private Long furnaceTotal;
/**
* 炉子忙碌数
*/
private Long furnaceBusy;
/**
* 待退火钢卷数
*/
private Long pendingCoilCount;
/**
* 今日已完成计划数
*/
private Long todayFinishedPlanCount;
/**
* 今日已完成钢卷数
*/
private Long todayFinishedCoilCount;
}

View File

@@ -0,0 +1,33 @@
package com.klp.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.util.Date;
/**
* 退火计划钢卷关系视图对象 wms_furnace_plan_coil
*
* @author klp
* @date 2026-03-14
*/
@Data
@ExcelIgnoreUnannotated
public class WmsFurnacePlanCoilVo {
@ExcelProperty(value = "计划钢卷ID")
private Long planCoilId;
@ExcelProperty(value = "计划ID")
private Long planId;
@ExcelProperty(value = "钢卷ID")
private Long coilId;
@ExcelProperty(value = "入场钢卷号")
private String enterCoilNo;
@ExcelProperty(value = "创建时间")
private Date createTime;
}

View File

@@ -0,0 +1,51 @@
package com.klp.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 退火计划视图对象 wms_furnace_plan
*
* @author klp
* @date 2026-03-14
*/
@Data
@ExcelIgnoreUnannotated
public class WmsFurnacePlanVo {
@ExcelProperty(value = "计划ID")
private Long planId;
@ExcelProperty(value = "计划号")
private String planNo;
@ExcelProperty(value = "计划开始时间")
private Date planStartTime;
@ExcelProperty(value = "实际开始时间")
private Date actualStartTime;
@ExcelProperty(value = "结束时间")
private Date endTime;
@ExcelProperty(value = "目标炉子ID")
private Long targetFurnaceId;
@ExcelProperty(value = "目标炉子名称")
private String targetFurnaceName;
@ExcelProperty(value = "计划状态")
private Integer status;
@ExcelProperty(value = "备注")
private String remark;
@ExcelProperty(value = "创建时间")
private Date createTime;
private List<Long> coilIds;
}

View File

@@ -0,0 +1,39 @@
package com.klp.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.util.Date;
/**
* 退火炉视图对象 wms_furnace
*
* @author klp
* @date 2026-03-14
*/
@Data
@ExcelIgnoreUnannotated
public class WmsFurnaceVo {
@ExcelProperty(value = "炉子ID")
private Long furnaceId;
@ExcelProperty(value = "炉编号")
private String furnaceCode;
@ExcelProperty(value = "名称")
private String furnaceName;
@ExcelProperty(value = "是否忙碌")
private Integer busyFlag;
@ExcelProperty(value = "状态")
private Integer status;
@ExcelProperty(value = "备注")
private String remark;
@ExcelProperty(value = "创建时间")
private Date createTime;
}

View File

@@ -0,0 +1,33 @@
package com.klp.domain.vo.anneal;
import lombok.Data;
import java.util.Date;
/**
* 退火炉状态视图对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealFurnaceStatusVo {
private Long furnaceId;
private String furnaceCode;
private String furnaceName;
private Integer busyFlag;
private Integer status;
private Long currentPlanId;
private String currentPlanNo;
private Date planEndTime;
private Long coilCount;
}

View File

@@ -0,0 +1,31 @@
package com.klp.domain.vo.anneal;
import lombok.Data;
import java.util.List;
/**
* 退火总览视图对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealOverviewVo {
private Long totalPlanCount;
private Long furnaceTotal;
private Long furnaceBusyCount;
private Long pendingCoilCount;
private Long todayDonePlanCount;
private Long todayDoneCoilCount;
private List<WmsAnnealFurnaceStatusVo> furnaces;
private List<WmsAnnealPlanQueueVo> planQueue;
}

View File

@@ -0,0 +1,36 @@
package com.klp.domain.vo.anneal;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 炉火实绩明细视图对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealPerformanceDetailVo {
private Long planId;
private String planNo;
private Long targetFurnaceId;
private String targetFurnaceName;
private Date actualStartTime;
private Date endTime;
private Long coilId;
private String enterCoilNo;
private String currentCoilNo;
private BigDecimal netWeight;
}

View File

@@ -0,0 +1,21 @@
package com.klp.domain.vo.anneal;
import lombok.Data;
import java.math.BigDecimal;
/**
* 炉火实绩统计视图对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealPerformanceSummaryVo {
private Long planCount;
private Long coilCount;
private BigDecimal totalWeight;
}

View File

@@ -0,0 +1,19 @@
package com.klp.domain.vo.anneal;
import lombok.Data;
import java.util.List;
/**
* 炉火实绩返回视图对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealPerformanceVo {
private WmsAnnealPerformanceSummaryVo summary;
private List<WmsAnnealPerformanceDetailVo> details;
}

View File

@@ -0,0 +1,33 @@
package com.klp.domain.vo.anneal;
import lombok.Data;
import java.util.Date;
/**
* 退火计划队列视图对象
*
* @author klp
* @date 2026-03-14
*/
@Data
public class WmsAnnealPlanQueueVo {
private Long planId;
private String planNo;
private Long targetFurnaceId;
private String targetFurnaceName;
private Integer status;
private Date planStartTime;
private Date actualStartTime;
private Date endTime;
private Long coilCount;
}