diff --git a/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/dto/req/ClaimVerificationFileDTO.java b/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/dto/req/ClaimVerificationFileDTO.java index 607ce4b..e886a56 100644 --- a/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/dto/req/ClaimVerificationFileDTO.java +++ b/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/dto/req/ClaimVerificationFileDTO.java @@ -47,7 +47,7 @@ public class ClaimVerificationFileDTO { @AllArgsConstructor @NoArgsConstructor public static class ClaimVerificationFile { - private String fileId; + private String fileBusinessId; private String fileObsPath; private String fileType; } diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/ClaimVerificationServiceImpl.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/ClaimVerificationServiceImpl.java index 564babd..a95a73d 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/ClaimVerificationServiceImpl.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/ClaimVerificationServiceImpl.java @@ -9,6 +9,7 @@ import com.obs.services.model.ObsObject; import com.volvo.ai.analytic.center.constant.ClaimVerificationConstant; import com.volvo.ai.analytic.center.constant.Constant; import com.volvo.ai.analytic.center.dto.req.ClaimVerificationFileDTO; +import com.volvo.ai.analytic.center.dto.req.ClaimVerificationFileDTO.ClaimVerificationFile; import com.volvo.ai.analytic.center.dto.req.DiFyReq; import com.volvo.ai.analytic.center.dto.req.RunMaskingRuleInput; import com.volvo.ai.analytic.center.entity.*; @@ -189,52 +190,69 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService { } } else if (claimVerificationFileAnalysisDTO.getBusinessType().equals(BusinessTypeEnum.CLAIM_VERIFICATION_CLASSIFY_APP.getCode())) { //文件分类 - List fileObsPath = claimVerificationFileAnalysisDTO.getFileObsPath(); - List> fileIds = new ArrayList<>(); - log.info("文件分类文件ID:{}", fileObsPath); - //上传所有文件到dify - uploadFileToObs(fileObsPath, fileIds); - //根据业务线标识和文件配置分类查询配置 - List aiAnalyticBusinessConfigs = aiAnalyticBusinessConfigMapper.selectList( - Wrappers.lambdaQuery() - .eq(AiAnalyticBusinessConfig::getBusinessLine, BusinessTypeEnum.CLAIM_VERIFICATION.getCode()) - .eq(AiAnalyticBusinessConfig::getFileConfigCategory, claimVerificationFileAnalysisDTO.getFileType()) - .eq(AiAnalyticBusinessConfig::getIsDeleted, 0) - .eq(AiAnalyticBusinessConfig::getConfigVersion, 1) - ); + List claimVerificationFiles = claimVerificationFileAnalysisDTO.getClaimVerificationFiles(); + List resultFiles = new ArrayList<>(); + for (ClaimVerificationFile claimVerificationFile : claimVerificationFiles) { + List fileObsPath = new ArrayList<>(); + fileObsPath.add(claimVerificationFile.getFileObsPath()); + List> fileIds = new ArrayList<>(); + log.info("文件分类文件ID:{}", fileObsPath); + //上传所有文件到dify + uploadFileToObs(fileObsPath, fileIds); + //根据业务线标识和文件配置分类查询配置 + List aiAnalyticBusinessConfigs = aiAnalyticBusinessConfigMapper.selectList( + Wrappers.lambdaQuery() + .eq(AiAnalyticBusinessConfig::getBusinessLine, BusinessTypeEnum.CLAIM_VERIFICATION.getCode()) + .eq(AiAnalyticBusinessConfig::getFileConfigCategory, claimVerificationFileAnalysisDTO.getFileType()) + .eq(AiAnalyticBusinessConfig::getIsDeleted, 0) + .eq(AiAnalyticBusinessConfig::getConfigVersion, 1) + ); - //组装文件分析workflow入参 - JSONArray files = new JSONArray(); - for (HashMap fileToDifyDTO : fileIds) { - JSONObject object = new JSONObject(); - object.put(ClaimVerificationConstant.UPLOAD_FILE_ID, fileToDifyDTO.get(ClaimVerificationConstant.ID)); - object.put(ClaimVerificationConstant.TYPE, fileToDifyDTO.get(ClaimVerificationConstant.TYPE)); - object.put(ClaimVerificationConstant.TRANSFER_METHOD, ClaimVerificationConstant.LOCAL_FILE); - files.add(object); - } - //构建入参 - JSONObject fileToDifyDTO = buildFileToDifyParameter(files, claimVerificationFileAnalysisDTO, aiAnalyticBusinessConfigs); - //根据aiAnalysisRequestId更新请求日志表的difyRequest字段 - syncUpdateDiFyRequest(fileToDifyDTO.toString(), aiAnalysisRequestId); - DiFyReq diFyReq = new DiFyReq(); - diFyReq.setUser(BusinessTypeEnum.CLAIM_VERIFICATION.getCode()); - diFyReq.setFlowId(fileClassifyToken); - diFyReq.setInputs(fileToDifyDTO); - //调用dify 工作流 - diFyObject = (JSONObject) diFyService.getDiFyObject(diFyReq); - //处理结果并推送MQ - if (diFyObject == null) { - log.error(" 售后索赔检核文件分类dify返回结果为空"); - saveException("售后索赔检核文件分类dify返回结果为空", aiAnalysisRequestId, null); - } else { - //解析dify返回结果 - JSONObject data = analyzeParameters(diFyObject, claimVerificationFileAnalysisDTO, aiAnalysisRequestId); - //返回结果推送到Newbie的MQ - rocketMQTemplate.syncSend(topic, data); - log.info("索赔检核文件分类发送回调MQ完成: {}", data); + //组装文件分析workflow入参 + JSONArray files = new JSONArray(); + for (HashMap fileToDifyDTO : fileIds) { + JSONObject object = new JSONObject(); + object.put(ClaimVerificationConstant.UPLOAD_FILE_ID, fileToDifyDTO.get(ClaimVerificationConstant.ID)); + object.put(ClaimVerificationConstant.TYPE, fileToDifyDTO.get(ClaimVerificationConstant.TYPE)); + object.put(ClaimVerificationConstant.TRANSFER_METHOD, ClaimVerificationConstant.LOCAL_FILE); + files.add(object); + } + //构建入参 + JSONObject fileToDifyDTO = buildFileToDifyParameter(files, claimVerificationFileAnalysisDTO, aiAnalyticBusinessConfigs); + //根据aiAnalysisRequestId更新请求日志表的difyRequest字段 + syncUpdateDiFyRequest(fileToDifyDTO.toString(), aiAnalysisRequestId); + DiFyReq diFyReq = new DiFyReq(); + diFyReq.setUser(BusinessTypeEnum.CLAIM_VERIFICATION.getCode()); + diFyReq.setFlowId(fileClassifyToken); + diFyReq.setInputs(fileToDifyDTO); + //调用dify 工作流 + JSONObject classifyDiFyObject = (JSONObject) diFyService.getDiFyObject(diFyReq); + + //处理结果 + if (classifyDiFyObject == null) { + log.error(" 售后索赔检核文件分类dify返回结果为空"); + saveException("售后索赔检核文件分类dify返回结果为空", aiAnalysisRequestId, null); + } else { + //解析dify返回结果 + String fileType = diFyObject.getString("fileBusinessType"); + //判断字符串那个是不为空的然后进行处理 + if (StringUtils.isNotBlank(fileType)) { + claimVerificationFile.setFileType(fileType); + } else { + claimVerificationFile.setFileType("0"); + } + resultFiles.add(claimVerificationFile); + } } + JSONObject data = new JSONObject(); + data.put("newBieAfterSalesId", claimVerificationFileAnalysisDTO.getNewBieAfterSalesId()); + data.put("businessType", claimVerificationFileAnalysisDTO.getBusinessType()); + data.put("claimVerificationFiles", resultFiles); + data.put("aiAnalysisRequestId", aiAnalysisRequestId); + rocketMQTemplate.syncSend(topic, data); + log.info("索赔检核文件分类发送回调MQ完成: {}", data); //异步更新请求日志表的difyResponse字段 - syncUpdateDiFyResponse(diFyObject, aiAnalysisRequestId); + syncUpdateDiFyResponse(data, aiAnalysisRequestId); } else { saveException("售后索赔检核业务类型错误", aiAnalysisRequestId, null); }