From 8a316ff2d5040cb6f56b28a902f5168ac04c0eb0 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 16 Oct 2019 15:34:39 +0800 Subject: [PATCH] add mrp function to aps --- .../pojo/aps/annotation/FieldAnnotation.java | 15 +++++++++++---- .../pojo/aps/annotation/RippleAnnotation.java | 11 +++++++++-- .../cn/estsh/i3plus/pojo/aps/bean/BaseOrder.java | 4 ++++ .../estsh/i3plus/pojo/aps/bean/ImportDetail.java | 1 - .../cn/estsh/i3plus/pojo/aps/bean/MatCalcRule.java | 4 ++++ .../cn/estsh/i3plus/pojo/aps/bean/Material.java | 22 +++++++++++++--------- .../cn/estsh/i3plus/pojo/aps/bean/Operation.java | 12 ++---------- .../estsh/i3plus/pojo/aps/bean/StandOperation.java | 12 ++---------- .../java/cn/estsh/i3plus/pojo/aps/bean/Work.java | 16 ++++++++++++++++ .../cn/estsh/i3plus/pojo/aps/common/BaseAPS.java | 8 ++++++++ .../cn/estsh/i3plus/pojo/aps/common/BeanInfo.java | 8 ++++++++ .../estsh/i3plus/pojo/aps/common/BeanRelation.java | 18 +++++++++++++++++- .../pojo/aps/enums/MATERIAL_ASSIGN_LIMIT.java | 22 ++++++++++++++++++++++ .../i3plus/pojo/aps/enums/WORK_SPLIT_TYPE.java | 8 ++++++++ .../i3plus/pojo/aps/model/ResourceCompose.java | 18 ++++++++++++++++++ .../src/main/resources/relations/Work.xml | 4 ++-- .../src/main/resources/relations/WorkResource.xml | 2 +- 17 files changed, 145 insertions(+), 40 deletions(-) create mode 100644 modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/enums/MATERIAL_ASSIGN_LIMIT.java create mode 100644 modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/enums/WORK_SPLIT_TYPE.java create mode 100644 modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ResourceCompose.java diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/annotation/FieldAnnotation.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/annotation/FieldAnnotation.java index 86caaa2..a8484af 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/annotation/FieldAnnotation.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/annotation/FieldAnnotation.java @@ -5,12 +5,19 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * @Description :字段元信息注解 + * @Reference : + * @Author : jason.niu + * @CreateDate : 2019-09-17 + * @Modify: + **/ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface FieldAnnotation { boolean property() default true; - boolean modify() default true; - boolean display() default true; - int pric() default 2; - boolean mainkey() default false; + boolean modify() default true; // 是否能修改 + boolean display() default true; // 是否需要在界面显示 + int pric() default 2; // 对于浮点型,界面显示的精度 + boolean mainkey() default false; // 是否为主键 } diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/annotation/RippleAnnotation.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/annotation/RippleAnnotation.java index 9b577f0..26bfdf7 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/annotation/RippleAnnotation.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/annotation/RippleAnnotation.java @@ -5,9 +5,16 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * @Description :字段传播依赖设置 + * @Reference : + * @Author : jason.niu + * @CreateDate : 2019-09-17 + * @Modify: + **/ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface RippleAnnotation { - String[] dependence() default {}; - String method() default ""; + String[] dependence() default {}; // 字段依赖的路径 + String method() default ""; // 字段值计算时调用的方法,方法写在service中. } diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/BaseOrder.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/BaseOrder.java index a6f4432..12c9683 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/BaseOrder.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/BaseOrder.java @@ -58,6 +58,10 @@ public class BaseOrder extends BaseCode { @ApiParam(value ="接单日期") private Date receiveDate; + @Column(name="SPECIFY_MATERIAL_NUM") + @ApiParam(value ="专料号") + private String specifyMaterialNum; + @Column(name="MATERIAL_ID") @ApiParam(value ="物料") @FieldAnnotation(property = false) diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ImportDetail.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ImportDetail.java index fb8b71f..0cfc671 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ImportDetail.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ImportDetail.java @@ -4,7 +4,6 @@ import cn.estsh.i3plus.pojo.aps.annotation.FieldAnnotation; import cn.estsh.i3plus.pojo.aps.common.BaseAPS; import cn.estsh.i3plus.pojo.aps.common.BeanRelation; import cn.estsh.i3plus.pojo.aps.enums.IMPORT_DETAIL_TYPE; -import cn.estsh.i3plus.pojo.aps.holders.EExportDetail; import cn.estsh.i3plus.pojo.aps.holders.EImportDetail; import io.swagger.annotations.Api; import io.swagger.annotations.ApiParam; diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/MatCalcRule.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/MatCalcRule.java index e6935d0..13689af 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/MatCalcRule.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/MatCalcRule.java @@ -53,4 +53,8 @@ public class MatCalcRule extends BaseRule { @ApiParam(value ="批量补充") private Boolean batchSupply; + @Column(name="ASSIGN_LIMIT") + @ApiParam(value ="物料分配制约") + private Integer assignLimit; + } 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 f3f1368..4483e7e 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 @@ -72,19 +72,19 @@ public class Material extends BaseCode { @Column(name="IS_AUTO_FIX_PEGGING") @ApiParam(value ="自动补充标识") - private boolean autoFixPegging; + private Boolean autoFixPegging; - @Column(name="MAX_MANUF_BATCH") + @Column(name="MAX_PRODUCT_BATCH") @ApiParam(value ="最大制造批量") - private Double maxManufBatch; + private Double maxProductBatch; - @Column(name="MIN_MANUF_BATCH") + @Column(name="MIN_PRODUCT_BATCH") @ApiParam(value ="最小制造批量") - private Double minManufBatch; + private Double minProductBatch; - @Column(name="MANUF_UNIT_BATCH") + @Column(name="UNIT_PRODUCT_BATCH") @ApiParam(value ="制造批量单位") - private Double manufUnitBatch; + private Double UnitProductBatch; @Column(name="MAX_PUR_BATCH") @ApiParam(value ="最大采购批量") @@ -94,9 +94,9 @@ public class Material extends BaseCode { @ApiParam(value ="最小采购批量") private Double minPurBatch; - @Column(name="PUR_UNIT_BATCH") + @Column(name="UNIT_PUR_BATCH") @ApiParam(value ="采购批量单位") - private Double purUnitBatch; + private Double unitPurBatch; @Column(name="MIN_STOCK_COUNT") @ApiParam(value ="最小库存数量") @@ -110,6 +110,10 @@ public class Material extends BaseCode { @ApiParam(value ="最大库存数量") private Double maxStockCount; + @Column(name="ORDER_BATCH_PERIOD") + @ApiParam(value ="订单合并期间") + private String orderBatchPeriod; + @JsonBackReference public List getProductRoutings() { return BeanRelation.list(this, EMaterial.ProductRoutings); diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Operation.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Operation.java index 620909a..e14540e 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Operation.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/Operation.java @@ -50,21 +50,13 @@ public class Operation extends BaseAPS { private String ratio; @Column(name="COUNT") - @ApiParam(value ="分割数量") - private Double count; + @ApiParam(value ="分割的工作个数") + private Integer count; @Column(name="BATCH") @ApiParam(value ="分割批量") private Double batch; - @Column(name="MIN_BATCH") - @ApiParam(value ="最小批量") - private Double minBatch; - - @Column(name="TAIL_DEAL") - @ApiParam(value ="尾数处理") - private TAIL_DEAL tailDeal; - @Column(name="CONS_TYPE") @ApiParam(value ="接续方式") private CONSTRAINT_TYPE consType; diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/StandOperation.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/StandOperation.java index 4a0d1e5..cabd90a 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/StandOperation.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/StandOperation.java @@ -30,21 +30,13 @@ public class StandOperation extends BaseCode { private String ratio; @Column(name="COUNT") - @ApiParam(value ="分割数量") - private Double count; + @ApiParam(value ="分割的工作个数") + private Integer count; @Column(name="BATCH") @ApiParam(value ="分割批量") private Double batch; - @Column(name="MIN_BATCH") - @ApiParam(value ="最小批量") - private Double minBatch; - - @Column(name="TAIL_DEAL") - @ApiParam(value ="尾数处理方式") - private TAIL_DEAL tailDeal; - @Column(name="DIRECTION") @ApiParam(value ="排程方向") private DIRECTION direction; 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 e7c42df..a9992f3 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 @@ -97,6 +97,22 @@ public class Work extends BaseCode { @ApiParam(value ="计划主资源") private String planResource; + @Column(name="FIX_SPLIT") + @ApiParam(value ="已分割的工作是否重新分割") + private Boolean fixSplit; + + @Column(name="NEED_PREV_COUNT") + @ApiParam(value ="需要的前工作数量") + private Double needPrevCount; + + @Column(name="SCH_FAILED") + @ApiParam(value ="是否排程失败") + private Boolean schFailed; + + @Column(name="FAILED_REASON") + @ApiParam(value ="排程失败原因") + private String failedReason; + @Column(name="ORDER_ID") @ApiParam(value ="订单") @FieldAnnotation(property = false) diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BaseAPS.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BaseAPS.java index 3b46af2..8b1c8f9 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BaseAPS.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BaseAPS.java @@ -7,6 +7,14 @@ import javax.persistence.MappedSuperclass; import java.util.HashMap; import java.util.Map; +/** + * @Description :APS基类 + * 对于APS所有实体类均需继承该类。 + * @Reference : + * @Author : jason.niu + * @CreateDate : 2019-09-17 + * @Modify: + **/ @Data @MappedSuperclass public abstract class BaseAPS extends BaseBean { diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BeanInfo.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BeanInfo.java index a0f477b..de0cb5f 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BeanInfo.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/common/BeanInfo.java @@ -6,6 +6,14 @@ import cn.estsh.i3plus.pojo.base.bean.BaseBean; import java.util.*; import java.util.function.Consumer; +/** + * @Description :APS 实体对象的元信息 + * 包含实体对象之间的关联关系信息。 + * @Reference : + * @Author : jason.niu + * @CreateDate : 2019-09-17 + * @Modify: + **/ public class BeanInfo { private Class cls; private BeanInfo superBeanInfo; 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 d5fb2b3..1eaa05e 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 @@ -9,6 +9,14 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Predicate; +/** + * @Description :关联关系工具类 + * + * @Reference : + * @Author : jason.niu + * @CreateDate : 2019-09-17 + * @Modify: + **/ public class BeanRelation { Map, Map, List>>> caches = new HashMap<>(); @@ -74,6 +82,14 @@ public class BeanRelation { } public static T get(BaseBean bean, Predicate pred, Enum holder, Enum... args) { + List nextBeans = list(bean, holder); + for (BaseBean nextEntity : nextBeans) { + T result = getImpl(nextEntity, pred, args, 0); + if (result != null) { + return result; + } + } + return null; } @@ -149,7 +165,7 @@ public class BeanRelation { * @param relaBean */ public static void set(BaseBean bean, Enum holder, BaseBean relaBean) { - if (bean == null) { + if (bean == null || holder == null) { return; } if (relaBean == null) { diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/enums/MATERIAL_ASSIGN_LIMIT.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/enums/MATERIAL_ASSIGN_LIMIT.java new file mode 100644 index 0000000..e068a04 --- /dev/null +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/enums/MATERIAL_ASSIGN_LIMIT.java @@ -0,0 +1,22 @@ +package cn.estsh.i3plus.pojo.aps.enums; + +/** + * 物料分配限制 + * 主要考虑输出订的最晚计算时间不能晚于输入的最晚计算时间 + */ +public enum MATERIAL_ASSIGN_LIMIT { + NONE(0), // 不进行任何制约 + INVENTORY(1), // 库存制约 + PURCHASE(2), // 采购制约 + PRODUCT(4); // 制造制约 + + private int _value; + + MATERIAL_ASSIGN_LIMIT(int value) { + _value = value; + } + + public int value() { + return this._value; + } +} \ No newline at end of file diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/enums/WORK_SPLIT_TYPE.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/enums/WORK_SPLIT_TYPE.java new file mode 100644 index 0000000..95383b4 --- /dev/null +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/enums/WORK_SPLIT_TYPE.java @@ -0,0 +1,8 @@ +package cn.estsh.i3plus.pojo.aps.enums; + +public enum WORK_SPLIT_TYPE { + NONE, // 不分割 + RATIO, // 按比例分割 + COUNT, // 按数量分割 + BATCH // 按批量分割 +} diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ResourceCompose.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ResourceCompose.java new file mode 100644 index 0000000..314ecfa --- /dev/null +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ResourceCompose.java @@ -0,0 +1,18 @@ +package cn.estsh.i3plus.pojo.aps.model; + +import cn.estsh.i3plus.pojo.aps.bean.WorkResource; + +import java.util.List; + +/** + * @Description :主副资源配套组合 + * 只允许一个主资源,可以有多个副资源,但同一套号的副资源不能有多个。 + * @Reference : + * @Author : jason.niu + * @CreateDate : 2019-09-11 + * @Modify: + **/ +public class ResourceCompose { + public WorkResource resource; + public List assResource; +} diff --git a/modules/i3plus-pojo-aps/src/main/resources/relations/Work.xml b/modules/i3plus-pojo-aps/src/main/resources/relations/Work.xml index 3f8ab14..bd8ea37 100644 --- a/modules/i3plus-pojo-aps/src/main/resources/relations/Work.xml +++ b/modules/i3plus-pojo-aps/src/main/resources/relations/Work.xml @@ -4,7 +4,7 @@ - + @@ -12,6 +12,6 @@ - + \ No newline at end of file diff --git a/modules/i3plus-pojo-aps/src/main/resources/relations/WorkResource.xml b/modules/i3plus-pojo-aps/src/main/resources/relations/WorkResource.xml index 28b6264..1c21db2 100644 --- a/modules/i3plus-pojo-aps/src/main/resources/relations/WorkResource.xml +++ b/modules/i3plus-pojo-aps/src/main/resources/relations/WorkResource.xml @@ -1,6 +1,6 @@ - +