This commit is contained in:
liuzhaotian
2024-06-11 18:11:52 +08:00
parent 2e1c673be2
commit 660d2ca98f
15 changed files with 999 additions and 0 deletions
@@ -0,0 +1,100 @@
package com.cf.imes.module.executor.controller.admin.plan.saveOptimize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "优化后的余料板数据")
public class OptimizeRemainPlate {
@Schema(description = "余料板ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "源排单ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long initPlanId;
@Schema(description = "排单ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long planId;
@Schema(description = "状态(未使用 = 0, 已使用 = 1)", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer status;
@Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long goodsId;
@Schema(description = "商品名", requiredMode = Schema.RequiredMode.REQUIRED)
private String goodsName;
@Schema(description = "材质", requiredMode = Schema.RequiredMode.REQUIRED)
private String material;
@Schema(description = "颜色", requiredMode = Schema.RequiredMode.REQUIRED)
private String color;
@Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal width;
@Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal length;
@Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED)
private String brand;
@Schema(description = "排单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String planCode;
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer count;
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal thickness;
@Schema(description = "轮廓", requiredMode = Schema.RequiredMode.REQUIRED)
private String outLineJson;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED)
private String remark;
@Schema(description = "排版样式", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer placeStyle;
}
@@ -0,0 +1,66 @@
package com.cf.imes.module.executor.controller.admin.plan.saveOptimize;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
import static com.cf.imes.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
@Data
@Schema(description = "优化后的生产单数据")
public class SaveOrderReqVO {
@Schema(description = "生产单id")
private Long orderId;
@Schema(description = "父id")
private Long parentNo;
@Schema(description = "自定义单号")
private String customOrderNo;
@Schema(description = "客户")
private String customer;
@Schema(description = "地址")
private String address;
@Schema(description = "客户电话")
private String phoneNumber;
@Schema(description = "经销商")
private String dealer;
@Schema(description = "经销商电话")
private String dealerPhoneNumber;
@Schema(description = "业务员")
private String salesman;
@Schema(description = "拆单员")
private String splitter;
@Schema(description = "备注")
private String remark;
@Schema(description = "交付日期")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
private Date deliveryDate;
@Schema(description = "生产单类型,1主单 2子单")
private Integer type;
@Schema(description = "生产单排序号")
private Integer sort;
@Schema(description = "CAD数据类型,1CAD 2WebCAD 3Excel")
private Integer dataType;
@Schema(description = "订单状态,0未排单1已排单2生产中3加工完成4打包完成5入库完成6出库完成")
private Integer status;
}
@@ -0,0 +1,48 @@
package com.cf.imes.module.executor.controller.admin.plan.saveOptimize;
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetialRespVO;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class SavePlanPlateResultReqVO {
// @Schema(description = "优化后的生产单数据", requiredMode = Schema.RequiredMode.REQUIRED)
// private List<OrderDO> orderList;
@Schema(description = "优化后的大板列表数据", requiredMode = Schema.RequiredMode.REQUIRED)
private List<OptimizeBoardModelDO> optimizeBoardModelDOS;
@Schema(description = "优化后的余料板数据", requiredMode = Schema.RequiredMode.REQUIRED)
private List<OptimizeRemainPlate> optimizeRemainPlates;
@Schema(description = "优化后的小板列表数据", requiredMode = Schema.RequiredMode.REQUIRED)
private List<PlateDetialRespVO> plateList;
@Schema(description = "优化后新增的小板ID")
private List<Long> addPlateIds;
@Schema(description = "优化后删除的小板ID")
private List<Long> deletePlateIds;
}
@@ -0,0 +1,92 @@
package com.cf.imes.module.executor.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 生产单商品表")
@Data
public class GoodsReqVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4109")
private Long id;
@Schema(description = "余料板ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4109")
private Long remainId;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12114")
private Long orderId;
@Schema(description = "设计端商品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "832")
private Long rawGoodsId;
@Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "243")
private Long goodsId;
@Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰")
private String goodsName;
@Schema(description = "材质:颗粒板、欧松板、多层板、生态板、禾香板、密度板、实木、铝蜂窝板、铝塑板", requiredMode = Schema.RequiredMode.REQUIRED)
private String material;
@Schema(description = "颜色", requiredMode = Schema.RequiredMode.REQUIRED)
private String color;
@Schema(description = "纹路")
private Integer texture;
@Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal width;
@Schema(description = "高度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal height;
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal thickness;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "7305")
private BigDecimal price;
@Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED)
private String brand;
@Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED)
private String spec;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
private String remark;
@Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
private String creator;
@Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED)
private String updater;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "更新时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] updateTime;
}
@@ -0,0 +1,128 @@
package com.cf.imes.module.executor.dal.dataobject.goods;
import com.cf.imes.framework.es.core.dal.ESDocument;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "优化后的大板信息")
public class OptimizeBoardModelDO extends ESDocument {
@Schema(description = "排单ID")
private Long planId;
@Schema(description = "生产单id")
private Long orderId;
@Schema(description = "大板原长")
private BigDecimal orgLength;
@Schema(description = "大板原宽")
private BigDecimal orgWidth;
@Schema(description = "大板开料长")
private BigDecimal length;
@Schema(description = "大板开料宽")
private BigDecimal width;
@Schema(description = "大板厚度")
private BigDecimal thickness;
@Schema(description = "修边值")
private BigDecimal cutBorder;
@Schema(description = "开料刀直径")
private BigDecimal diameter;
@Schema(description = "开料刀路间隙")
private BigDecimal cutKnifeGap;
@Schema(description = "预铣值")
private BigDecimal preMillingSize;
@Schema(description = "是否辅助开料")
private Boolean isHelpCut;
@Schema(description = "同刀辅助开料偏移")
private BigDecimal helpCutGap;
@Schema(description = "开料刀ID")
private Integer cutKnifeId;
@Schema(description = "辅助刀ID")
private Integer helpKnifeId;
@Schema(description = "是否已优化")
private Boolean isOptimized;
@Schema(description = "大板数")
private Integer boardCount;
@Schema(description = "余料板数")
private Integer remainBoardCount;
@Schema(description = "最小板号")
private Integer minBoardId;
@Schema(description = "最大板号")
private Integer maxBoardId;
@Schema(description = "总平均利用率")
private BigDecimal avgUsageRateAll;
@Schema(description = "前N块板(不包含最后一块板)的平均利用率")
private BigDecimal avgUsageRateExcludeLastBoard;
@Schema(description = "最后一块板的利用率")
private BigDecimal usageRateLastBoard;
@Schema(description = "使用大板情况--大板优化数据")
private String usedBoardInfo;
@Schema(description = "小板排版情况--小板优化数据")
private String blockPlaceInfo;
@Schema(description = "余料板排版情况--余料板优化数据")
private String remainBoardInfo;
}
@@ -0,0 +1,33 @@
package com.cf.imes.module.executor.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* 生产单明细类型
*
* @author Gqr
* @since 2024/6/7 14:50
*/
@RequiredArgsConstructor
@Getter
public enum OrderItemType {
BOARD(1, "板材"),
PARTS(2, "五金/配件"),
OTHER(3, "其他"),
QUOTE_PARTS(4, "报价配件");
/**
* 类型编码
*/
private final Integer code;
/**
* 描述
*/
private final String desc;
}
@@ -0,0 +1,32 @@
package com.cf.imes.module.executor.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* 排单状态
*
* @author Gqr
* @since 2024/6/7 14:25
*/
@RequiredArgsConstructor
@Getter
public enum OrderPlanStatusEnum {
NEW(0, "新单"),
APPLY(1, "板材已申请"),
OPENING(2, "开料中"),
OPENED(3, "已开料");
/**
* 类型编码
*/
private final Integer code;
/**
* 描述
*/
private final String desc;
}
@@ -0,0 +1,32 @@
package com.cf.imes.module.executor.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* 生产单板件排单过滤类型
*
* @author Gqr
* @since 2024/6/7 14:31
*/
@RequiredArgsConstructor
@Getter
public enum OrderPlateFilterTypeEnum {
HAS_CUT_THROUGH_SHAPE(1, "有挖穿造型"),
HAS_CUT_PUNCH(2, "有挖穿孔"),
HAS_2D_KNIFE_PATHS(4, "有二维刀路"),
STACKABLE(8, "可叠");
/**
* 类型编码
*/
private final Integer code;
/**
* 描述
*/
private final String desc;
}
@@ -0,0 +1,18 @@
package com.cf.imes.module.executor.util;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
/**
* 获取当前用户的组织ID
*
* @author 晨丰科技
*/
public class OrganIdUtils {
// public static Long getUserOrganId(){
//
// return SecurityFrameworkUtils.getLoginUser().getOrganId();
//
// }
}