dev
youhong.ai 2023-07-06 09:56:25 +08:00
parent a6b7892dd6
commit 99ee2d2245
2 changed files with 121 additions and 70 deletions

View File

@ -1,18 +1,19 @@
package bokang.xiao.response_deal; package bokang.xiao.response_deal;
import aiyh.utils.ScriptUtil;
import aiyh.utils.Util; import aiyh.utils.Util;
import aiyh.utils.excention.CustomerException; import aiyh.utils.excention.CustomerException;
import aiyh.utils.httpUtil.ResponeVo; import aiyh.utils.httpUtil.ResponeVo;
import bokang.xiao.entity.FieldDefinition; import aiyh.utils.tool.cn.hutool.core.collection.CollectionUtil;
import aiyh.utils.tool.cn.hutool.core.util.StrUtil;
import bokang.xiao.exception.ResponseException; import bokang.xiao.exception.ResponseException;
import bokang.xiao.response_deal.entity.ResponseConfig; import bokang.xiao.response_deal.entity.ResponseConfig;
import bokang.xiao.response_deal.entity.ResponseConfigAlias;
import bokang.xiao.response_deal.entity.ResponseConfigValueChange; import bokang.xiao.response_deal.entity.ResponseConfigValueChange;
import bokang.xiao.response_deal.mapper.ConfigMapper; import bokang.xiao.response_deal.mapper.ConfigMapper;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -22,71 +23,119 @@ import java.util.stream.Collectors;
* @Description <h1></h1> * @Description <h1></h1>
**/ **/
public class ResponseMappingDeal { public class ResponseMappingDeal {
private final Logger logger = Util.getLogger("json-util"); private final Logger logger = Util.getLogger("json-util");
private final ConfigMapper configMapper = Util.getMapper(ConfigMapper.class); private final ConfigMapper configMapper = Util.getMapper(ConfigMapper.class);
public void getConfig(String uniqueCode,ResponeVo responeVo){ public void parseConfig(String uniqueCode, ResponeVo responeVo) {
List<ResponseConfig> responseConfigList = configMapper.queryResponseConfigByUnique(uniqueCode); if (responeVo.getCode() != 200) {
if(Objects.isNull(responseConfigList) || responseConfigList.isEmpty()){ throw new CustomerException("你妈没成功");
throw new ResponseException("response config is empty please check!!! "); }
}
Map<String, ResponseConfig> tableNameConfig; List<ResponseConfig> responseConfigs = configMapper.queryResponseConfigByUnique(uniqueCode);
try {
tableNameConfig = responseConfigList.stream().collect(Collectors.toMap(ResponseConfig::getModelTableName, v -> v)); if (CollectionUtil.isEmpty(responseConfigs)) {
}catch (Exception e){ throw new CustomerException("sb");
logger.error("response config error please check!!! "+Util.getErrString(e)); }
throw new ResponseException("response config error please check!!! "); for (ResponseConfig responseConfig : responseConfigs) {
} parseConfigOne(responseConfig, responeVo);
tableNameConfig.entrySet().stream().forEach(item ->{ }
dealConfig(item.getValue(),responeVo); }
});
} private void parseConfigOne(ResponseConfig responseConfig, ResponeVo responeVo) {
List<ResponseConfigAlias> responseConfigAliasList = responseConfig.getResponseConfigAliasList();
public void dealConfig(ResponseConfig responseConfig, ResponeVo responeVo){ String successExp = responseConfig.getSuccessExp();
List<ResponseConfigValueChange> valueChangeList = responseConfig.getValueChangeList(); Map<String, Object> responseMap = responeVo.getResponseMap();
if(Objects.isNull(valueChangeList) || valueChangeList.isEmpty()){ List<Map<String, Object>> resultList = new ArrayList<>();
throw new ResponseException("valueChangeList config is empty please check!!!"); if (CollectionUtil.isEmpty(responseMap)) {
} // 他是一个list尝试获取一下
Map<Integer, List<ResponseConfigValueChange>> tableTypeMap = valueChangeList.stream().collect(Collectors.groupingBy(ResponseConfigValueChange::getTableType)); List<Map> result = responeVo.getResult();
List<ResponseConfigValueChange> mainConfig = tableTypeMap.get(0); if (CollectionUtil.isEmpty(result)) {
Map<String, List<ResponseConfigValueChange>> collect = mainConfig.stream().collect(Collectors.groupingBy(ResponseConfigValueChange::getAssignTable)); throw new CustomerException("没有响应结果你同步个J8");
if(collect.size() > 1){ } else {
throw new ResponseException("The primary table cannot have details please check!!! "); for (Map map : result) {
} Map<String, Object> tempMap = new HashMap<>();
//Map<String, Object> responseMap = responeVo.getResponseMap(); for (Object entry : map.entrySet()) {
//Map<Util.ValueOrList,List<FieldDefinition>> mainFieldMap = new HashMap<>();
//for (ResponseConfigValueChange responseConfigValueChange : mainConfig) { }
// String valuePath = responseConfigValueChange.getValuePath(); resultList.add(tempMap);
// Util.ValueOrList valueOrListByKeyStr = Util.getValueOrListByKeyStr(valuePath, responseMap); }
// if(valueOrListByKeyStr.isArray() && !mainFieldMap.isEmpty() && !mainFieldMap.containsKey(valueOrListByKeyStr)){ }
// throw new ResponseException("The primary table cannot contain multiple List data please check!!!"); } else {
// }else if(valueOrListByKeyStr.isArray() && mainFieldMap.isEmpty()){ resultList.add(responseMap);
// List<Map<String, Object>> listValue = (List<Map<String, Object>>) valueOrListByKeyStr.getValue(); }
// List<FieldDefinition> fieldDefinitions = listValue.stream().map(item -> FieldDefinition.builder().build()).collect(Collectors.toList()); if (StrUtil.isNotBlank(successExp)) {
// mainFieldMap.put(valueOrListByKeyStr,fieldDefinitions); for (Map<String, Object> map : resultList) {
// }else if(valueOrListByKeyStr.isArray()){ boolean flag = (boolean) ScriptUtil.invokeScript(successExp, map);
// List<FieldDefinition> fieldDefinitions = mainFieldMap.get(valueOrListByKeyStr); if (!flag) {
// } throw new CustomerException("失败了!");
//} }
//mainConfig.stream().map(item ->{ }
// }
//})
List<ResponseConfigValueChange> detail = tableTypeMap.get(1);
Map<String, List<ResponseConfigValueChange>> tableValueMap = valueChangeList.stream().collect(Collectors.groupingBy(ResponseConfigValueChange::getAssignTable)); }
} public void getConfig(String uniqueCode, ResponeVo responeVo) {
List<ResponseConfig> responseConfigList = configMapper.queryResponseConfigByUnique(uniqueCode);
public void responseToEntity(ResponseConfigValueChange responseConfigValueChange,Map<String,Object> param){ if (Objects.isNull(responseConfigList) || responseConfigList.isEmpty()) {
String valuePath = responseConfigValueChange.getValuePath(); throw new ResponseException("response config is empty please check!!! ");
Util.ValueOrList valueOrListByKeyStr = Util.getValueOrListByKeyStr(valuePath, param); }
Map<String, ResponseConfig> tableNameConfig;
} try {
tableNameConfig = responseConfigList.stream().collect(Collectors.toMap(ResponseConfig::getModelTableName, v -> v));
} catch (Exception e) {
logger.error("response config error please check!!! " + Util.getErrString(e));
throw new ResponseException("response config error please check!!! ");
}
tableNameConfig.entrySet().stream().forEach(item -> {
dealConfig(item.getValue(), responeVo);
});
}
public void dealConfig(ResponseConfig responseConfig, ResponeVo responeVo) {
List<ResponseConfigValueChange> valueChangeList = responseConfig.getValueChangeList();
if (Objects.isNull(valueChangeList) || valueChangeList.isEmpty()) {
throw new ResponseException("valueChangeList config is empty please check!!!");
}
Map<Integer, List<ResponseConfigValueChange>> tableTypeMap = valueChangeList.stream().collect(Collectors.groupingBy(ResponseConfigValueChange::getTableType));
List<ResponseConfigValueChange> mainConfig = tableTypeMap.get(0);
Map<String, List<ResponseConfigValueChange>> collect = mainConfig.stream().collect(Collectors.groupingBy(ResponseConfigValueChange::getAssignTable));
if (collect.size() > 1) {
throw new ResponseException("The primary table cannot have details please check!!! ");
}
// Map<String, Object> responseMap = responeVo.getResponseMap();
// Map<Util.ValueOrList,List<FieldDefinition>> mainFieldMap = new HashMap<>();
// for (ResponseConfigValueChange responseConfigValueChange : mainConfig) {
// String valuePath = responseConfigValueChange.getValuePath();
// Util.ValueOrList valueOrListByKeyStr = Util.getValueOrListByKeyStr(valuePath, responseMap);
// if(valueOrListByKeyStr.isArray() && !mainFieldMap.isEmpty() && !mainFieldMap.containsKey(valueOrListByKeyStr)){
// throw new ResponseException("The primary table cannot contain multiple List data please check!!!");
// }else if(valueOrListByKeyStr.isArray() && mainFieldMap.isEmpty()){
// List<Map<String, Object>> listValue = (List<Map<String, Object>>) valueOrListByKeyStr.getValue();
// List<FieldDefinition> fieldDefinitions = listValue.stream().map(item -> FieldDefinition.builder().build()).collect(Collectors.toList());
// mainFieldMap.put(valueOrListByKeyStr,fieldDefinitions);
// }else if(valueOrListByKeyStr.isArray()){
// List<FieldDefinition> fieldDefinitions = mainFieldMap.get(valueOrListByKeyStr);
// }
//}
// mainConfig.stream().map(item ->{
//
//})
List<ResponseConfigValueChange> detail = tableTypeMap.get(1);
Map<String, List<ResponseConfigValueChange>> tableValueMap = valueChangeList.stream().collect(Collectors.groupingBy(ResponseConfigValueChange::getAssignTable));
}
public void responseToEntity(ResponseConfigValueChange responseConfigValueChange, Map<String, Object> param) {
String valuePath = responseConfigValueChange.getValuePath();
Util.ValueOrList valueOrListByKeyStr = Util.getValueOrListByKeyStr(valuePath, param);
}
} }

View File

@ -35,6 +35,8 @@ public class ResponseConfig {
/** 模型表名称 */ /** 模型表名称 */
@SqlOracleDbFieldAnn("model_table_name") @SqlOracleDbFieldAnn("model_table_name")
private String modelTableName; private String modelTableName;
private String successExp;
private List<ResponseConfigAlias> responseConfigAliasList; private List<ResponseConfigAlias> responseConfigAliasList;