Merge remote-tracking branch 'origin/feature/初版/base' into feature/初版/base

This commit is contained in:
刘通
2025-02-18 15:03:36 +08:00
12 changed files with 191 additions and 27 deletions

17
bugs/note.txt Normal file
View File

@@ -0,0 +1,17 @@
BUG
基础指标模版下载报错
数据源指标编辑 这些变量值 没有绑定到界面上接口返回是ok的 ,前端需要改一下
引擎列表 点名称 一直加载中
决策复制版本 ,报错
t_machine_learning_models model_field (模型解析字段) 字段长度太小
ALTER TABLE t_machine_learning_models MODIFY COLUMN model_field varchar(4096) NOT NULL DEFAULT '' COMMENT '模型解析字段';
优化点:
数据中心 / 接口源 / 接口新建 修改 查看 请求地址 输入框加长

View File

@@ -6,8 +6,8 @@ import com.fibo.ddp.common.dao.strategyx.aimodel.MachineLearningModelsMapper;
import com.fibo.ddp.common.model.datax.datamanage.Field;
import com.fibo.ddp.common.model.strategyx.aimodel.MachineLearningModels;
import com.fibo.ddp.common.model.strategyx.aimodel.ModelDTO;
import com.fibo.ddp.common.service.common.CommUtil;
import com.fibo.ddp.common.service.strategyx.aimodel.PMMLExecutor.PMMLExecutor;
import com.fibo.ddp.common.utils.util.CommUtil;
import org.jpmml.evaluator.Evaluator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,7 +60,6 @@ public class LocalCacheService {
@Resource
PMMLExecutor pmmlExecutor;
private static final String VERSION = "2025-02-12 16:30";
private final String startTime = LocalDateTime.now().toString();
@@ -90,7 +89,7 @@ public class LocalCacheService {
public Map<String,Object> getInfo(){
Map<String,Object> info = new HashMap<>();
info.put("VERSION",VERSION);
info.put("VERSION",CommUtil.getVersion());
info.put("startTime",startTime);
info.put("runCount",runCount.longValue());

View File

@@ -32,6 +32,8 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.concurrent.ListenableFuture;
import org.springframework.util.concurrent.ListenableFutureCallback;
import org.springframework.web.client.AsyncRestTemplate;
@@ -244,9 +246,14 @@ public class InterfaceServiceImpl extends ServiceImpl<InterfaceMapper, Interface
// 请求参数中的变量赋值
String requestBody = setRequestBodyParams(interfaceInfo.getRequestBody(), inputParam);
if(HttpMethod.POST.name().equals(interfaceInfo.getMethod())){
final String requestHeaders = interfaceInfo.getRequestHeaders();
if(requestHeaders!=null && requestHeaders.contains(MediaType.APPLICATION_JSON_VALUE)) {
HttpHeaders httpHeaders = new HttpHeaders();
// 设置请求头
httpHeaders.setAll(JSONObject.parseObject(interfaceInfo.getRequestHeaders(), Map.class));
httpHeaders.setAll(JSONObject.parseObject(requestHeaders, Map.class));
// 封装请求体
JSONObject body = JSONObject.parseObject(requestBody);
// 封装参数和头信息
@@ -257,6 +264,30 @@ public class InterfaceServiceImpl extends ServiceImpl<InterfaceMapper, Interface
} else {
listenableFuture = asyncRestTemplate.postForEntity(url, httpEntity, String.class);
}
}else{
HttpHeaders httpHeaders = new HttpHeaders();
// 设置请求头
httpHeaders.setAll(JSONObject.parseObject(interfaceInfo.getRequestHeaders(), Map.class));
// 封装请求体
JSONObject body = JSONObject.parseObject(requestBody);
MultiValueMap<String, Object> bodyMap = new LinkedMultiValueMap<>();
bodyMap.setAll(body);
// 封装参数和头信息
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity(bodyMap, httpHeaders);
// 发送请求
if (callType == 2) {
// 这里调用还是报错 ,已修复
// post http://47.99.93.74:8090/mockapi/hello2?name={name} 会报错
// java.lang.IllegalArgumentException: Not enough variable values available to expand 'name'
responseEntity = restTemplate.postForEntity(url, httpEntity, String.class);
} else {
listenableFuture = asyncRestTemplate.postForEntity(url, httpEntity, String.class);
}
}
} else if(HttpMethod.GET.name().equals(interfaceInfo.getMethod())){
// 封装uri地址路径变量

View File

@@ -75,14 +75,22 @@ public class CommonServiceImpl implements CommonService {
}
SessionData sessionData = RunnerSessionManager.getSession();
Long organId = sessionData.getOrganId();
List<Field> fieldList = fieldService.findFieldByIdsbyorganId(organId, ids);
List<Field> list = new ArrayList<>();
ids = new ArrayList<>();
for (int i = 0; i < fieldList.size(); i++) {
if (fieldList.get(i).getIsDerivative() == 1) {
ids.addAll(StringUtil.toLongList(fieldList.get(i).getOrigFieldId()));
} else
}
// 20250214 bugfix 这个不能放在 else分支里
// 否则后面取不到值
list.add(fieldList.get(i));
}
if (ids.size() > 0) {
List<Field> lists = fieldService.findFieldByIdsbyorganId(organId, ids);
@@ -182,6 +190,9 @@ public class CommonServiceImpl implements CommonService {
map.put(key,value);
}
// 决策选项 测试时 ,这个方法 没被调用
@Override
public Map<String, Object> getFields(List<Field> fields, Map<String, Object> inputParam) {
logger.info("start getEngineField, fields:{},inputParam:{}", JSONObject.toJSONString(fields), JSONObject.toJSONString(inputParam));

View File

@@ -76,6 +76,9 @@ public class PMMLExecutorRFImpl implements PMMLExecutor {
}
Map<FieldName, ?> results = evaluator.evaluate(arguments);
System.out.println("pmml_predict_results: " + results);
List<TargetField> targetFields = evaluator.getTargetFields();
TargetField targetField = targetFields.get(0);
@@ -92,10 +95,10 @@ public class PMMLExecutorRFImpl implements PMMLExecutor {
value_1 = tmpnum.doubleValue();
}
// TODO 不知道啥含义 先注释掉 返回结果
// if (targetFieldValue instanceof ProbabilityDistribution) {
// value_1 = ((ProbabilityDistribution) targetFieldValue).getValue("1");
// }
// TODO 模型取值逻辑待确认
if (targetFieldValue instanceof ProbabilityDistribution) {
value_1 = ((ProbabilityDistribution) targetFieldValue).getValue("1");
}

View File

@@ -13,6 +13,7 @@ public class ServiceFilterConstant {
uriSet.add("/Riskmanage/v2/datamanage/datamanage/downTemplate");// 指标模板下载
uriSet.add("/Riskmanage/v2/datamanage/listmanage/downTemplate");// 名单库模板下载
uriSet.add("/Riskmanage/v3/analyse/decision");
uriSet.add("/Riskmanage/info/status");
}
public static boolean isSessionFilter(String uri) {

View File

@@ -1,8 +1,14 @@
package com.fibo.ddp.common.service.common;
package com.fibo.ddp.common.utils.util;
public class CommUtil {
private static final String VERSION = "2025-02-14 17:00";
public static String getVersion(){
return VERSION;
}
public static void doSleep(long time){
if(time<=0){
return;

View File

@@ -162,6 +162,10 @@ public class JevalUtil {
Object v = variablesMap.get(key);
if(v!=null) {
String variableValue = CommonConst.SYMBOL_SINGLE_QUOTA+v.toString()+CommonConst.SYMBOL_SINGLE_QUOTA;
variablesMap.put(key, variableValue);
}else{
String variableValue = CommonConst.SYMBOL_SINGLE_QUOTA+CommonConst.SYMBOL_SINGLE_QUOTA;
variablesMap.put(key, variableValue);
}
}

View File

@@ -98,7 +98,7 @@ public class RiskEngineBusinessImpl implements RiskEngineBusiness {
logger.info("请求参数paramJson: {}", JSONObject.toJSONString(paramJson));
JSONObject jsonObject = new JSONObject();
JSONArray resultJson = new JSONArray();
Map<String, Map<String, Object>> featureMaps = new ConcurrentHashMap<>();
// Map<String, Map<String, Object>> featureMaps = new ConcurrentHashMap<>();
Long organId = Long.valueOf(paramJson.get("organId").toString());
Long engineId = Long.valueOf(paramJson.get("engineId").toString());
//获取引擎信息
@@ -124,13 +124,18 @@ public class RiskEngineBusinessImpl implements RiskEngineBusiness {
//返回输出结果
Map<String, Object> outMap = new ConcurrentHashMap<>();
// 记录执行前全量指标
featureMaps.put("before", inputParam);
// featureMaps.put("before", inputParam);
logger.info("recursionEngineNode_before_inputParam="+inputParam);
//节点执行方法
recursionEngineNode(inputParam, engineNodeMap.get(engineNode.getNextNodes()), engineNodeMap, outMap);
logger.info("recursionEngineNode_after_inputParam="+inputParam);
jsonObject.put("status", "0x0000");
jsonObject.put("msg", "执行成功");
//记录执行后的全量指标
featureMaps.put("after", inputParam);
// featureMaps.put("after", inputParam);
paramJson.put("versionId", engineNode.getVersionId());
// featureRecordService.recordAllFeature(featureMaps, engine, paramJson);

View File

@@ -0,0 +1,41 @@
package com.fibo.ddp.manager.web.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.message.template.entity.AppTemplate;
import com.fibo.ddp.common.model.common.message.template.vo.AppTemplateReqVo;
import com.fibo.ddp.common.service.common.SessionManager;
import com.fibo.ddp.common.service.common.message.template.AppTemplateService;
import com.fibo.ddp.common.utils.util.CommUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("info")
public class InfoController {
@Autowired
private AppTemplateService appTemplateService;
@RequestMapping("status")
public Object status(HttpServletRequest request){
Map map = new HashMap();
map.put("version", CommUtil.getVersion());
map.put("now", LocalDateTime.now().toString());
return map;
}
}

View File

@@ -77,7 +77,7 @@
<loggers>
<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
<logger name="org.mybatis" level="info" additivity="false">
<logger name="org.mybatis" level="debug" additivity="false">
<AppenderRef ref="Console"/>
</logger>
<!--监控系统信息-->
@@ -86,7 +86,7 @@
<AppenderRef ref="Console"/>
</Logger>
<root level="info">
<root level="debug">
<appender-ref ref="Console"/>
<appender-ref ref="Filelog"/>
<appender-ref ref="RollingFileInfo"/>

View File

@@ -0,0 +1,46 @@
package pmml;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
public class RestTemplateTest {
public static void main(String[] args)throws Exception{
RestTemplate rt = new RestTemplate();
MultiValueMap<String, Object> map= new LinkedMultiValueMap<>();
map.add("name", "tiger");
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 创建HTTP实体
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
// 发送POST请求
String url = "http://47.99.93.74:8090/mockapi/hello2";
String response = rt.postForObject(url, request, String.class);
System.out.println(response);
ResponseEntity<String> responseEntity = rt.postForEntity(url, request, String.class);
System.out.println(responseEntity.getBody());
}
}