yun-zuoyi
WYnneaoapc 6 years ago
commit 033b23321f

@ -1,5 +1,16 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.common.BeanRelation;
import cn.estsh.i3plus.pojo.aps.holders.EBaseOrder;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import java.util.Date;
import java.util.List;
/**
* @Description :
* @Reference :
@ -7,5 +18,42 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Api("订单基类")
public class BaseOrder extends BaseAPS {
@Column(name="COUNT")
@ApiParam(value ="数量")
private Double count;
@Column(name="PRIORITY")
@ApiParam(value ="优先级")
private Integer priority;
@Column(name="最晚结束时刻")
@ApiParam(value ="工作筛选")
private Date let;
@Column(name="最早开始时刻计算值")
@ApiParam(value ="工作筛选")
private Date calcEst;
@Column(name="CALC_LET")
@ApiParam(value ="最晚结束时刻计算值")
private Date calcLet;
@Column(name="PLAN_BEGIN")
@ApiParam(value ="计划开始")
private Date planBegin;
@Column(name="PLAN_END")
@ApiParam(value ="计划结束")
private Date planEnd;
@Column(name="RECEIVE_DATE")
@ApiParam(value ="接单日期")
private Date receiveDate;
public List<Work> getWorks() {
return BeanRelation.list(this, EBaseOrder.Works);
}
}

@ -1,5 +1,7 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
/**
* @Description :
* @Reference :

@ -1,5 +1,13 @@
package cn.estsh.i3plus.pojo.aps.bean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +15,12 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_CANCEL_PLAN_RULE")
@Api("取消计划规则")
public class CancelPlanRule extends BaseRule {
@Column(name="WORK_FILTERS")
@ApiParam(value ="工作筛选")
private String workFilters;
}

@ -0,0 +1,53 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.enums.DATA_LINK_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-23
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_DATA_LINK")
@Api("数据集成数据连接信息")
public class DataLink extends BaseAPS {
@Column(name="NAME")
@ApiParam(value ="编码")
private String name;
@Column(name="TYPE")
@ApiParam(value ="链接类型")
private DATA_LINK_TYPE type;
@Column(name="PATH")
@ApiParam(value ="IP/文件路径")
private String path;
@Column(name="PORT")
@ApiParam(value ="端口")
private Integer port;
@Column(name="DB_NAME")
@ApiParam(value ="数据库名")
private String dbName;
@Column(name="USER_NAME")
@ApiParam(value ="用户名")
private String userName;
@Column(name="PASSWORD")
@ApiParam(value ="密码")
private String password;
}

@ -0,0 +1,381 @@
package cn.estsh.i3plus.pojo.aps.bean;
import java.util.AbstractMap;
import java.util.ArrayList;
public class DateDuration {
enum EV_STRING_TYPE {
EVS_GOOD,
EVS_HAVE_P,
};
class EV_STRING implements Cloneable {
EV_STRING_TYPE type;
String value = "";
public EV_STRING clone() {
EV_STRING o = null;
try {
o = (EV_STRING)super.clone();
} catch (CloneNotSupportedException e) {
}
return o;
}
};
public static final double PRECISION = 0.00001;
private String value;
private int time = 0;
private double rate = 0.0;
private boolean bValid = false;
public DateDuration(String value) {
setValue(value);
}
public void setValue(String value) {
this.value = value == null ? "" : value;
this.time = 0;
this.rate = 0.0f;
parse();
}
/**
*
* @return
*/
public String getValue() {
return this.value;
}
/**
* 0
* @return
*/
public boolean Valid() {
return this.bValid;
}
/**
* 0
* @return
*/
public int getTime() {
return this.time;
}
/**
*
* @return
*/
public void setTime(int time) {
this.time = time;
}
/**
* 0
* @return
*/
public long getTimeInMillis() {
return this.time * 1000;
}
public String getString() {
if (this.rate > PRECISION)
return this.getValue();
if (this.time < 0) {
return "";
}
if (this.time == 0) {
return "0S";
}
int iMaxTimeUnit = 4;
StringBuffer strExtraString = new StringBuffer();
int extraTime = this.time;
if (iMaxTimeUnit >= 4) {
int i = extraTime / 86400;
if (i > 0) {
strExtraString.append(i).append("D");
}
extraTime -= i * 86400;
}
if (iMaxTimeUnit >= 3) {
int i = extraTime / 3600;
if (i > 0) {
strExtraString.append(i).append("H");
}
extraTime -= i * 3600;
}
if (iMaxTimeUnit >= 2) {
int i = extraTime / 60;
if (i > 0) {
strExtraString.append(i).append("M");
}
extraTime -= i * 60;
}
if (iMaxTimeUnit >= 1) {
if (extraTime > 0) {
strExtraString.append(extraTime).append("S");
}
}
return strExtraString.toString();
}
public void Divide(double val) {
if (val < PRECISION) {
return;
}
if (this.time >= 0)
this.time /= val;
this.rate /= val;
this.value = getString();
}
/**
* 0
* @param amount
* @return
*/
public long getTime(double amount) {
if (amount < PRECISION)
return getTime();
double result = (amount * this.rate) + this.time;
return (long)Math.ceil(result);
}
/**
* 0
* @param amount
* @return
*/
public long getTimeInMillis(double amount) {
return this.getTime(amount) * 1000;
}
private void parse() {
this.bValid = true;
if (this.value.isEmpty() || this.value.equals("-1")) {
this.time = 0;
this.rate = 0.0f;
this.bValid = false;
return;
}
if (!ValueValid()) {
this.time = 0;
this.rate = 0.0f;
this.bValid = false;
return;
}
ArrayList<EV_STRING> lst = new ArrayList<EV_STRING>();
Decompound(lst);
boolean oFlg = lst.size() == 1;
for (EV_STRING evs : lst) {
if (evs.type == EV_STRING_TYPE.EVS_GOOD)
{
AbstractMap.SimpleEntry<Boolean, Integer> extraTime = TransTime_Each(evs.value);
if (extraTime.getKey() || !oFlg)
{
this.time += extraTime.getValue();
}
else
{
this.time += extraTime.getValue() * 1;
}
}
else
{
AbstractMap.SimpleEntry<Boolean, Double> extraPer = TransRate_Each(evs.value);
if (extraPer.getKey())
{
this.rate = extraPer.getValue();
}
}
}
if (this.time < 0)
{
this.time = 0;
this.rate = 0.0f;
this.bValid = false;
}
}
private boolean ValueValid() {
for (char ch : this.value.toCharArray()) {
if (ch <= 'z' && ch >= 'a') {
ch -= 32;
}
if (!isNumber(ch) && !isUnits(ch)) {
return false;
}
}
this.value = this.value.toUpperCase();
return true;
}
private boolean isNumber(char ch) {
return (ch <= '9' && ch >= '0') || (ch == '.');
}
private boolean isUnits(char ch) {
return (ch == 'D' || ch == 'H'
|| ch == 'M' || ch == 'S' || ch == '+'||ch == '-'||ch == 'P');
}
private void Decompound(ArrayList<EV_STRING> lst) {
int len = this.value.length();
int iStr = 0;
EV_STRING evs = new EV_STRING();
evs.type = EV_STRING_TYPE.EVS_GOOD;
while(iStr < len)
{
char ch = this.value.charAt(iStr);
if (ch == '+')
{
lst.add(evs.clone());
evs.value = "";
evs.type = EV_STRING_TYPE.EVS_GOOD;
iStr++;
continue;
}
else if (ch == '-')
{
int iPre = iStr;
if (iPre != 0)
{
iPre--;
char cp = this.value.charAt(iPre);
if (!(cp == 'D' || cp == 'H'
|| cp == 'M' || cp == 'S'))
{
evs.value = evs.value + 'S';
}
}
}
else if (ch == 'P')
{
int iTempIndex = 0;
StringBuffer temp1 = new StringBuffer();
StringBuffer temp2 = new StringBuffer();
int iTemp = evs.value.length() - 1;
for (;iTemp >= 0;iTemp--)
{
char cTemp = evs.value.charAt(iTemp);
if (cTemp == 'D' || cTemp == 'H'
|| cTemp == 'M' || cTemp == 'S')
{
iTempIndex++;
}
if (iTempIndex >= 2)
{
temp1.insert(0,cTemp);
}
else
{
temp2.insert(0,cTemp);
}
}
if (!temp1.toString().isEmpty())
{
EV_STRING evs1 = new EV_STRING();
evs1.type = EV_STRING_TYPE.EVS_GOOD;
evs1.value = temp1.toString();
lst.add(evs1);
}
evs.value = temp2.toString();
evs.type = EV_STRING_TYPE.EVS_HAVE_P;
evs.value = evs.value + ch;
iStr++;
if (iStr != len)
{
char cp = this.value.charAt(iStr);
if (cp == 'D' || cp == 'H'
|| cp == 'M' || cp == 'S')
{
evs.value = evs.value + cp;
iStr++;
}
}
lst.add(evs.clone());
evs.value = "";
evs.type = EV_STRING_TYPE.EVS_GOOD;
continue;
}
evs.value = evs.value + ch;
iStr++;
}
if (!evs.value.isEmpty())
{
lst.add(evs);
}
}
private AbstractMap.SimpleEntry<Boolean, Integer> TransTime_Each(String extraValue) {
if (extraValue.isEmpty())
return new AbstractMap.SimpleEntry<Boolean, Integer>(false, 0);
int extraTime = 0;
StringBuffer temp = new StringBuffer();
boolean flg = false;
for (int i = 0; i < extraValue.length(); i++) {
char ch = extraValue.charAt(i);
int rate = TimeUnit(ch);
if (rate > 0)
{
double iC = Double.parseDouble(temp.toString());
extraTime += (int)(iC*rate);
temp.setLength(0);
flg = true;
}
else
{
temp.append(ch);
}
}
if (!temp.toString().isEmpty())
extraTime += Double.parseDouble(temp.toString());
return new AbstractMap.SimpleEntry<Boolean, Integer>(flg, extraTime);
}
private AbstractMap.SimpleEntry<Boolean, Double> TransRate_Each(String extraValue) {
if (extraValue.isEmpty())
return new AbstractMap.SimpleEntry<Boolean, Double>(false, 0.0);
double extraPer = 0.0;
StringBuffer temp = new StringBuffer();
boolean flg = false;
for (int i = 0; i < extraValue.length(); i++) {
char ch = extraValue.charAt(i);
switch(ch)
{
case 'D': extraPer = flg ? (1 / Double.parseDouble(temp.toString())) * 86400 : Double.parseDouble(temp.toString()) * 86400; return new AbstractMap.SimpleEntry<Boolean, Double>(true, extraPer);
case 'H': extraPer = flg ? (1 / Double.parseDouble(temp.toString())) * 3600: Double.parseDouble(temp.toString()) * 3600; return new AbstractMap.SimpleEntry<Boolean, Double>(true, extraPer);
case 'M': extraPer = flg ? (1 / Double.parseDouble(temp.toString())) * 60 : Double.parseDouble(temp.toString()) * 60; return new AbstractMap.SimpleEntry<Boolean, Double>(true, extraPer);
case 'S': extraPer = flg ? (1 / Double.parseDouble(temp.toString())) * 1 : Double.parseDouble(temp.toString()) * 1; return new AbstractMap.SimpleEntry<Boolean, Double>(true, extraPer);
case 'P': flg = true;break;
default : temp.append(ch);
}
}
return new AbstractMap.SimpleEntry<Boolean, Double>(true, extraPer);
}
private int TimeUnit(char ch) {
switch(ch)
{
case 'D': return 86400;
case 'H': return 3600;
case 'M': return 60;
case 'S': return 1;
}
return 0;
}
}

@ -1,5 +1,14 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +16,16 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_DAY_SHIFT")
@Api("班次")
public class DayShift extends BaseAPS {
@Column(name="CODE")
@ApiParam(value ="编码")
private String code;
@Column(name="WORK_TIMES")
@ApiParam(value ="工作时间")
private String workTimes;
}

@ -0,0 +1,54 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.common.BeanRelation;
import cn.estsh.i3plus.pojo.aps.holders.EExportDetail;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-23
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_EXPORT_DETAIL")
@Api("数据导出明细")
public class ExportDetail extends BaseAPS {
@Column(name="FILTER")
@ApiParam(value ="筛选")
private String filter;
@Column(name="SORT_BY")
@ApiParam(value ="排序")
private String sortBy;
@Column(name="OUT_NAME")
@ApiParam(value ="外部表名")
private String outName;
@Column(name="IN_NAME")
@ApiParam(value ="内部表名")
private String inName;
@Column(name="PROJECT_ID")
@ApiParam(value ="导出项目ID")
private Long projectId;
public ExportProject getProject() {
return BeanRelation.get(this, EExportDetail.Project);
}
public void setProject(ExportProject project) {
this.projectId = project != null ? project.getId() : 0l;
BeanRelation.set(this, EExportDetail.Project, project);
}
}

@ -0,0 +1,47 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.common.BeanRelation;
import cn.estsh.i3plus.pojo.aps.holders.EExportProject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-23
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_EXPORT_PROJECT")
@Api("数据导出明细集合")
public class ExportProject extends BaseAPS {
@Column(name="NAME")
@ApiParam(value ="标识名")
private String name;
@Column(name="LINK_ID")
@ApiParam(value ="数据源连接")
private Long linkId;
public DataLink getLink() {
return BeanRelation.get(this, EExportProject.Link);
}
public void setLink(DataLink link) {
this.linkId = link != null ? link.getId() : 0l;
BeanRelation.set(this, EExportProject.Link, link);
}
public List<ExportDetail> getDetails() {
return BeanRelation.list(this, EExportProject.Details);
}
}

@ -1,14 +1,17 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseCode;
import cn.estsh.i3plus.pojo.aps.enums.FIELD_TYPE;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import com.fasterxml.jackson.annotation.JsonIgnore;
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.lang.reflect.Method;
@ -28,14 +31,44 @@ import java.lang.reflect.Method;
@Table(name="APS_FIELD_INFO")
@Api("字段信息")
public class FieldInfo extends BaseCode {
@Column(name="CLASS_NAME")
@ApiParam(value ="所属类简称")
private String className;
@Column(name="TYPE")
@ApiParam(value ="类型")
private FIELD_TYPE type;
@Column(name="TYPE_NAME")
@ApiParam(value ="类型全称")
private String typeName;
@Column(name="CUSTOMIZE")
@ApiParam(value ="是否为自定义字段")
private Boolean customize;
@Column(name="MODIFY")
@ApiParam(value ="是否能修改")
private Boolean modify;
@Column(name="DISPLAY")
@ApiParam(value ="是否在界面显示")
private Boolean display;
@Column(name="PRIC")
@ApiParam(value ="浮点数显示精度")
private Integer pric;
@Column(name="TIPS")
@ApiParam(value ="字段提示")
private String tips;
@Column(name="EXPRESSION")
@ApiParam(value ="表达式")
private String expression;
@Column(name="POSITION")
@ApiParam(value ="位置")
private String position;
@JsonIgnore

@ -1,5 +1,13 @@
package cn.estsh.i3plus.pojo.aps.bean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +15,24 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_FIELD_SET_RULE")
@Api("属性赋值规则")
public class FieldSetRule extends BaseRule {
@Column(name="BEAN_NAME")
@ApiParam(value ="实体名")
private String beanName;
@Column(name="FILTER")
@ApiParam(value ="筛选")
private String filter;
@Column(name="FIELD_NAME")
@ApiParam(value ="字段名")
private String fieldName;
@Column(name="VALUE")
@ApiParam(value ="值")
private String value;
}

@ -1,5 +1,13 @@
package cn.estsh.i3plus.pojo.aps.bean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +15,28 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_HEURISTIC_RULE")
@Api("排程运算规则")
public class HeuristicRule extends BaseRule {
@Column(name="WORK_FILTER")
@ApiParam(value ="工作筛选")
private String workFilter;
@Column(name="WORK_SORT")
@ApiParam(value ="工作排序")
private String workSort;
@Column(name="RES_SELECT")
@ApiParam(value ="资源选择")
private String resSelect;
@Column(name="INSERT_IDLE")
@ApiParam(value ="是否插入空闲")
private Boolean insertIdle;
@Column(name="BATCH_PERIOD")
@ApiParam(value ="组炉区间")
private String batchPeriod;
}

@ -0,0 +1,36 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.enums.IMPORT_DETAIL_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-23
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_IMPORT_DETAIL")
@Api("数据导入明细")
public class ImportDetail extends BaseAPS {
@Column(name="TYPE")
@ApiParam(value ="导入类型")
private IMPORT_DETAIL_TYPE type;
@Column(name="OUT_NAME")
@ApiParam(value ="外部表名")
private String outName;
@Column(name="IN_NAME")
@ApiParam(value ="内部表名")
private String inName;
}

@ -0,0 +1,27 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-23
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_IMPORT_PROJECT")
@Api("数据导入明细集合")
public class ImportProject extends BaseAPS {
@Column(name="NAME")
@ApiParam(value ="标识名")
private String name;
}

@ -1,5 +1,13 @@
package cn.estsh.i3plus.pojo.aps.bean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +15,25 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_INVENTORY")
@Api("库存")
public class Inventory extends BaseOrder {
@Column(name="SPECIFY_TOP_ORDER")
@ApiParam(value ="指定顶层订单")
private String specifyTopOrder;
@Column(name="SPECIFY_UP_ORDER")
@ApiParam(value ="指定上层订单")
private String specifyUpOrder;
@Column(name="ASSIGN_COUNT")
@ApiParam(value ="已分配量")
private Double assignCount;
@Column(name="EXCESS_COUNT")
@ApiParam(value ="多余量")
private Double excessCount;
}

@ -1,5 +1,14 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.enums.ORDER_DEL_LIMIT;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +16,41 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_MAT_CALC_RULE")
@Api("物料运算规则")
public class MatCalcRule extends BaseRule {
@Column(name="MATERIAL_FILTER")
@ApiParam(value ="物料筛选")
private String materialFilter;
@Column(name="INPUT_FILTER")
@ApiParam(value ="输入筛选")
private String inputFilter;
@Column(name="OUTPUT_FILTER")
@ApiParam(value ="输出筛选")
private String outputFilter;
@Column(name="DEL_AUTO")
@ApiParam(value ="自动删除补充订单")
private Boolean delAuto;
@Column(name="DEL_LIMIT")
@ApiParam(value ="删除补充订单限制条件")
private ORDER_DEL_LIMIT delLimit;
@Column(name="KEEP_RELATION")
@ApiParam(value ="保持关联")
private Boolean keepRelation;
@Column(name="AUTO_SUPPLY")
@ApiParam(value ="自动补充")
private Boolean autoSupply;
@Column(name="BATCH_SUPPLY")
@ApiParam(value ="批量补充")
private Boolean batchSupply;
}

@ -1,13 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseCode;
import cn.estsh.i3plus.pojo.aps.enums.MATERIAL_TYPE;
import cn.estsh.i3plus.pojo.aps.enums.PREPARE_TYPE;
import cn.estsh.i3plus.pojo.aps.enums.REPLENISHMENT_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
@ -18,8 +20,9 @@ import javax.persistence.Table;
* @Modify:
**/
@Data
@MappedSuperclass
@Table(name = "MATERIAL")
@Entity
@Table(name = "APS_MATERIAL")
@Api("物料")
public class Material extends BaseCode {
@Column(name="TYPE")
@ApiParam(value ="类型")

@ -1,5 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.enums.CONSTRAINT_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +17,32 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_OPER_INPUT")
@Api("工序输入")
public class OperInput extends BaseAPS {
@Column(name="INPUT_COUNT")
@ApiParam(value ="输入数量")
private Double inputCount;
@Column(name="YIELD")
@ApiParam(value ="成品率")
private Double yield;
@Column(name="FIX_SCRAP_COUNT")
@ApiParam(value ="固定报废数")
private Double fixScrapCount;
@Column(name="CONS_TYPE")
@ApiParam(value ="接续方式")
private CONSTRAINT_TYPE consType;
@Column(name="MAX_SPACE_TIME")
@ApiParam(value ="最大时间间隔")
private String maxSpaceTime;
@Column(name="MIN_SPACE_TIME")
@ApiParam(value ="最小时间间隔")
private String minSpaceTime;
}

@ -1,5 +1,14 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +16,20 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_OPER_OUTPUT")
@Api("工序输出")
public class OperOutput extends BaseAPS {
@Column(name="output_Count")
@ApiParam(value ="输出数量")
private Double outputCount;
@Column(name="yield")
@ApiParam(value ="成品率")
private Double yield;
@Column(name="fix_Scrap_Count")
@ApiParam(value ="固定报废数")
private Double fixScrapCount;
}

@ -1,5 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.enums.USE_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +17,40 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_OPER_RESOURCE")
@Api("工序资源")
public class OperResource extends BaseAPS {
@Column(name="USE_TYPE")
@ApiParam(value ="使用类型")
private USE_TYPE useType;
@Column(name="PREV_TIME")
@ApiParam(value ="前设置时间")
private String prevTime;
@Column(name="MANUF_TIME")
@ApiParam(value ="生产时间")
private String manufTime;
@Column(name="POST_TIME")
@ApiParam(value ="后设置时间")
private String postTime;
@Column(name="MAX_PREV_SD_TIME")
@ApiParam(value ="最大前设置中断时间")
private String maxPrevSdTime;
@Column(name="MAX_MANUF_SD_TIME")
@ApiParam(value ="最大生产中断时间")
private String maxManufSdTime;
@Column(name="MAX_POST_SD_TIME")
@ApiParam(value ="最大后设置中断时间")
private String maxPostSdTime;
@Column(name="PRIORITY")
@ApiParam(value ="优先级")
private Integer priority;
}

@ -1,5 +1,16 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.enums.CONSTRAINT_TYPE;
import cn.estsh.i3plus.pojo.aps.enums.TAIL_DEAL;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +18,57 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_OPERATION")
@Api("工序")
public class Operation extends BaseAPS {
@Column(name="NUMBER")
@ApiParam(value ="工序号")
private Integer number;
@Column(name="PREV_COUNT_RATE")
@ApiParam(value ="前工序数量比")
private Double prevCountRate;
@Column(name="YIELD")
@ApiParam(value ="成品率")
private Double yield;
@Column(name="FIX_SCRAP_COUNT")
@ApiParam(value ="固定报废数")
private Double fixScrapCount;
@Column(name="RATIO")
@ApiParam(value ="分割比例")
private String ratio;
@Column(name="COUNT")
@ApiParam(value ="分割数量")
private Double 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;
@Column(name="MAX_SPACE_TIME")
@ApiParam(value ="最大时间间隔")
private String maxSpaceTime;
@Column(name="MIN_SPACE_TIME")
@ApiParam(value ="最小时间间隔")
private String minSpaceTime;
}

@ -1,5 +1,16 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.enums.CALENDAR_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* @Description :
* @Reference :
@ -7,5 +18,24 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_OVERTIME_CALENDAR")
@Api("加班日历")
public class OvertimeCalendar extends BaseAPS {
@Column(name="RES_CODES")
@ApiParam(value ="资源代码")
private String resCodes;
@Column(name="START")
@ApiParam(value ="开始时间")
private Date start;
@Column(name="END")
@ApiParam(value ="结束时间")
private Date end;
@Column(name="TYPE")
@ApiParam(value ="类型")
private CALENDAR_TYPE type;
}

@ -1,5 +1,12 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +14,9 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_PLAN_FEEDBACK")
@Api("物料")
public class PlanFeedback extends BaseAPS {
}

@ -1,5 +1,14 @@
package cn.estsh.i3plus.pojo.aps.bean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* @Description :
* @Reference :
@ -7,5 +16,68 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_PRODUCT_ORDER")
@Api("生产订单")
public class ProductOrder extends BaseOrder {
@Column(name="EST")
@ApiParam(value ="最早开始时间")
private Date est;
@Column(name="SPECIFY_EST")
@ApiParam(value ="指定最早开始时间")
private Date specifyEst;
@Column(name="SPECIFY_LET")
@ApiParam(value ="指定最晚结束时间")
private Date specifyLet;
@Column(name="LOW_EST")
@ApiParam(value ="低阶最早开始时间")
private Date lowEst;
@Column(name="SPECIFY_LOW_EST")
@ApiParam(value ="指定低阶最早开始时间")
private Date specifyLowEst;
@Column(name="SPECIFY_ROUTING")
@ApiParam(value ="指定工艺路线")
private String specifyRouting;
@Column(name="RESYNCHRONIZE")
@ApiParam(value ="是否同步")
private Boolean resynchronize;
@Column(name="RECALC_COUNT")
@ApiParam(value ="是否重新计算数量")
private Boolean recalcCount;
@Column(name="SPECIFY_TOP_ORDER")
@ApiParam(value ="指定顶层订单")
private String specifyTopOrder;
@Column(name="SPECIFY_UP_ORDER")
@ApiParam(value ="指定上层订单")
private String specifyUpOrder;
@Column(name="ASSIGN_COUNT")
@ApiParam(value ="已分配数量")
private Double assignCount;
@Column(name="SPECIFY_LEAD_TIME")
@ApiParam(value ="指定提前期")
private String specifyLeadTime;
@Column(name="CALC_LEAD_TIME")
@ApiParam(value ="提前期计算值")
private String calcLeadTime;
@Column(name="EXCESS_COUNT")
@ApiParam(value ="多余量")
private Double excessCount;
@Column(name="LACK_COUNT")
@ApiParam(value ="缺少量")
private Double lackCount;
}

@ -1,5 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseCode;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* @Description :线
* @Reference :
@ -7,5 +17,20 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_PRODUCTROUTING")
@Api("物料")
public class ProductRouting extends BaseCode {
@Column(name="VALID_START")
@ApiParam(value ="有效开始时间")
private Date validStart;
@Column(name="VALID_END")
@ApiParam(value ="有效结束时间")
private Date validEnd;
@Column(name="PRIORITY")
@ApiParam(value ="优先级")
private Integer priority;
}

@ -1,5 +1,13 @@
package cn.estsh.i3plus.pojo.aps.bean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +15,32 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_PURCHASE_ORDER")
@Api("工艺路线")
public class PurchaseOrder extends BaseOrder {
@Column(name="SPECIFY_TOP_ORDER")
@ApiParam(value ="指定顶层订单")
private String specifyTopOrder;
@Column(name="SPECIFY_UP_ORDER")
@ApiParam(value ="指定上层订单")
private String specifyUpOrder;
@Column(name="ASSIGN_COUNT")
@ApiParam(value ="已分配数量")
private Double assignCount;
@Column(name="SPECIFY_LEAD_TIME")
@ApiParam(value ="指定提前期")
private String specifyLeadTime;
@Column(name="CALC_LEAD_TIME")
@ApiParam(value ="提前期计算值")
private String calcLeadTime;
@Column(name="EXCESS_COUNT")
@ApiParam(value ="多余量")
private Double excessCount;
}

@ -1,5 +1,14 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +16,28 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_RES_CALENDAR")
@Api("日历")
public class ResCalendar extends BaseAPS {
@Column(name="RES_CODES")
@ApiParam(value ="资源代码")
private String resCodes;
@Column(name="WEEKS")
@ApiParam(value ="星期")
private Integer weeks;
@Column(name="DATES")
@ApiParam(value ="时间")
private String dates;
@Column(name="SHIFT_CODES")
@ApiParam(value ="班次代码")
private String shiftCodes;
@Column(name="PRIORITY")
@ApiParam(value ="优先级")
private Integer priority;
}

@ -1,5 +1,17 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseCode;
import cn.estsh.i3plus.pojo.aps.enums.RESOURCE_CLASS;
import cn.estsh.i3plus.pojo.aps.enums.RESOURCE_TYPE;
import cn.estsh.i3plus.pojo.aps.enums.TIME_ROUND_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +19,73 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_RESOURCE")
@Api("资源")
public class Resource extends BaseCode {
@Column(name="BOTTLENECK")
@ApiParam(value ="是否瓶颈资源")
private Boolean bottleneck;
@Column(name="TYPE")
@ApiParam(value ="资源类型")
private RESOURCE_TYPE type;
@Column(name="RES_CLASS")
@ApiParam(value ="资源区分")
private RESOURCE_CLASS resClass;
@Column(name="EFFICIENCY")
@ApiParam(value ="生产效率")
private Double efficiency;
@Column(name="PREV_BUFFER")
@ApiParam(value ="前缓冲时间")
private String prevBuffer;
@Column(name="POST_BUFFER")
@ApiParam(value ="后缓冲时间")
private String postBuffer;
@Column(name="MAX_MANUF_BATCH")
@ApiParam(value ="最大生产批量")
private Double maxManufBatch;
@Column(name="MANUF_ADJ_UNIT_TM")
@ApiParam(value ="生产时间尾数调整")
private String manufAdjUnitTm;
@Column(name="MANUF_ADJ_UNIT")
@ApiParam(value ="生产时刻尾数调整")
private String manufAdjUnit;
@Column(name="MAX_PREV_SD_TIME")
@ApiParam(value ="最大前设置中断时间")
private String maxPrevSdTime;
@Column(name="MAX_MANUF_SD_TIME")
@ApiParam(value ="最大生产中断时间")
private String maxManufSdTime;
@Column(name="MAX_POST_SD_TIME")
@ApiParam(value ="最大后设置中断时间")
private String maxPostSdTime;
@Column(name="ROUND_TYPE")
@ApiParam(value ="时间圆整类型")
private TIME_ROUND_TYPE roundType;
@Column(name="MANUF_EFFECT")
@ApiParam(value ="生产效率影响")
private Integer manufEffect;
@Column(name="TIME_ROUND")
@ApiParam(value ="时间圆整影响")
private Integer timeRound;
@Column(name="TIME_TAIL_ROUND")
@ApiParam(value ="时间尾数影响")
private Integer timeTailRound;
}

@ -1,5 +1,12 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +14,9 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_RULE_GROUP")
@Api("规则组合")
public class RuleGroup extends BaseAPS {
}

@ -1,5 +1,14 @@
package cn.estsh.i3plus.pojo.aps.bean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* @Description :
* @Reference :
@ -7,5 +16,28 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_SALES_ORDER")
@Api("销售订单")
public class SalesOrder extends BaseOrder {
@Column(name="LOW_EST")
@ApiParam(value ="低阶最早开始时间")
private Date lowEst;
@Column(name="SPECIFY_LOW_EST")
@ApiParam(value ="指定低价最早开始时间")
private Date specifyLowEst;
@Column(name="SPECIFY_LET")
@ApiParam(value ="指定最晚结束时间")
private Date specifyLet;
@Column(name="SPECIFY_LEAD_TIME")
@ApiParam(value ="指定提前期")
private String specifyLeadTime;
@Column(name="CALC_LEAD_TIME")
@ApiParam(value ="提前期计算值")
private String calcLeadTime;
}

@ -1,5 +1,18 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseCode;
import cn.estsh.i3plus.pojo.aps.enums.DIRECTION;
import cn.estsh.i3plus.pojo.aps.enums.RES_COMB_LOCK_TYPE;
import cn.estsh.i3plus.pojo.aps.enums.RES_COMB_TIME_TYPE;
import cn.estsh.i3plus.pojo.aps.enums.TAIL_DEAL;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +20,40 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_STAND_OPERATION")
@Api("标准工序")
public class StandOperation extends BaseCode {
@Column(name="RATIO")
@ApiParam(value ="分割比例")
private String ratio;
@Column(name="COUNT")
@ApiParam(value ="分割数量")
private Double 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;
@Column(name="COMB_TYPE")
@ApiParam(value ="生产组合方式")
private RES_COMB_TIME_TYPE combType;
@Column(name="LOCK_TYPE")
@ApiParam(value ="锁定组合方式")
private RES_COMB_LOCK_TYPE lockType;
}

@ -1,5 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* @Description :
* @Reference :
@ -7,5 +17,16 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_SYS_PARAM")
@Api("系统参数")
public class SysParam extends BaseAPS {
@Column(name="BASE_TIME")
@ApiParam(value ="基准时间")
private Date baseTime;
@Column(name="max_Interrupt_Count")
@ApiParam(value ="最大中断次数")
private Integer maxInterruptCount;
}

@ -1,5 +1,19 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseCode;
import cn.estsh.i3plus.pojo.aps.common.BeanRelation;
import cn.estsh.i3plus.pojo.aps.enums.WORK_STATUS;
import cn.estsh.i3plus.pojo.aps.enums.WORK_TYPE;
import cn.estsh.i3plus.pojo.aps.holders.EWork;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* @Description :
* @Reference :
@ -7,5 +21,89 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_WORK")
@Api("工作")
public class Work extends BaseCode {
@Column(name="WORK_TYPE")
@ApiParam(value ="工作类型")
private WORK_TYPE workType;
@Column(name="count")
@ApiParam(value ="数量")
private Double count;
@Column(name="SPECIFY_COUNT")
@ApiParam(value ="指定数量")
private Double specifyCount;
@Column(name="SPECIFY_RESOURCE")
@ApiParam(value ="指定资源")
private String specifyResource;
@Column(name="SPECIFY_MANUF_TIME")
@ApiParam(value ="指定制造时间")
private String specifyManufTime;
@Column(name="SPECIFY_PREV_TIME")
@ApiParam(value ="指定前设置时间")
private String specifyPrevTime;
@Column(name="SPECIFY_POST_TIME")
@ApiParam(value ="指定后设置时间")
private String specifyPostTime;
@Column(name="SPECIFY_EST")
@ApiParam(value ="指定最早开始时间")
private Date specifyEst;
@Column(name="SPECIFY_LET")
@ApiParam(value ="指定最晚结束时间")
private Date specifyLet;
@Column(name="SPECIFY_BEGIN")
@ApiParam(value ="指定开始时间")
private Date specifyBegin;
@Column(name="SPECIFY_END")
@ApiParam(value ="指定结束时间")
private Date specifyEnd;
@Column(name="CALC_EST")
@ApiParam(value ="最早开始时间计算值")
private Date calcEst;
@Column(name="CALC_LET")
@ApiParam(value ="最晚结束时间计算值")
private Date calcLet;
@Column(name="WORK_STATUS")
@ApiParam(value ="工作状态")
private WORK_STATUS workStatus;
@Column(name="PLAN_BEGIN")
@ApiParam(value ="计划开始时间")
private Date planBegin;
@Column(name="PLAN_END")
@ApiParam(value ="计划结束时间")
private Date planEnd;
@Column(name="PLAN_RESOURCE")
@ApiParam(value ="计划主资源")
private String planResource;
@Column(name="ORDER_ID")
@ApiParam(value ="订单")
private Long orderId;
public BaseOrder getOrder() {
return BeanRelation.get(this, EWork.Order);
}
public void setOrder(BaseOrder order) {
this.orderId = order != null ? order.getId() : 0l;
BeanRelation.set(this, EWork.Order, order);
}
}

@ -1,5 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* @Description :
* @Reference :
@ -7,5 +17,20 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_WORK_INPUT")
@Api("工作输入")
public class WorkInput extends BaseAPS {
@Column(name="INPUT_TIME")
@ApiParam(value ="输入时间")
private Date inputTime;
@Column(name="INPUT_COUNT")
@ApiParam(value ="输入数量")
private Double inputCount;
@Column(name="SHORT_COUNT")
@ApiParam(value ="短缺数量")
private Double shortCount;
}

@ -1,5 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* @Description :
* @Reference :
@ -7,5 +17,20 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_WORK_OUTPUT")
@Api("工作输出")
public class WorkOutput extends BaseAPS {
@Column(name="OUTPUT_TIME")
@ApiParam(value ="输出时间")
private Date outputTime;
@Column(name="OUTPUT_COUNT")
@ApiParam(value ="输出数量")
private Double outputCount;
@Column(name="REMAIN_COUNT")
@ApiParam(value ="多余数量")
private Double remainCount;
}

@ -1,5 +1,16 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.enums.CONSTRAINT_TYPE;
import cn.estsh.i3plus.pojo.aps.enums.WORK_RELATION_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +18,36 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_Work_Relation")
@Api("工作关联")
public class WorkRelation extends BaseAPS {
@Column(name="TYPE")
@ApiParam(value ="关联类型")
private WORK_RELATION_TYPE type;
@Column(name="CONS_TYPE")
@ApiParam(value ="接续方式")
private CONSTRAINT_TYPE consType;
@Column(name="MAX_SPACE_TIME")
@ApiParam(value ="最大间隔时间")
private String maxSpaceTime;
@Column(name="MIN_SPACE_TIME")
@ApiParam(value ="最小间隔时间")
private String minSpaceTime;
@Column(name="COUNT")
@ApiParam(value ="关联数量")
private Double count;
@Column(name="FIX_RELATION")
@ApiParam(value ="是否固定关联")
private Boolean fixRelation;
@Column(name="FIX_COUNT")
@ApiParam(value ="是否固定数量")
private Boolean fixCount;
}

@ -1,5 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
import cn.estsh.i3plus.pojo.aps.common.BaseAPS;
import cn.estsh.i3plus.pojo.aps.enums.USE_TYPE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Description :
* @Reference :
@ -7,5 +17,40 @@ package cn.estsh.i3plus.pojo.aps.bean;
* @CreateDate : 2019-09-17
* @Modify:
**/
@Data
@Entity
@Table(name = "APS_WORK_RESOURCE")
@Api("工作资源")
public class WorkResource extends BaseAPS {
@Column(name="USE_TYPE")
@ApiParam(value ="使用类型")
private USE_TYPE useType;
@Column(name="PREV_TIME")
@ApiParam(value ="前设置时间")
private Long prevTime;
@Column(name="MANUF_TIME")
@ApiParam(value ="制造时间")
private Long manufTime;
@Column(name="POST_TIME")
@ApiParam(value ="后设置时间")
private Long postTime;
@Column(name="PRIORITY")
@ApiParam(value ="优先级")
private Integer priority;
@Column(name="MAX_PREV_SD_TIME")
@ApiParam(value ="最大前设置中断时间")
private String maxPrevSdTime;
@Column(name="MAX_MANUF_SD_TIME")
@ApiParam(value ="最大制造中断时间")
private String maxManufSdTime;
@Column(name="MAX_POST_SD_TIME")
@ApiParam(value ="最大后设置中断时间")
private String maxPostSdTime;
}

@ -1,11 +1,15 @@
package cn.estsh.i3plus.pojo.aps.bean;
package cn.estsh.i3plus.pojo.aps.common;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import lombok.Data;
import javax.persistence.MappedSuperclass;
import java.util.HashMap;
import java.util.Map;
public class BaseAPS extends BaseBean {
@Data
@MappedSuperclass
public abstract class BaseAPS extends BaseBean {
private transient Map<String, Object> customFields = new HashMap<>();
public Object getCustomField(String code) {

@ -1,4 +1,4 @@
package cn.estsh.i3plus.pojo.aps.bean;
package cn.estsh.i3plus.pojo.aps.common;
import io.swagger.annotations.ApiParam;
import lombok.Data;
@ -15,7 +15,7 @@ import javax.persistence.MappedSuperclass;
**/
@Data
@MappedSuperclass
public class BaseCode extends BaseAPS {
public abstract class BaseCode extends BaseAPS {
@Column(name="CODE")
@ApiParam(value ="编码")
private String code;

@ -0,0 +1,271 @@
package cn.estsh.i3plus.pojo.aps.common;
import cn.estsh.i3plus.pojo.aps.bean.DateDuration;
import cn.estsh.i3plus.pojo.aps.enums.FIELD_TYPE;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import java.util.*;
public class BeanInfo {
private Class<? extends BaseBean> cls;
private BeanInfo superBeanInfo;
private List<BeanInfo> childsBeanInfos = new ArrayList<>();
private Map<Enum<?>, RelationInfo> relations = new HashMap<>();
public BeanInfo(Class<? extends BaseBean> cls) {
this.cls = cls;
}
public void initHolder(Class<Enum<? extends Enum<?>>> holderCls) {
Enum<? extends Enum<?>>[] ens = holderCls.getEnumConstants();
for (Enum<? extends Enum<?>> en : ens) {
RelationInfo info = new RelationInfo();
info.setHolder(en);
info.setBeanInfo(this);
relations.put(en, info);
}
}
public BeanInfo getSuperBeanInfo() { return superBeanInfo; }
public boolean validHolder(Enum<?> holder) {
return this.relations.get(holder) != null;
}
public Enum<?> getHolder(String name) {
for (Enum<?> holder : relations.keySet()) {
if (holder.name().equalsIgnoreCase(name)) {
return holder;
}
}
if (superBeanInfo != null) {
return superBeanInfo.getHolder(name);
}
return null;
}
public Enum<?> getReverseHolder(Enum<?> holder) {
RelationInfo relaInfo = getRelationInfo(holder);
if (relaInfo != null) {
return relaInfo.getReverseHolder();
}
return null;
}
public Enum<?> getReverseHolder(String name) {
RelationInfo relaInfo = getRelationInfo(name);
if (relaInfo != null) {
return relaInfo.getReverseHolder();
}
return null;
}
public RelationInfo getRelationInfo(Enum<?> holder) {
if (validHolder(holder)) {
return relations.get(holder);
}
if (superBeanInfo != null) {
return superBeanInfo.getRelationInfo(holder);
}
return null;
}
public RelationInfo getRelationInfo(String name) {
Enum<?> holder = getHolder(name);
if (holder != null) {
return getRelationInfo(holder);
}
return null;
}
public void addRelationInfo(Enum<?> holder, RelationInfo info) {
this.relations.put(holder, info);
}
public <T extends BaseBean> Class<T> getBeanClass() {
return (Class<T>)cls;
}
public BeanInfo getRelationBeanInfo(Enum<?> holder) {
RelationInfo relaInfo = getRelationInfo(holder);
if (relaInfo != null) {
return relaInfo.getBeanInfo();
}
return null;
}
public BeanInfo getRelationBeanInfo(String name) {
RelationInfo relaInfo = getRelationInfo(name);
if (relaInfo != null) {
return relaInfo.getBeanInfo();
}
return null;
}
public RELATION_TYPE getRelationType(Enum<?> holder) {
RelationInfo relaInfo = getRelationInfo(holder);
if (relaInfo != null) {
return relaInfo.getType();
}
return RELATION_TYPE.INVALID;
}
public RELATION_TYPE getRelationType(String name) {
RelationInfo relaInfo = getRelationInfo(name);
if (relaInfo != null) {
return relaInfo.getType();
}
return RELATION_TYPE.INVALID;
}
public List<Enum<?>> getAllHolders() {
List<Enum<?>> holders = new ArrayList<>();
for (Map.Entry<Enum<?>, RelationInfo> entry : relations.entrySet()) {
holders.add(entry.getKey());
}
return holders;
}
public List<Enum<?>> getOwnerHolders() {
List<Enum<?>> owners = new ArrayList<>();
for (Map.Entry<Enum<?>, RelationInfo> entry : relations.entrySet()) {
if (entry.getValue().isOwner()) {
owners.add(entry.getKey());
}
}
return owners;
}
public List<Enum<?>> getNormalSigns() {
List<Enum<?>> holders = new ArrayList<>();
for (Map.Entry<Enum<?>, RelationInfo> entry : relations.entrySet()) {
if (!entry.getValue().isOwner()) {
holders.add(entry.getKey());
}
}
return holders;
}
private static Map<Class<? extends BaseBean>, BeanInfo> beanInfos = new HashMap<>();
private static Map<String, BeanInfo> nameMapBeanInfos = new HashMap<>();
static {
BeanInfo beanInfo = new BeanInfo(BaseBean.class);
beanInfos.put(BaseBean.class, beanInfo);
nameMapBeanInfos.put(BaseBean.class.getSimpleName(), beanInfo);
}
public static void register(Class<? extends BaseBean> cls) {
if (beanInfos.containsKey(cls)) {
return;
}
BeanInfo beanInfo = new BeanInfo(cls);
beanInfos.put(cls, beanInfo);
nameMapBeanInfos.put(cls.getSimpleName(), beanInfo);
register((Class<? extends BaseBean>)cls.getSuperclass());
}
public static void init() {
for (Map.Entry<Class<? extends BaseBean>, BeanInfo> entry : beanInfos.entrySet()) {
Class<? extends BaseBean> superClass = (Class<? extends BaseBean>)entry.getKey().getSuperclass();
BeanInfo superBeanInfo = beanInfos.get(superClass);
if (superBeanInfo != null) {
entry.getValue().superBeanInfo = superBeanInfo;
superBeanInfo.childsBeanInfos.add(entry.getValue());
}
}
BeanRelationUtil.initData("cn.estsh.i3plus.pojo.aps.holders");
BeanRelationUtil.loadConfig("relations");
}
public static Set<Class<? extends BaseBean>> getBeanClasses() {
return beanInfos.keySet();
}
public static BeanInfo getBeanInfo(Class<? extends BaseBean> cls) {
BeanInfo info = beanInfos.get(cls);
return info;
}
public static BeanInfo getBeanInfo(String name) {
BeanInfo info = nameMapBeanInfos.get(name);
return info;
}
public static Class<? extends BaseBean> getSuperClass(Class<? extends BaseBean> cls) {
BeanInfo superBeanInfo = getBeanInfo(cls).superBeanInfo;
if (superBeanInfo != null) {
return superBeanInfo.getBeanClass();
}
return null;
}
public static FIELD_TYPE getFieldType(Class<?> cls) {
FIELD_TYPE type = null;
if (cls == Boolean.class || cls == boolean.class) {
type = FIELD_TYPE.BOOLEAN;
} else if (cls == Character.class) {
type = FIELD_TYPE.CHAR;
} else if (cls == Short.class || cls == short.class) {
type = FIELD_TYPE.SHORT;
} else if (cls == Integer.class || cls == int.class) {
type = FIELD_TYPE.INTEGER;
} else if (cls == Long.class || cls == long.class) {
type = FIELD_TYPE.LONG;
} else if (cls == Double.class || cls == Float.class ||
cls == double.class || cls == float.class) {
type = FIELD_TYPE.DOUBLE;
} else if (cls == String.class) {
type = FIELD_TYPE.STRING;
} else if(cls == Date.class || cls == java.sql.Date.class) {
type = FIELD_TYPE.DATE_TIME;
} else if (cls == DateDuration.class) {
type = FIELD_TYPE.DURATION;
} else if (Enum.class.isAssignableFrom(cls)) {
type = FIELD_TYPE.ENUM;
} else if (BaseBean.class.isAssignableFrom(cls)) {
type = FIELD_TYPE.OBJECT;
}
return type;
}
public static Class<?> getFieldClass(FIELD_TYPE type) {
Class<?> cls = null;
switch (type) {
case BOOLEAN:
cls = Boolean.class;
break;
case CHAR:
cls = Character.class;
break;
case SHORT:
cls = Short.class;
break;
case INTEGER:
cls = Integer.class;
break;
case LONG:
cls = Long.class;
break;
case DOUBLE:
cls = Double.class;
break;
case DATE:
case TIME:
case DATE_TIME:
cls = Date.class;
break;
case STRING:
cls = String.class;
break;
default:
break;
}
return cls;
}
}

@ -0,0 +1,241 @@
package cn.estsh.i3plus.pojo.aps.common;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
public class BeanRelation {
Map<Class<? extends BaseBean>, Map<Long, Map<Enum<?>, List<BaseBean>>>> caches = new HashMap<>();
private static Map<Long, BeanRelation> relations = new ConcurrentHashMap<>();
private static BeanRelation get() {
Long userId = 0l;
BeanRelation relation = relations.get(userId);
if (relation == null) {
synchronized (BeanRelation.class) {
relation = relations.get(userId);
if (relation == null) {
relation = new BeanRelation();
relations.put(userId, relation);
}
}
}
return relation;
}
private static Map<Enum<?>, List<BaseBean>> createRelation(Class<? extends BaseBean> cls) {
return null;
}
public static Map<Enum<?>, List<BaseBean>> get(BaseBean bean) {
Map<Enum<?>, List<BaseBean>> temp = get().caches.get(bean.getClass()).get(bean.getId());
if (temp == null) {
synchronized (bean.getClass()) {
if (temp == null) {
temp = createRelation(bean.getClass());
get().caches.get(bean.getClass()).put(bean.getId(), temp);
}
}
}
return temp;
}
public static void init() {
}
public static <T extends BaseBean> T get(BaseBean bean, Enum<?> holder) {
List<T> beans = (List<T>)get(bean).get(holder);
if (beans == null || beans.isEmpty()) {
return null;
}
return beans.get(0);
}
public static <T extends BaseBean> T get(BaseBean bean, Enum<?> holder, Enum<?>... args) {
return get(bean, null, holder, args);
}
public static <T extends BaseBean> T get(BaseBean bean, Predicate<T> pred, Enum<?> holder, Enum<?>... args) {
return null;
}
private static <T extends BaseBean> T getImpl(BaseBean bean, Predicate<T> pred, Enum<?>[] args, int index) {
if (index >= args.length) {
if (pred == null || pred.test((T)bean)) {
return (T)bean;
}
} else {
//List<BaseAPS> relaBeans =
}
return null;
}
public static <T extends BaseBean> List<T> list(BaseBean bean, Enum<?> holder) {
List<T> beans = (List<T>)get(bean).get(holder);
if (beans == null) {
return new ArrayList<>();
}
return beans;
}
public static <T extends BaseBean> List<T> list(BaseBean bean, Enum<?> holder, Enum<?>... args) {
return list(bean, null, holder, args);
}
public static <T extends BaseBean> List<T> list(BaseBean bean, Predicate<T> pred, Enum<?> holder, Enum<?>... args) {
List<T> result = new ArrayList<>();
List<BaseBean> nextBeans = list(bean, holder);
for (BaseBean nextBean : nextBeans) {
listImpl(result, nextBean, pred, args, 0);
}
return result;
}
private static <T extends BaseBean> void listImpl(List<T> result, BaseBean bean, Predicate<T> pred, Enum<?>[] holders, int index) {
if (index >= holders.length) {
if (pred == null || pred.test((T)bean)) {
result.add((T)bean);
}
} else {
List<BaseBean> nextBeans = list(bean, holders[index]);
for (BaseBean nextBean : nextBeans) {
listImpl(result, nextBean, pred, holders, index + 1);
}
}
}
/**
*
*
* @param bean
* @param holder
* @param relaBean
*/
public static void set(BaseBean bean, Enum<?> holder, BaseBean relaBean) {
if (bean == null) {
return;
}
if (relaBean == null) {
remove(bean, holder);
} else {
BeanInfo beanInfo = BeanInfo.getBeanInfo(bean.getClass());
final Enum<?> reverseHolder = beanInfo.getReverseHolder(holder);
switch (beanInfo.getRelationType(holder)) {
case MULTI_TO_MULTI:
break;
case MULTI_TO_ONE:
remove(bean, holder);
break;
case INVALID:
break;
case ONE_TO_MULTI:
remove(relaBean, reverseHolder);
break;
case ONE_TO_ONE:
remove(bean, holder);
remove(relaBean, reverseHolder);
break;
default:
break;
}
setImpl(bean, holder, relaBean, reverseHolder);
}
}
/**
*
*
* @param bean
* @param holder
* @param relaBean
* @param reverseHolder
*/
private static void setImpl(BaseBean bean, Enum<?> holder, BaseBean relaBean, Enum<?> reverseHolder) {
get(bean).get(holder).add(relaBean);
if (reverseHolder != null) {
get(relaBean).get(reverseHolder).add(bean);
}
}
/**
*
*
* @param bean
* @param holder
*/
private static void remove(BaseBean bean, Enum<?> holder) {
if (holder == null) {
return;
}
BeanInfo beanInfo = BeanInfo.getBeanInfo(bean.getClass());
final Enum<?> reverseHolder = beanInfo.getReverseHolder(holder);
if (reverseHolder != null) {
for (BaseBean relaBean : get(bean).get(holder)) {
if (relaBean == null) {
continue;
}
get(relaBean).get(reverseHolder).remove(bean);
}
}
get(bean).get(holder).clear();
}
/**
*
*
* @param bean
* @param holder
* @param relaBean
*/
private static void remove(BaseBean bean, Enum<?> holder, BaseBean relaBean) {
if (bean == null) {
return;
}
BeanInfo beanInfo = BeanInfo.getBeanInfo(bean.getClass());
final Enum<?> reverseHolder = beanInfo.getReverseHolder(holder);
if (reverseHolder != null) {
get(relaBean).get(reverseHolder).remove(bean);
}
get(bean).get(holder).remove(relaBean);
}
/**
*
*
* @param bean
*/
public static void delete(BaseBean bean) {
if (bean == null) {
return;
}
BeanInfo beanInfo = BeanInfo.getBeanInfo(bean.getClass());
List<Enum<?>> ownerSigns = beanInfo.getOwnerHolders();
for (Enum<?> holder : ownerSigns) {
List<BaseBean> relaBeans = new ArrayList<>(list(bean, holder));
for (BaseBean relaBean : relaBeans) {
//MemoryManager.delete(relaBean);
}
}
List<Enum<?>> normalSigns = beanInfo.getNormalSigns();
for (Enum<?> holder : normalSigns) {
Enum<?> reverseHolder = beanInfo.getReverseHolder(holder);
List<BaseBean> relaBeans = new ArrayList<>(list(bean, holder));
for (BaseBean relaBean : relaBeans) {
if (reverseHolder != null) {
remove(relaBean, reverseHolder, bean);
}
}
}
}
}

@ -0,0 +1,320 @@
package cn.estsh.i3plus.pojo.aps.common;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.io.InputStream;
import java.net.JarURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class BeanRelationUtil {
static class XMLReader extends DefaultHandler {
private BeanInfo firstInfo = null;
private Enum<?> firstHolder = null;
private BeanInfo secondInfo = null;
private Enum<?> secondHolder = null;
private RELATION_TYPE type = RELATION_TYPE.INVALID;
private boolean owner = false;
public void startElement(String uri, String localName, String nodeName, Attributes attributes) throws SAXException {
if (nodeName.equalsIgnoreCase("Class")) {
final String name = attributes.getValue("name");
if (name == null) {
throw new SAXException("Class节点的属性name未配置");
}
this.firstInfo = BeanInfo.getBeanInfo(name);
if (this.firstInfo == null) {
throw new SAXException("未找到" + name + "的类定义");
}
} else if (nodeName.equalsIgnoreCase("Relation")) {
if (this.firstInfo == null) {
throw new SAXException("未配置Class节点");
}
String firstSignName = attributes.getValue("field");
if (firstSignName == null) {
throw new SAXException("Relation节点缺少field属性");
}
this.firstHolder = this.firstInfo.getHolder(firstSignName);
if (this.firstHolder == null) {
throw new SAXException("未定义枚举标识" + firstSignName);
}
String secondFactoryName = attributes.getValue("name");
if (secondFactoryName == null) {
throw new SAXException("Relation节点缺少name属性");
}
this.secondInfo = BeanInfo.getBeanInfo(secondFactoryName);
if (this.secondInfo == null) {
throw new SAXException("未找到" + secondFactoryName + "的类定义");
}
String secondSignName = attributes.getValue("reverse");
if (secondSignName != null) {
this.secondHolder = this.secondInfo.getHolder(secondSignName);
if (this.secondHolder == null) {
throw new SAXException(secondFactoryName + "类未定义枚举标识" + secondSignName);
}
} else {
this.secondHolder = null;
}
String typeName = attributes.getValue("type");
if (typeName == null) {
throw new SAXException("Relation节点缺少type属性");
}
this.type = RELATION_TYPE.valueOf(typeName);
String ownerName = attributes.getValue("owner");
if (ownerName == null) {
this.owner = false;
} else {
this.owner = ownerName.equalsIgnoreCase("true") ? true : false;
}
RelationInfo firstData = this.getSignData(firstInfo, this.firstHolder);
firstData.setBeanInfo(this.secondInfo);
firstData.setType(this.type);
firstData.setOwner(this.owner);
firstData.setReverseHolder(this.secondHolder);
if (this.secondHolder != null) {
RelationInfo secondData = this.getSignData(secondInfo, this.secondHolder);
secondData.setBeanInfo(this.firstInfo);
secondData.setOwner(false);
secondData.setReverseHolder(this.firstHolder);
switch (this.type) {
case MULTI_TO_MULTI:
secondData.setType(RELATION_TYPE.MULTI_TO_MULTI);
break;
case MULTI_TO_ONE:
secondData.setType(RELATION_TYPE.ONE_TO_MULTI);
break;
case INVALID:
secondData.setType(RELATION_TYPE.INVALID);
break;
case ONE_TO_MULTI:
secondData.setType(RELATION_TYPE.MULTI_TO_ONE);
break;
case ONE_TO_ONE:
secondData.setType(RELATION_TYPE.ONE_TO_ONE);
break;
default:
secondData.setType(RELATION_TYPE.INVALID);
break;
}
}
}
}
RelationInfo getSignData(BeanInfo beanInfo, Enum<?> holder) {
RelationInfo data = beanInfo.getRelationInfo(holder);
if (data == null) {
data = new RelationInfo();
data.setHolder(holder);
beanInfo.addRelationInfo(holder, data);
}
return data;
}
}
public static void initData(String holderPackage) {
List<Class<?>> holderClses = loadClass(holderPackage);
for (Class<?> enumCls : holderClses) {
if (!Enum.class.isAssignableFrom(enumCls)) {
continue;
}
String name = enumCls.getSimpleName();
BeanInfo beanInfo = BeanInfo.getBeanInfo(name.substring(1));
if (beanInfo == null) {
continue;
}
beanInfo.initHolder((Class<Enum<? extends Enum<?>>>) enumCls);
}
}
public static void loadConfig(String packName) {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
final String strFile = packName.replaceAll("\\.", "/");
try {
Enumeration<URL> urls = loader.getResources(strFile);
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
if (url != null) {
String protocol = url.getProtocol();
String filePath = url.getPath();
if (protocol.equals("file")) {
loadFileImpl(filePath);
} else if (protocol.equals("jar")) {
loadJarImpl(packName, url);
}
}
}
} catch (IOException e) {
return;
}
}
private static void loadFileImpl(String dirPath) {
File dir = new File(dirPath);
if (!dir.exists() || !dir.isDirectory()) {
return;
}
File[] dirFiles = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getName().endsWith(".xml");
}
});
for (File file : dirFiles) {
if (file.isDirectory()) {
loadFileImpl(dirPath + "/" + file.getName());
} else {
try {
loadXMLConfigure(file.getCanonicalPath());
} catch (IOException e) {
}
}
}
}
private static void loadJarImpl(String packName, URL url) throws IOException {
JarURLConnection jarURLConnection = (JarURLConnection) url.openConnection();
JarFile jarFile = jarURLConnection.getJarFile();
Enumeration<JarEntry> jarEntries = jarFile.entries();
while (jarEntries.hasMoreElements()) {
JarEntry jarEntry = jarEntries.nextElement();
String jarEntryName = jarEntry.getName();
if (jarEntryName.endsWith(".xml")) {
String packNameNew = packName.replace(".", "/");
if (jarEntryName.contains(packNameNew)) {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(jarEntryName);
loadXMLConfigure(is);
}
}
}
}
/**
* xml
* @param xmlPath
*/
private static void loadXMLConfigure(String xmlPath) {
SAXParserFactory sf = SAXParserFactory.newInstance();
try {
SAXParser sp = sf.newSAXParser();
sp.parse(new InputSource(xmlPath), new XMLReader());
} catch (ParserConfigurationException | SAXException | IOException e) {
}
}
/**
* jarxml
* @param is
*/
private static void loadXMLConfigure(InputStream is) {
SAXParserFactory sf = SAXParserFactory.newInstance();
try {
SAXParser sp = sf.newSAXParser();
sp.parse(new InputSource(is), new XMLReader());
} catch (ParserConfigurationException | SAXException | IOException e) {
}
}
/**
*
* @param packName
*/
private static List<Class<?>> loadClass(String packName) {
List<Class<?>> clses = new ArrayList<>();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
String strFile = packName.replaceAll("\\.", "/");
try {
Enumeration<URL> urls = loader.getResources(strFile);
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
if (url != null) {
String protocol = url.getProtocol();
String filePath = url.getPath();
if (protocol.equals("file")) {
loadClassImpl(packName, filePath, clses);
} else if (protocol.equals("jar")) {
loadJarImpl(packName, url, clses);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return clses;
}
private static void loadClassImpl(String packName, String dirPath, List<Class<?>> clses) {
File dir = new File(dirPath);
if (!dir.exists() || !dir.isDirectory()) {
return;
}
File[] dirFiles = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getName().endsWith(".class");
}
});
for (File file : dirFiles) {
if (file.isDirectory()) {
loadClassImpl(packName + "." + file.getName(), dirPath + "/" + file.getName(), clses);
} else {
String clsName = file.getName();
clsName = clsName.substring(0, clsName.length() - 6);
try {
clses.add(Class.forName(packName + "." + clsName));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
private static void loadJarImpl(String packName, URL url, List<Class<?>> clses) throws IOException {
JarURLConnection jarURLConnection = (JarURLConnection) url.openConnection();
JarFile jarFile = jarURLConnection.getJarFile();
Enumeration<JarEntry> jarEntries = jarFile.entries();
while (jarEntries.hasMoreElements()) {
JarEntry jarEntry = jarEntries.nextElement();
final String jarEntryName = jarEntry.getName();
if (jarEntryName.endsWith(".class")) {
String clsName = jarEntryName.replace("/", ".");
if (clsName.startsWith(packName)) {
clsName = clsName.substring(0, clsName.length() - 6);
try {
clses.add(Class.forName(clsName));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.common;
public enum RELATION_TYPE {
INVALID, // 无效关联
ONE_TO_ONE, // 1对1关系
ONE_TO_MULTI, // 1对多关系
MULTI_TO_ONE, // 多对1关系
MULTI_TO_MULTI,// 多对多关系
}

@ -0,0 +1,12 @@
package cn.estsh.i3plus.pojo.aps.common;
import lombok.Data;
@Data
public class RelationInfo {
private BeanInfo beanInfo;
private Enum<?> holder;
private Enum<?> reverseHolder;
private RELATION_TYPE type;
private boolean owner;
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum CALENDAR_TYPE {
ENABLE, // 启用
DISABLE // 停用
}

@ -0,0 +1,15 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum CONSTRAINT_TYPE {
ES, // 前工作开始,后工作结束
SS, // 前工作开始,后工作开始
EE, // 前工作结束,后工作结束
SSEE // 前后工作同时开始或同时结束
}

@ -0,0 +1,8 @@
package cn.estsh.i3plus.pojo.aps.enums;
public enum DATA_LINK_TYPE {
CSV,
MYSQL,
ORACLE,
SQLSERVER
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum DIRECTION {
POSITIVE, // 正向
REVERSE // 逆向
}

@ -1,5 +1,12 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum FIELD_TYPE {
NONE,
BOOLEAN, // 布尔
@ -10,10 +17,10 @@ public enum FIELD_TYPE {
DOUBLE, // 浮点型
DATE, // 日期类型(2019-09-16)
TIME, // 时间类型(17:35:30)
DATETIME, // 日期时间类型(2019-09-16 17:35:30)
DATE_TIME, // 日期时间类型(2019-09-16 17:35:30)
DURATION, // 时间段(1H)
ENUM, // 枚举
MULTIENUM, // 多选枚举
MULTI_ENUM, // 多选枚举
STRING, // 字符串
OBJECT, // 关联对象下来选择关联对象的Code值
LIST // 对象集合,不可编辑。

@ -0,0 +1,6 @@
package cn.estsh.i3plus.pojo.aps.enums;
public enum IMPORT_DETAIL_TYPE {
REPLACE,
DIFF
}

@ -1,7 +1,14 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum MATERIAL_TYPE {
PRODUCT,
HALF_PRODUCT,
RAW_MATERIAL
PRODUCT, // 成品
HALF_PRODUCT, // 半成品
RAW_MATERIAL // 原材料
}

@ -0,0 +1,16 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum ORDER_DEL_LIMIT {
NONE,
NO_PO,
NO_PLAN,
NO_POR,
NO_PPRS
}

@ -1,7 +1,14 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum PREPARE_TYPE {
NO,
SELF_MAKE,
PURCHASE
SELF_MAKE, // 自制
PURCHASE // 采购
}

@ -1,7 +1,14 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum REPLENISHMENT_TYPE {
NO,
BATCH,
ONEBYONE
BATCH, // 批量补充
ONEBYONE // 一对一补充
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum RESOURCE_CLASS {
MAIN, // 主资源
ASS // 副资源
}

@ -0,0 +1,14 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum RESOURCE_TYPE {
LIMITLESS, // 无限能力
SINGLE, // 单能力
BATCH // 炉资源
}

@ -0,0 +1,14 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum RES_COMB_LOCK_TYPE {
KEEP_ORIGIN, // 各自锁定
MAIN_LOCK, // 主资源锁定
MAX_ALL_RESOURCE, // 最大锁定时间
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum RES_COMB_TIME_TYPE {
MAIN_RESOURCE, // 主资源
MAX_ASS_RESOURCE, // 副资源最大值
MIN_ASS_RESOURCE, // 副资源最小值
AVG_ASS_RESOURCE, // 副资源平均值
MAX_ALL_RESOURCE, // 主副资源最大值
MIN_ALL_RESOURCE, // 主副资源最小值
AVG_ALL_RESOURCE // 主副资源平均值
}

@ -0,0 +1,14 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum TAIL_DEAL {
NODEAL, // 不处理
CEILING, // 向下
PUSHFRONT // 向上
}

@ -0,0 +1,15 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum TIME_ROUND_TYPE {
NONE, // 不圆整
UP, // 向上
DOWN, // 向下
ROUNDING // 四舍五入
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :使
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum USE_TYPE {
MAIN, // 主资源
FIRST_ASS, // 第一套副资源
SECOND_ASS, // 第二套副资源
THIRD_ASS, // 第三套副资源
FOURTH_ASS, // 第四套副资源
FIFTH_ASS, // 第五套副资源
SIXTH_ASS // 第六套副资源
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum WORK_RELATION_TYPE {
INNER, // 订单内关联
OUTER // 订单间关联
}

@ -0,0 +1,17 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum WORK_STATUS {
NOPLAN, // 未计划
PLANDONE, // 计划完毕
INDICATIONDONE, // 指示完毕
CONFIRM, // 确认
STARTPRODUCT, // 开始生产
FINISH // 完成
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.pojo.aps.enums;
/**
* @Description :
* @Reference :
* @Author : jason.niu
* @CreateDate : 2019-09-17
* @Modify:
**/
public enum WORK_TYPE {
FICTITIOUS, // 虚拟工作
NORMAL // 普通工作
}

@ -0,0 +1,10 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EBaseOrder {
Works,
Material,
PrevRelations,
PostRelations,
UpperOrders,
LowerOrders
}

@ -0,0 +1,5 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EDayShift {
ResCalendar
}

@ -0,0 +1,5 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EExportDetail {
Project
}

@ -0,0 +1,6 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EExportProject {
Link,
Details
}

@ -0,0 +1,6 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EImportProject {
Link,
Details
}

@ -0,0 +1,11 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EMaterial {
ProductRouting,
OperInputs,
OperOutputs,
WorkInputs,
WorkOutputs,
WorkRelations,
Orders
}

@ -0,0 +1,7 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EOperInput {
Operation,
Material,
WorkInputs
}

@ -0,0 +1,7 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EOperOutput {
Operation,
Material,
WorkOutputs
}

@ -0,0 +1,7 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EOperResource {
Operation,
Resource,
WorkResources
}

@ -0,0 +1,10 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EOperation {
ProductRouting,
OperInputs,
OperOutputs,
OperResources,
StandOperation,
Works
}

@ -0,0 +1,5 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EPlanFeedback {
Work
}

@ -0,0 +1,5 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EProductOrder {
ProductRouting
}

@ -0,0 +1,7 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EProductRouting {
Material,
Operations,
ProductOrders
}

@ -0,0 +1,6 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EResCalendar {
DayShifts,
Resources,
}

@ -0,0 +1,6 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EResource {
OperResources,
WorkResources
}

@ -0,0 +1,5 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EStandOperation {
Operations
}

@ -0,0 +1,12 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EWork {
Order,
WorkResources,
WorkInputs,
WorkOutputs,
WorkRelationInputs,
WorkRelationOutputs,
Operation,
PlanFeedback
}

@ -0,0 +1,8 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EWorkInput {
Work,
WorkRelations,
Material,
OperInput
}

@ -0,0 +1,8 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EWorkOutput {
Work,
WorkRelations,
Material,
OperOutput
}

@ -0,0 +1,11 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EWorkRelation {
WorkInput,
WorkOutput,
PrevWork,
PostWork,
PrevOrder,
PostOrder,
Material
}

@ -0,0 +1,7 @@
package cn.estsh.i3plus.pojo.aps.holders;
public enum EWorkResource {
Work,
Resource,
OperResource
}

@ -0,0 +1,10 @@
package cn.estsh.i3plus.pojo.aps.model;
import cn.estsh.i3plus.pojo.base.common.Pager;
import lombok.Data;
@Data
public class APSPager extends Pager {
private String filter;
private String sort;
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.CancelPlanRule;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CancelPlanRuleRepository extends CrudRepository<CancelPlanRule, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.DataLink;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DataLinkRepository extends CrudRepository<DataLink, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.DayShift;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DayShiftRepository extends CrudRepository<DayShift, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.ExportDetail;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ExportDetailRepository extends CrudRepository<ExportDetail, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.ExportProject;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ExportProjectRepository extends CrudRepository<ExportProject, Long> {
}

@ -2,8 +2,9 @@ package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.FieldInfo;
import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface FieldInfoRepository extends BaseRepository<FieldInfo, Long> {
public interface FieldInfoRepository extends CrudRepository<FieldInfo, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.FieldSetRule;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface FieldSetRuleRepository extends CrudRepository<FieldSetRule, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.HeuristicRule;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface HeuristicRuleRepository extends CrudRepository<HeuristicRule, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.ImportDetail;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ImportDetailRepository extends CrudRepository<ImportDetail, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.ImportProject;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ImportProjectRepository extends CrudRepository<ImportProject, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.Inventory;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface InventoryRepository extends CrudRepository<Inventory, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.MatCalcRule;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MatCalcRuleRepository extends CrudRepository<MatCalcRule, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.Material;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MaterialRepository extends CrudRepository<Material, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.OperInput;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface OperInputRepository extends CrudRepository<OperInput, Long> {
}

@ -0,0 +1,9 @@
package cn.estsh.i3plus.pojo.aps.repository;
import cn.estsh.i3plus.pojo.aps.bean.OperOutput;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface OperOutputRepository extends CrudRepository<OperOutput, Long> {
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save