Переглянути джерело

预测新增4个类型的接口处理

王苗苗 6 місяців тому
батько
коміт
4e5ebd56f5

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

@@ -1065,13 +1065,14 @@ public class GRPCController extends BaseController {
         // 获取输出流
         ManagedChannel channel = null;
         try {
-            channel = ManagedChannelBuilder.forAddress("10.0.0.24", 17070)
+            channel = ManagedChannelBuilder.forAddress("10.0.0.24", 27070)
                     .usePlaintext()
                     .build();
             InferenceAPIsServiceGrpc.InferenceAPIsServiceBlockingStub stub = InferenceAPIsServiceGrpc.newBlockingStub(channel);
 //            String dataJson = "{\"bot_id\":\"b00001\",\"exp_id\":\"721\",\"norm\":\"出水氨氮\",\"session_id\":\" " + IdUtils.simpleUUID() + "  \",\"extra\":{}}";
             //2024年6月27日13:23:25  优化:改成非拼接JSON字符串
-            String dataJson = buildBigModelReqForPredictor("出水氨氮");
+            String dataJson = buildBigModelReqForPredictor("缺氧出水氨氮1");
+//            String dataJson = buildBigModelReqForPredictor("qyxsy1");
 //            log.info("请求大模型的预测的参数为{}", dataJson);
             PredictionsRequest request = PredictionsRequest.newBuilder()
                     .setModelName("slibra_bot")
@@ -1085,7 +1086,7 @@ public class GRPCController extends BaseController {
             log.info("大模型问答返回的原始结果为{}", responseStr);*/
             PredictionResponse predictions = stub.predictions(request);
             String responseStr = predictions.getPrediction().toStringUtf8();
-//            log.info("大模型问答返回的原始结果为{}", responseStr);
+            log.info("大模型问答返回的原始结果为{}", responseStr);
         } catch (IOException e) {
             throw new RuntimeException(e);
         } finally {

+ 167 - 1
slibra-admin/src/main/java/com/slibra/web/controller/business/HandleDataController.java

@@ -11,6 +11,7 @@ import com.alibaba.fastjson2.JSONObject;
 import com.slibra.business.domain.*;
 import com.slibra.business.mapper.*;
 import com.slibra.business.res.ChartBasic;
+import com.slibra.business.service.ITXinyiForecastComparisonService;
 import com.slibra.common.DecimalUtils;
 import com.slibra.common.core.domain.TXinyiDaily;
 import com.slibra.common.core.controller.BaseController;
@@ -85,6 +86,9 @@ public class HandleDataController extends BaseController
     @Autowired
     private AsyncTask asyncTask;
 
+    @Autowired
+    private ITXinyiForecastComparisonService xinyiForecastComparisonService;
+
 
     public static final String[] queryTags = {"信义污水厂JS_COD_Value","信义污水厂JS_PH_Value","信义污水厂JS_SS_Value","信义污水厂JS_ZL_Value","信义污水厂JS_ZA_Value","信义污水厂JS_AD_Value","信义污水厂JS_T_Value","信义污水厂进水泵房液位","信义污水厂出水瞬时流量","信义污水厂升级出水COD","信义污水厂升级出水PH","信义污水厂升级出水SS","信义污水厂升级出水TN","信义污水厂升级出水TP","信义污水厂升级出水氨氮","信义污水厂AIT202_Value","信义污水厂AIT203_Value","信义污水厂AIT207_Value","信义污水厂AIT206_Value","信义污水厂AIT209_Value","信义污水厂AIT210_Value","信义污水厂进水TDS","信义污水厂FT101_Value","信义污水厂SWCHHYHLB1_R_Value","信义污水厂SWCHHYHLB2_R_Value","信义污水厂SWCHHYHLB3_R_Value","信义污水厂SWCHHYHLB4_R_Value","信义污水厂SWCHHYHLB5_R_Value","信义污水厂SWCHHYHLB6_R_Value","信义污水厂SWCWNHLB1_R_Value","信义污水厂SWCWNHLB2_R_Value","信义污水厂SWCWNHLB3_R_Value","信义污水厂SWCWNHLB4_R_Value","信义污水厂SWCWNHLB5_R_Value","信义污水厂GFJ1_R_Value","信义污水厂GFJ2_R_Value","信义污水厂GFJ3_R_Value","信义污水厂GFJ4_R_Value","信义污水厂GFJ5_R_Value","信义污水厂GFJ6_R_Value","信义污水厂GFJ1_KQLL_Value","信义污水厂GFJ2_KQLL_Value","信义污水厂GFJ3_KQLL_Value","信义污水厂GFJ4_KQLL_Value","信义污水厂GFJ5_KQLL_Value","信义污水厂GFJ6_KQLL_Value"};
 
@@ -1552,6 +1556,7 @@ public class HandleDataController extends BaseController
 
 
     private void handlePredictorWarning(String[] split, String hour, String task, List<TXinyiIndustry> tXinyiIndustries6, List<TXinyiRobot> tXinyiRobots6, String date) {
+
         String[] hours = hour.split(",");
         //2024年6月23日18:28:55 因为存在跨天问题  所以日期也是逗号拼接的
         String[] dates = date.split(",");
@@ -1569,6 +1574,19 @@ public class HandleDataController extends BaseController
         //2024年6月20日14:28:31  增加字段,方便查询
         tXinyiForecastComparison.setRemark(DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYYMMDDHH_TS));
 
+        //防止工业库挂掉以后持续预测同一数据
+        //2024年6月20日14:59:23 因为预测bug(以工业库为准,假如工业库挂了,获取的全是挂了时间段后的三小时) 判断是否生成过了否则不生成
+        TXinyiForecastComparison tXinyiForecastComparisonReq = new TXinyiForecastComparison();
+        //2024年08月20日16:24:56  因为remark存放的是当前时间,也就是每个小时的,所以都是不一样的,修复此bug
+//        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("预测已经进行过了,无需重复运行~~~~~~~~~~~@@@@@@@,要保存的预测数据为{}", JSON.toJSONString(tXinyiForecastComparison));
+            return;
+        }
 
         //获取配置表
         List<TXinyiNormConfig> tXinyiNormConfigs = this.xinyiNormConfigMapper.selectTXinyiNormConfigList(null);
@@ -1678,7 +1696,7 @@ public class HandleDataController extends BaseController
                 chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
                 chartsDataList.add(chartBasic);
             }
-            ryTask.handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_TN_YC.getCode(), hour, normConfig,tXinyiIndustry.getCsCod(), tXinyiIndustry, chartsDataList, date);
+            handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_TN_YC.getCode(), hour, normConfig,tXinyiIndustry.getCsCod(), tXinyiIndustry, chartsDataList, date);
         }*/else if(BusinessEnum.BigModelForecastEnum.TP.getCode().equals(task)){
             //同时调用跃渊的预测接口 保存记录值
             try {
@@ -1814,9 +1832,157 @@ public class HandleDataController extends BaseController
                 chartsDataList.add(chartBasic);
             }
             ryTask.handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_XSY_2_YC.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
+        }else if(BusinessEnum.BigModelForecastEnum.QYXSY1.getCode().equals(task)){
+            //同时调用跃渊的预测接口 保存记录值
+            /*try {
+                String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
+                if(!StringUtils.isBlank(result)){
+                    JSONArray array = JSON.parseArray(result);
+                    tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
+                    tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
+                    tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
+                }
+            } catch (Exception e) {
+                log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
+            }*/
+            // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
+            /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
+            BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
+            //2024年7月11日17:19:47  1#好氧硝酸盐、2#好氧硝酸盐使用总氮标准值和管控值来预警
+            BigDecimal cszzBzz = normConfig.getCszzBzz();
+            BigDecimal cszzGkz = normConfig.getCszzGkz();
+            //处理展示数据
+            for (int i = 0; i < tXinyiRobots6.size(); i++) {
+                TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNo3Qyc1Jqr(), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            for (int i = 0; i < split.length; i++) {
+                String val = split[i];
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(hours[i]);
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            ryTask.handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.QYCXSY_1.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
+        }else if(BusinessEnum.BigModelForecastEnum.QYXSY2.getCode().equals(task)){
+            //同时调用跃渊的预测接口 保存记录值
+            /*try {
+                String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
+                if(!StringUtils.isBlank(result)){
+                    JSONArray array = JSON.parseArray(result);
+                    tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
+                    tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
+                    tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
+                }
+            } catch (Exception e) {
+                log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
+            }*/
+            // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
+            /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
+            BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
+            //2024年7月11日17:19:47  1#好氧硝酸盐、2#好氧硝酸盐使用总氮标准值和管控值来预警
+            BigDecimal cszzBzz = normConfig.getCszzBzz();
+            BigDecimal cszzGkz = normConfig.getCszzGkz();
+            //处理展示数据
+            for (int i = 0; i < tXinyiRobots6.size(); i++) {
+                TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNo3Qyc2Jqr(), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            for (int i = 0; i < split.length; i++) {
+                String val = split[i];
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(hours[i]);
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            ryTask.handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.QYCXSY_2.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
+        }else if(BusinessEnum.BigModelForecastEnum.QYNH31.getCode().equals(task)){
+            //同时调用跃渊的预测接口 保存记录值
+            /*try {
+                String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
+                if(!StringUtils.isBlank(result)){
+                    JSONArray array = JSON.parseArray(result);
+                    tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
+                    tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
+                    tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
+                }
+            } catch (Exception e) {
+                log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
+            }*/
+            // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
+            /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
+            BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
+            //2024年09月08日11:21:25 采用出水氨氮的标准值和管控值
+            BigDecimal csadBzz = normConfig.getCsadBzz();
+            BigDecimal csadGkz = normConfig.getCsadGkz();
+            //处理展示数据
+            for (int i = 0; i < tXinyiRobots6.size(); i++) {
+                TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNh31Jqr(), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            for (int i = 0; i < split.length; i++) {
+                String val = split[i];
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(hours[i]);
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            ryTask.handleXinYiWarningsYC(csadBzz, split, csadGkz, BusinessEnum.WarningCategoryEnum.QYAD_1.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
+        }else if(BusinessEnum.BigModelForecastEnum.QYNH32.getCode().equals(task)){
+            //同时调用跃渊的预测接口 保存记录值
+            /*try {
+                String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
+                if(!StringUtils.isBlank(result)){
+                    JSONArray array = JSON.parseArray(result);
+                    tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
+                    tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
+                    tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
+                }
+            } catch (Exception e) {
+                log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
+            }*/
+            // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
+            /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
+            BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
+            //2024年09月08日11:21:25 采用出水氨氮的标准值和管控值
+            BigDecimal csadBzz = normConfig.getCsadBzz();
+            BigDecimal csadGkz = normConfig.getCsadGkz();
+            //处理展示数据
+            for (int i = 0; i < tXinyiRobots6.size(); i++) {
+                TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNh32Jqr(), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            for (int i = 0; i < split.length; i++) {
+                String val = split[i];
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(hours[i]);
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            ryTask.handleXinYiWarningsYC(csadBzz, split, csadGkz, BusinessEnum.WarningCategoryEnum.QYAD_2.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
         }else {
             log.error("暂未支持的类型{}", task);
         }
+        //插入到数据库
+        //2024年6月21日14:18:55  如果红杉预测和跃渊预测都有数据再保存
+        //2024年7月8日15:15:46 逻辑调整:只要红杉的数据不为空就保存
+        if(Objects.isNull(tXinyiForecastComparison.getHsForecastOne()) || Objects.isNull(tXinyiForecastComparison.getHsForecastTwo()) ||Objects.isNull(tXinyiForecastComparison.getHsForecastThree())){
+//            || Objects.isNull(tXinyiForecastComparison.getYyForecastOne()) || Objects.isNull(tXinyiForecastComparison.getYyForecastTwo()) || Objects.isNull(tXinyiForecastComparison.getYyForecastThree())){
+            log.error("保存预测对比数据时,有存在不满足条件的数据,不再保存数据,数据为{}", JSON.toJSONString(tXinyiForecastComparison));
+        }else
+            xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
     }
 }
 

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

@@ -89,6 +89,11 @@ public class BusinessEnum {
         ECC_GTFH("二沉池固体负荷", "二沉池固体负荷"),
         FCXSL("反冲洗水量", "反冲洗水量"),
 
+        QYCXSY_1("#1缺氧硝酸盐  ", "#1缺氧硝酸盐"),
+        QYCXSY_2("#2缺氧硝酸盐", "#2缺氧硝酸盐"),
+        QYAD_1("#1缺氧氨氮", "#1缺氧氨氮"),
+        QYAD_2("#2缺氧氨氮", "#2缺氧氨氮"),
+
         ;
 
         private final String code;
@@ -197,6 +202,10 @@ public class BusinessEnum {
         SS("ss", "ss"),
         NH3("nh3", "nh3"),
         TP("tp", "tp"),
+        QYXSY1("qyxsy1", "qyxsy1"),
+        QYXSY2("qyxsy2", "qyxsy2"),
+        QYNH31("qynh31", "qynh31"),
+        QYNH32("qynh32", "qynh32"),
         ;
 
         private final String code;

+ 204 - 0
slibra-quartz/src/main/java/com/slibra/quartz/task/AsyncTask.java

@@ -483,6 +483,11 @@ public class AsyncTask {
     public void updateForecastComparisonByRobot(TXinyiRobot tXinyiRobot) {
         BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
         BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
+        //2024年09月08日11:28:17 新增的四个预测使用
+        BigDecimal no3Qyc1Jqr = tXinyiRobot.getNo3Qyc1Jqr();
+        BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
+        BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
+        BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();
         String testHour = tXinyiRobot.getTestHour();
 
         BigDecimal tpRccJqr = tXinyiRobot.getTpRccJqr();
@@ -576,6 +581,73 @@ public class AsyncTask {
                         }
                     }
                 }
+
+                //2024年09月08日11:31:16  新增四个预测的真实值的字段更新
+                if(BusinessEnum.BigModelForecastEnum.QYXSY1.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealOne(no3Qyc1Jqr);
+                    if(!Objects.isNull(no3Qyc1Jqr) && no3Qyc1Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = no3Qyc1Jqr.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(no3Qyc1Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = no3Qyc1Jqr.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(no3Qyc1Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYXSY2.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealOne(no3Qyc2Jqr);
+                    if(!Objects.isNull(no3Qyc2Jqr) && no3Qyc2Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = no3Qyc2Jqr.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(no3Qyc2Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = no3Qyc2Jqr.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(no3Qyc2Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYNH31.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealOne(nh31Jqr);
+                    if(!Objects.isNull(nh31Jqr) && nh31Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = nh31Jqr.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(nh31Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = nh31Jqr.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(nh31Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYNH32.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealOne(nh32Jqr);
+                    if(!Objects.isNull(nh32Jqr) && nh32Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastOne)){
+                            BigDecimal subtract = nh32Jqr.subtract(hsForecastOne);
+                            tXinyiForecastComparison.setHsErrorRateOne((subtract).divide(nh32Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastOne)){
+                            BigDecimal subtract = nh32Jqr.subtract(yyForecastOne);
+                            tXinyiForecastComparison.setYyErrorRateOne((subtract).divide(nh32Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyOneSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);
             }
         }
@@ -657,6 +729,72 @@ public class AsyncTask {
                         }
                     }
                 }
+
+                //2024年09月08日11:31:16  新增四个预测的真实值的字段更新
+                if(BusinessEnum.BigModelForecastEnum.QYXSY1.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealTwo(no3Qyc1Jqr);
+                    if(!Objects.isNull(no3Qyc1Jqr) && no3Qyc1Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = no3Qyc1Jqr.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(no3Qyc1Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = no3Qyc1Jqr.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(no3Qyc1Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYXSY2.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealTwo(no3Qyc2Jqr);
+                    if(!Objects.isNull(no3Qyc2Jqr) && no3Qyc2Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = no3Qyc2Jqr.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(no3Qyc2Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = no3Qyc2Jqr.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(no3Qyc2Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYNH31.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealTwo(nh31Jqr);
+                    if(!Objects.isNull(nh31Jqr) && nh31Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = nh31Jqr.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(nh31Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = nh31Jqr.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(nh31Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYNH32.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealTwo(nh32Jqr);
+                    if(!Objects.isNull(nh32Jqr) && nh32Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastTwo)){
+                            BigDecimal subtract = nh32Jqr.subtract(hsForecastTwo);
+                            tXinyiForecastComparison.setHsErrorRateTwo((subtract).divide(nh32Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastTwo)){
+                            BigDecimal subtract = nh32Jqr.subtract(yyForecastTwo);
+                            tXinyiForecastComparison.setYyErrorRateTwo((subtract).divide(nh32Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyTwoSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);
             }
         }
@@ -738,6 +876,72 @@ public class AsyncTask {
                         }
                     }
                 }
+
+                //2024年09月08日11:31:16  新增四个预测的真实值的字段更新
+                if(BusinessEnum.BigModelForecastEnum.QYXSY1.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealThree(no3Qyc1Jqr);
+                    if(!Objects.isNull(no3Qyc1Jqr) && no3Qyc1Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = no3Qyc1Jqr.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(no3Qyc1Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = no3Qyc1Jqr.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(no3Qyc1Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYXSY2.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealThree(no3Qyc2Jqr);
+                    if(!Objects.isNull(no3Qyc2Jqr) && no3Qyc2Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = no3Qyc2Jqr.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(no3Qyc2Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = no3Qyc2Jqr.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(no3Qyc2Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYNH31.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealThree(nh31Jqr);
+                    if(!Objects.isNull(nh31Jqr) && nh31Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = nh31Jqr.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(nh31Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = nh31Jqr.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(nh31Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
+                if(BusinessEnum.BigModelForecastEnum.QYNH32.getCode().equalsIgnoreCase(tXinyiForecastComparison.getCategory())){
+                    tXinyiForecastComparison.setRealThree(nh32Jqr);
+                    if(!Objects.isNull(nh32Jqr) && nh32Jqr.compareTo(BigDecimal.ZERO) > 0){
+                        if(!Objects.isNull(hsForecastThree)){
+                            BigDecimal subtract = nh32Jqr.subtract(hsForecastThree);
+                            tXinyiForecastComparison.setHsErrorRateThree((subtract).divide(nh32Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setHsThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                        if(!Objects.isNull(yyForecastThree)){
+                            BigDecimal subtract = nh32Jqr.subtract(yyForecastThree);
+                            tXinyiForecastComparison.setYyErrorRateThree((subtract).divide(nh32Jqr, NUMBER_SCALE_4, RoundingMode.HALF_UP));
+                            tXinyiForecastComparison.setYyThreeSubtract(DecimalUtils.getAbsAndScale(subtract, INT_2));
+                        }
+                    }
+                }
+
                 this.xinyiForecastComparisonMapper.updateTXinyiForecastComparison(tXinyiForecastComparison);
             }
         }

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

@@ -134,7 +134,7 @@ public class RyTask
      *
      */
 //    public static final String[] predictorArr = {"出水COD", "出水SS", "出水总磷", "出水氨氮"};
-    public static final String[] predictorArr = {"出水COD", "出水SS", "出水总磷", "出水氨氮", "xsy1", "xsy2"};
+    public static final String[] predictorArr = {"出水COD", "出水SS", "出水总磷", "出水氨氮", "xsy1", "xsy2", "qyxsy1", "qyxsy2", "缺氧出水氨氮1", "缺氧出水氨氮2"};
     public static final String[] predictorArrSpecial = {"xsy1", "xsy2"};
 
     /**
@@ -741,10 +741,11 @@ public class RyTask
 //                    handleXinYiWarningsYC(cscodBzz, split, cscodGkz, BusinessEnum.WarningCategoryEnum.CS_COD_YC.getCode(), hour, normConfig);
                     continue;
                 }
-                if(PROD_ENVIRONMENT.equalsIgnoreCase(environment)){
+                //todo 测试环境临时测试,测试完打开注释
+//                if(PROD_ENVIRONMENT.equalsIgnoreCase(environment)){
                     //解析数据 处理报警 调研prompt 保存等
                     this.handlePredictorWarning(split, hour, task, tXinyiIndustries6, tXinyiRobots6, date);
-                }
+//                }
             }else {
                 log.error("预测数据返回结果为{},无法正常解析", result);
             }
@@ -1340,6 +1341,146 @@ public class RyTask
                 chartsDataList.add(chartBasic);
             }
             handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_XSY_2_YC.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
+        }else if(BusinessEnum.BigModelForecastEnum.QYXSY1.getCode().equals(task)){
+            //同时调用跃渊的预测接口 保存记录值
+            /*try {
+                String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
+                if(!StringUtils.isBlank(result)){
+                    JSONArray array = JSON.parseArray(result);
+                    tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
+                    tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
+                    tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
+                }
+            } catch (Exception e) {
+                log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
+            }*/
+            // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
+            /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
+            BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
+            //2024年7月11日17:19:47  1#好氧硝酸盐、2#好氧硝酸盐使用总氮标准值和管控值来预警
+            BigDecimal cszzBzz = normConfig.getCszzBzz();
+            BigDecimal cszzGkz = normConfig.getCszzGkz();
+            //处理展示数据
+            for (int i = 0; i < tXinyiRobots6.size(); i++) {
+                TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNo3Qyc1Jqr(), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            for (int i = 0; i < split.length; i++) {
+                String val = split[i];
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(hours[i]);
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.QYCXSY_1.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
+        }else if(BusinessEnum.BigModelForecastEnum.QYXSY2.getCode().equals(task)){
+            //同时调用跃渊的预测接口 保存记录值
+            /*try {
+                String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
+                if(!StringUtils.isBlank(result)){
+                    JSONArray array = JSON.parseArray(result);
+                    tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
+                    tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
+                    tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
+                }
+            } catch (Exception e) {
+                log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
+            }*/
+            // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
+            /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
+            BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
+            //2024年7月11日17:19:47  1#好氧硝酸盐、2#好氧硝酸盐使用总氮标准值和管控值来预警
+            BigDecimal cszzBzz = normConfig.getCszzBzz();
+            BigDecimal cszzGkz = normConfig.getCszzGkz();
+            //处理展示数据
+            for (int i = 0; i < tXinyiRobots6.size(); i++) {
+                TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNo3Qyc2Jqr(), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            for (int i = 0; i < split.length; i++) {
+                String val = split[i];
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(hours[i]);
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.QYCXSY_2.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
+        }else if(BusinessEnum.BigModelForecastEnum.QYNH31.getCode().equals(task)){
+            //同时调用跃渊的预测接口 保存记录值
+            /*try {
+                String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
+                if(!StringUtils.isBlank(result)){
+                    JSONArray array = JSON.parseArray(result);
+                    tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
+                    tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
+                    tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
+                }
+            } catch (Exception e) {
+                log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
+            }*/
+            // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
+            /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
+            BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
+            //2024年09月08日11:21:25 采用出水氨氮的标准值和管控值
+            BigDecimal csadBzz = normConfig.getCsadBzz();
+            BigDecimal csadGkz = normConfig.getCsadGkz();
+            //处理展示数据
+            for (int i = 0; i < tXinyiRobots6.size(); i++) {
+                TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNh31Jqr(), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            for (int i = 0; i < split.length; i++) {
+                String val = split[i];
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(hours[i]);
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            handleXinYiWarningsYC(csadBzz, split, csadGkz, BusinessEnum.WarningCategoryEnum.QYAD_1.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
+        }else if(BusinessEnum.BigModelForecastEnum.QYNH32.getCode().equals(task)){
+            //同时调用跃渊的预测接口 保存记录值
+            /*try {
+                String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
+                if(!StringUtils.isBlank(result)){
+                    JSONArray array = JSON.parseArray(result);
+                    tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
+                    tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
+                    tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
+                }
+            } catch (Exception e) {
+                log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
+            }*/
+            // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
+            /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
+            BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
+            //2024年09月08日11:21:25 采用出水氨氮的标准值和管控值
+            BigDecimal csadBzz = normConfig.getCsadBzz();
+            BigDecimal csadGkz = normConfig.getCsadGkz();
+            //处理展示数据
+            for (int i = 0; i < tXinyiRobots6.size(); i++) {
+                TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNh32Jqr(), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            for (int i = 0; i < split.length; i++) {
+                String val = split[i];
+                ChartBasic chartBasic = new ChartBasic();
+                chartBasic.setTime(hours[i]);
+                chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
+                chartsDataList.add(chartBasic);
+            }
+            handleXinYiWarningsYC(csadBzz, split, csadGkz, BusinessEnum.WarningCategoryEnum.QYAD_2.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
         }else {
             log.error("暂未支持的类型{}", task);
         }