Просмотр исходного кода

自定义工单 请求大模型的数据小数改为两位小数 增加长度的限制

wangmiaomiao 9 месяцев назад
Родитель
Сommit
61d6425576

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

@@ -348,7 +348,19 @@ public class GRPCController extends BaseController {
                 //拿到数据
                 List<WorkOrderRes> workOrderRes = frontService.customWorkOrder(workOrderReq);
                 //品种prompt
-                chatReq.setQuestion(this.buildGDQuestionCustom(workOrderRes, workOrderReq));
+                String question = this.buildGDQuestionCustom(workOrderRes, workOrderReq);
+                //2024年6月23日17:21:58  判断问题的长度,如果长度大于配置的值(5000),提示一句话
+                if(question.length() > MAX_QUESTION_LENGTH){
+                    try {
+                        outputStream = response.getOutputStream();
+                        outputStream.write(CHAT_GONGDAN_CUSTOM_ERROR_MSG.getBytes());
+                        outputStream.flush();
+                    } catch (IOException e) {
+                        throw new RuntimeException(e);
+                    }
+                    return;
+                }
+                chatReq.setQuestion(question);
                 //2024年6月20日16:48:08  如果是自定义工单,需要处理图表 放到remark中
                 chatReq.setRemark(JSON.toJSONString(frontService.customWorkOrderHandleByData(workOrderReq, workOrderRes), JSONWriter.Feature.WriteNulls));
             }

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

@@ -60,6 +60,7 @@ public class MyConstants {
     public static final String WARNING_DEFAULT_CREATE = "task-job";
     public static final String DEFAULT_ID_IDENTIFIER = "@@id@@";
     public static final int MAX_COUNT = 30;
+    public static final int MAX_QUESTION_LENGTH = 5000;
 
     public static final int DAILY_RECORDS_TOTAL = 30;
     public static final String JIAN_BAO_END = "简报";
@@ -102,6 +103,7 @@ public class MyConstants {
 
     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 = "您选择的自定义工单日期+指标项太多,请减少输入项";
 
     public static final String GONGDAN_TITLE = "请生成#{0}智能工单分析报告";
     public static final String GONGDAN_TITLE_CUSTOM = "请成生#{0}-#{1}日的日报工单";

+ 34 - 31
slibra-system/src/main/java/com/slibra/business/service/impl/FrontServiceImpl.java

@@ -9,6 +9,7 @@ import com.slibra.business.res.WorkOrderRes;
 import com.slibra.business.res.XinyiDailyFeeSimple;
 import com.slibra.business.res.XinyiIndustrySimple;
 import com.slibra.business.service.IFrontService;
+import com.slibra.common.DecimalUtils;
 import com.slibra.common.exception.ServiceException;
 import com.slibra.common.utils.DateUtils;
 import com.slibra.common.utils.SecurityUtils;
@@ -163,6 +164,8 @@ public class FrontServiceImpl implements IFrontService {
      * 自定义工单接口 获取数据接口
      * @param workOrderReq
      * @return
+     *
+     * 2024年6月23日17:12:12 小数处理,所有的小数均保留两位小数处理
      */
     @Override
     public List<WorkOrderRes> customWorkOrder(WorkOrderReq workOrderReq) {
@@ -355,73 +358,73 @@ public class FrontServiceImpl implements IFrontService {
 
     private void buildIndustryData(TXinyiIndustry industry, WorkOrderRes workOrderRes, WorkOrderReq workOrderReq) {
         if(workOrderReq.getJsSlq())
-            workOrderRes.setJsSlq(industry.getJsSlq());
+            workOrderRes.setJsSlq(DecimalUtils.getAbsAndScale(industry.getJsSlq(), 3));
         if(workOrderReq.getJsCod())
-            workOrderRes.setJsCod(industry.getJsCod());
+            workOrderRes.setJsCod(DecimalUtils.getAbsAndScale(industry.getJsCod(), 3));
         if(workOrderReq.getJsTn())
-            workOrderRes.setJsTn(industry.getJsTn());
+            workOrderRes.setJsTn(DecimalUtils.getAbsAndScale(industry.getJsTn(), 3));
         if(workOrderReq.getJsTp())
-            workOrderRes.setJsTp(industry.getJsTp());
+            workOrderRes.setJsTp(DecimalUtils.getAbsAndScale(industry.getJsTp(), 3));
         if(workOrderReq.getJsNh3())
-            workOrderRes.setJsNh3(industry.getJsNh3());
+            workOrderRes.setJsNh3(DecimalUtils.getAbsAndScale(industry.getJsNh3(), 3));
         if(workOrderReq.getJsSs())
-            workOrderRes.setJsSs(industry.getJsSs());
+            workOrderRes.setJsSs(DecimalUtils.getAbsAndScale(industry.getJsSs(), 3));
         if(workOrderReq.getCsSlqc())
-            workOrderRes.setCsSlqc(industry.getCsSlqc());
+            workOrderRes.setCsSlqc(DecimalUtils.getAbsAndScale(industry.getCsSlqc(), 3));
         if(workOrderReq.getCsCod())
-            workOrderRes.setCsCod(industry.getCsCod());
+            workOrderRes.setCsCod(DecimalUtils.getAbsAndScale(industry.getCsCod(), 3));
         if(workOrderReq.getCsTn())
-            workOrderRes.setCsTn(industry.getCsTn());
+            workOrderRes.setCsTn(DecimalUtils.getAbsAndScale(industry.getCsTn(), 3));
         if(workOrderReq.getCsTp())
-            workOrderRes.setCsTp(industry.getCsTp());
+            workOrderRes.setCsTp(DecimalUtils.getAbsAndScale(industry.getCsTp(), 3));
         if(workOrderReq.getCsNh3())
-            workOrderRes.setCsNh3(industry.getCsNh3());
+            workOrderRes.setCsNh3(DecimalUtils.getAbsAndScale(industry.getCsNh3(), 3));
         if(workOrderReq.getCsSs())
-            workOrderRes.setCsSs(industry.getCsSs());
+            workOrderRes.setCsSs(DecimalUtils.getAbsAndScale(industry.getCsSs(), 3));
     }
 
     private void buildDailyData(TXinyiDaily tXinyiDaily, WorkOrderRes workOrderRes, WorkOrderReq workOrderReq) {
         if(workOrderReq.getJsSlq())
-            workOrderRes.setJsSlq(tXinyiDaily.getJSL());
+            workOrderRes.setJsSlq(DecimalUtils.getAbsAndScale(tXinyiDaily.getJSL(), 3));
         if(workOrderReq.getJsCod())
-            workOrderRes.setJsCod(tXinyiDaily.getJsCod());
+            workOrderRes.setJsCod(DecimalUtils.getAbsAndScale(tXinyiDaily.getJsCod(), 3));
         if(workOrderReq.getJsTn())
-            workOrderRes.setJsTn(tXinyiDaily.getJsTn());
+            workOrderRes.setJsTn(DecimalUtils.getAbsAndScale(tXinyiDaily.getJsTn(), 3));
         if(workOrderReq.getJsTp())
-            workOrderRes.setJsTp(tXinyiDaily.getJsTp());
+            workOrderRes.setJsTp(DecimalUtils.getAbsAndScale(tXinyiDaily.getJsTp(), 3));
         if(workOrderReq.getJsNh3())
-            workOrderRes.setJsNh3(tXinyiDaily.getJsNh3());
+            workOrderRes.setJsNh3(DecimalUtils.getAbsAndScale(tXinyiDaily.getJsNh3(), 3));
         if(workOrderReq.getJsSs())
-            workOrderRes.setJsSs(tXinyiDaily.getJsSs());
+            workOrderRes.setJsSs(DecimalUtils.getAbsAndScale(tXinyiDaily.getJsSs(), 3));
         if(workOrderReq.getCsSlqc())
-            workOrderRes.setCsSlqc(tXinyiDaily.getCSL());
+            workOrderRes.setCsSlqc(DecimalUtils.getAbsAndScale(tXinyiDaily.getCSL(), 3));
         if(workOrderReq.getCsCod())
-            workOrderRes.setCsCod(tXinyiDaily.getCsCod());
+            workOrderRes.setCsCod(DecimalUtils.getAbsAndScale(tXinyiDaily.getCsCod(), 3));
         if(workOrderReq.getCsTn())
-            workOrderRes.setCsTn(tXinyiDaily.getCsTn());
+            workOrderRes.setCsTn(DecimalUtils.getAbsAndScale(tXinyiDaily.getCsTn(), 3));
         if(workOrderReq.getCsTp())
-            workOrderRes.setCsTp(tXinyiDaily.getCsTp());
+            workOrderRes.setCsTp(DecimalUtils.getAbsAndScale(tXinyiDaily.getCsTp(), 3));
         if(workOrderReq.getCsNh3())
-            workOrderRes.setCsNh3(tXinyiDaily.getCsNh3());
+            workOrderRes.setCsNh3(DecimalUtils.getAbsAndScale(tXinyiDaily.getCsNh3(), 3));
         if(workOrderReq.getCsSs())
-            workOrderRes.setCsSs(tXinyiDaily.getCsSs());
+            workOrderRes.setCsSs(DecimalUtils.getAbsAndScale(tXinyiDaily.getCsSs(), 3));
     }
 
     private void buildRobotData(TXinyiRobot xinyiRobot, WorkOrderRes workOrderRes, WorkOrderReq workOrderReq) {
         if(workOrderReq.getNo3Hlj1Jqr())
-            workOrderRes.setNo3Hlj1Jqr(xinyiRobot.getNo3Hlj1Jqr());
+            workOrderRes.setNo3Hlj1Jqr(DecimalUtils.getAbsAndScale(xinyiRobot.getNo3Hlj1Jqr(), 3));
         if(workOrderReq.getNo3Hlj2Jqr())
-            workOrderRes.setNo3Hlj2Jqr(xinyiRobot.getNo3Hlj2Jqr());
+            workOrderRes.setNo3Hlj2Jqr(DecimalUtils.getAbsAndScale(xinyiRobot.getNo3Hlj2Jqr(), 3));
         if(workOrderReq.getNh31Jqr())
-            workOrderRes.setNh31Jqr(xinyiRobot.getNh31Jqr());
+            workOrderRes.setNh31Jqr(DecimalUtils.getAbsAndScale(xinyiRobot.getNh31Jqr(), 3));
         if(workOrderReq.getNh32Jqr())
-            workOrderRes.setNh32Jqr(xinyiRobot.getNh32Jqr());
+            workOrderRes.setNh32Jqr(DecimalUtils.getAbsAndScale(xinyiRobot.getNh32Jqr(), 3));
         if(workOrderReq.getNo3Qyc1Jqr())
-            workOrderRes.setNo3Qyc1Jqr(xinyiRobot.getNo3Qyc1Jqr());
+            workOrderRes.setNo3Qyc1Jqr(DecimalUtils.getAbsAndScale(xinyiRobot.getNo3Qyc1Jqr(), 3));
         if(workOrderReq.getNo3Qyc2Jqr())
-            workOrderRes.setNo3Qyc2Jqr(xinyiRobot.getNo3Qyc2Jqr());
+            workOrderRes.setNo3Qyc2Jqr(DecimalUtils.getAbsAndScale(xinyiRobot.getNo3Qyc2Jqr(), 3));
         if(workOrderReq.getTpRccJqr())
-            workOrderRes.setTpRccJqr(xinyiRobot.getTpRccJqr());
+            workOrderRes.setTpRccJqr(DecimalUtils.getAbsAndScale(xinyiRobot.getTpRccJqr(), 3));
     }
 
     private void checkCustomWorkOrder(WorkOrderReq workOrderReq) {