调整代码
This commit is contained in:
@@ -11,12 +11,10 @@ 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;
|
||||||
import com.volvo.ai.analytic.center.dto.req.DiFyReq;
|
import com.volvo.ai.analytic.center.dto.req.DiFyReq;
|
||||||
import com.volvo.ai.analytic.center.dto.req.RunMaskingRuleInput;
|
import com.volvo.ai.analytic.center.dto.req.RunMaskingRuleInput;
|
||||||
import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs;
|
import com.volvo.ai.analytic.center.entity.*;
|
||||||
import com.volvo.ai.analytic.center.entity.AiAnalyticBusinessConfig;
|
|
||||||
import com.volvo.ai.analytic.center.entity.AiAnalyticWarrantyAudit;
|
|
||||||
import com.volvo.ai.analytic.center.entity.DataMaskingRule;
|
|
||||||
import com.volvo.ai.analytic.center.enums.BusinessTypeEnum;
|
import com.volvo.ai.analytic.center.enums.BusinessTypeEnum;
|
||||||
import com.volvo.ai.analytic.center.enums.ClaimVerificationFileTypeEnums;
|
import com.volvo.ai.analytic.center.enums.ClaimVerificationFileTypeEnums;
|
||||||
|
import com.volvo.ai.analytic.center.mapper.AiAnalysisErrorsMapper;
|
||||||
import com.volvo.ai.analytic.center.mapper.AiAnalyticWarrantyAuditMapper;
|
import com.volvo.ai.analytic.center.mapper.AiAnalyticWarrantyAuditMapper;
|
||||||
import com.volvo.ai.analytic.center.service.DataMaskingRuleService;
|
import com.volvo.ai.analytic.center.service.DataMaskingRuleService;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -30,6 +28,7 @@ import com.volvo.ai.analytic.center.utils.AiAnalysisUtils;
|
|||||||
import com.volvo.ai.analytic.center.utils.ObsUtil;
|
import com.volvo.ai.analytic.center.utils.ObsUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
@@ -76,8 +75,13 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AiAnalyticWarrantyAuditMapper aiAnalyticWarrantyAuditMapper;
|
private AiAnalyticWarrantyAuditMapper aiAnalyticWarrantyAuditMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AiAnalysisErrorsMapper aiAnalysisErrorsMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void consumerMessageByMQ(String message) {
|
public void consumerMessageByMQ(String message) {
|
||||||
|
|
||||||
log.info("售后索赔检核MQ message: {}", message);
|
log.info("售后索赔检核MQ message: {}", message);
|
||||||
ClaimVerificationFileDTO claimVerificationFileAnalysisDTO = JSON.parseObject(message, ClaimVerificationFileDTO.class);
|
ClaimVerificationFileDTO claimVerificationFileAnalysisDTO = JSON.parseObject(message, ClaimVerificationFileDTO.class);
|
||||||
if (claimVerificationFileAnalysisDTO == null) {
|
if (claimVerificationFileAnalysisDTO == null) {
|
||||||
@@ -86,161 +90,194 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService {
|
|||||||
}
|
}
|
||||||
// 生成ai分析请求id
|
// 生成ai分析请求id
|
||||||
String aiAnalysisRequestId = AiAnalysisUtils.getAiAnalysisRequestId(BusinessTypeEnum.CLAIM_VERIFICATION.getCode());
|
String aiAnalysisRequestId = AiAnalysisUtils.getAiAnalysisRequestId(BusinessTypeEnum.CLAIM_VERIFICATION.getCode());
|
||||||
// 异步保存请求日志
|
JSONObject diFyObject = new JSONObject();
|
||||||
syncSaveRequestLogs(message, aiAnalysisRequestId);
|
try {
|
||||||
|
// 异步保存请求日志
|
||||||
|
syncSaveRequestLogs(message, aiAnalysisRequestId);
|
||||||
|
if (claimVerificationFileAnalysisDTO.getBusinessType().equals(BusinessTypeEnum.CLAIM_VERIFICATION_FILE_ANALYSIS.getCode())) {
|
||||||
|
//文件分析
|
||||||
|
List<String> fileObsPath = claimVerificationFileAnalysisDTO.getFileObsPath();
|
||||||
|
List<HashMap<String, String>> fileIds = new ArrayList<>();
|
||||||
|
log.info("文件分析文件ID:{}", fileObsPath);
|
||||||
|
//上传所有文件到dify
|
||||||
|
uploadFileToObs(fileObsPath, fileIds);
|
||||||
|
//根据业务线标识和文件配置分类查询配置
|
||||||
|
List<AiAnalyticBusinessConfig> aiAnalyticBusinessConfigs = aiAnalyticBusinessConfigMapper.selectList(
|
||||||
|
Wrappers.<AiAnalyticBusinessConfig>lambdaQuery()
|
||||||
|
.eq(AiAnalyticBusinessConfig::getBusinessLine, BusinessTypeEnum.CLAIM_VERIFICATION.getCode())
|
||||||
|
.eq(AiAnalyticBusinessConfig::getFileConfigCategory, claimVerificationFileAnalysisDTO.getFileType())
|
||||||
|
.eq(AiAnalyticBusinessConfig::getIsDeleted, 0)
|
||||||
|
.eq(AiAnalyticBusinessConfig::getConfigVersion, 1)
|
||||||
|
);
|
||||||
|
|
||||||
if(claimVerificationFileAnalysisDTO.getBusinessType().equals(BusinessTypeEnum.CLAIM_VERIFICATION_FILE_ANALYSIS.getCode())){
|
//组装文件分析workflow入参
|
||||||
//文件分析
|
JSONArray files = new JSONArray();
|
||||||
List<String> fileObsPath = claimVerificationFileAnalysisDTO.getFileObsPath();
|
for (HashMap<String, String> fileToDifyDTO : fileIds) {
|
||||||
List<HashMap<String,String>> fileIds = new ArrayList<>();
|
JSONObject object = new JSONObject();
|
||||||
log.info("文件分析文件ID:{}", fileObsPath);
|
object.put(ClaimVerificationConstant.UPLOAD_FILE_ID, fileToDifyDTO.get(ClaimVerificationConstant.ID));
|
||||||
//上传所有文件到dify
|
object.put(ClaimVerificationConstant.TYPE, fileToDifyDTO.get(ClaimVerificationConstant.TYPE));
|
||||||
uploadFileToObs(fileObsPath, fileIds);
|
object.put(ClaimVerificationConstant.TRANSFER_METHOD, ClaimVerificationConstant.LOCAL_FILE);
|
||||||
//根据业务线标识和文件配置分类查询配置
|
files.add(object);
|
||||||
List<AiAnalyticBusinessConfig> aiAnalyticBusinessConfigs = aiAnalyticBusinessConfigMapper.selectList(
|
|
||||||
Wrappers.<AiAnalyticBusinessConfig>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<String, String> 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 = new JSONObject();
|
|
||||||
fileToDifyDTO.put("files", files);
|
|
||||||
//根据类型获取配置内容
|
|
||||||
fileToDifyDTO.put("FileBusinessType",claimVerificationFileAnalysisDTO.getFileType());
|
|
||||||
fileToDifyDTO.put("FileDescription", aiAnalyticBusinessConfigs
|
|
||||||
.stream()
|
|
||||||
.filter(config -> config.getConfigType().equals("FileDescription"))
|
|
||||||
.map(AiAnalyticBusinessConfig::getConfigData)
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null));
|
|
||||||
fileToDifyDTO.put("AnalysisRequirements", aiAnalyticBusinessConfigs
|
|
||||||
.stream()
|
|
||||||
.filter(config -> config.getConfigType().equals("AnalysisRequirements"))
|
|
||||||
.map(AiAnalyticBusinessConfig::getConfigData)
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null));
|
|
||||||
fileToDifyDTO.put("ReportRequirements", aiAnalyticBusinessConfigs
|
|
||||||
.stream()
|
|
||||||
.filter(config -> config.getConfigType().equals("ReportRequirements"))
|
|
||||||
.map(AiAnalyticBusinessConfig::getConfigData)
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null));
|
|
||||||
fileToDifyDTO.put("ReportTemplate", aiAnalyticBusinessConfigs
|
|
||||||
.stream()
|
|
||||||
.filter(config -> config.getConfigType().equals("ReportTemplate"))
|
|
||||||
.map(AiAnalyticBusinessConfig::getConfigData)
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null));
|
|
||||||
|
|
||||||
DiFyReq diFyReq = new DiFyReq();
|
|
||||||
diFyReq.setUser(BusinessTypeEnum.CLAIM_VERIFICATION.getCode());
|
|
||||||
diFyReq.setFlowId(fileToken);
|
|
||||||
diFyReq.setInputs(fileToDifyDTO);
|
|
||||||
//调用dify 工作流
|
|
||||||
JSONObject diFyObject = (JSONObject) diFyService.getDiFyObject(diFyReq);
|
|
||||||
//处理结果并推送MQ
|
|
||||||
if (diFyObject == null) {
|
|
||||||
log.error(" 售后索赔检核文件分析dify返回结果为空");
|
|
||||||
throw new RuntimeException(" 售后索赔检核文件分析dify返回结果为空");
|
|
||||||
}else {
|
|
||||||
String toAfter = "";
|
|
||||||
String textDoc = diFyObject.getString("textDoc");
|
|
||||||
String textImage = diFyObject.getString("textImage");
|
|
||||||
//判断字符串那个是不为空的然后进行处理
|
|
||||||
if (StringUtils.isNotBlank(textDoc)) {
|
|
||||||
toAfter = StringEscapeUtils.unescapeJava(textDoc);
|
|
||||||
} else if (StringUtils.isNotBlank(textImage)) {
|
|
||||||
toAfter = StringEscapeUtils.unescapeJava(textImage);
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException(" 售后索赔检核文件分析dify返回结果为空");
|
|
||||||
}
|
}
|
||||||
JSONObject difyToAfter = JSONObject.parseObject(toAfter);
|
//构建入参
|
||||||
JSONObject data = new JSONObject();
|
JSONObject fileToDifyDTO = buildFileToDifyParameter(files, claimVerificationFileAnalysisDTO, aiAnalyticBusinessConfigs);
|
||||||
data.put("newBieAfterSalesId", claimVerificationFileAnalysisDTO.getNewBieAfterSalesId());
|
|
||||||
data.put("businessType", claimVerificationFileAnalysisDTO.getBusinessType());
|
|
||||||
data.put("fileType", claimVerificationFileAnalysisDTO.getFileType());
|
|
||||||
data.put("fileData",difyToAfter);
|
|
||||||
data.put("aiAnalysisRequestId",aiAnalysisRequestId);
|
|
||||||
//返回结果推送到Newbie的MQ
|
|
||||||
rocketMQTemplate.syncSend(topic, data);
|
|
||||||
log.info("索赔检核文件分析发送回调MQ完成: {}", data);
|
|
||||||
}
|
|
||||||
//异步更新请求日志表的difyResponse字段
|
|
||||||
syncUpdateDiFyResponse(diFyObject, aiAnalysisRequestId);
|
|
||||||
} else if(claimVerificationFileAnalysisDTO.getBusinessType().equals(BusinessTypeEnum.CLAIM_VERIFICATION_AUDIT.getCode())){
|
|
||||||
//审计报告
|
|
||||||
//加载审计规则配置
|
|
||||||
List<AiAnalyticBusinessConfig> aiAnalyticBusinessConfigs = aiAnalyticBusinessConfigMapper.selectList(
|
|
||||||
Wrappers.<AiAnalyticBusinessConfig>lambdaQuery()
|
|
||||||
.eq(AiAnalyticBusinessConfig::getBusinessLine, BusinessTypeEnum.CLAIM_VERIFICATION.getCode())
|
|
||||||
.eq(AiAnalyticBusinessConfig::getConfigType, BusinessTypeEnum.AUDITRULES.getCode())
|
|
||||||
.eq(AiAnalyticBusinessConfig::getIsDeleted, 0)
|
|
||||||
.in(AiAnalyticBusinessConfig::getVerificationMethod,methodList)
|
|
||||||
)
|
|
||||||
|
|
||||||
;
|
DiFyReq diFyReq = new DiFyReq();
|
||||||
String configDataString = aiAnalyticBusinessConfigs.stream()
|
diFyReq.setUser(BusinessTypeEnum.CLAIM_VERIFICATION.getCode());
|
||||||
.map(AiAnalyticBusinessConfig::getConfigData)
|
diFyReq.setFlowId(fileToken);
|
||||||
.collect(Collectors.joining(" "));
|
diFyReq.setInputs(fileToDifyDTO);
|
||||||
//组装审计报告workflow入参
|
//调用dify 工作流
|
||||||
JSONObject audit = new JSONObject();
|
diFyObject = (JSONObject) diFyService.getDiFyObject(diFyReq);
|
||||||
audit.put("analysisRules", configDataString);
|
//处理结果并推送MQ
|
||||||
audit.put("diagnosticReport", claimVerificationFileAnalysisDTO.getDiagnosticReport().toString());
|
if (diFyObject == null) {
|
||||||
audit.put("preCheckReport", claimVerificationFileAnalysisDTO.getPreCheckReport().toString());
|
log.error(" 售后索赔检核文件分析dify返回结果为空");
|
||||||
audit.put("dtcReport", claimVerificationFileAnalysisDTO.getDtcReport().toString());
|
throw new RuntimeException(" 售后索赔检核文件分析dify返回结果为空");
|
||||||
|
} else {
|
||||||
//脱敏处理
|
//解析dify返回结果
|
||||||
List<DataMaskingRule> maskingRuleItems = dataMaskingRuleService.getDataMaskingRuleListByApplicationChannel(Constant.CHANNEL_DCC);
|
JSONObject data = analyzeParameters(diFyObject, claimVerificationFileAnalysisDTO, aiAnalysisRequestId);
|
||||||
RunMaskingRuleInput runMaskingRuleInput = new RunMaskingRuleInput();
|
//返回结果推送到Newbie的MQ
|
||||||
runMaskingRuleInput.setDataMaskingRules(maskingRuleItems);
|
rocketMQTemplate.syncSend(topic, data);
|
||||||
runMaskingRuleInput.setOldStr(audit.toString());
|
log.info("索赔检核文件分析发送回调MQ完成: {}", data);
|
||||||
String corpusChat = dataMaskingRuleService.runMaskingRule(runMaskingRuleInput);
|
}
|
||||||
JSONObject parsedAudit = JSON.parseObject(corpusChat);
|
|
||||||
|
|
||||||
|
|
||||||
DiFyReq diFyReq = new DiFyReq();
|
|
||||||
diFyReq.setUser(BusinessTypeEnum.CLAIM_VERIFICATION.getCode());
|
|
||||||
diFyReq.setFlowId(verificationToken);
|
|
||||||
diFyReq.setInputs(parsedAudit);
|
|
||||||
//调用dify 工作流
|
|
||||||
JSONObject diFyObject = (JSONObject) diFyService.getDiFyObject(diFyReq);
|
|
||||||
//处理结果并推送MQ
|
|
||||||
if (diFyObject == null) {
|
|
||||||
log.error(" 售后索赔检核审计报告dify返回结果为空");
|
|
||||||
throw new RuntimeException(" 售后索赔检核审计报告dify返回结果为空");
|
|
||||||
}else {
|
|
||||||
String warrantyAuditReport = diFyObject.getString("warrantyAuditReport");
|
|
||||||
warrantyAuditReport = StringEscapeUtils.unescapeJava(warrantyAuditReport);
|
|
||||||
JSONObject audiResToAfter = JSON.parseObject(warrantyAuditReport);
|
|
||||||
JSONObject data = new JSONObject();
|
|
||||||
data.put("newBieAfterSalesId", claimVerificationFileAnalysisDTO.getNewBieAfterSalesId());
|
|
||||||
data.put("businessType", claimVerificationFileAnalysisDTO.getBusinessType());
|
|
||||||
data.put("warrantyAuditReport",audiResToAfter);
|
|
||||||
data.put("aiAnalysisRequestId",aiAnalysisRequestId);
|
|
||||||
//返回结果推送到Newbie的MQ
|
|
||||||
rocketMQTemplate.syncSend(topic, data);
|
|
||||||
log.info("索赔检核审计报告发送回调MQ完成: {}", data);
|
|
||||||
//异步更新请求日志表的difyResponse字段
|
//异步更新请求日志表的difyResponse字段
|
||||||
syncUpdateDiFyResponse(diFyObject, aiAnalysisRequestId);
|
syncUpdateDiFyResponse(diFyObject, aiAnalysisRequestId);
|
||||||
//审核次数记录
|
} else if (claimVerificationFileAnalysisDTO.getBusinessType().equals(BusinessTypeEnum.CLAIM_VERIFICATION_AUDIT.getCode())) {
|
||||||
saveAuditCount(claimVerificationFileAnalysisDTO);
|
//审计报告
|
||||||
|
//加载审计规则配置
|
||||||
|
List<AiAnalyticBusinessConfig> aiAnalyticBusinessConfigs = aiAnalyticBusinessConfigMapper.selectList(
|
||||||
|
Wrappers.<AiAnalyticBusinessConfig>lambdaQuery()
|
||||||
|
.eq(AiAnalyticBusinessConfig::getBusinessLine, BusinessTypeEnum.CLAIM_VERIFICATION.getCode())
|
||||||
|
.eq(AiAnalyticBusinessConfig::getConfigType, BusinessTypeEnum.AUDITRULES.getCode())
|
||||||
|
.eq(AiAnalyticBusinessConfig::getIsDeleted, 0)
|
||||||
|
.in(AiAnalyticBusinessConfig::getVerificationMethod, methodList)
|
||||||
|
);
|
||||||
|
String configDataString = aiAnalyticBusinessConfigs.stream()
|
||||||
|
.map(AiAnalyticBusinessConfig::getConfigData)
|
||||||
|
.collect(Collectors.joining(" "));
|
||||||
|
//组装审计报告workflow入参
|
||||||
|
JSONObject parsedAudit = buildAuditToDify(configDataString, claimVerificationFileAnalysisDTO);
|
||||||
|
DiFyReq diFyReq = new DiFyReq();
|
||||||
|
diFyReq.setUser(BusinessTypeEnum.CLAIM_VERIFICATION.getCode());
|
||||||
|
diFyReq.setFlowId(verificationToken);
|
||||||
|
diFyReq.setInputs(parsedAudit);
|
||||||
|
//调用dify 工作流
|
||||||
|
diFyObject = (JSONObject) diFyService.getDiFyObject(diFyReq);
|
||||||
|
//处理结果并推送MQ
|
||||||
|
if (diFyObject == null) {
|
||||||
|
log.error(" 售后索赔检核审计报告dify返回结果为空");
|
||||||
|
throw new RuntimeException(" 售后索赔检核审计报告dify返回结果为空");
|
||||||
|
} else {
|
||||||
|
JSONObject data = getJsonObjectToNewBie(diFyObject, claimVerificationFileAnalysisDTO, aiAnalysisRequestId);
|
||||||
|
//返回结果推送到Newbie的MQ
|
||||||
|
rocketMQTemplate.syncSend(topic, data);
|
||||||
|
log.info("索赔检核审计报告发送回调MQ完成: {}", data);
|
||||||
|
//异步更新请求日志表的difyResponse字段
|
||||||
|
syncUpdateDiFyResponse(diFyObject, aiAnalysisRequestId);
|
||||||
|
//审核次数记录
|
||||||
|
saveAuditCount(claimVerificationFileAnalysisDTO);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("售后索赔检核业务类型错误");
|
||||||
}
|
}
|
||||||
}else {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException("售后索赔检核业务类型错误");
|
log.error("售后索赔检核异常:{}", e.getMessage());
|
||||||
|
//保存错误日志
|
||||||
|
aiAnalysisErrorsMapper.insert(AiAnalysisErrors.builder()
|
||||||
|
.aiAnalysisRequestId(aiAnalysisRequestId)
|
||||||
|
.difyResponse(diFyObject.toString())
|
||||||
|
.aiAnalysisErrorMessage(e.getMessage())
|
||||||
|
.aiAnalysisRequestType(BusinessTypeEnum.CLAIM_VERIFICATION.getCode())
|
||||||
|
.build());
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JSONObject buildAuditToDify(String configDataString, ClaimVerificationFileDTO claimVerificationFileAnalysisDTO) {
|
||||||
|
JSONObject audit = new JSONObject();
|
||||||
|
audit.put("analysisRules", configDataString);
|
||||||
|
audit.put("diagnosticReport", claimVerificationFileAnalysisDTO.getDiagnosticReport().toString());
|
||||||
|
audit.put("preCheckReport", claimVerificationFileAnalysisDTO.getPreCheckReport().toString());
|
||||||
|
audit.put("dtcReport", claimVerificationFileAnalysisDTO.getDtcReport().toString());
|
||||||
|
|
||||||
|
//脱敏处理
|
||||||
|
List<DataMaskingRule> maskingRuleItems = dataMaskingRuleService.getDataMaskingRuleListByApplicationChannel(Constant.CHANNEL_DCC);
|
||||||
|
RunMaskingRuleInput runMaskingRuleInput = new RunMaskingRuleInput();
|
||||||
|
runMaskingRuleInput.setDataMaskingRules(maskingRuleItems);
|
||||||
|
runMaskingRuleInput.setOldStr(audit.toString());
|
||||||
|
String corpusChat = dataMaskingRuleService.runMaskingRule(runMaskingRuleInput);
|
||||||
|
JSONObject parsedAudit = JSON.parseObject(corpusChat);
|
||||||
|
return parsedAudit;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private static JSONObject getJsonObjectToNewBie(JSONObject diFyObject, ClaimVerificationFileDTO claimVerificationFileAnalysisDTO, String aiAnalysisRequestId) {
|
||||||
|
String warrantyAuditReport = diFyObject.getString("warrantyAuditReport");
|
||||||
|
warrantyAuditReport = StringEscapeUtils.unescapeJava(warrantyAuditReport);
|
||||||
|
JSONObject audiResToAfter = JSON.parseObject(warrantyAuditReport);
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
data.put("newBieAfterSalesId", claimVerificationFileAnalysisDTO.getNewBieAfterSalesId());
|
||||||
|
data.put("businessType", claimVerificationFileAnalysisDTO.getBusinessType());
|
||||||
|
data.put("warrantyAuditReport", audiResToAfter);
|
||||||
|
data.put("aiAnalysisRequestId", aiAnalysisRequestId);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private static JSONObject analyzeParameters(JSONObject diFyObject, ClaimVerificationFileDTO claimVerificationFileAnalysisDTO, String aiAnalysisRequestId) {
|
||||||
|
String toAfter = "";
|
||||||
|
String textDoc = diFyObject.getString("textDoc");
|
||||||
|
String textImage = diFyObject.getString("textImage");
|
||||||
|
//判断字符串那个是不为空的然后进行处理
|
||||||
|
if (StringUtils.isNotBlank(textDoc)) {
|
||||||
|
toAfter = StringEscapeUtils.unescapeJava(textDoc);
|
||||||
|
} else if (StringUtils.isNotBlank(textImage)) {
|
||||||
|
toAfter = StringEscapeUtils.unescapeJava(textImage);
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException(" 售后索赔检核文件分析dify返回结果为空");
|
||||||
|
}
|
||||||
|
JSONObject difyToAfter = JSONObject.parseObject(toAfter);
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
data.put("newBieAfterSalesId", claimVerificationFileAnalysisDTO.getNewBieAfterSalesId());
|
||||||
|
data.put("businessType", claimVerificationFileAnalysisDTO.getBusinessType());
|
||||||
|
data.put("fileType", claimVerificationFileAnalysisDTO.getFileType());
|
||||||
|
data.put("fileData", difyToAfter);
|
||||||
|
data.put("aiAnalysisRequestId", aiAnalysisRequestId);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private static JSONObject buildFileToDifyParameter(JSONArray files, ClaimVerificationFileDTO claimVerificationFileAnalysisDTO, List<AiAnalyticBusinessConfig> aiAnalyticBusinessConfigs) {
|
||||||
|
JSONObject fileToDifyDTO = new JSONObject();
|
||||||
|
fileToDifyDTO.put("files", files);
|
||||||
|
//根据类型获取配置内容
|
||||||
|
fileToDifyDTO.put("FileBusinessType", claimVerificationFileAnalysisDTO.getFileType());
|
||||||
|
fileToDifyDTO.put("FileDescription", aiAnalyticBusinessConfigs
|
||||||
|
.stream()
|
||||||
|
.filter(config -> config.getConfigType().equals("FileDescription"))
|
||||||
|
.map(AiAnalyticBusinessConfig::getConfigData)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null));
|
||||||
|
fileToDifyDTO.put("AnalysisRequirements", aiAnalyticBusinessConfigs
|
||||||
|
.stream()
|
||||||
|
.filter(config -> config.getConfigType().equals("AnalysisRequirements"))
|
||||||
|
.map(AiAnalyticBusinessConfig::getConfigData)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null));
|
||||||
|
fileToDifyDTO.put("ReportRequirements", aiAnalyticBusinessConfigs
|
||||||
|
.stream()
|
||||||
|
.filter(config -> config.getConfigType().equals("ReportRequirements"))
|
||||||
|
.map(AiAnalyticBusinessConfig::getConfigData)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null));
|
||||||
|
fileToDifyDTO.put("ReportTemplate", aiAnalyticBusinessConfigs
|
||||||
|
.stream()
|
||||||
|
.filter(config -> config.getConfigType().equals("ReportTemplate"))
|
||||||
|
.map(AiAnalyticBusinessConfig::getConfigData)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null));
|
||||||
|
return fileToDifyDTO;
|
||||||
|
}
|
||||||
|
|
||||||
//异步保存审核次数
|
//异步保存审核次数
|
||||||
@Async
|
@Async
|
||||||
protected void saveAuditCount(ClaimVerificationFileDTO claimVerificationFileAnalysisDTO) {
|
protected void saveAuditCount(ClaimVerificationFileDTO claimVerificationFileAnalysisDTO) {
|
||||||
@@ -263,15 +300,15 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void uploadFileToObs(List<String> fileObsPath, List<HashMap<String, String>> fileIds) {
|
private void uploadFileToObs(List<String> fileObsPath, List<HashMap<String, String>> fileIds) {
|
||||||
if(fileObsPath != null && fileObsPath.size() > 0){
|
if (fileObsPath != null && fileObsPath.size() > 0) {
|
||||||
for (String filePath : fileObsPath) {
|
for (String filePath : fileObsPath) {
|
||||||
HashMap<String,String> fileToDifyDTO = new HashMap<>();
|
HashMap<String, String> fileToDifyDTO = new HashMap<>();
|
||||||
ObsObject obsObject = ObsUtil.downloadFile(filePath);
|
ObsObject obsObject = ObsUtil.downloadFile(filePath);
|
||||||
InputStream inputStream = obsObject.getObjectContent();
|
InputStream inputStream = obsObject.getObjectContent();
|
||||||
MultipartFile file = ObsUtil.getMultipartFile(inputStream, ObsUtil.getFilenameByUrl(filePath));
|
MultipartFile file = ObsUtil.getMultipartFile(inputStream, ObsUtil.getFilenameByUrl(filePath));
|
||||||
log.info("索赔检核文件上传dify请求参数:{},token:{}",file,fileToken);
|
log.info("索赔检核文件上传dify请求参数:{},token:{}", file, fileToken);
|
||||||
JSONObject fileUploadRes = diFyFeign.fileUpload("Bearer "+fileToken,file);
|
JSONObject fileUploadRes = diFyFeign.fileUpload("Bearer " + fileToken, file);
|
||||||
log.info("索赔检核文件上传dify响应结果:{}",fileUploadRes);
|
log.info("索赔检核文件上传dify响应结果:{}", fileUploadRes);
|
||||||
String uploadFileId = fileUploadRes.getString(ClaimVerificationConstant.ID);
|
String uploadFileId = fileUploadRes.getString(ClaimVerificationConstant.ID);
|
||||||
String extension = fileUploadRes.getString(ClaimVerificationConstant.EXTENSION);
|
String extension = fileUploadRes.getString(ClaimVerificationConstant.EXTENSION);
|
||||||
fileToDifyDTO.put(ClaimVerificationConstant.ID, uploadFileId);
|
fileToDifyDTO.put(ClaimVerificationConstant.ID, uploadFileId);
|
||||||
@@ -287,6 +324,7 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService {
|
|||||||
new UpdateWrapper<AiAnalysisRequestLogs>().set("dify_response", difResult.toJSONString())
|
new UpdateWrapper<AiAnalysisRequestLogs>().set("dify_response", difResult.toJSONString())
|
||||||
.eq("ai_analysis_request_id", aiAnalysisRequestId));
|
.eq("ai_analysis_request_id", aiAnalysisRequestId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async
|
@Async
|
||||||
protected void syncSaveRequestLogs(String message, String aiAnalysisRequestId) {
|
protected void syncSaveRequestLogs(String message, String aiAnalysisRequestId) {
|
||||||
aiAnalysisRequestLogsMapper.insert(AiAnalysisRequestLogs.builder()
|
aiAnalysisRequestLogsMapper.insert(AiAnalysisRequestLogs.builder()
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ public class DataMaskingRuleServiceImpl extends ServiceImpl<DataMaskingRuleMappe
|
|||||||
log.info("getDataMaskingRuleListByApplicationChannel {}", applicationChannel);
|
log.info("getDataMaskingRuleListByApplicationChannel {}", applicationChannel);
|
||||||
//根据适用渠道applicationChannel获取数据脱敏规则List
|
//根据适用渠道applicationChannel获取数据脱敏规则List
|
||||||
List<DataMaskingRule> dataMaskingRuleList = this.lambdaQuery()
|
List<DataMaskingRule> dataMaskingRuleList = this.lambdaQuery()
|
||||||
// .eq(DataMaskingRule::getApplicationChannel, applicationChannel)
|
.apply("CONCAT(',', application_channel, ',') LIKE '%," + applicationChannel + ",%'")
|
||||||
|
.eq(DataMaskingRule::getApplicationChannel, applicationChannel)
|
||||||
.eq(DataMaskingRule::getRuleStatus, YesOrNoConstants.YES)
|
.eq(DataMaskingRule::getRuleStatus, YesOrNoConstants.YES)
|
||||||
.eq(DataMaskingRule::getIsDeleted, YesOrNoConstants.NO)
|
.eq(DataMaskingRule::getIsDeleted, YesOrNoConstants.NO)
|
||||||
.list();
|
.list();
|
||||||
|
|||||||
Reference in New Issue
Block a user