Ver código fonte

预测进水总磷报警prompt调整

wangmiaomiao 8 meses atrás
pai
commit
5015969e11

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

@@ -192,6 +192,19 @@ public class MyConstants {
     public static final String YC_WARNING_PROMPT_3 = "mg/L,现在值";
     public static final String YC_WARNING_PROMPT_4 = "mg/L,预测值";
     public static final String YC_WARNING_PROMPT_5 = "mg/L,预计三小时后发生超标情况\n根据已知数据生成超标解决方案,请输出一个解决方案,方案分为三部分,第一部分写问题总述,第二部分问题解决方案,第三部分用表格呈现与超标指标关系到的其他污水处理指标的处理的建议值、调整说明等内容。";
+
+    public static final String YC_WARNING_PROMPT_6 = "mg/L,预计三小时后发生超标情况;历史7天二沉池正磷酸盐数据:";
+    public static final String YC_WARNING_PROMPT_7 = ";历史7天进水总磷数据:";
+    public static final String YC_WARNING_PROMPT_8 = ";\n" +
+            "根据已知数据生成超标解决方案,请输出一个解决方案,方案分为三部分:\n" +
+            "第一部分写问题总述;\n" +
+            "第二部分问题解决方案,内容为:\n" +
+            "1、根据已知数据,对最近7天的进水总磷、二沉池出水正磷酸盐数据趋势展示看一下变化情况,根据这些指标进行超标数据分析、数据趋势分析;\n" +
+            "2、提高好氧出水、二沉池正磷酸的检测频次,复核出水正磷酸盐和总磷的真实变化;\n" +
+            "3、进一步排查除磷加药系统、排泥及外回流系统以及生化系统各项参数是否正常;\n" +
+            "4、为规避预测真实风险,可适当提高除磷药剂投加量(自动状态下调整控制系数,建议提高1.2~1.5倍或手动人为经验给定投加量)。\n" +
+            "第三部分用表格依次除磷药剂投加量、好氧池溶解氧、生化池污泥浓度MLSS、进水水量、干污泥量的调整项和调整说明内容。";
+
     public static final String CHAT_GONGDAN_1_ERROR_MSG = "智能工单问答必须选择日期";
     public static final String CHAT_GONGDAN_2_ERROR_MSG = "很抱歉,当前日期指标没有数据,请查证后再试";
     public static final String CHAT_GONGDAN_CUSTOM_ERROR_MSG = "很抱歉,数据分析维度过多,请尝试减少时间区间或统计数据项再试...";

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

@@ -46,7 +46,7 @@ public class BusinessEnum {
         CS_COD_YC("出水COD", "出水COD"),
         CS_SS_YC("出水SS", "出水SS"),
         CS_TN_YC("出水总氮", "出水总氮"),
-        CS_TP_YC("二沉池正磷酸盐", "二沉池正磷酸盐 "),
+        CS_TP_YC("二沉池正磷酸盐", "二沉池正磷酸盐"),
         CS_AD_YC("出水氨氮", "出水氨氮"),
         CS_XSY_1_YC("1号好氧池硝酸盐", "1号好氧池硝酸盐"),
         CS_XSY_2_YC("2号好氧池硝酸盐", "2号好氧池硝酸盐"),

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

@@ -50,6 +50,7 @@ import java.util.stream.Collectors;
 
 import static com.slibra.common.constant.MyConstants.*;
 import static com.slibra.common.enums.BusinessEnum.BigModelWarningTypeRemarkEnum.TWO_YC_WARNING;
+import static com.slibra.common.enums.BusinessEnum.WarningCategoryEnum.CS_TP_YC;
 
 /**
  * 定时任务调度测试
@@ -1223,7 +1224,7 @@ public class RyTask
                 chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
                 chartsDataList.add(chartBasic);
             }
-            handleXinYiWarningsYC(cszlBzz, split, cszlGkz, BusinessEnum.WarningCategoryEnum.CS_TP_YC.getCode(), hour, normConfig, tXinyiRobot.getTpRccJqr(), tXinyiIndustry, chartsDataList, date);
+            handleXinYiWarningsYC(cszlBzz, split, cszlGkz, CS_TP_YC.getCode(), hour, normConfig, tXinyiRobot.getTpRccJqr(), tXinyiIndustry, chartsDataList, date);
         }else if(BusinessEnum.BigModelForecastEnum.NH3.getCode().equals(task)){
             //同时调用跃渊的预测接口 保存记录值
             try {
@@ -1469,11 +1470,38 @@ public class RyTask
         shWarningPrompt =shWarningPrompt.replace("#{2}", String.valueOf(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getWarningVal(), INT_2)));
         shWarningPrompt =shWarningPrompt.replace("#{3}", String.valueOf(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getForecastVal(), INT_2)));*/
         StringBuilder prompt = new StringBuilder(YC_WARNING_PROMPT_1);
-        prompt.append(xinyiWarningRecord.getReason());
-        prompt.append(YC_WARNING_PROMPT_2).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getDesignVal(), INT_2));
-        prompt.append(YC_WARNING_PROMPT_3).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getWarningVal(), INT_2));
-        prompt.append(YC_WARNING_PROMPT_4).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getForecastVal(), INT_2));
-        prompt.append(YC_WARNING_PROMPT_5);
+        if(CS_TP_YC.getCode().equalsIgnoreCase(xinyiWarningRecord.getCategory())){
+            log.info("进入了需要特殊处理的预警:二沉池正磷酸盐");
+            prompt.append(xinyiWarningRecord.getReason());
+            prompt.append(YC_WARNING_PROMPT_2).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getDesignVal(), INT_2));
+            prompt.append(YC_WARNING_PROMPT_3).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getWarningVal(), INT_2));
+            prompt.append(YC_WARNING_PROMPT_4).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getForecastVal(), INT_2));
+            prompt.append(YC_WARNING_PROMPT_6);
+            //查询最近7天的二沉池正磷酸盐数据
+            List<HashMap<String, Object>> list = this.xinyiRobotMapper.selectAvg7Datas();
+            if(!CollectionUtils.isEmpty(list)){
+                for (HashMap<String, Object> map : list) {
+                    prompt.append(map.get("DATE")).append(map.get("VAL")).append(",");
+                }
+            }
+            prompt.append(";");
+            prompt.append(YC_WARNING_PROMPT_7);
+            //查询最近7天的进水总磷数据
+            List<TXinyiDaily> tXinyiDailies = this.xinyiDailyMapper.selectNRecords(7);
+            if(!CollectionUtils.isEmpty(tXinyiDailies)){
+                for (TXinyiDaily tXinyiDaily : tXinyiDailies) {
+                    prompt.append(tXinyiDaily.getTestDate()).append(tXinyiDaily.getJsTp()).append(",");
+                }
+            }
+            prompt.append(";");
+            prompt.append(YC_WARNING_PROMPT_8);
+        }else{//
+            prompt.append(xinyiWarningRecord.getReason());
+            prompt.append(YC_WARNING_PROMPT_2).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getDesignVal(), INT_2));
+            prompt.append(YC_WARNING_PROMPT_3).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getWarningVal(), INT_2));
+            prompt.append(YC_WARNING_PROMPT_4).append(DecimalUtils.getAbsAndScale(xinyiWarningRecord.getForecastVal(), INT_2));
+            prompt.append(YC_WARNING_PROMPT_5);
+        }
         historyDates.add(prompt.toString());
         // 获取输出流
         ManagedChannel channel = null;

+ 2 - 0
slibra-system/src/main/java/com/slibra/business/mapper/TXinyiRobotMapper.java

@@ -1,5 +1,6 @@
 package com.slibra.business.mapper;
 
+import java.util.HashMap;
 import java.util.List;
 
 import com.slibra.business.domain.TXinyiLaboratory;
@@ -73,4 +74,5 @@ public interface TXinyiRobotMapper
 
     TXinyiRobot selectTXinyiRobotByAvg(TXinyiRobot tXinyiRobot);
 
+    List<HashMap<String, Object>> selectAvg7Datas();
 }

+ 11 - 0
slibra-system/src/main/resources/mapper/business/TXinyiRobotMapper.xml

@@ -294,4 +294,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where TEST_HOUR = #{testHour}
     </select>
 
+
+    <select id="selectAvg7Datas" resultType="hashmap">
+        SELECT
+            TEST_DATE `DATE`,
+	AVG( TP_RCC_JQR ) VAL
+        FROM
+            ( SELECT TEST_DATE, TP_RCC_JQR FROM t_xinyi_robot ORDER BY ID DESC LIMIT 200 ) temp
+        GROUP BY
+            TEST_DATE LIMIT 1,7
+    </select>
+
 </mapper>