完成排产(测试过了)
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package com.klp.aps.domain.bo;
|
||||
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import com.klp.common.core.validate.AddGroup;
|
||||
import com.klp.common.core.validate.EditGroup;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 工厂日历业务对象
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ApsCalendarBo extends BaseEntity {
|
||||
|
||||
private Long calendarId;
|
||||
|
||||
@NotNull(message = "日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private LocalDate calendarDate;
|
||||
|
||||
@NotNull(message = "日历类型不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Integer calendarType;
|
||||
|
||||
private String factoryCode;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.klp.aps.domain.bo;
|
||||
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import com.klp.common.core.validate.AddGroup;
|
||||
import com.klp.common.core.validate.EditGroup;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 日历班次配置业务对象
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ApsCalendarShiftBo extends BaseEntity {
|
||||
|
||||
private Long configId;
|
||||
|
||||
@NotNull(message = "日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate calendarDate;
|
||||
|
||||
@NotNull(message = "产线ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long lineId;
|
||||
|
||||
@NotNull(message = "班次ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long shiftId;
|
||||
|
||||
private BigDecimal plannedHours;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.klp.aps.domain.bo;
|
||||
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import com.klp.common.core.validate.AddGroup;
|
||||
import com.klp.common.core.validate.EditGroup;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 产线能力业务对象
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ApsLineCapabilityBo extends BaseEntity {
|
||||
|
||||
private Long capabilityId;
|
||||
|
||||
@NotNull(message = "产线ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long lineId;
|
||||
|
||||
private Long productId;
|
||||
|
||||
private Long processId;
|
||||
|
||||
@NotNull(message = "每小时产能不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private BigDecimal capacityPerHour;
|
||||
|
||||
private Integer setupMinutes;
|
||||
|
||||
private Integer priority;
|
||||
|
||||
private Integer isEnabled;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.klp.aps.domain.bo;
|
||||
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import com.klp.common.core.validate.AddGroup;
|
||||
import com.klp.common.core.validate.EditGroup;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalTime;
|
||||
|
||||
/**
|
||||
* 班次模板业务对象
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ApsShiftTemplateBo extends BaseEntity {
|
||||
|
||||
private Long shiftId;
|
||||
|
||||
@NotBlank(message = "班次编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String shiftCode;
|
||||
|
||||
@NotBlank(message = "班次名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String shiftName;
|
||||
|
||||
@NotNull(message = "开始时间不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private LocalTime startTime;
|
||||
|
||||
@NotNull(message = "结束时间不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private LocalTime endTime;
|
||||
|
||||
private Integer crossDay;
|
||||
|
||||
private BigDecimal efficiencyRate;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
30
klp-aps/src/main/java/com/klp/aps/domain/dto/ApsLockReq.java
Normal file
30
klp-aps/src/main/java/com/klp/aps/domain/dto/ApsLockReq.java
Normal 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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 工厂日历实体 wms_calendar
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("wms_calendar")
|
||||
public class ApsCalendarEntity extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "calendar_id", type = IdType.AUTO)
|
||||
private Long calendarId;
|
||||
|
||||
private LocalDate calendarDate;
|
||||
|
||||
private Integer calendarType;
|
||||
|
||||
private String factoryCode;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 日历班次配置实体 wms_calendar_shift
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("wms_calendar_shift")
|
||||
public class ApsCalendarShiftEntity extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "config_id", type = IdType.AUTO)
|
||||
private Long configId;
|
||||
|
||||
private LocalDate calendarDate;
|
||||
|
||||
private Long lineId;
|
||||
|
||||
private Long shiftId;
|
||||
|
||||
private BigDecimal plannedHours;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 产线能力实体 wms_line_capability
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("wms_line_capability")
|
||||
public class ApsLineCapabilityEntity extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "capability_id", type = IdType.AUTO)
|
||||
private Long capabilityId;
|
||||
|
||||
private Long lineId;
|
||||
|
||||
private Long productId;
|
||||
|
||||
private Long processId;
|
||||
|
||||
private BigDecimal capacityPerHour;
|
||||
|
||||
private Integer setupMinutes;
|
||||
|
||||
private Integer priority;
|
||||
|
||||
private Integer isEnabled;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* wms_schedule_change_log(APS 自动排程审计)
|
||||
*/
|
||||
@Data
|
||||
public class ApsScheduleChangeLogEntity {
|
||||
private Long logId;
|
||||
private Long operationId;
|
||||
private String changeType;
|
||||
private String beforeValue;
|
||||
private String afterValue;
|
||||
private String changeReason;
|
||||
private String changeBy;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* wms_schedule_lock
|
||||
*/
|
||||
@Data
|
||||
public class ApsScheduleLockEntity {
|
||||
private Long lockId;
|
||||
private Integer lockType;
|
||||
private Long planId;
|
||||
private Long lineId;
|
||||
private Long operationId;
|
||||
private LocalDateTime lockStartTime;
|
||||
private LocalDateTime lockEndTime;
|
||||
private String lockReason;
|
||||
private Integer status;
|
||||
private String createBy;
|
||||
private String updateBy;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* wms_schedule_operation(APS 自动排程落库)
|
||||
*/
|
||||
@Data
|
||||
public class ApsScheduleOperationEntity {
|
||||
private Long operationId;
|
||||
private Long planId;
|
||||
private Long detailId;
|
||||
private Long orderId;
|
||||
private Long orderDetailId;
|
||||
private Long productId;
|
||||
private Long processId;
|
||||
private Long lineId;
|
||||
private Integer sequenceNo;
|
||||
private BigDecimal planQty;
|
||||
private LocalDateTime startTime;
|
||||
private LocalDateTime endTime;
|
||||
private Integer setupMinutes;
|
||||
private Integer status;
|
||||
private Integer lockedFlag;
|
||||
private String remark;
|
||||
private String createBy;
|
||||
private String updateBy;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* wms_schedule_plan_detail(仅用于 APS MVP 插入)
|
||||
*/
|
||||
@Data
|
||||
public class ApsSchedulePlanDetailEntity {
|
||||
private Long detailId;
|
||||
private Long planId;
|
||||
private Long lineId;
|
||||
private Long taskId;
|
||||
private Long productId;
|
||||
private BigDecimal quantity;
|
||||
private LocalDate startDate;
|
||||
private LocalDate endDate;
|
||||
private String remark;
|
||||
private Integer delFlag;
|
||||
private String createBy;
|
||||
private String updateBy;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* wms_schedule_plan(仅用于 APS MVP 插入/回填主键)
|
||||
*/
|
||||
@Data
|
||||
public class ApsSchedulePlanEntity {
|
||||
private Long planId;
|
||||
private String planCode;
|
||||
private String version;
|
||||
private Long orderId;
|
||||
private Integer status;
|
||||
private String remark;
|
||||
private Integer delFlag;
|
||||
private String createBy;
|
||||
private String updateBy;
|
||||
private Integer priority;
|
||||
private LocalDateTime startDate;
|
||||
private LocalDateTime endDate;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.klp.aps.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalTime;
|
||||
|
||||
/**
|
||||
* 班次模板实体 wms_shift_template
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("wms_shift_template")
|
||||
public class ApsShiftTemplateEntity extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "shift_id", type = IdType.AUTO)
|
||||
private Long shiftId;
|
||||
|
||||
private String shiftCode;
|
||||
|
||||
private String shiftName;
|
||||
|
||||
private LocalTime startTime;
|
||||
|
||||
private LocalTime endTime;
|
||||
|
||||
private Integer crossDay;
|
||||
|
||||
private BigDecimal efficiencyRate;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ApsCrmOrderItemRow {
|
||||
|
||||
private String itemId;
|
||||
private String orderId;
|
||||
private String productType;
|
||||
private Long productNum;
|
||||
private BigDecimal contractPrice;
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ApsCrmOrderRow {
|
||||
|
||||
private String orderId;
|
||||
private String orderCode;
|
||||
private String customerId;
|
||||
private String salesman;
|
||||
private BigDecimal orderAmount;
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 产线能力(wms_line_capability)最小行
|
||||
*/
|
||||
@Data
|
||||
public class ApsLineCapabilityRow {
|
||||
private Long lineId;
|
||||
private BigDecimal capacityPerHour;
|
||||
private Integer setupMinutes;
|
||||
private Integer priority;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ApsLineMetaRow {
|
||||
private Long lineId;
|
||||
private String lineName;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* wms_order_detail 最小取数行
|
||||
*/
|
||||
@Data
|
||||
public class ApsOrderDetailRow {
|
||||
private Long detailId;
|
||||
private Long productId;
|
||||
private BigDecimal quantity;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 计划明细最小行(用于自动排程)
|
||||
*/
|
||||
@Data
|
||||
public class ApsPlanDetailRow {
|
||||
private Long detailId;
|
||||
private Long taskId;
|
||||
private Long lineId;
|
||||
private Long productId;
|
||||
private BigDecimal quantity;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ApsProductMetaRow {
|
||||
private Long productId;
|
||||
private String productName;
|
||||
private String specification;
|
||||
private String material;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 产品工艺路线(wms_product_processe)最小行
|
||||
*/
|
||||
@Data
|
||||
public class ApsProductProcessRow {
|
||||
private Long processId;
|
||||
private Integer processSequence;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* wms_schedule_plan 最小行(用于自动排程)
|
||||
*/
|
||||
@Data
|
||||
public class ApsSchedulePlanRow {
|
||||
private Long planId;
|
||||
private String planCode;
|
||||
private String version;
|
||||
private Long orderId;
|
||||
private Integer status;
|
||||
private LocalDateTime startDate;
|
||||
private LocalDateTime endDate;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
|
||||
/**
|
||||
* 日历班次时段(wms_calendar_shift + wms_shift_template)
|
||||
*/
|
||||
@Data
|
||||
public class ApsShiftSlotRow {
|
||||
private LocalDate calendarDate;
|
||||
private Long lineId;
|
||||
private Long shiftId;
|
||||
private BigDecimal plannedHours;
|
||||
private LocalTime startTime;
|
||||
private LocalTime endTime;
|
||||
private Integer crossDay;
|
||||
private BigDecimal efficiencyRate;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.klp.aps.domain.row;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ApsWmsOrderRow {
|
||||
|
||||
private Long orderId;
|
||||
private String orderCode;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 日历班次配置视图对象
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class ApsCalendarShiftVo {
|
||||
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long configId;
|
||||
|
||||
@ExcelProperty(value = "日期")
|
||||
private LocalDate calendarDate;
|
||||
|
||||
@ExcelProperty(value = "产线ID")
|
||||
private Long lineId;
|
||||
|
||||
@ExcelProperty(value = "产线名称")
|
||||
private String lineName;
|
||||
|
||||
@ExcelProperty(value = "班次ID")
|
||||
private Long shiftId;
|
||||
|
||||
@ExcelProperty(value = "班次名称")
|
||||
private String shiftName;
|
||||
|
||||
@ExcelProperty(value = "计划工时")
|
||||
private BigDecimal plannedHours;
|
||||
|
||||
@ExcelProperty(value = "状态")
|
||||
private Integer status;
|
||||
|
||||
@ExcelProperty(value = "状态名称")
|
||||
private String statusName;
|
||||
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 工厂日历视图对象
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class ApsCalendarVo {
|
||||
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long calendarId;
|
||||
|
||||
@ExcelProperty(value = "日期")
|
||||
private LocalDate calendarDate;
|
||||
|
||||
@ExcelProperty(value = "日历类型")
|
||||
private Integer calendarType;
|
||||
|
||||
@ExcelProperty(value = "日历类型名称")
|
||||
private String calendarTypeName;
|
||||
|
||||
@ExcelProperty(value = "工厂编码")
|
||||
private String factoryCode;
|
||||
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ApsFactoryCalendarDayVo {
|
||||
private Integer taskCount = 0;
|
||||
private Integer shiftCount = 0;
|
||||
private Integer lineCount = 0;
|
||||
/** 1=工作日,0=休息日,null=未知 */
|
||||
private Integer dayStatus;
|
||||
private List<ApsFactoryCalendarTaskLiteVo> tasks = new ArrayList<>();
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ApsFactoryCalendarOverviewVo {
|
||||
private Integer taskCount;
|
||||
private Integer activeLineCount;
|
||||
private Integer totalLineCount;
|
||||
private Integer shiftCount;
|
||||
private String totalHours;
|
||||
private String peakDayText;
|
||||
private String busiestLineText;
|
||||
private String busiestLineShiftText;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class ApsFactoryCalendarRespVo {
|
||||
private ApsFactoryCalendarOverviewVo overview;
|
||||
private List<String> dateList;
|
||||
private Map<Long, String> lineNameMap;
|
||||
private Map<Long, String> shiftNameMap;
|
||||
private Map<String, ApsFactoryCalendarDayVo> lineDayMap;
|
||||
private Map<String, ApsFactoryCalendarDayVo> lineShiftDayMap;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ApsFactoryCalendarTaskLiteVo {
|
||||
private String label;
|
||||
private String title;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 甘特图条目返回
|
||||
*/
|
||||
@Data
|
||||
public class ApsGanttItemVo {
|
||||
private Long operationId;
|
||||
private Long planId;
|
||||
private String planCode;
|
||||
private Long orderId;
|
||||
private Long orderDetailId;
|
||||
private Long productId;
|
||||
private String productName;
|
||||
private String material;
|
||||
private String specification;
|
||||
private Long processId;
|
||||
private String processName;
|
||||
private Long lineId;
|
||||
private String lineName;
|
||||
private Integer sequenceNo;
|
||||
private BigDecimal planQty;
|
||||
private LocalDateTime startTime;
|
||||
private LocalDateTime endTime;
|
||||
private Integer status;
|
||||
private Integer lockedFlag;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 产线能力视图对象
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class ApsLineCapabilityVo {
|
||||
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long capabilityId;
|
||||
|
||||
@ExcelProperty(value = "产线ID")
|
||||
private Long lineId;
|
||||
|
||||
@ExcelProperty(value = "产线名称")
|
||||
private String lineName;
|
||||
|
||||
@ExcelProperty(value = "产品ID")
|
||||
private Long productId;
|
||||
|
||||
@ExcelProperty(value = "产品名称")
|
||||
private String productName;
|
||||
|
||||
@ExcelProperty(value = "工序ID")
|
||||
private Long processId;
|
||||
|
||||
@ExcelProperty(value = "工序名称")
|
||||
private String processName;
|
||||
|
||||
@ExcelProperty(value = "每小时产能")
|
||||
private BigDecimal capacityPerHour;
|
||||
|
||||
@ExcelProperty(value = "换产时间(分钟)")
|
||||
private Integer setupMinutes;
|
||||
|
||||
@ExcelProperty(value = "优先级")
|
||||
private Integer priority;
|
||||
|
||||
@ExcelProperty(value = "是否启用")
|
||||
private Integer isEnabled;
|
||||
|
||||
@ExcelProperty(value = "是否启用名称")
|
||||
private String isEnabledName;
|
||||
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 统一排产表返回
|
||||
*/
|
||||
@Data
|
||||
public class ApsScheduleSheetResp {
|
||||
/** 表头元信息(可扩展:计划号/日期/机组等) */
|
||||
private Map<String, Object> header;
|
||||
|
||||
/** 明细行 */
|
||||
private List<ApsScheduleSheetRowVo> rows;
|
||||
|
||||
/** 合计 */
|
||||
private Summary summary;
|
||||
|
||||
@Data
|
||||
public static class Summary {
|
||||
private Integer totalCount;
|
||||
private BigDecimal totalPlanQty;
|
||||
private BigDecimal totalRawNetWeight;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 统一排产表行(前端统一展示用)
|
||||
*
|
||||
* 说明:字段是“统一超集”,不同机组可只展示子集,但表头保持一致。
|
||||
*/
|
||||
@Data
|
||||
public class ApsScheduleSheetRowVo {
|
||||
/** 排程主键 */
|
||||
private Long operationId;
|
||||
|
||||
/** 产线 */
|
||||
private Long lineId;
|
||||
private String lineName;
|
||||
|
||||
/** 计划/订单 */
|
||||
private Long planId;
|
||||
private String planCode;
|
||||
private Long orderId;
|
||||
private String orderCode;
|
||||
|
||||
/** 销售信息 */
|
||||
private String salesman;
|
||||
private String customerName;
|
||||
|
||||
/** 产品/工序 */
|
||||
private Long productId;
|
||||
private String productName;
|
||||
private String material;
|
||||
private String specification;
|
||||
private Long processId;
|
||||
private String processName;
|
||||
|
||||
/** 排程数量/时间 */
|
||||
private BigDecimal planQty;
|
||||
private String startTime;
|
||||
private String endTime;
|
||||
|
||||
/** 原料钢卷(来自 wms_material_coil 的展示字段,MVP:按 productId 兜底关联) */
|
||||
private Long rawMaterialId; // 回填钢卷ID
|
||||
private String rawCoilNos; // current_coil_no 逗号分隔
|
||||
private String rawLocation; // 实际库位名称
|
||||
private BigDecimal rawNetWeight; // 合计净重(吨/或 kg,按库表单位展示)
|
||||
private String rawPackaging; // packaging_requirement
|
||||
private String rawEdgeReq; // trimming_requirement
|
||||
private String rawCoatingType; // coating_type
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.klp.aps.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalTime;
|
||||
|
||||
/**
|
||||
* 班次模板视图对象
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class ApsShiftTemplateVo {
|
||||
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long shiftId;
|
||||
|
||||
@ExcelProperty(value = "班次编码")
|
||||
private String shiftCode;
|
||||
|
||||
@ExcelProperty(value = "班次名称")
|
||||
private String shiftName;
|
||||
|
||||
@ExcelProperty(value = "开始时间")
|
||||
private LocalTime startTime;
|
||||
|
||||
@ExcelProperty(value = "结束时间")
|
||||
private LocalTime endTime;
|
||||
|
||||
@ExcelProperty(value = "跨天标识")
|
||||
private Integer crossDay;
|
||||
|
||||
@ExcelProperty(value = "跨天标识名称")
|
||||
private String crossDayName;
|
||||
|
||||
@ExcelProperty(value = "效率系数")
|
||||
private BigDecimal efficiencyRate;
|
||||
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
}
|
||||
Reference in New Issue
Block a user