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 78e4f88..2ac3b22 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 @@ -69,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-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-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/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); }