diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ParentWork.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ParentWork.java index 5ce6ed6..b0eee50 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ParentWork.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ParentWork.java @@ -43,6 +43,11 @@ public class ParentWork extends BaseAPS { @FieldAnnotation(property = false) private Integer serialNumber = 0; + @Column(name="CONFIRM_SERIAL") + @ApiParam(value ="下发流水号") + @FieldAnnotation(property = false) + private Integer confirmSerial = 0; + @Column(name="POST_SERIAL_NUMBER") @ApiParam(value ="子工作流水号") @FieldAnnotation(property = false) 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 b2b1d06..74c48cd 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 @@ -177,13 +177,18 @@ public class Work extends BaseAPS { private String supplyWorkCode; @ApiParam(value ="工作排序顺序") - private Integer workSeqNumber; + private Integer workSeqNumber; @Column(name="MOULD_ID") @ApiParam(value ="模具能力id") @FieldAnnotation(property = false) private Long mouldId = 0L; + @Column(name="FEEDBACK_SPLIT") + @ApiParam(value ="是否报工拆分") + @FieldAnnotation(modify = false) + private Boolean feedbackSplit; + // 排程时,找插入位置的评估值 private transient double evaluateValue = 0; diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/GanttPlanModel.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/GanttPlanModel.java index 0223427..b09259b 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/GanttPlanModel.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/GanttPlanModel.java @@ -27,6 +27,7 @@ public class GanttPlanModel { private Date endDate; private String cls; private String eventColor; + private String style; private String name; private Long workId; private List resIds; diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java index c32f579..d7dbfd9 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java @@ -32,6 +32,7 @@ public class CommonEnumUtil { * Mes 服务 */ MES(4, 8300, 11, 103000000L, "i3mes", "生产管理软件"), + MES_HISTORY(41,8310,11,180000000L,"i3mes-history","生产管理软件历史数据"), MES_PCN(6, 8350, 12, 107000000L, "i3mes-pcn", "生产管理软件-节点中心"), /** @@ -68,6 +69,7 @@ public class CommonEnumUtil { APS_3(38, 18400, 26, 190000000L, "i3aps-3", "高级计划与排产-3"), APS_4(48, 8400, 27, 200000000L, "i3aps-4", "高级计划与排产-4"), SURFACE(98, 0, 0, 0, "i3surface", "对外服务"), + EAM(108, 8500, 28, 210000000L, "eam", "设备信息管理服务"), /** * 基础服务 diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java index 4d157c0..c8d144b 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java @@ -2070,7 +2070,7 @@ public class MesEnumUtil { MES_REPAIR(320, "repairExcelService", "质量数据处理措施,支持编辑"), MES_EQU_TASK_PLAN(330, "equTaskPlanExcelService", "设备作业周期计划,支持编辑"), MES_PART_OJBECT(340, "partObjectExcelService", "物料对象"), - MES_PART_EXT_OJBECT(341, "PartObjectExtExcelService", "物料对象Ext"), + MES_PART_EXT_OJBECT(341, "partObjectExtExcelService", "物料对象Ext"), MES_ROUTE_PROCESS_WORK_CELL(350, "routeProcessWorkCellExcelService", "工序工作单元"), MES_DATASOURCE(360, "datasourceExcelService", "DB地址清单"), MES_EQU_TASK_NOTIFY_CFG(370, "equTaskNotifyCfgExcelService", "设备通知配置"), diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java index d139dda..25c2560 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java @@ -1879,6 +1879,11 @@ public class WmsEnumUtil { } } return tmp; + + } + + public static String valueOfDescription(int val) { + return valueOf(val); } } @@ -3919,7 +3924,8 @@ public class WmsEnumUtil { MOVESTOCK("MOVESTOCK", "移库"), ASSIST("ASSIST", "辅助"), NC("NC", "NC"), - CS("CS", "盘点"); + CS("CS", "盘点"), + THIRDPARTY("THIRDPARTY", "顺义三方库"); private String value; private String description; diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/MethodListModel.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/MethodListModel.java index bcd60f7..1445a82 100644 --- a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/MethodListModel.java +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/MethodListModel.java @@ -19,6 +19,10 @@ public class MethodListModel { private String appName; @ApiModelProperty(name = "方法的版本号") private String version; + @ApiModelProperty(name = "方法启用") + private Integer isValid; + @ApiModelProperty(name = "方法名") + private String methodName; } diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorGroupRegistryInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorGroupRegistryInfo.java index 82dbf4c..edb524e 100644 --- a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorGroupRegistryInfo.java +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorGroupRegistryInfo.java @@ -49,4 +49,8 @@ public class ExecutorGroupRegistryInfo extends BaseBean implements Serializable @Column(name = "UPDATE_TIME") @ApiModelProperty("更新时间") private Date updateTime; + + @Column(name = "SOFT_TYPE") + @ApiModelProperty("应用该类型") + private Integer softType; } diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryInfo.java index 680ea4a..cc55180 100644 --- a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryInfo.java +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryInfo.java @@ -44,4 +44,8 @@ public class ExecutorRegistryInfo extends BaseBean implements Serializable { @Column(name = "WEIGHT") @ApiModelProperty("执行器权重") private Integer weight; + + @Column(name = "HEART_BEAT") + @ApiModelProperty("心跳,存活1,2死掉") + private Integer heartBeat; } diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/MethodLog.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/MethodLog.java index a5f3102..67d6f4d 100644 --- a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/MethodLog.java +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/MethodLog.java @@ -47,4 +47,8 @@ public class MethodLog extends BaseBean implements Serializable { @ApiModelProperty("方法是否执行成功") @Column(name = "SUCCESS") private Integer success; + + @ApiModelProperty("方法所属应用冗余") + @Column(name = "APP_NAME_RDD") + private String appNameRdd; } diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/AppGroupVo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/AppGroupVo.java new file mode 100644 index 0000000..ef33760 --- /dev/null +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/AppGroupVo.java @@ -0,0 +1,33 @@ +package cn.estsh.i3plus.pojo.bsp.server.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description : + * @Reference : + * @Author : Castle + * @CreateDate : 2022/1/15 16:06 + * @Modify: + **/ +@ApiModel(value = "应用管理") +@Data +public class AppGroupVo { + + @ApiModelProperty("所属应用类型") + private Integer softType; + + @ApiModelProperty("服务地址") + private String appAddress; + + @ApiModelProperty("应用状态") + private Integer isValid; + + @ApiModelProperty("注册开始时间") + private String startTime; + + @ApiModelProperty("注册结束时间") + private String endTime; + +} diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/DashboardSuccessRate.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/DashboardSuccessRate.java new file mode 100644 index 0000000..aef75f1 --- /dev/null +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/DashboardSuccessRate.java @@ -0,0 +1,26 @@ +package cn.estsh.i3plus.pojo.bsp.server.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description : + * @Reference : + * @Author : Castle + * @CreateDate : 2022/1/14 9:48 + * @Modify: + **/ +@Data +@ApiModel(value = "Dashboard调用成功率") +public class DashboardSuccessRate { + + @ApiModelProperty(value = "周环比") + private String weeksFrom; + + @ApiModelProperty(value = "日环比") + private String daysFrom; + + @ApiModelProperty(value = "日调用成功率") + private String successRate; +} diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/GroupValidVo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/GroupValidVo.java new file mode 100644 index 0000000..8319b01 --- /dev/null +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/GroupValidVo.java @@ -0,0 +1,25 @@ +package cn.estsh.i3plus.pojo.bsp.server.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : Castle + * @CreateDate : 2022/1/15 17:21 + * @Modify: + **/ +@Data +@ApiModel("批量修改执行器组开启、禁用") +public class GroupValidVo { + + @ApiModelProperty("执行器组的id列表") + private List idList; + + @ApiModelProperty("执行器组的状态") + private Integer isValid; +} diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/InstanceVo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/InstanceVo.java new file mode 100644 index 0000000..79da76f --- /dev/null +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/InstanceVo.java @@ -0,0 +1,29 @@ +package cn.estsh.i3plus.pojo.bsp.server.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description : + * @Reference : + * @Author : Castle + * @CreateDate : 2022/1/15 17:30 + * @Modify: + **/ +@Data +@ApiModel("实例管理") +public class InstanceVo { + + @ApiModelProperty("所属应用类型") + private Integer softType; + + @ApiModelProperty("注册时间开始") + private String startTime; + + @ApiModelProperty("注册时间结束") + private String endTime; + + @ApiModelProperty("心跳状态") + private Integer heartBeat; +} diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/MethodGroupVo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/MethodGroupVo.java new file mode 100644 index 0000000..d5ed9b5 --- /dev/null +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/MethodGroupVo.java @@ -0,0 +1,21 @@ +package cn.estsh.i3plus.pojo.bsp.server.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +/** + * @Description : + * @Reference : + * @Author : Castle + * @CreateDate : 2022/1/14 14:45 + * @Modify: + **/ +@ApiModel(value = "查询方法组") +@Data +public class MethodGroupVo { + @ApiParam(value = "方法组名称") + private String groupName; + @ApiParam(value = "是否启用") + private Integer valid; +} diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/MethodLogVo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/MethodLogVo.java new file mode 100644 index 0000000..0cee45b --- /dev/null +++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/vo/MethodLogVo.java @@ -0,0 +1,32 @@ +package cn.estsh.i3plus.pojo.bsp.server.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description : + * @Reference : + * @Author : Castle + * @CreateDate : 2022/1/15 13:36 + * @Modify: + **/ +@Data +@ApiModel(value = "历史日志查询") +public class MethodLogVo { + + @ApiModelProperty(value = "方法名称") + private String methodName; + + @ApiModelProperty(value = "所属应用") + private String appName; + +// @ApiModelProperty(value = "方法状态") +// private Integer isValid; + + @ApiModelProperty(value = "调用方法开始时间") + private String startTime; + + @ApiModelProperty(value = "调用方法结束时间") + private String endTime; +} diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/BsSuitCaseModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/BsSuitCaseModel.java index df0bd83..d92113c 100644 --- a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/BsSuitCaseModel.java +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/BsSuitCaseModel.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiParam; import lombok.Data; import java.io.Serializable; +import java.util.List; import java.util.Objects; /** @@ -51,6 +52,17 @@ public class BsSuitCaseModel implements Serializable { @ApiParam(value = "分页数据") private Pager pager; + + // 请求ID + @ApiParam(value = "请求ID") + private String requestId; + + /** + * 业务id列表 + */ + @ApiParam(value = "业务id列表") + private List busiIdList; + public BsSuitCaseModel() { } diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/SuitClientModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/SuitClientModel.java index 7a1eea4..f437bbe 100644 --- a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/SuitClientModel.java +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/SuitClientModel.java @@ -12,6 +12,7 @@ import io.swagger.annotations.ApiParam; import lombok.Data; import java.io.Serializable; +import java.util.List; /** * @Description : @@ -116,6 +117,19 @@ public class SuitClientModel implements Serializable { @XStreamCDATA private Object suitResultMessage; + // 请求ID + private String requestId; + + /** + * 业务id列表 + */ + private List busiIdList; + + /** + * 适配是否重复 + */ + private Boolean duplicate; + private boolean isNeedRetry = false; public SuitClientModel() { @@ -135,6 +149,10 @@ public class SuitClientModel implements Serializable { this.suitSslKeyResult = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); // 设置默认 this.suitResult = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); + + this.requestId = suitCaseModel.getRequestId(); + this.busiIdList = suitCaseModel.getBusiIdList(); + this.duplicate = Boolean.FALSE; } public SuitClientModel(Integer requestSource, Integer suitMethodId, BsSuitCaseModel suitCaseModel) { @@ -152,6 +170,11 @@ public class SuitClientModel implements Serializable { this.suitSslKeyResult = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); // 设置默认 this.suitResult = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); + + + this.requestId = suitCaseModel.getRequestId(); + this.busiIdList = suitCaseModel.getBusiIdList(); + this.duplicate = Boolean.FALSE; } public SuitClientModel(SuitModel suitModel, BsSuitCaseModel suitCaseModel) { @@ -170,6 +193,10 @@ public class SuitClientModel implements Serializable { this.suitSslKeyResult = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); // 设置默认 this.suitResult = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); + + this.requestId = suitModel.getRequestId(); + this.busiIdList = suitModel.getBusiIdList(); + this.duplicate = Boolean.FALSE; } -} \ No newline at end of file +} diff --git a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/DataSeparatorMessage.java b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/DataSeparatorMessage.java index 29ffded..083359b 100644 --- a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/DataSeparatorMessage.java +++ b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/DataSeparatorMessage.java @@ -22,11 +22,11 @@ public class DataSeparatorMessage implements Serializable { * 需要迁移数据的 id */ private Long id; + /** - * 迁移数据的关联类 + * 迁移数据的原表 */ - private String refClass; - + private String srcTableName; /** * 目标迁移的表名 */ @@ -36,4 +36,9 @@ public class DataSeparatorMessage implements Serializable { * 目的地数据源id */ private Long destDataSourceId; + /** + * 来源数据源 + */ + private Long srcDataSourceId; + } diff --git a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/DataSeparatorRule.java b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/DataSeparatorRule.java index 95b0b2a..4e5caa2 100644 --- a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/DataSeparatorRule.java +++ b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/DataSeparatorRule.java @@ -35,10 +35,9 @@ public class DataSeparatorRule extends BaseBean { @ApiParam(value = "具体的数字,作为迁移标准") private String rule; - @Column(name = "REF_BEAN_NAME") - @ApiParam(value = "迁移的类的名称") - private String refBeanName; - + @Column(name = "TABLE_NAME_SRC") + @ApiParam(value = "迁移源表名") + private String tableNameSrc; @Column(name = "TABLE_NAME_DEST") @ApiParam(value = "迁移目的地的表名") @@ -48,5 +47,8 @@ public class DataSeparatorRule extends BaseBean { @ApiParam(value = "目的数据源id") private Long destDataSourceId; + @Column(name = "SRC_DATA_SOURCE_ID") + @ApiParam(value = "来源数据源id") + private Long srcDataSourceId; } diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/datasource/CusDatasource.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/datasource/CusDatasource.java index 6e0d709..c7ab33d 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/datasource/CusDatasource.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/datasource/CusDatasource.java @@ -19,7 +19,6 @@ import javax.persistence.Table; * @Modify: **/ @Data -@NoArgsConstructor @DynamicInsert @DynamicUpdate @Entity @@ -86,4 +85,7 @@ public class CusDatasource extends BaseBean { this.id = id; this.sourceName = sourceName; } + + public CusDatasource() { + } } diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/IWmsHealthIndexCron.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/IWmsHealthIndexCron.java new file mode 100644 index 0000000..daed272 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/IWmsHealthIndexCron.java @@ -0,0 +1,29 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import java.util.Date; + +/** + * 计算周期 + */ +public interface IWmsHealthIndexCron { + /** + * 根据CRON表达式,判断当前时间是否可以执行 + * @param expectDifference 允许的时间差(秒),即前后相差时间 + * 如 60 即推迟1分钟 + * 如 -60 即可以提前1分钟 + */ + boolean verify(int expectDifference); + + + /** + * 获取上一个计算周期 + * @return + */ + Date getPreviousDate(); + + + /** + * 获取下一个计算周期 + */ + Date getNextDate(); +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexCalcWay.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexCalcWay.java new file mode 100644 index 0000000..ab2507e --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexCalcWay.java @@ -0,0 +1,26 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +/** + * 测算方式 + * @author link + */ +public enum WmsHealthIndexCalcWay { + /** + * 数据库脚本 + */ + DATABSE("10"), + /** + * 本地函数 + */ + LOCALMETHOD("20"), + /** + * 脚本 + */ + SCRIPT("30"); + + private String value; + + private WmsHealthIndexCalcWay(String value){ + this.value = value; + } +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexEntity.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexEntity.java new file mode 100644 index 0000000..30c691c --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexEntity.java @@ -0,0 +1,86 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import cn.estsh.i3plus.pojo.wms.bean.WmsHealthVariableResult; +import lombok.Getter; +import lombok.Setter; +import org.springframework.expression.ExpressionParser; +import org.springframework.expression.spel.standard.SpelExpressionParser; +import org.springframework.expression.spel.support.StandardEvaluationContext; + +import java.util.Set; + +/** + * 指标代码业务对象 + */ +@Getter +@Setter +public class WmsHealthIndexEntity { + /** + * 指标唯一标识(指标代码+工厂代码) + */ + private final WmsHealthIndexId id; + /** + * 指标名称 + */ + private String name; + /** + * 对应模块 + */ + private String module; + /** + * 测算对象(测算公式封装) + */ + private final WmsHealthIndexFormula formula; + /** + * 指标值(测算结果) + */ + private WmsHealthIndexValue value; + /** + * 是否刷新数据 + */ + private Boolean refresh; + + public WmsHealthIndexEntity(final WmsHealthIndexId id, + final WmsHealthIndexFormula formula){ + this.id = id; + this.formula = formula; + }; + + public static WmsHealthIndexEntity of(final String organizeCode, + final String indicatorCode, + final String calcFormula){ + return new WmsHealthIndexEntity(WmsHealthIndexId.of(organizeCode,indicatorCode), + WmsHealthIndexFormula.of(organizeCode,indicatorCode)); + } + + + public boolean isRefresh(){ + return Boolean.TRUE.equals(refresh); + } + + + public void refresh(){ + WmsHealthIndexValue value = generateWmsHealthIndexValue(); + if(null != value) { + this.setValue(value); + this.setRefresh(true); + } + } + + + private WmsHealthIndexValue generateWmsHealthIndexValue(){ + if(!formula.isEmpty()){ + String result = null; + int size = formula.getResults().size(); + if(size==1){ + WmsHealthIndexVariableValue varValue = formula.getSingleValue(); + result = String.valueOf(varValue.getDetail()); + }else{ + result = String.valueOf(formula.getSpelResult()); + } + return new WmsHealthIndexValue(result); + } + return null; + } + +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexFormula.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexFormula.java new file mode 100644 index 0000000..4c2ecb9 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexFormula.java @@ -0,0 +1,131 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import lombok.Getter; +import org.springframework.expression.ExpressionParser; +import org.springframework.expression.spel.standard.SpelExpressionParser; +import org.springframework.expression.spel.support.StandardEvaluationContext; + +import java.util.*; + +/** + * 健康度测算公式 + */ +@Getter +public class WmsHealthIndexFormula { + /** + * 工厂代码 + */ + private final String organizeCode; + /** + * 健康度指标测算代码 (#VAR202201070002/#VAR456)/(#VAR123/#VAR456)*100% + */ + private final String calcFormula; + /** + * 变量列表 + */ + private Set vars = new HashSet<>(); + /** + * 变量对应的计算结果 + */ + private Map results = + new HashMap<>(); + + + public WmsHealthIndexFormula(final String organizeCode,final String calcFormula){ + this.calcFormula = calcFormula; + this.organizeCode = organizeCode; + checkCode(); + initVars(); + } + + /** + * 验证公式是否正常 + */ + private void checkCode(){ + } + + /** + * 根据配置拆分和初始化变量 + * @return + */ + private void initVars(){ + Set vars = new HashSet<>(); + final String [] varTemp = this.calcFormula.split("#"); + for(String varStrItem : varTemp) { + if (!varStrItem.startsWith("VAR")||varStrItem.length()<15) { + continue; + } + String variableCode = varStrItem.substring(0, 15); + vars.add(new WmsHealthIndexVariable(organizeCode,variableCode)); + } + this.vars = vars; + } + + public void addResult(WmsHealthIndexVariable key, WmsHealthIndexVariableValue result){ + if(null!=result) { + this.results.put(key, result); + } + } + + public boolean isEmpty(){ + return results.isEmpty(); + } + + /** + * 待执行变量结果和变量结果集是否相同 + * @return + */ + public boolean isResultSizeSameWithVarsSize(){ + return results.size() == vars.size(); + } + + /** + * 获取单个值对象 + */ + public WmsHealthIndexVariableValue getSingleValue(){ + if(!isEmpty()) { + WmsHealthIndexVariableValue variableValue = com.google.common.collect.Lists + .newArrayList(results.values()).get(0); + return variableValue; + } + return null; + } + + /** + * 根据健康度指标calcFormula,计算SPEL表达式的值 + * @return + */ + public Integer getSpelResult(){ + if(results.isEmpty()) { + return -1; + } + Integer calcResult = 0; + int resultSize = results.size(); + StandardEvaluationContext ctx = new StandardEvaluationContext(); + ExpressionParser parser = new SpelExpressionParser(); + //单个变量,特殊情况特殊处理 + if(resultSize == 1){ + calcResult = getSingleValue().getValue(); + }else{ + Set varKeys = results.keySet(); + for (WmsHealthIndexVariable varKey : varKeys) { + // 取出该变量名称对应的计算结果 + WmsHealthIndexVariableValue variableValue = results.get(varKey); + Integer value = variableValue.getValue(); + ctx.setVariable(varKey.getId().getVariable(), value); + } + // 存在多个变量,则按照SPEL进行运算最后取值 + try { + calcResult = (Integer) parser.parseExpression(calcFormula) + .getValue(ctx); + } catch (Exception e) { + calcResult = -1; + } + } + return calcResult; + } + + public static WmsHealthIndexFormula of(String organizeCode,String calcFormula){ + return new WmsHealthIndexFormula(organizeCode,calcFormula); + } +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexId.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexId.java new file mode 100644 index 0000000..a47a5b4 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexId.java @@ -0,0 +1,34 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import lombok.Getter; + +/** + * 健康度指标标识 + */ +@Getter +public class WmsHealthIndexId{ + + /** + * 工厂代码 + */ + private final String organizeCode; + /** + * 指标代码 + */ + private final String indicatorCode; + + public WmsHealthIndexId(final String organizeCode,final String indicatorCode){ + if(null==indicatorCode){ + throw new IllegalArgumentException("indicatorCode can't be null"); + } + if(null==organizeCode){ + throw new IllegalArgumentException("organizeCode can't be null"); + } + this.indicatorCode = indicatorCode; + this.organizeCode = indicatorCode; + } + + public static WmsHealthIndexId of(String organizeCode,String indicatorCode){ + return new WmsHealthIndexId(organizeCode,indicatorCode); + } +} \ No newline at end of file diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexQuery.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexQuery.java new file mode 100644 index 0000000..4cbfe39 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexQuery.java @@ -0,0 +1,19 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +/** + * 健康度指标查询 + * @author link + */ +@Builder +@Getter +@Setter +public class WmsHealthIndexQuery{ + private Long beginTime; + private Long endTime; + private Integer pageIndex; + private Integer pageSize; +} \ No newline at end of file diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexValue.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexValue.java new file mode 100644 index 0000000..735de28 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexValue.java @@ -0,0 +1,26 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import lombok.Getter; +import lombok.Setter; + +/** + * 健康度指标计算值 + * @author link + */ +@Getter +public class WmsHealthIndexValue{ + /** + * 测算结果 + */ + private final String result; + @Setter + private Long time; + + public WmsHealthIndexValue(final String result){ + if(null==result){ + throw new IllegalArgumentException("result can't be null"); + } + this.result = result; + this.time = System.currentTimeMillis(); + } +} \ No newline at end of file diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariable.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariable.java new file mode 100644 index 0000000..cf1fe1a --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariable.java @@ -0,0 +1,108 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import lombok.Getter; +import lombok.Setter; + + +/** + * 健康度指标变量 + */ +@Getter +public class WmsHealthIndexVariable { + + /** + * 指标变量代码 + */ + private final WmsHealthIndexVariableId id; + + /** + * 指标变量名称 + */ + @Setter + private String name; + /** + * 计算周期 + */ + @Setter + private IWmsHealthIndexCron cycleRange; + + /** + * 计算频次 + */ + @Setter + private IWmsHealthIndexCron calcFrequency; + + /** + * 计算方式 + */ + @Setter + private WmsHealthIndexCalcWay calcWay; + + /** + * 适应存储区 + */ + @Setter + private String applyArea; + + /** + * 适应物料组 + */ + @Setter + private String applyPartGroup; + + @Setter + private String sqlStatement; + + @Setter + private String className; + + @Setter + private String functionName; + + @Setter + private String scriptNo; + /** + * 计算值 + */ + @Setter + private Object value; + + /** + * 修改CRON,计算周期、频次需要刷新数据 + */ + @Setter + private boolean refresh; + + public WmsHealthIndexVariable(String organizeCode,String variable){ + this(new WmsHealthIndexVariableId(organizeCode,variable)); + } + + public WmsHealthIndexVariable(WmsHealthIndexVariableId id){ + this.id = id; + } + + /** + * 是否需要计算(在CRON表达式内) + * @param expectDifference 期待的时间差,前后多少秒 + * @return + */ + public boolean isNeedCalc(int expectDifference){ + boolean flag = calcFrequency.verify(expectDifference); + flag |= calcFrequency.verify(-expectDifference); + return flag; + } + + public boolean checked(){ + return null!=value; + } + + public void changeCalcFrequency(IWmsHealthIndexCron cron){ + setCalcFrequency(cron); + setRefresh(true); + } + + public void changeCycleRange(IWmsHealthIndexCron cron){ + setCycleRange(cron); + setRefresh(true); + } +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariableId.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariableId.java new file mode 100644 index 0000000..d238caa --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariableId.java @@ -0,0 +1,23 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import lombok.Getter; +import lombok.Value; + +/** + * 健康度指标变量 + */ +@Getter +@Value +public class WmsHealthIndexVariableId { + + /** + * 工厂代码 + */ + private final String organizeCode; + /** + * 指标变量代码 + */ + private final String variable; + + +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariableValue.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariableValue.java new file mode 100644 index 0000000..52290e8 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/health/WmsHealthIndexVariableValue.java @@ -0,0 +1,27 @@ +package cn.estsh.i3plus.pojo.wms.bean.health; + +import lombok.Getter; +import lombok.Value; + +/** + * 健康度变量计算结果 + */ +@Getter +@Value +public class WmsHealthIndexVariableValue { + + /** + * 指标变量代码值 + */ + private final Integer value; + + /** + * 详细信息 + */ + private final Object detail; + + + public static WmsHealthIndexVariableValue empty(){ + return new WmsHealthIndexVariableValue(-1,""); + } +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/dbinterface/WmsInterfaceDataMapper.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/dbinterface/WmsInterfaceDataMapper.java index bc98a06..871f531 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/dbinterface/WmsInterfaceDataMapper.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/dbinterface/WmsInterfaceDataMapper.java @@ -52,12 +52,12 @@ public class WmsInterfaceDataMapper extends BaseBean { /** * 目标数据源id */ - @Column(name = "DEST_DATA_SOURCE_ID)") + @Column(name = "DEST_DATA_SOURCE_ID") public Long destDatasourceId; /** * 来源数据源id */ - @Column(name = "SRC_DATA_SOURCE_ID)") + @Column(name = "SRC_DATA_SOURCE_ID") public Long srcDatasourceId; /** * 来源表名 diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/IWmsHealthIndexRepository.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/IWmsHealthIndexRepository.java new file mode 100644 index 0000000..ffeae04 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/IWmsHealthIndexRepository.java @@ -0,0 +1,45 @@ +package cn.estsh.i3plus.pojo.wms.repository; + +import cn.estsh.i3plus.pojo.wms.bean.health.WmsHealthIndexEntity; +import cn.estsh.i3plus.pojo.wms.bean.health.WmsHealthIndexId; +import cn.estsh.i3plus.pojo.wms.bean.health.WmsHealthIndexQuery; + +import java.util.List; +import java.util.Optional; + +/** + * 健康度指标 + */ +public interface IWmsHealthIndexRepository { + + /** + * 查找并初始化指标信息 + * @param id + * @return + */ + WmsHealthIndexEntity findAndInit(WmsHealthIndexId id); + + /** + * 获取上一次记录的健康度指标值 + * @param id + * @return + */ + Optional getLastRecord(final WmsHealthIndexId id); + + /** + * 保存查询记录 + * @param wmsHealthIndexEntity + * @param source 统计渠道 + */ + void save(final WmsHealthIndexEntity wmsHealthIndexEntity,String source); + + + /** + * 获取查询记录 + * @param id + * @param param + * @return + */ + List query(final WmsHealthIndexId id, + final WmsHealthIndexQuery param); +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsHealthQueryRecordRepository.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsHealthQueryRecordRepository.java index eff79f4..f977654 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsHealthQueryRecordRepository.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsHealthQueryRecordRepository.java @@ -17,8 +17,7 @@ public interface WmsHealthQueryRecordRepository extends BaseRepository findByOrganizeCodeAndIndicatorCodeOrderByQueryTimeDesc(String organizeCode,String indicatorCode); + + Optional findFirstByOrganizeCodeAndIndicatorCodeOrderByQueryTimeDesc(String organizeCode,String indicatorCode); }