diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Material.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Material.java index 7710c55..0b1ec28 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Material.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Material.java @@ -65,10 +65,10 @@ public class Material extends BaseAPS { @FieldAnnotation(editType = ApsEnumUtil.EDIT_TYPE.DURATION) private String purchaseLeadTime; - @Column(name="MANUF_LEAD_TIME") + @Column(name="PRODUCT_LEAD_TIME") @ApiParam(value ="生产提前期") @FieldAnnotation(editType = ApsEnumUtil.EDIT_TYPE.DURATION) - private String manufLeadTime; + private String productLeadTime; @Column(name="SHIPMENT_LEAD_TIME") @ApiParam(value ="配送提前期") @@ -79,9 +79,9 @@ public class Material extends BaseAPS { @ApiParam(value ="单位采购量") private Integer unitPurchase; - @Column(name="UNIT_MANUF") + @Column(name="UNIT_PRODUCT") @ApiParam(value ="单位生产量") - private Integer unitManuf; + private Integer unitProduct; @Column(name="UNIT_SHIPMENT") @ApiParam(value ="单位配送量") @@ -109,7 +109,7 @@ public class Material extends BaseAPS { @Column(name="UNIT_PRODUCT_BATCH", columnDefinition = "decimal(18,8)") @ApiParam(value ="生产批量单位") - private Double UnitProductBatch; + private Double unitProductBatch; @Column(name="MAX_PUR_BATCH", columnDefinition = "decimal(18,8)") @ApiParam(value ="最大采购批量") diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Work.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Work.java index 9b898b5..619bbf8 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Work.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Work.java @@ -84,7 +84,7 @@ public class Work extends BaseAPS { private Long specifyResourceId; @Column(name="SPECIFY_PRODUCE_TIME") - @ApiParam(value ="指定制造时间") + @ApiParam(value ="指定生产时间") private String specifyProduceTime; @Column(name="SPECIFY_PREV_TIME") diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BeanRelation.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BeanRelation.java index 0cd8116..a440ae8 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BeanRelation.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BeanRelation.java @@ -388,7 +388,9 @@ public class BeanRelation { List relaBeans = list(bean, holders[index]); for (BaseBean relaBean : relaBeans) { - recursionImpl(relaBean, fun, holders, index + 1); + if (relaBean.getId() != bean.getId()) { + recursionImpl(relaBean, fun, holders, index + 1); + } } } diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/DelaySalesOrder.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/DelaySalesOrder.java index 9d24208..540a328 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/DelaySalesOrder.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/DelaySalesOrder.java @@ -1,5 +1,9 @@ package cn.estsh.i3plus.pojo.aps.model; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateDeserializer; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateSerializer; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.annotations.ApiParam; import lombok.Data; @@ -14,6 +18,10 @@ import java.util.Date; **/ @Data public class DelaySalesOrder { + + @ApiParam(value ="订单ID") + private Long orderId; + @ApiParam(value ="订单编码") private String orderCode; @@ -30,12 +38,18 @@ public class DelaySalesOrder { private Double count; @ApiParam(value ="最晚结束时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date let; @ApiParam(value ="计划开始时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date planStart; @ApiParam(value ="计划结束时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date planEnd; @ApiParam(value ="总跨度时间") diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/LargeSpanOrder.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/LargeSpanOrder.java index 134243a..5ddc2dd 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/LargeSpanOrder.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/LargeSpanOrder.java @@ -1,5 +1,9 @@ package cn.estsh.i3plus.pojo.aps.model; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateDeserializer; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateSerializer; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.annotations.ApiParam; import lombok.Data; @@ -14,6 +18,9 @@ import java.util.Date; **/ @Data public class LargeSpanOrder { + @ApiParam(value ="订单ID") + private Long orderId; + @ApiParam(value ="订单编码") private String orderCode; @@ -30,12 +37,18 @@ public class LargeSpanOrder { private Double count; @ApiParam(value ="最晚结束时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date let; @ApiParam(value ="计划开始时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date planStart; @ApiParam(value ="计划结束时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date planEnd; @ApiParam(value ="总跨度时间") diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/MaterialDeliveryAnalyze.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/MaterialDeliveryAnalyze.java index 5e6421d..c7a0500 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/MaterialDeliveryAnalyze.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/MaterialDeliveryAnalyze.java @@ -1,5 +1,10 @@ package cn.estsh.i3plus.pojo.aps.model; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateDeserializer; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateSerializer; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.annotations.ApiParam; import lombok.Data; import java.util.Date; @@ -13,24 +18,43 @@ import java.util.Date; **/ @Data public class MaterialDeliveryAnalyze { + @ApiParam(value ="订单ID") + private Long orderId; + @ApiParam(value ="订单编码") private String orderCode; + @ApiParam(value ="订单名称") private String orderName; + @ApiParam(value ="物料编码") private String materialCode; + @ApiParam(value ="物料名称") private String materialName; + @ApiParam(value ="标签名称") private String labelName; + @ApiParam(value ="标签颜色") private String labelColor; + @ApiParam(value ="需求数量") + private Double requireCount; + + @ApiParam(value ="需求日期") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date requireDate; + @ApiParam(value ="最早到货日期") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date arrivalDate; - private Double requireCount; + // 0正常显示,1显示红色 + @ApiParam(value ="背景显示颜色") + private Integer backgroundColor; private Double count; } diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/PrematureProduct.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/PrematureProduct.java index bd33577..4080aa9 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/PrematureProduct.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/PrematureProduct.java @@ -1,5 +1,9 @@ package cn.estsh.i3plus.pojo.aps.model; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateDeserializer; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateSerializer; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.annotations.ApiParam; import lombok.Data; @@ -14,6 +18,9 @@ import java.util.Date; **/ @Data public class PrematureProduct { + @ApiParam(value ="订单ID") + private Long orderId; + @ApiParam(value ="订单编码") private String orderCode; @@ -30,12 +37,18 @@ public class PrematureProduct { private Double count; @ApiParam(value ="最晚结束时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date let; @ApiParam(value ="计划开始时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date planStart; @ApiParam(value ="计划结束时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date planEnd; @ApiParam(value ="提前完成时间") diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ScheduleAnalyze.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ScheduleAnalyze.java new file mode 100644 index 0000000..7692b3d --- /dev/null +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ScheduleAnalyze.java @@ -0,0 +1,43 @@ +package cn.estsh.i3plus.pojo.aps.model; + +import cn.estsh.i3plus.pojo.aps.converter.CustomDateDeserializer; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateSerializer; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import java.util.Date; + +/** + * @Description : 排程结果分析及建议 + * @Reference : + * @Author : jason.niu + * @CreateDate : 2020-06-11 + * @Modify: + **/ +@Data +public class ScheduleAnalyze { + + @ApiParam(value ="工作编码") + private String workCode; + + @ApiParam(value ="数量") + private Double count; + + @ApiParam(value ="计划开始时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) + private Date planStart; + + @ApiParam(value ="计划结束时间") + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) + private Date planEnd; + + @ApiParam(value ="问题描述") + private String describe; + + @ApiParam(value ="解决方案") + private String solution; +} diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java index b5b8273..161c474 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java @@ -1919,7 +1919,8 @@ public class MesEnumUtil { NEW_SCATTER_BOM(460, "scatterBomCfgExcelService", "新散件BOM导入"), ENCODE_RULE_MAP(470, "mesEncodeRuleMapExcelService", "编码规则映射导入"), SCATTER_PART_PROD_CFG(480, "scatterPartProdCfgExcelService", "散件零件生产配置"), - MES_WORK_ORDER_PAINT_ZS(490, "planZSOrderExcelService", "生产工单-注塑"); + MES_WORK_ORDER_PAINT_ZS(490, "planZSOrderExcelService", "生产工单-注塑"), + MES_KP_DATA(500, "kpDataExcelService", "物料关键数据关系"); private int value; private String service; @@ -3650,7 +3651,8 @@ public class MesEnumUtil { QUALIFIED(10, "合格"), DEFECTED(20, "不合格"), SCRAPED(30, "报废"), - DISMANTLED(40, "已拆解"); + DISMANTLED(40, "已拆解"), + PRE_CHECK(50, "待检测"); private int value; private String description; @@ -5804,6 +5806,15 @@ public class MesEnumUtil { } return tmp; } + public static String codeOfValue(String code) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].code.equals(code)) { + tmp = values()[i].value; + } + } + return tmp; + } } /** diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesPcnEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesPcnEnumUtil.java index e92e50f..0ff1771 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesPcnEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesPcnEnumUtil.java @@ -717,7 +717,8 @@ public class MesPcnEnumUtil { QUALIFIED(10, "合格"), DEFECTED(20, "不合格"), SCRAPED(30, "报废"), - DISMANTLED(40, "已拆解"); + DISMANTLED(40, "已拆解"), + PRE_CHECK(50, "待检测"); private int value; private String description; @@ -2479,7 +2480,7 @@ public class MesPcnEnumUtil { public enum PACKAGE_PRINT_STATUS { UNPRINTED(10, "未打印"), - PRINTED(20, "打印"); + PRINTED(20, "已打印"); private int value; private String description; @@ -4257,4 +4258,61 @@ public class MesPcnEnumUtil { return tmp; } } + + /** + * 不良品处理类型 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum BAD_HANDLE_TYPE { + BACK_SPRAY(10, "BACK_SPRAY", "返喷"), + SCRAPPED(20, "SCRAPPED", "报废"), + POLISH(30, "POLISH", "抛光"), + DETERMINED(40, "DETERMINED", "待定"); + + private int value; + private String code; + private String description; + + BAD_HANDLE_TYPE(int value, String code, String description) { + this.value = value; + this.code = code; + this.description = description; + } + + public int getValue() { + return value; + } + + public String getDescription() { + return description; + } + + public String getCode() { + return code; + } + + public static String valueOf(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + return tmp; + } + + public static int descOf(String desc) { + int tmp = 1; + for (int i = 0; i < values().length; i++) { + if (values()[i].description.equals(desc)) { + tmp = values()[i].value; + } + } + return tmp; + } + + public static String valueOfDescription(int val) { + return valueOf(val); + } + } } diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java index b9ad153..b911540 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java @@ -775,6 +775,19 @@ public class WmsEnumUtil { return tmp; } + public static OUT_MOVEMENT_BUSI_TYPE codeOfs(Integer value) { + if (value == null) { + return null; + } else { + for (int i = 0; i < values().length; i++) { + if (values()[i].value == value) { + return values()[i]; + } + } + } + return null; + } + public static int descOf(String desc) { int tmp = 1; for (int i = 0; i < values().length; i++) { @@ -8261,11 +8274,12 @@ public class WmsEnumUtil { /** - * 自动入库任务类型 + * 自动入库任务 */ @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum AUTO_FORK_TASK_TYPE { - MOVE(10, "W05", "W05"); + START(10, "start", "start"), + END(20, "end", "end"); private int value; private String code; @@ -8313,4 +8327,51 @@ public class WmsEnumUtil { return valueOf(val); } } + + + /** + * 发运看板状态 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum AUTO_FORK_TASK_STATUS { + CREATE(10, "新建"), + PROCESSING(20, "处理中"), + COMPLETE(30, "已完成"), + ERROR(40, "处理异常"); + + private int value; + private String description; + + AUTO_FORK_TASK_STATUS(int value, String description) { + this.value = value; + this.description = description; + } + + public int getValue() { + return value; + } + + public String getDescription() { + return description; + } + + public static AUTO_FORK_TASK_STATUS codeOf(int value) { + for (int i = 0; i < values().length; i++) { + if (values()[i].value == value) { + return values()[i]; + } + } + return null; + } + + public static String valueOf(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + return tmp; + } + } } diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/IfDefectData.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/IfDefectData.java new file mode 100644 index 0000000..d95ebc1 --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/IfDefectData.java @@ -0,0 +1,90 @@ +package cn.estsh.i3plus.pojo.mes.bean; + + +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Lob; +import javax.persistence.Table; +import java.io.Serializable; + +/** + * @Description :不良信息接口表 + * @Reference : + * @Author : siliter.yuan + * @CreateDate : 2020-06-28 + * @Modify: + **/ +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name = "IF_DEFECT_DATA") +@Api("不良信息接口数据") +public class IfDefectData extends BaseBean implements Serializable { + private static final long serialVersionUID = 4320604250440221049L; + @Column(name = "SERIAL_NUMBER") + @ApiParam("产品条码") + private String serailNumber; + + @Column(name = "PART_NO") + @ApiParam("物料号") + private String partNo; + + @Column(name = "PART_NAME") + @ApiParam("物料名称") + private String partName; + + @Column(name = "DEFECT_CODE") + @ApiParam("缺陷代码") + private String defectCode; + + @Column(name = "DEFECT_NAME") + @ApiParam("缺陷名称") + private String defectName; + + @Column(name = "WORK_CENTER_CODE") + @ApiParam("工作中心代码") + private String workCenterCode; + + @Column(name = "WORK_CELL_CODE") + @ApiParam("工作单元代码") + private String workCellCode; + + @Column(name = "MEMO") + @ApiParam("备注") + private String memo; + + @Column(name = "DEFECT_ACTION_TYPE") + @ApiParam("不良处理类型") + private Integer defectActionType; + + @Column(name = "QTY") + @ApiParam("数量") + private Double qty; + + @Column(name = "SYNC_STATUS") + @ApiParam("同步状态") + private Integer syncStatus; + + @Lob + @Column(name = "ERROR_MESSAGE") + @ApiParam("异常消息") + private String errorMessage; + + @Column(name = "ACTION_TYPE") + @ApiParam("动作代码") + private String actionType; + + @Column(name = "IF_CODE") + @ApiParam("接口代码") + private String ifCode; +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesCellFeed.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesCellFeed.java index 40939d5..30574fe 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesCellFeed.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesCellFeed.java @@ -12,6 +12,7 @@ import org.hibernate.annotations.DynamicUpdate; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; +import javax.persistence.Transient; import java.io.Serializable; /** @@ -31,10 +32,6 @@ import java.io.Serializable; public class MesCellFeed extends BaseBean implements Serializable { private static final long serialVersionUID = 1947971369479107782L; - @Column(name = "ORDER_NO") - @ApiParam("工单号") - private String orderNo; - @Column(name = "WORK_CENTER_CODE") @ApiParam("工作中心") private String workCenterCode; @@ -71,6 +68,13 @@ public class MesCellFeed extends BaseBean implements Serializable { @ApiParam("供应商代码") private String supplierCode; + @Transient + @ApiParam("工单号") + private String orderNo; + + @Transient + @ApiParam(value = "原料类型名称") + private String rawTypeName; public double getRawQtyVal() { return this.rawQty == null ? 0l : this.rawQty; diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesCellFeedRecord.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesCellFeedRecord.java index 9386832..aa1dc88 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesCellFeedRecord.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesCellFeedRecord.java @@ -30,6 +30,11 @@ import java.io.Serializable; @Api("工位投料履历信息") public class MesCellFeedRecord extends BaseBean implements Serializable { private static final long serialVersionUID = 1947971369489107783L; + + @Column(name = "ORDER_NO") + @ApiParam("工单号") + private String orderNo; + @Column(name = "WORK_CENTER_CODE") @ApiParam("工作中心") private String workCenterCode; @@ -66,7 +71,6 @@ public class MesCellFeedRecord extends BaseBean implements Serializable { @ApiParam("供应商代码") private String supplierCode; - public double getRawQtyVal() { return this.rawQty == null ? 0l : this.rawQty; } diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefect.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefect.java index cb0f1b4..a4a2dca 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefect.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefect.java @@ -48,6 +48,10 @@ public class MesDefect extends BaseBean implements Serializable { @ApiParam("项目代码") private String prodCfgTypeCode; + @Column(name = "DEFECT_FLAG_VALUE") + @ApiParam("缺陷标识值") + private String defectFlagValue; + @Transient @ApiParam("缺陷类型名称") private String defectTypeName; diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefectRecord.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefectRecord.java index 793563e..fbd81ad 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefectRecord.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefectRecord.java @@ -10,7 +10,6 @@ import org.hibernate.annotations.DynamicUpdate; import javax.persistence.*; import java.io.Serializable; -import java.util.Date; import java.util.List; /** @@ -81,6 +80,10 @@ public class MesDefectRecord extends BaseBean implements Serializable { @ApiParam("备注") private String memo; + @Column(name = "DEFECT_ACTION_TYPE") + @ApiParam("不良处理类型") + private Integer defectActionType; + @Transient private List mesDefectList; diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesKpData.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesKpData.java index 5dd8c97..752cdd2 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesKpData.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesKpData.java @@ -55,6 +55,10 @@ public class MesKpData extends BaseBean implements Serializable { @ApiParam("数据下限") private Double lowerLimit; + @Column(name = "WORK_CENTER_CODE") + @ApiParam("工作中心代码") + private String workCenterCode; + @Column(name = "WORK_CELL_CODE") @ApiParam("工位") private String workCellCode; diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesPartCheck.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesPartCheck.java index 76ee1d5..8cbe1c3 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesPartCheck.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesPartCheck.java @@ -65,7 +65,7 @@ public class MesPartCheck extends BaseBean implements Serializable { @ApiParam("对象名称") private String objectCodeName; - @Transient + @Column(name = "WORK_CENTER_CODE") @ApiParam("产线") private String workCenterCode; } diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesProdWorkCenter.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesProdWorkCenter.java new file mode 100644 index 0000000..c4eae0c --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesProdWorkCenter.java @@ -0,0 +1,50 @@ +package cn.estsh.i3plus.pojo.mes.bean; + + +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import java.io.Serializable; + +/** + * @Description :产品工作中心配置 + * @Reference : + * @Author : wangjie + * @CreateDate : 2019-04-02 + * @Modify: + **/ +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name = "MES_PROD_WORK_CENTER") +@Api("产品工作中心配置") +public class MesProdWorkCenter extends BaseBean implements Serializable { + + private static final long serialVersionUID = 9215737252535074536L; + + @Column(name = "PART_NO") + @ApiParam("物料编码") + private String partNo; + + @Column(name = "WORK_CENTER_CODE") + @ApiParam("工作中心代码") + private String workCenterCode; + + @Column(name = "IS_DEFAULT") + @ApiParam("是否默认") + private Integer isDefault; + + @Column(name = "PART_SN") + @ApiParam("料箱条码") + private String partSn; +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesProduceSn.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesProduceSn.java index 09296ef..7a2bf4c 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesProduceSn.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesProduceSn.java @@ -144,6 +144,10 @@ public class MesProduceSn extends BaseBean implements Serializable { @ApiParam("客户标签模板") private String custLabelTemplate; + @Column(name = "LOT_NO") + @ApiParam("生产批次") + private String lotNo; + // @Version // @Column(name = "LOCK_VERSION") // @ApiParam(value = "乐观锁", example = "1") @@ -177,7 +181,9 @@ public class MesProduceSn extends BaseBean implements Serializable { @ApiParam("条码类型名称") private String snTypeName; - + @Transient + @ApiParam("条码打印状态名称") + private String printStatusName; public MesProduceSn() { } diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PackageSnModel.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PackageSnModel.java new file mode 100644 index 0000000..ae0de27 --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PackageSnModel.java @@ -0,0 +1,36 @@ +package cn.estsh.i3plus.pojo.mes.model; + +import io.swagger.annotations.ApiParam; +import lombok.Data; + +/** + * @Description: 条码解绑实体 + * @Reference: + * @Author: siliter.yuan + * @CreateDate: 2020-06-28-11:44 + * @Modify: + **/ +@Data +public class PackageSnModel { + + @ApiParam("包装条码") + private String packageNo; + + @ApiParam("过程条码") + private String serialNumber; + + @ApiParam("物料号") + private String partNo; + + @ApiParam("物料名称") + private String partName; + + @ApiParam("批次") + private String lotNo; + + @ApiParam("创建人") + private String createUser; + + @ApiParam("创建时间") + private String createDateTime; +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PaintCheckModel.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PaintCheckModel.java new file mode 100644 index 0000000..80c483b --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PaintCheckModel.java @@ -0,0 +1,60 @@ +package cn.estsh.i3plus.pojo.mes.model; + + +import cn.estsh.i3plus.pojo.mes.bean.MesWindowModuleParam; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import javax.persistence.Column; +import java.util.List; + +/** + * @Author: siliter.yuan + * @CreateDate: 2020/6/28 8:06 PM + * @Description: + **/ +@Data +@Api("涂装检测MODEL") +public class PaintCheckModel { + + @ApiParam("工作中心") + private String workCenterCode; + + @ApiParam("工作单元") + private String workCellCode; + + @ApiParam("物料号") + private String partNo; + + @ApiParam("物料名称") + private String partNameRdd; + + @ApiParam("颜色") + private String color; + + @ApiParam("过程条码") + private String serialNumber; + + @ApiParam("界面编号") + private String windowNo; + + @ApiParam("缺陷类型") + private String defectType; + + @ApiParam("缺陷描述") + private String defectDesc; + + @ApiParam("缺陷标识值") + private String defectFlagValue; + + @ApiParam("不良品处理类型") + private Integer defectActionType; + + @Column(name = "PROD_CFG_TYPE_CODE") + @ApiParam("项目代码") + private String prodCfgTypeCode; + + @ApiParam("界面组件参数数据") + List windowModuleParamList; +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PaintOnLineModel.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PaintOnLineModel.java index f1f7d53..9ab41c8 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PaintOnLineModel.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/PaintOnLineModel.java @@ -46,4 +46,7 @@ public class PaintOnLineModel { @ApiParam("圈数") private Integer rounds; + + @ApiParam("过程条码") + private String serialNumber; } diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/ProdPackModel.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/ProdPackModel.java index f4a4de9..63903d3 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/ProdPackModel.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/model/ProdPackModel.java @@ -4,6 +4,8 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiParam; import lombok.Data; +import java.io.Serializable; + /** * @Description : 涂装工单条码-展示组件(产品包装)model * @Reference : @@ -13,35 +15,47 @@ import lombok.Data; **/ @Data @Api("产品包装model") -public class ProdPackModel { +public class ProdPackModel implements Serializable { // 产品条码表--产品条码 @ApiParam("产品条码") - private String productSn; + public String productSn; // 包装主表--包装编号 @ApiParam("一检箱条码") - private String packageNo; + public String packageNo; // 包装明细表--创建时间 @ApiParam("一检校验时间") - private String createDatetime; + public String createDatetime; // 包装主表--打印状态(10:未打印 20:已打印) @ApiParam("箱条码状态") - private Integer printStatus; + public Integer printStatus; // 涂装客户标签打印 @ApiParam("客户标签") - private String custSn; + public String custSn; // 涂装客户标签打印 @ApiParam("当前工序") - private String processCode; + public String processCode; // 涂装客户标签打印 @ApiParam("更新时间") - private String modifyDateTime; + public String modifyDateTime; + + @ApiParam("工单号") + public String workOrderNo; + + @ApiParam("组织代码") + public String organizeCode; + + @ApiParam("物料号") + public String parentPartNo; + + public ProdPackModel() { + } public ProdPackModel(String productSn, String packageNo, String createDatetime, Integer printStatus) { this.productSn = productSn; diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/IfDefectDataRepository.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/IfDefectDataRepository.java new file mode 100644 index 0000000..6e3b966 --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/IfDefectDataRepository.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.pojo.mes.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.mes.bean.IfDefectData; +import org.springframework.stereotype.Repository; + +/** + * @Description : if不良信息接口 + * @Reference : + * @Author : siliter.yuan + * @CreateDate : 2020-06-28 16:49 + * @Modify: + **/ +@Repository +public interface IfDefectDataRepository extends BaseRepository { + +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesProdWorkCenterRepository.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesProdWorkCenterRepository.java new file mode 100644 index 0000000..80e0299 --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesProdWorkCenterRepository.java @@ -0,0 +1,16 @@ +package cn.estsh.i3plus.pojo.mes.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.mes.bean.MesProdWorkCenter; +import org.springframework.stereotype.Repository; + +/** + * @Description: + * @Reference: + * @Author: wangjie + * @CreateDate:2019-04-24-17:13 + * @Modify: + **/ +@Repository +public interface MesProdWorkCenterRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesHqlPack.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesHqlPack.java index 275d38f..3178eee 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesHqlPack.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesHqlPack.java @@ -1515,7 +1515,7 @@ public class MesHqlPack { DdlPreparedPack.getStringEqualPack(mesQcCheckStandard.getWorkCenterCode(), "workCenterCode", packBean); } if (mesQcCheckStandard.getCheckType() != null) { - DdlPreparedPack.getNumberBiggerEqualPack(mesQcCheckStandard.getCheckType(), "checkType", packBean); + DdlPreparedPack.getNumEqualPack(mesQcCheckStandard.getCheckType(), "checkType", packBean); } if (!StringUtils.isEmpty(mesQcCheckStandard.getCheckItem())) { DdlPreparedPack.getStringLikerPack(mesQcCheckStandard.getCheckItem(), "checkItem", packBean); @@ -3113,4 +3113,21 @@ public class MesHqlPack { } return packBean; } + + /** + * 产品工作中心配置 + * @param prodWorkCenter + * @param organizeCode + * @return + */ + public static DdlPackBean getMesProdWorkCenter(MesProdWorkCenter prodWorkCenter, String organizeCode) { + DdlPackBean packBean = getAllBaseDataByNormalPro(prodWorkCenter, organizeCode); + if (!StringUtils.isEmpty(prodWorkCenter.getPartNo())) { + DdlPreparedPack.getStringLikerPack(prodWorkCenter.getPartNo(), "partNo", packBean); + } + if (!StringUtils.isEmpty(prodWorkCenter.getWorkCenterCode())) { + DdlPreparedPack.getStringLikerPack(prodWorkCenter.getWorkCenterCode(), "workCenterCode", packBean); + } + return packBean; + } } diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesPcnHqlPack.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesPcnHqlPack.java index 0539818..ce8737a 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesPcnHqlPack.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesPcnHqlPack.java @@ -3,7 +3,6 @@ package cn.estsh.i3plus.pojo.mes.sqlpack; import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; @@ -357,6 +356,10 @@ public class MesPcnHqlPack { DdlPreparedPack.getNumEqualPack(mesProduceSn.getSnStatus(), "snStatus", packBean); } + if (!StringUtils.isEmpty(mesProduceSn.getWorkOrderNo())) { + DdlPreparedPack.getStringEqualPack(mesProduceSn.getWorkOrderNo(), "workOrderNo", packBean); + } + // 时间段查询 if (!StringUtils.isEmpty(mesProduceSn.getCreateDateTimeStart()) || !StringUtils.isEmpty(mesProduceSn.getCreateDateTimeEnd())) { DdlPreparedPack.timeBuilder( @@ -636,7 +639,9 @@ public class MesPcnHqlPack { if (!StringUtils.isEmpty(mesWorkOrder.getWorkOrderStatus())) { DdlPreparedPack.getNumEqualPack(mesWorkOrder.getWorkOrderStatus(), "workOrderStatus", packBean); } - DdlPreparedPack.getNumEqualPack(mesWorkOrder.getWorkOrderType(), "workOrderType", packBean); + if (!StringUtils.isEmpty(mesWorkOrder.getWorkOrderType() + "") && mesWorkOrder.getWorkOrderTypeVal() != 0) { + DdlPreparedPack.getNumEqualPack(mesWorkOrder.getWorkOrderType(), "workOrderType", packBean); + } // 时间段查询 if (!StringUtils.isEmpty(mesWorkOrder.getStartTimeStart()) || !StringUtils.isEmpty(mesWorkOrder.getStartTimeEnd())) { DdlPreparedPack.timeBuilder( diff --git a/modules/i3plus-pojo-model/pom.xml b/modules/i3plus-pojo-model/pom.xml index efacfd2..215b102 100644 --- a/modules/i3plus-pojo-model/pom.xml +++ b/modules/i3plus-pojo-model/pom.xml @@ -59,6 +59,19 @@ i3plus-pojo-lac + + + org.optaplanner + optaplanner-core + 7.36.0.Final + + + + org.optaplanner + optaplanner-persistence-jpa + 7.36.0.Final + + diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/WmsLocateListModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/WmsLocateListModel.java new file mode 100644 index 0000000..00439af --- /dev/null +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/WmsLocateListModel.java @@ -0,0 +1,23 @@ +package cn.estsh.i3plus.pojo.model.wms; + +import cn.estsh.i3plus.pojo.model.wms.engine.domain.WmsThreeDimenLocateModel; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description 3D仓库-库位优化模型 + * @Reference + * @Author dragon + * @CreateDate 2020/6/1 14:22 + * @Modify + */ +@Data +public class WmsLocateListModel implements Serializable { + private static final long serialVersionUID = -2672721389336190491L; + + List unsolvedLocates; + + String organizeCode; +} diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocateAssign.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocateAssign.java new file mode 100644 index 0000000..32d4268 --- /dev/null +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocateAssign.java @@ -0,0 +1,61 @@ +package cn.estsh.i3plus.pojo.model.wms.engine.domain; + +import lombok.Getter; +import org.optaplanner.core.api.domain.solution.PlanningEntityCollectionProperty; +import org.optaplanner.core.api.domain.solution.PlanningScore; +import org.optaplanner.core.api.domain.solution.PlanningSolution; +import org.optaplanner.core.api.domain.solution.drools.ProblemFactCollectionProperty; +import org.optaplanner.core.api.domain.valuerange.ValueRangeProvider; +import org.optaplanner.core.api.score.buildin.hardsoft.HardSoftScore; + +import java.util.List; + +@PlanningSolution +public class LocateAssign { + + private List wmsThreeDimenLocateModelList; + private List locationList; + /** + * 平均进出库次数,用于分数计算 + */ + @Getter + private int avgLocateFrequence; + + private HardSoftScore score; + + @ValueRangeProvider(id = "locationRange") + @ProblemFactCollectionProperty + public List getLocationList() { + return this.locationList; + } + + public void setLocationList(List locationList) { + this.locationList = locationList; + } + + @PlanningEntityCollectionProperty + public List getWmsThreeDimenLocateModelList() { + return this.wmsThreeDimenLocateModelList; + } + + public void setWmsThreeDimenLocateModelList(List wmsThreeDimenLocateModelList) { + this.wmsThreeDimenLocateModelList = wmsThreeDimenLocateModelList; + + long totalFrequence = 0; + + for (WmsThreeDimenLocateModel wmsThreeDimenLocateModel : wmsThreeDimenLocateModelList) { + totalFrequence += wmsThreeDimenLocateModel.getFrequency(); + } + // 计算平均进出库次数 + this.avgLocateFrequence = (int)(totalFrequence / wmsThreeDimenLocateModelList.size()); + } + + @PlanningScore + public HardSoftScore getScore() { + return this.score; + } + + public void setScore(HardSoftScore score) { + this.score = score; + } +} diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocateStrengthComparator.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocateStrengthComparator.java new file mode 100644 index 0000000..c1d191f --- /dev/null +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocateStrengthComparator.java @@ -0,0 +1,11 @@ +package cn.estsh.i3plus.pojo.model.wms.engine.domain; + + +import java.util.Comparator; + +public class LocateStrengthComparator implements Comparator { + @Override + public int compare(WmsThreeDimenLocateModel o1, WmsThreeDimenLocateModel o2) { + return o1.getFrequency() - o2.getFrequency(); + } +} diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocationStrengthComparator.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocationStrengthComparator.java new file mode 100644 index 0000000..d097975 --- /dev/null +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/LocationStrengthComparator.java @@ -0,0 +1,11 @@ +package cn.estsh.i3plus.pojo.model.wms.engine.domain; + + +import java.util.Comparator; + +public class LocationStrengthComparator implements Comparator { + @Override + public int compare(Integer seq1, Integer seq2) { + return seq1 - seq2; + } +} diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/WmsThreeDimenLocateModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/WmsThreeDimenLocateModel.java new file mode 100644 index 0000000..8167e1f --- /dev/null +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/wms/engine/domain/WmsThreeDimenLocateModel.java @@ -0,0 +1,114 @@ +package cn.estsh.i3plus.pojo.model.wms.engine.domain; + +import lombok.Getter; +import lombok.Setter; +import org.optaplanner.core.api.domain.entity.PlanningEntity; +import org.optaplanner.core.api.domain.lookup.PlanningId; +import org.optaplanner.core.api.domain.variable.PlanningVariable; + + +/** + * 库位 + */ +@PlanningEntity(difficultyComparatorClass = LocateStrengthComparator.class) +public class WmsThreeDimenLocateModel { + /** + * 工厂代码 + */ + @Getter + @Setter + private String organizeCode; + /** + * 仓库编码 + */ + @Getter + @Setter + private String whNo; + /** + * 存储区编码 + */ + @Getter + @Setter + private String zoneNo; + /** + * 家具编码 + */ + @Getter + @Setter + private String furnitureNo; + /** + * 库位代码 + */ + @Getter + @Setter + @PlanningId + private String locateNo; + /** + * X + */ + @Getter + @Setter + private int x; + + /** + * X + */ + @Getter + @Setter + private int y; + + /** + * X + */ + @Getter + @Setter + private int z; + /* + 库位在指定时间内的移动频率 + */ + @Getter + @Setter + private int frequency; + /** + * 库位的原始坐标 + */ + @Getter + @Setter + private int originSeq; + /** + * 库位当前的坐标,此处只用了一纬坐标,二维坐标需要映射到一纬空间内 + */ + private int destSeq; + + + public WmsThreeDimenLocateModel() { + } + + //3D仓库-库位移动频率热力图 + public WmsThreeDimenLocateModel(String organizeCode, String whNo, String zoneNo, + String locateNo, Integer seq, Long frequency, String furnitureNo, + Integer x, Integer y, Integer z) { + this.organizeCode = organizeCode; + this.whNo = whNo; + this.zoneNo = zoneNo; + this.locateNo = locateNo; + this.originSeq = seq; + this.destSeq = seq; + this.frequency = Integer.parseInt(frequency.toString()); + this.furnitureNo = furnitureNo; + this.x = x; + this.y = y; + this.z = z; + } + + @PlanningVariable(valueRangeProviderRefs = {"locationRange"}, + strengthComparatorClass = LocationStrengthComparator.class) + public Integer getDestSeq() { + return this.destSeq; + } + + public void setDestSeq(Integer destSeq) { + this.destSeq = destSeq; + } + +} diff --git a/modules/i3plus-pojo-wms/pom.xml b/modules/i3plus-pojo-wms/pom.xml index 9e5f745..183a03c 100644 --- a/modules/i3plus-pojo-wms/pom.xml +++ b/modules/i3plus-pojo-wms/pom.xml @@ -22,6 +22,20 @@ + + + + org.optaplanner + optaplanner-core + 7.36.0.Final + + + + org.optaplanner + optaplanner-persistence-jpa + 7.36.0.Final + + diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/AmpJisRec.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/AmpJisRec.java index 2e166b2..80ee2b6 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/AmpJisRec.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/AmpJisRec.java @@ -117,4 +117,8 @@ public class AmpJisRec extends BaseBean { this.qty = qty; this.unit = unit; } + + public AmpJisRec() { + + } } diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsAutoForkCallBackDetails.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsAutoForkCallBackDetails.java new file mode 100644 index 0000000..062d2eb --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsAutoForkCallBackDetails.java @@ -0,0 +1,103 @@ +package cn.estsh.i3plus.pojo.wms.bean; + +import cn.estsh.i3plus.pojo.base.annotation.DynamicField; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Index; +import javax.persistence.Table; + + +/** + * @Description : 北京海纳川任务明细 + * @Reference : + * @Author : puxiao.liao + * @CreateDate : 2018-11-17 14:50 + * @Modify: + **/ +@Data +@Entity +@Table(name = "WMS_AUTO_FORK_CALL_BACK_DETAILS", indexes = { + @Index(columnList = "TASK_CODE") +}) +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Api(value = "无人叉车任务明细", description = "喜德无人叉车任务明细") +public class WmsAutoForkCallBackDetails extends BaseBean { + private static final long serialVersionUID = -8103992000562208799L; + + @Column(name = "REQ_CODE") + @ApiParam(value = "请求编号") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String reqCode; + + + @Column(name = "REQ_TIME") + @ApiParam(value = "请求时间") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String reqTime; + + @Column(name = "CLIENT_CODE") + @ApiParam(value = "客服端编号") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String clientCode; + + @Column(name = "TOKEN_CODE") + @ApiParam(value = "令牌号") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String tokenCode; + + @Column(name = "INTERFACE_NAME") + @ApiParam(value = "接口名称") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String interfaceName; + + @Column(name = "METHOD") + @ApiParam(value = "方法名称") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String method; + + @Column(name = "TASK_CODE") + @ApiParam(value = "任务单号") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String taskCode; + + @Column(name = "WB_CODE") + @ApiParam(value = "工作为") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String wbCode; + + @Column(name = "POD_CODE") + @ApiParam(value = "货架编号") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String podCode; + + @Column(name = "CURRENT_POSITION_CODE") + @ApiParam(value = "子任务的位置编号") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String currentPositionCode; + + @Column(name = "ROBOT_CODE") + @ApiParam(value = "执行任务的VGA编号") + @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.TEXT) + private String robotCode; + + //10=新建,20=已处理,30=处理出错 + @Column(name = "STATUS", nullable = false) + @ApiParam("处理标准") + public Integer status; + + @Column(name = "REMARK", nullable = false) + @ApiParam("备注") + public String remark; + +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsAutoTaskLog.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsAutoTaskLog.java new file mode 100644 index 0000000..153e954 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsAutoTaskLog.java @@ -0,0 +1,51 @@ +package cn.estsh.i3plus.pojo.wms.bean; + +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * @Description : 自动任务日志 + * @Reference : + * @Author : jimmy.zeng + * @CreateDate : 2020-06-23 13:55 + * @Modify: + **/ +@Data +@Entity +@Table(name = "WMS_AUTO_TASK_LOG") +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Api(value = "自动任务日志", description = "自动任务日志") +public class WmsAutoTaskLog extends BaseBean { + private static final long serialVersionUID = -7839329617395574378L; + + @Column(name = "ORDER_NO") + @ApiParam("关联订单号") + public String orderNo; + + @Column(name = "BUSI_TYPE") + @ApiParam("业务类型") + public String busiType; + + @Column(name = "STRATEGY_NO") + @ApiParam("策略代码") + public String strategyNo; + + @Column(name = "STRATEGY_ACTION") + @ApiParam("策略动作") + public String strategyAction; + + @Column(name = "ERROR_MSG") + @ApiParam("错误信息") + public String errorMsg; +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementSn.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementSn.java index 9bba40c..2db18a2 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementSn.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementSn.java @@ -11,7 +11,11 @@ import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; -import javax.persistence.*; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Index; +import javax.persistence.Table; +import javax.persistence.Transient; /** * @Description : 移库单条码表 @@ -78,6 +82,14 @@ public class WmsDocMovementSn extends BaseBean { @ApiParam(value = "供应商编码") public String vendorNo; + @Column(name = "WORK_ORDER_CODE") + @ApiParam(value = "工单码") + private String workOrderCode; + + @Column(name = "SEQ_NO") + @ApiParam(value = "父位置号") + private String seqNo; + @Column(name = "SN_TYPE") @ApiParam(value = "条码类型") @AnnoOutputColumn(refClass = WmsEnumUtil.WMS_STOCK_TYPE.class, refForeignKey = "value", value = "description") diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsMoveToERP.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsMoveToERP.java index 1f57cde..e639538 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsMoveToERP.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsMoveToERP.java @@ -212,6 +212,10 @@ public class WmsMoveToERP extends BaseBean { @Transient private Long finishedCounts; + @Column(name = "POD_DIR") + @ApiParam(value = "方向") + private Integer podDir; + @Transient private Long shippingId; diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsPackageSpec.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsPackageSpec.java index 90713b3..1d9ed2e 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsPackageSpec.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsPackageSpec.java @@ -72,4 +72,8 @@ public class WmsPackageSpec extends BaseBean { @DynamicField(webFieldType = CommonEnumUtil.FIELD_TYPE.SELECT, getValWay = CommonEnumUtil.DYNAMIC_FIELD_GET_WAY.URL, isRequire = 2, dataSrc = "/wms/base-data/wms-package-spec/query", listColumnName = "specName", explicitColumnName = "specName") private String parentName; + + @Column(name = "DIRECTION") + @ApiParam(value = "方向") + private Integer direction; } diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/modelbean/WmsAutoTaskModel.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/modelbean/WmsAutoTaskModel.java index 16100ef..bbfaa61 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/modelbean/WmsAutoTaskModel.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/modelbean/WmsAutoTaskModel.java @@ -1,8 +1,13 @@ package cn.estsh.i3plus.pojo.wms.modelbean; +import cn.estsh.i3plus.pojo.wms.bean.WmsDocMovementDetails; +import cn.estsh.i3plus.pojo.wms.bean.WmsStockSn; +import io.swagger.annotations.ApiParam; import lombok.Data; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @Description : @@ -14,14 +19,60 @@ import java.util.List; @Data public class WmsAutoTaskModel { - String lockLocacte; - String lockCar; + @ApiParam("业务类型") + private Integer busiType; - Integer busiType; + @ApiParam("存储区") + private String zoneNo; - String srcZoneNo; - String descZoneNo; - List partList; + @ApiParam("单据号") + private String orderNo; - String organizeCode; + @ApiParam("物料集合") + private List partList; + + @ApiParam("工厂代码") + private String organizeCode; + + @ApiParam("交易类型") + private String transTypeCode; + + @ApiParam("锁定库位") + private String lockLocacte; + + @ApiParam("锁定源库位") + private String srcLockLocacte; + + @ApiParam("方向") + private Integer direction; + + @ApiParam("货格") + private String packageNo; + + @ApiParam("锁定料车") + private String lockCar; + + @ApiParam("预存锁定料车") + private String prestoreLockCar; + + @ApiParam("物料对应的单据明细集合") + private Map partNoDetailsList; + + @ApiParam("锁定物料对应的条码") + private Map> partNoGroupListMap; + + @ApiParam("锁定条码") + private List lockStockSnList; + + @ApiParam("任务生成数量") + private Double taskQty; + + @ApiParam("返回错误信息") + public String errorMsg; + + @ApiParam("策略代码") + public String strategyNo; + + @ApiParam("策略动作") + public String strategyAction; } diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsAutoForkCallBackDetailsRepository.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsAutoForkCallBackDetailsRepository.java new file mode 100644 index 0000000..0123583 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsAutoForkCallBackDetailsRepository.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.pojo.wms.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.wms.bean.WmsAutoForkCallBackDetails; +import org.springframework.stereotype.Repository; + + +/** + * @Description :北京海纳川回调任务明细 + * @Reference : + * @Author : puxiao.lioa + * @CreateDate : 2018-11-13 10:19 + * @Modify: + **/ +@Repository +public interface WmsAutoForkCallBackDetailsRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsAutoTaskLogRecRepository.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsAutoTaskLogRecRepository.java new file mode 100644 index 0000000..e571629 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsAutoTaskLogRecRepository.java @@ -0,0 +1,16 @@ +package cn.estsh.i3plus.pojo.wms.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.wms.bean.WmsAutoTaskLog; +import org.springframework.stereotype.Repository; + +/** + * @Description : + * @Reference : + * @Author : jimmy.zeng + * @CreateDate : 2020-06-23 21:46 + * @Modify: + **/ +@Repository +public interface WmsAutoTaskLogRecRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java index bb526fb..4a0f756 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java @@ -564,9 +564,8 @@ public class WmsHqlPack { DdlPreparedPack.getInPack(StringUtils.join(new ArrayList(Arrays.asList(wmsLocate.getZoneNo().split(","))), ","), "zoneNo", result); } if (wmsLocate.getLocateNoArr() != null) { - DdlPreparedPack.getInPack(StringUtils.join(wmsLocate.getLocateNoArr()), "locateNo", result); + DdlPreparedPack.getInPackArray(wmsLocate.getLocateNoArr(), "locateNo", result); } - // DdlPreparedPack.getStringEqualPack(wmsLocate.getZoneNo(), "zoneNo", result); DdlPreparedPack.getNumEqualPack(wmsLocate.getStatus(), "status", result);