Przeglądaj źródła

Merge branch 'master' of ssh://gitlab.fuxicarbon.com:1111/hongshan/big-model-java

sunxiao 8 miesięcy temu
rodzic
commit
75c84d3b75

+ 3 - 3
slibra-admin/src/main/java/com/slibra/web/controller/business/GRPCController.java

@@ -377,10 +377,10 @@ public class GRPCController extends BaseController {
         PolicyReq policyReq = new PolicyReq();
         //2024年7月11日17:57:53 因为化验室的改了  但是 调用决策还得用原来的几个值
         String category = xinyiWarningRecord.getCategory();
-        if(ROBOT_XSY_1.getCode().equalsIgnoreCase(category)){
-            category = CS_ZD.getCode();
-        } else if (ROBOT_XSY_2.getCode().equalsIgnoreCase(category)) {
+        if(ROBOT_XSY_1.getCode().equalsIgnoreCase(category) || ROBOT_XSY_2.getCode().equalsIgnoreCase(category)){
             category = CS_ZD.getCode();
+        } else if (ROBOT_ANDAN_1.getCode().equalsIgnoreCase(category) || ROBOT_ANDAN_2.getCode().equalsIgnoreCase(category)) {
+            category = CS_AD.getCode();
         }else if (ROBOT_ECCZLSY.getCode().equalsIgnoreCase(category)) {
             category = CS_ZL.getCode();
         }

+ 4 - 0
slibra-common/src/main/java/com/slibra/common/constant/MyConstants.java

@@ -88,7 +88,11 @@ public class MyConstants {
 //    public static final String NH3 = "nh3";//nh3
 //    public static final String TP = "tp";//tp
     public static final int MAX_COUNT = 30;
+
+    public static final int INDEX_1 = 1;
+    public static final int INDEX_2 = 2;
     public static final int INT_2 = 2;
+    public static final int INT_3 = 3;
     public static final int INT_6 = 6;
     public static final int INT_10000 = 10000;//10秒钟
     public static final int MAX_QUESTION_LENGTH = 5000;

+ 2 - 0
slibra-common/src/main/java/com/slibra/common/enums/BusinessEnum.java

@@ -25,6 +25,8 @@ public class BusinessEnum {
         ROBOT_XSY_1("#1好氧硝酸盐", "#1好氧硝酸盐"),
         ROBOT_XSY_2("#2好氧硝酸盐", "#2好氧硝酸盐"),
         ROBOT_ECCZLSY("二沉池正磷酸盐", "二沉池正磷酸盐"),
+        ROBOT_ANDAN_1("#1氨氮", "#1氨氮"),
+        ROBOT_ANDAN_2("#2氨氮", "#2氨氮"),
 
         //生化报警
         NHLB("内回流比", "内回流比"),

+ 212 - 9
slibra-quartz/src/main/java/com/slibra/quartz/task/AsyncTask.java

@@ -1357,10 +1357,10 @@ public class AsyncTask {
             PolicyReq policyReq = new PolicyReq();
             //2024年7月11日17:57:53 因为化验室的改了  但是 调用决策还得用原来的几个值
             String category = tXinyiWarningRecord.getCategory();
-            if(ROBOT_XSY_1.getCode().equalsIgnoreCase(category)){
-                category = CS_ZD.getCode();
-            } else if (ROBOT_XSY_2.getCode().equalsIgnoreCase(category)) {
+            if(ROBOT_XSY_1.getCode().equalsIgnoreCase(category) || ROBOT_XSY_2.getCode().equalsIgnoreCase(category)){
                 category = CS_ZD.getCode();
+            } else if (ROBOT_ANDAN_1.getCode().equalsIgnoreCase(category) || ROBOT_ANDAN_2.getCode().equalsIgnoreCase(category)) {
+                category = CS_AD.getCode();
             }else if (ROBOT_ECCZLSY.getCode().equalsIgnoreCase(category)) {
                 category = CS_ZL.getCode();
             }
@@ -1519,8 +1519,10 @@ public class AsyncTask {
         //2024年7月15日10:57:31 因为新增了化验室的3个指标,也是出水数据
         if(category.contains(CHUSHUI)
             || ROBOT_ECCZLSY.getCode().equalsIgnoreCase(category)
-                || ROBOT_XSY_2.getCode().equalsIgnoreCase(category)
-                    || ROBOT_XSY_1.getCode().equalsIgnoreCase(category)){//出水的展示
+                || ROBOT_XSY_1.getCode().equalsIgnoreCase(category)
+                    || ROBOT_XSY_2.getCode().equalsIgnoreCase(category)
+                        || ROBOT_ANDAN_1.getCode().equalsIgnoreCase(category)
+                            || ROBOT_ANDAN_2.getCode().equalsIgnoreCase(category)){//出水的展示
             ShowValueCSBasic showValueCSBasic = new ShowValueCSBasic();
             if(ZERO_SZ_WARNING.getCode().equals(remark)){//水质报警
                 showValueCSBasic.setH(ZAIXIANYIBIAO);
@@ -1711,6 +1713,18 @@ public class AsyncTask {
         }else{//有告警信息
             Date nowDate = DateUtils.getNowDate();
             if(CollectionUtils.isEmpty(tXinyiWarningRecords)){//之前没有告警记录
+                //2024年7月18日16:23:11  新增逻辑,查询是否有连续升高的趋势,如果有才需要报警
+                List<TXinyiIndustry> tXinyiIndustries = this.xinyiIndustryMapper.selectNIndustry(INT_3);
+                if(CollectionUtils.isEmpty(tXinyiIndustries) || tXinyiIndustries.size() < 3){
+                    log.error("处理生化报警时,获取最近的3条工业库数据失败~~~~~~~");
+                    return;
+                }
+                TXinyiIndustry tXinyiIndustry1 = tXinyiIndustries.get(INDEX_1);//前一个小时
+                TXinyiIndustry tXinyiIndustry2 = tXinyiIndustries.get(INDEX_2);//前两个小时
+                if(!this.judgeContinuousIndustry(tXinyiIndustry1, tXinyiIndustry2, category)){
+                    log.info("虽然当前超标了,但是没有连续升高趋势,所以不报警,当前没有报警出来的数据为{}\n,前一个小时数据为{}\n前两个小时数据为{}", JSON.toJSONString(tXinyiWarningRecord), JSON.toJSONString(tXinyiIndustry1), JSON.toJSONString(tXinyiIndustry2));
+                    return;
+                }
                 //保存到数据库中
                 //2024年7月15日11:06:16 因为只有一个告警记录,但是如果一直报警,现在报警时间取的是更新时间,兼容第一次报警处理
                 tXinyiWarningRecord.setUpdateTime(nowDate);
@@ -1809,6 +1823,18 @@ public class AsyncTask {
         }else{//有告警信息
             Date nowDate = DateUtils.getNowDate();
             if(CollectionUtils.isEmpty(tXinyiWarningRecords)){//之前没有告警记录
+                //2024年7月18日16:23:11  新增逻辑,查询是否有连续升高的趋势,如果有才需要报警
+                List<TXinyiIndustry> tXinyiIndustries = this.xinyiIndustryMapper.selectNIndustry(INT_3);
+                if(CollectionUtils.isEmpty(tXinyiIndustries) || tXinyiIndustries.size() < 3){
+                    log.error("处理生化报警时,获取最近的3条工业库数据失败~~~~~~~");
+                    return;
+                }
+                TXinyiIndustry tXinyiIndustry1 = tXinyiIndustries.get(INDEX_1);//前一个小时
+                TXinyiIndustry tXinyiIndustry2 = tXinyiIndustries.get(INDEX_2);//前两个小时
+                if(!this.judgeContinuousIndustry(tXinyiIndustry1, tXinyiIndustry2, category)){
+                    log.info("虽然当前超标了,但是没有连续升高趋势,所以不报警,当前没有报警出来的数据为{}\n,前一个小时数据为{}\n前两个小时数据为{}", JSON.toJSONString(tXinyiWarningRecord), JSON.toJSONString(tXinyiIndustry1), JSON.toJSONString(tXinyiIndustry2));
+                    return;
+                }
                 //保存到数据库中
                 //2024年7月15日11:06:16 因为只有一个告警记录,但是如果一直报警,现在报警时间取的是更新时间,兼容第一次报警处理
                 tXinyiWarningRecord.setUpdateTime(nowDate);
@@ -1846,6 +1872,64 @@ public class AsyncTask {
         }
     }
 
+    private boolean judgeContinuousIndustry(TXinyiIndustry tXinyiIndustry1, TXinyiIndustry tXinyiIndustry2, String category) {
+        boolean result = false;//默认不超标
+        if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
+            BigDecimal csCod1 = tXinyiIndustry1.getCsCod();
+            BigDecimal csCod2 = tXinyiIndustry2.getCsCod();
+            if(!Objects.isNull(csCod1) && !Objects.isNull(csCod2) && csCod1.compareTo(csCod2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
+            BigDecimal csSs1 = tXinyiIndustry1.getCsSs();
+            BigDecimal csSs2 = tXinyiIndustry2.getCsSs();
+            if(!Objects.isNull(csSs1) && !Objects.isNull(csSs2) && csSs1.compareTo(csSs2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
+            BigDecimal csTn1 = tXinyiIndustry1.getCsTn();
+            BigDecimal csTn2 = tXinyiIndustry2.getCsTn();
+            if(!Objects.isNull(csTn1) && !Objects.isNull(csTn2) && csTn1.compareTo(csTn2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
+            BigDecimal csTp1 = tXinyiIndustry1.getCsTp();
+            BigDecimal csTp2 = tXinyiIndustry2.getCsTp();
+            if(!Objects.isNull(csTp1) && !Objects.isNull(csTp2) && csTp1.compareTo(csTp2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
+            BigDecimal csNh31 = tXinyiIndustry1.getCsNh3();
+            BigDecimal csNh32 = tXinyiIndustry2.getCsNh3();
+            if(!Objects.isNull(csNh31) && !Objects.isNull(csNh32) && csNh31.compareTo(csNh32) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
+            BigDecimal jsCod1 = tXinyiIndustry1.getJsCod();
+            BigDecimal jsCod2 = tXinyiIndustry2.getJsCod();
+            if(!Objects.isNull(jsCod1) && !Objects.isNull(jsCod2) && jsCod1.compareTo(jsCod2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
+            BigDecimal jsSs1 = tXinyiIndustry1.getJsSs();
+            BigDecimal jsSs2 = tXinyiIndustry2.getJsSs();
+            if(!Objects.isNull(jsSs1) && !Objects.isNull(jsSs2) && jsSs1.compareTo(jsSs2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
+            BigDecimal jsTn1 = tXinyiIndustry1.getJsTn();
+            BigDecimal jsTn2 = tXinyiIndustry2.getJsTn();
+            if(!Objects.isNull(jsTn1) && !Objects.isNull(jsTn2) && jsTn1.compareTo(jsTn2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
+            BigDecimal jsTp1 = tXinyiIndustry1.getJsTp();
+            BigDecimal jsTp2 = tXinyiIndustry2.getJsTp();
+            if(!Objects.isNull(jsTp1) && !Objects.isNull(jsTp2) && jsTp1.compareTo(jsTp2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
+            BigDecimal jsNh31 = tXinyiIndustry1.getJsNh3();
+            BigDecimal jsNh32 = tXinyiIndustry2.getJsNh3();
+            if(!Objects.isNull(jsNh31) && !Objects.isNull(jsNh32) && jsNh31.compareTo(jsNh32) > INT_0)
+                result = true;
+        }else{
+            log.error("暂时还不支持的报警类型~~~~");
+        }
+        return result;
+    }
+
     private void addChatRecordByDeviceErr(TXinyiWarningRecord tXinyiWarningRecord, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig) {
         ChatReq chatReq = new ChatReq();
         //保存聊天记录
@@ -1906,11 +1990,16 @@ public class AsyncTask {
                     handleXinYiWarningsRobot(cszzBzz, csTn, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_ZD.getCode(), tXinyiIndustry, normConfig);
                 }
             }*/
+            //总氮的标准值和管控值
+            BigDecimal cszzBzz = normConfig.getCszzBzz();
+            BigDecimal cszzGkz = normConfig.getCszzGkz();
+            //氨氮的标准值和管控值
+            BigDecimal csadBzz = normConfig.getCsadBzz();
+            BigDecimal csadGkz = normConfig.getCsadGkz();
+
             //#1好氧硝酸盐
             BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
             if(!Objects.isNull(no3Hlj1Jqr)){
-                BigDecimal cszzBzz = normConfig.getCszzBzz();
-                BigDecimal cszzGkz = normConfig.getCszzGkz();
                 if(!Objects.isNull(cszzBzz)){
                     handleXinYiWarningsRobot(cszzBzz, no3Hlj1Jqr, cszzGkz, ROBOT_XSY_1.getCode(), tXinyiIndustry, normConfig);
                 }
@@ -1919,8 +2008,6 @@ public class AsyncTask {
             //#2好氧硝酸盐
             BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
             if(!Objects.isNull(no3Hlj2Jqr)){
-                BigDecimal cszzBzz = normConfig.getCszzBzz();
-                BigDecimal cszzGkz = normConfig.getCszzGkz();
                 if(!Objects.isNull(cszzBzz)){
                     handleXinYiWarningsRobot(cszzBzz, no3Hlj2Jqr, cszzGkz, ROBOT_XSY_2.getCode(), tXinyiIndustry, normConfig);
                 }
@@ -1937,6 +2024,37 @@ public class AsyncTask {
                 }
             }
 
+            //2024年7月18日10:48:15 新增报警:出水氨氮 - 连续检测报警
+            //1池
+            BigDecimal no3Qyc1Jqr = tXinyiRobot.getNo3Qyc1Jqr();
+            BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
+            //判断 增加容错
+            if(Objects.isNull(no3Qyc1Jqr))
+                no3Qyc1Jqr = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr))
+                nh31Jqr = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr))
+                no3Hlj1Jqr = BigDecimal.ZERO;
+            BigDecimal anDan1 = no3Qyc1Jqr.add(nh31Jqr).subtract(no3Hlj1Jqr);
+            if(!Objects.isNull(csadBzz)){
+                handleXinYiWarningsRobot(csadBzz, anDan1, csadGkz, ROBOT_ANDAN_1.getCode(), tXinyiIndustry, normConfig);
+            }
+
+            //2池
+            BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
+            BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();
+            //判断 增加容错
+            if(Objects.isNull(no3Qyc2Jqr))
+                no3Qyc2Jqr = BigDecimal.ZERO;
+            if(Objects.isNull(nh32Jqr))
+                nh32Jqr = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj2Jqr))
+                no3Hlj2Jqr = BigDecimal.ZERO;
+            BigDecimal anDan2 = no3Qyc2Jqr.add(nh32Jqr).subtract(no3Hlj2Jqr);
+            if(!Objects.isNull(csadBzz)){
+                handleXinYiWarningsRobot(csadBzz, anDan2, csadGkz, ROBOT_ANDAN_2.getCode(), tXinyiIndustry, normConfig);
+            }
+
         }
     }
 
@@ -2001,6 +2119,18 @@ public class AsyncTask {
         }else{//有告警信息
             Date nowDate = DateUtils.getNowDate();
             if(CollectionUtils.isEmpty(tXinyiWarningRecords)){//之前没有告警记录
+                //2024年7月18日16:23:11  新增逻辑,查询是否有连续升高的趋势,如果有才需要报警
+                List<TXinyiRobot> tXinyiRobots = this.xinyiRobotMapper.selectNRobot(INT_3);
+                if(CollectionUtils.isEmpty(tXinyiRobots) || tXinyiRobots.size() < 3){
+                    log.error("处理连续检测报警时,获取最近的3条化验数据失败~~~~~~~");
+                    return;
+                }
+                TXinyiRobot tXinyiRobot1 = tXinyiRobots.get(INDEX_1);//前一个小时
+                TXinyiRobot tXinyiRobot2 = tXinyiRobots.get(INDEX_2);//前两个小时
+                if(!this.judgeContinuousRobot(tXinyiRobot1, tXinyiRobot2, category)){
+                    log.info("虽然当前超标了,但是没有连续升高趋势,所以不报警,当前没有报警出来的数据为{}\n,前一个小时数据为{}\n前两个小时数据为{}", JSON.toJSONString(tXinyiWarningRecord), JSON.toJSONString(tXinyiIndustry1), JSON.toJSONString(tXinyiIndustry2));
+                    return;
+                }
                 //保存到数据库中
                 //2024年7月15日11:06:16 因为只有一个告警记录,但是如果一直报警,现在报警时间取的是更新时间,兼容第一次报警处理
                 tXinyiWarningRecord.setUpdateTime(nowDate);
@@ -2039,6 +2169,79 @@ public class AsyncTask {
 
     }
 
+    private boolean judgeContinuousRobot(TXinyiRobot tXinyiRobot1, TXinyiRobot tXinyiRobot2, String category) {
+        boolean result = false;//默认不超标
+        if(BusinessEnum.WarningCategoryEnum.ROBOT_XSY_1.getCode().equals(category)){
+            BigDecimal no3Hlj1Jqr1 = tXinyiRobot1.getNo3Hlj1Jqr();
+            BigDecimal no3Hlj1Jqr2 = tXinyiRobot2.getNo3Hlj1Jqr();
+            if(!Objects.isNull(no3Hlj1Jqr1) && !Objects.isNull(no3Hlj1Jqr2) && no3Hlj1Jqr1.compareTo(no3Hlj1Jqr2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.ROBOT_XSY_2.getCode().equals(category)){
+            BigDecimal no3Hlj2Jqr1 = tXinyiRobot1.getNo3Hlj2Jqr();
+            BigDecimal no3Hlj2Jqr2 = tXinyiRobot2.getNo3Hlj2Jqr();
+            if(!Objects.isNull(no3Hlj2Jqr1) && !Objects.isNull(no3Hlj2Jqr2) && no3Hlj2Jqr1.compareTo(no3Hlj2Jqr2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.ROBOT_ECCZLSY.getCode().equals(category)){
+            BigDecimal tpRccJqr1 = tXinyiRobot1.getTpRccJqr();
+            BigDecimal tpRccJqr2 = tXinyiRobot2.getTpRccJqr();
+            if(!Objects.isNull(tpRccJqr1) && !Objects.isNull(tpRccJqr2) && tpRccJqr1.compareTo(tpRccJqr2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.ROBOT_ANDAN_1.getCode().equals(category)){
+            //计算1
+            BigDecimal no3Qyc1Jqr1 = tXinyiRobot1.getNo3Qyc1Jqr();
+            BigDecimal nh31Jqr1 = tXinyiRobot1.getNh31Jqr();
+            BigDecimal no3Hlj1Jqr1 = tXinyiRobot1.getNo3Hlj1Jqr();
+            if(Objects.isNull(no3Qyc1Jqr1))
+                no3Qyc1Jqr1 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr1))
+                nh31Jqr1 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr1))
+                no3Hlj1Jqr1 = BigDecimal.ZERO;
+            BigDecimal anDan1 = no3Qyc1Jqr1.add(nh31Jqr1).subtract(no3Hlj1Jqr1);
+            //计算2
+            BigDecimal no3Qyc1Jqr2 = tXinyiRobot2.getNo3Qyc1Jqr();
+            BigDecimal nh31Jqr2 = tXinyiRobot2.getNh31Jqr();
+            BigDecimal no3Hlj1Jqr2 = tXinyiRobot2.getNo3Hlj1Jqr();
+            if(Objects.isNull(no3Qyc1Jqr2))
+                no3Qyc1Jqr2 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr2))
+                nh31Jqr2 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr2))
+                no3Hlj1Jqr2 = BigDecimal.ZERO;
+            BigDecimal anDan2 = no3Qyc1Jqr2.add(nh31Jqr2).subtract(no3Hlj1Jqr2);
+            if(anDan1.compareTo(anDan2) > INT_0)
+                result = true;
+        }else if(BusinessEnum.WarningCategoryEnum.ROBOT_ANDAN_2.getCode().equals(category)){
+            //计算1
+            BigDecimal no3Qyc1Jqr1 = tXinyiRobot1.getNo3Qyc2Jqr();
+            BigDecimal nh31Jqr1 = tXinyiRobot1.getNh32Jqr();
+            BigDecimal no3Hlj1Jqr1 = tXinyiRobot1.getNo3Hlj2Jqr();
+            if(Objects.isNull(no3Qyc1Jqr1))
+                no3Qyc1Jqr1 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr1))
+                nh31Jqr1 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr1))
+                no3Hlj1Jqr1 = BigDecimal.ZERO;
+            BigDecimal anDan1 = no3Qyc1Jqr1.add(nh31Jqr1).subtract(no3Hlj1Jqr1);
+            //计算2
+            BigDecimal no3Qyc1Jqr2 = tXinyiRobot2.getNo3Qyc2Jqr();
+            BigDecimal nh31Jqr2 = tXinyiRobot2.getNh32Jqr();
+            BigDecimal no3Hlj1Jqr2 = tXinyiRobot2.getNo3Hlj2Jqr();
+            if(Objects.isNull(no3Qyc1Jqr2))
+                no3Qyc1Jqr2 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr2))
+                nh31Jqr2 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr2))
+                no3Hlj1Jqr2 = BigDecimal.ZERO;
+            BigDecimal anDan2 = no3Qyc1Jqr2.add(nh31Jqr2).subtract(no3Hlj1Jqr2);
+            if(anDan1.compareTo(anDan2) > INT_0)
+                result = true;
+        }else{
+            log.error("暂时还不支持的报警类型~~~~");
+        }
+        return result;
+    }
+
     /**
      *
      * 大宽表的数据处理

+ 5 - 5
slibra-quartz/src/main/java/com/slibra/quartz/task/RyTask.java

@@ -926,14 +926,14 @@ public class RyTask
 
         //防止工业库挂掉以后持续预测同一数据
         //2024年6月20日14:59:23 因为预测bug 判断是否生成过了否则不生成
-        String remark = tXinyiForecastComparison.getRemark();
-        String category = tXinyiForecastComparison.getCategory();
         TXinyiForecastComparison tXinyiForecastComparisonReq = new TXinyiForecastComparison();
-        tXinyiForecastComparisonReq.setRemark(remark);
-        tXinyiForecastComparisonReq.setCategory(category);
+        tXinyiForecastComparisonReq.setRemark(tXinyiForecastComparison.getRemark());
+        tXinyiForecastComparisonReq.setCategory(tXinyiForecastComparison.getCategory());
+        //2024年7月18日15:04:37 如果工业库挂掉以后,不管什么时刻,调用预测返回的未来三小时时间都是一样的,再增加一个查询条件
+        tXinyiForecastComparisonReq.setForecastTimeOne(tXinyiForecastComparison.getForecastTimeOne());//一个时刻就可以了 没必要再比较第二和第三时刻了。
         List<TXinyiForecastComparison> tXinyiForecastComparisons = this.xinyiForecastComparisonService.selectTXinyiForecastComparisonList(tXinyiForecastComparisonReq);
         if(!CollectionUtils.isEmpty(tXinyiForecastComparisons)){
-            log.error("预测已经进行过了,无需重复运行~~~~~~~~~~~@@@@@@@,时间为{}\n类型为{}", remark, category);
+            log.error("预测已经进行过了,无需重复运行~~~~~~~~~~~@@@@@@@,要保存的预测数据为{}", JSON.toJSONString(tXinyiForecastComparison));
             return;
         }