修复switchs函数数据问题

This commit is contained in:
钱涛 2023-09-19 11:24:41 +08:00
parent 88a59d3d01
commit d9c56a0da4
1 changed files with 433 additions and 431 deletions

View File

@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
/**
* @className
@ -19,477 +20,478 @@ import java.util.List;
* @Author
* @date
*/
public class LogicServiceImpl implements LogicService {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public DataType not(Object... objects) {
DataType resultdataType=new DataType();
resultdataType.setDataType(DataType.BOOL);
Class[] typeObjects=new Class[]{boolean.class};
IgnoreParamFilter.commonFilter("NOT",1,1,typeObjects,objects);
Object object=objects[0];
if(object == null){
resultdataType.setContent(false);
return resultdataType;
}
Boolean cnd;
if(object instanceof DataType){
DataType dataType=(DataType)object;
cnd=dataType.getContent()!=null?((Boolean) dataType.getContent()):false;
}else{
cnd=(boolean)object;
}
public class LogicServiceImpl implements LogicService {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
resultdataType.setContent(!cnd);
return resultdataType;
}
@Override
public DataType not(Object... objects) {
DataType resultdataType = new DataType();
resultdataType.setDataType(DataType.BOOL);
Class[] typeObjects = new Class[]{boolean.class};
IgnoreParamFilter.commonFilter("NOT", 1, 1, typeObjects, objects);
Object object = objects[0];
if (object == null) {
resultdataType.setContent(false);
return resultdataType;
}
Boolean cnd;
if (object instanceof DataType) {
DataType dataType = (DataType) object;
cnd = dataType.getContent() != null ? ((Boolean) dataType.getContent()) : false;
} else {
cnd = (boolean) object;
}
@Override
public DataType isEmpty(Object... objs) {
int number=IgnoreParamFilter.getSetFuncNumber(FuncNames.ISEMPTY.toString());
if(objs.length!=1){
throw new RuntimeException("ISEMPTY函数只允许一个参数");
}
boolean result=false;
if(null==objs||objs.length==0){
DataType dataType=new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(true);
return dataType;
}
for(int i=0;i<objs.length;i++){
Object obj=objs[i];
if(obj == null){
DataType dataType=new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(true);
return dataType;
}
if(obj instanceof DataType){
DataType objDataType=(DataType)obj;
if(objDataType.getDataType().equalsIgnoreCase(DataType.NUMBER)){
Object numberContent=objDataType.getContent();
if(numberContent==null||numberContent.toString().equalsIgnoreCase("")){
result= true;
break;
}
}
}
obj= ExcelParamUtil.getParamContent(obj,"");
if(null==obj||null==ExcelParamUtil.getParamContent(obj,"")||ExcelParamUtil.getParamContent(obj,"").equals("")){
result= true;
break;
}
}
DataType dataType=new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(result);
return dataType;
}
resultdataType.setContent(!cnd);
return resultdataType;
}
@Override
public DataType isTrue(Object... objects){
int number=IgnoreParamFilter.getSetFuncNumber(FuncNames.TRUE.toString());
if(objects.length>0){
throw new RuntimeException("TRUE函数不能有参数");
}
DataType dataType=new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(true);
return dataType;
}
@Override
public DataType isFalse(Object... objects){
int number=IgnoreParamFilter.getSetFuncNumber(FuncNames.FALSE.toString());
if(objects.length>0){
JSONObject errorJson=ErrorUtil.buildError(FuncNames.FALSE.toString(),number,number,"FALSE函数不能有参数");
throw new RuntimeException(errorJson.getString("msg"));
}
DataType dataType=new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(false);
return dataType;
}
@Override
public DataType isEmpty(Object... objs) {
int number = IgnoreParamFilter.getSetFuncNumber(FuncNames.ISEMPTY.toString());
if (objs.length != 1) {
throw new RuntimeException("ISEMPTY函数只允许一个参数");
}
boolean result = false;
if (null == objs || objs.length == 0) {
DataType dataType = new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(true);
return dataType;
}
for (int i = 0; i < objs.length; i++) {
Object obj = objs[i];
if (obj == null) {
DataType dataType = new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(true);
return dataType;
}
if (obj instanceof DataType) {
DataType objDataType = (DataType) obj;
if (objDataType.getDataType().equalsIgnoreCase(DataType.NUMBER)) {
Object numberContent = objDataType.getContent();
if (numberContent == null || numberContent.toString().equalsIgnoreCase("")) {
result = true;
break;
}
}
}
obj = ExcelParamUtil.getParamContent(obj, "");
if (null == obj || null == ExcelParamUtil.getParamContent(obj, "") || ExcelParamUtil.getParamContent(obj, "").equals("")) {
result = true;
break;
}
}
DataType dataType = new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(result);
return dataType;
}
@Override
public DataType isTrue(Object... objects) {
int number = IgnoreParamFilter.getSetFuncNumber(FuncNames.TRUE.toString());
if (objects.length > 0) {
throw new RuntimeException("TRUE函数不能有参数");
}
DataType dataType = new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(true);
return dataType;
}
@Override
public DataType isFalse(Object... objects) {
int number = IgnoreParamFilter.getSetFuncNumber(FuncNames.FALSE.toString());
if (objects.length > 0) {
JSONObject errorJson = ErrorUtil.buildError(FuncNames.FALSE.toString(), number, number, "FALSE函数不能有参数");
throw new RuntimeException(errorJson.getString("msg"));
}
DataType dataType = new DataType();
dataType.setDataType(DataType.BOOL);
dataType.setContent(false);
return dataType;
}
@Override
public DataType and(Object... objs) {
IgnoreParamFilter.filterLogicAndORFunc(objs,"AND");
Object result;
int trueCount=0;
int falseCount=0;
DataType dataType=new DataType();
for(int i=0;i<objs.length;i++){
boolean bool;
if(objs[i] instanceof DataType){
DataType paramdataType=(DataType)objs[i];
bool=paramdataType.getContent()!=null?((Boolean) paramdataType.getContent()):false;
//如果参数存在底层Logic运算把运算记录加入到当前AND函数的运算记录中
if(paramdataType.getSubLogic()!=null && paramdataType.getSubLogic().size()>0){
dataType.getSubLogic().addAll(paramdataType.getSubLogic());
}
}else{
bool=(boolean)objs[i];
}
@Override
public DataType and(Object... objs) {
IgnoreParamFilter.filterLogicAndORFunc(objs, "AND");
Object result;
int trueCount = 0;
int falseCount = 0;
DataType dataType = new DataType();
for (int i = 0; i < objs.length; i++) {
boolean bool;
if (objs[i] instanceof DataType) {
DataType paramdataType = (DataType) objs[i];
bool = paramdataType.getContent() != null ? ((Boolean) paramdataType.getContent()) : false;
//如果参数存在底层Logic运算把运算记录加入到当前AND函数的运算记录中
if (paramdataType.getSubLogic() != null && paramdataType.getSubLogic().size() > 0) {
dataType.getSubLogic().addAll(paramdataType.getSubLogic());
}
} else {
bool = (boolean) objs[i];
}
if(bool){
trueCount++;
}else{
falseCount++;
}
}
if(trueCount==objs.length){
result= true;
}else{
result= false;
}
if (bool) {
trueCount++;
} else {
falseCount++;
}
}
if (trueCount == objs.length) {
result = true;
} else {
result = false;
}
dataType.setDataType(DataType.BOOL);
dataType.setContent(result);
dataType.getSubLogic().add("and");
dataType.setDataType(DataType.BOOL);
dataType.setContent(result);
dataType.getSubLogic().add("and");
LogicUtils.buildAndOrFilterParam("AND",dataType,objs);
return dataType;
}
LogicUtils.buildAndOrFilterParam("AND", dataType, objs);
return dataType;
}
@Override
public DataType or(Object... objs) {
IgnoreParamFilter.filterLogicAndORFunc(objs,"OR");
Object result;
int trueCount=0;
int falseCount=0;
DataType dataType=new DataType();
for(int i=0;i<objs.length;i++){
boolean bool;
if(objs[i] instanceof DataType){
DataType paramdataType=(DataType)objs[i];
bool=paramdataType.getContent()!=null?((Boolean) paramdataType.getContent()):false;
//如果参数存在底层Logic运算把运算记录加入到当前AND函数的运算记录中
if(paramdataType.getSubLogic()!=null && paramdataType.getSubLogic().size()>0){
dataType.getSubLogic().addAll(paramdataType.getSubLogic());
}
}else{
bool=(boolean)objs[i];
}
if(bool){
trueCount++;
}else{
falseCount++;
}
}
if(trueCount>0){
result= true;
}else{
result= false;
}
@Override
public DataType or(Object... objs) {
IgnoreParamFilter.filterLogicAndORFunc(objs, "OR");
Object result;
int trueCount = 0;
int falseCount = 0;
DataType dataType = new DataType();
for (int i = 0; i < objs.length; i++) {
boolean bool;
if (objs[i] instanceof DataType) {
DataType paramdataType = (DataType) objs[i];
bool = paramdataType.getContent() != null ? ((Boolean) paramdataType.getContent()) : false;
//如果参数存在底层Logic运算把运算记录加入到当前AND函数的运算记录中
if (paramdataType.getSubLogic() != null && paramdataType.getSubLogic().size() > 0) {
dataType.getSubLogic().addAll(paramdataType.getSubLogic());
}
} else {
bool = (boolean) objs[i];
}
if (bool) {
trueCount++;
} else {
falseCount++;
}
}
if (trueCount > 0) {
result = true;
} else {
result = false;
}
dataType.setDataType(DataType.BOOL);
dataType.setContent(result);
dataType.getSubLogic().add("or");
LogicUtils.buildAndOrFilterParam("OR",dataType,objs);
return dataType;
}
dataType.setDataType(DataType.BOOL);
dataType.setContent(result);
dataType.getSubLogic().add("or");
LogicUtils.buildAndOrFilterParam("OR", dataType, objs);
return dataType;
}
@Override
public DataType likeFunc(Object... objects) {
IgnoreParamFilter.filterLikeFunc(objects);
Object object = objects[0];
Object result = false;
String txtS = "";
if (object instanceof DataType) {
txtS = ExcelParamUtil.getParamContent(object, "string").toString();
} else {
txtS = object.toString();
}
if (null == txtS || txtS.trim().equals("")) {
return new DataType(DataType.BOOL, false);
}
Object[] partamArray = (Object[]) objects[1];
for (int i = 0; i < partamArray.length; i++) {
Object cnd = partamArray[i];
String cndStr = "";
if (cnd instanceof DataType) {
DataType cndJson = (DataType) cnd;
cndStr = ExcelParamUtil.getParamContent(cndJson, "string").toString();
} else {
cndStr = cnd.toString();
}
@Override
public DataType likeFunc(Object... objects) {
IgnoreParamFilter.filterLikeFunc(objects);
Object object=objects[0];
Object result=false;
String txtS="";
if(object instanceof DataType){
txtS=ExcelParamUtil.getParamContent(object,"string").toString();
}else {
txtS=object.toString();
}
if(null==txtS||txtS.trim().equals("")){
return new DataType(DataType.BOOL,false);
}
Object[] partamArray=(Object[])objects[1];
for(int i=0;i<partamArray.length;i++){
Object cnd=partamArray[i];
String cndStr="";
if(cnd instanceof DataType){
DataType cndJson=(DataType)cnd;
cndStr=ExcelParamUtil.getParamContent(cndJson,"string").toString();
}else {
cndStr=cnd.toString();
}
int ridx=txtS.indexOf(cndStr);
if(ridx>=0?true:false){
result=ridx>=0?true:false;
break;
}
int ridx = txtS.indexOf(cndStr);
if (ridx >= 0 ? true : false) {
result = ridx >= 0 ? true : false;
break;
}
}
DataType dataType=new DataType(DataType.BOOL,result);
LogicUtils.buildLikeFilterParam(dataType,objects);
return dataType;
}
}
DataType dataType = new DataType(DataType.BOOL, result);
LogicUtils.buildLikeFilterParam(dataType, objects);
return dataType;
}
@Override
public DataType ifs(Object... objects) {
int number=IgnoreParamFilter.getSetFuncNumber(FuncNames.IFS.toString());
if(objects.length==0 || objects.length%2!=1 || objects.length<3){
JSONObject errorJson=ErrorUtil.buildError(FuncNames.IFS.toString(),number,number,"IFS函数的参数必须大于3个且为单数");
throw new RuntimeException(errorJson.getString("msg"));
}
int testI;
for(testI=1;testI<=objects.length;testI++){
if(testI%2>0 && testI!=objects.length){
Object cndObj=objects[testI-1];
if(!(cndObj instanceof Boolean) && !(cndObj instanceof DataType)){
JSONObject errorJson= ErrorUtil.buildError(FuncNames.IFS.toString(),number,number,"IFS函数条件必须为真假值");
throw new RuntimeException(errorJson.getString("msg"));
}else if(cndObj instanceof DataType){
DataType boolDataType=(DataType)cndObj;
if(boolDataType.getContent()!=null && !(boolDataType.getContent() instanceof Boolean)){
JSONObject errorJson=ErrorUtil.buildError(FuncNames.IFS.toString(),number,number,"IFS函数条件必须为真假值");
throw new RuntimeException(errorJson.getString("msg"));
}
}
}
}
@Override
public DataType ifs(Object... objects) {
int number = IgnoreParamFilter.getSetFuncNumber(FuncNames.IFS.toString());
if (objects.length == 0 || objects.length % 2 != 1 || objects.length < 3) {
JSONObject errorJson = ErrorUtil.buildError(FuncNames.IFS.toString(), number, number, "IFS函数的参数必须大于3个且为单数");
throw new RuntimeException(errorJson.getString("msg"));
}
int testI;
for (testI = 1; testI <= objects.length; testI++) {
if (testI % 2 > 0 && testI != objects.length) {
Object cndObj = objects[testI - 1];
if (!(cndObj instanceof Boolean) && !(cndObj instanceof DataType)) {
JSONObject errorJson = ErrorUtil.buildError(FuncNames.IFS.toString(), number, number, "IFS函数条件必须为真假值");
throw new RuntimeException(errorJson.getString("msg"));
} else if (cndObj instanceof DataType) {
DataType boolDataType = (DataType) cndObj;
if (boolDataType.getContent() != null && !(boolDataType.getContent() instanceof Boolean)) {
JSONObject errorJson = ErrorUtil.buildError(FuncNames.IFS.toString(), number, number, "IFS函数条件必须为真假值");
throw new RuntimeException(errorJson.getString("msg"));
}
}
}
}
boolean paramCheck=checkParamType(objects);
if(!paramCheck){
JSONObject errorJson=ErrorUtil.buildError(FuncNames.IFS.toString(),number,number,"IFS函数多个条件的返回值必须一致");
throw new RuntimeException(errorJson.getString("msg"));
}
boolean paramCheck = checkParamType(objects);
if (!paramCheck) {
JSONObject errorJson = ErrorUtil.buildError(FuncNames.IFS.toString(), number, number, "IFS函数多个条件的返回值必须一致");
throw new RuntimeException(errorJson.getString("msg"));
}
int i;
for(i=1;i<=objects.length;i++){
if(i%2==0){
Object cndObj=objects[i-2];
if(cndObj instanceof Boolean){
Boolean cnd=(Boolean)cndObj;
if(cnd){
if(objects[i-1] instanceof DataType){
return (DataType) objects[i-1];
}else{
return new DataType(DataType.returnType(ExcelParamUtil.getParamType(objects[i-1].getClass().getName())),objects[i-1]);
}
int i;
for (i = 1; i <= objects.length; i++) {
if (i % 2 == 0) {
Object cndObj = objects[i - 2];
if (cndObj instanceof Boolean) {
Boolean cnd = (Boolean) cndObj;
if (cnd) {
if (objects[i - 1] instanceof DataType) {
return (DataType) objects[i - 1];
} else {
return new DataType(DataType.returnType(ExcelParamUtil.getParamType(objects[i - 1].getClass().getName())), objects[i - 1]);
}
// return new DataType(DataType.BOOL,objects[i-1]);
}
}else if(cndObj instanceof DataType){
DataType boolData=(DataType)cndObj;
Boolean cnd=boolData.getContent()!=null?( (Boolean)boolData.getContent() ) : false;
if(cnd){
if(objects[i-1] instanceof DataType){
return (DataType) objects[i-1];
}else {
return new DataType(DataType.returnType(ExcelParamUtil.getParamType(objects[i-1].getClass().getName())),objects[i-1]);
}
}
} else if (cndObj instanceof DataType) {
DataType boolData = (DataType) cndObj;
Boolean cnd = boolData.getContent() != null ? ((Boolean) boolData.getContent()) : false;
if (cnd) {
if (objects[i - 1] instanceof DataType) {
return (DataType) objects[i - 1];
} else {
return new DataType(DataType.returnType(ExcelParamUtil.getParamType(objects[i - 1].getClass().getName())), objects[i - 1]);
}
}
}
}
}
//如果没有条件符合返回默认值最后一个参数为默认值
Object result=ExcelParamUtil.getParamContent(objects[objects.length-1],"");
if(result instanceof DataType){
return (DataType)result;
}else{
return new DataType(DataType.returnType(ExcelParamUtil.getParamType(result.getClass().getName())),result);
}
}
}
}
}
//如果没有条件符合返回默认值最后一个参数为默认值
Object result = ExcelParamUtil.getParamContent(objects[objects.length - 1], "");
if (result instanceof DataType) {
return (DataType) result;
} else {
return new DataType(DataType.returnType(ExcelParamUtil.getParamType(result.getClass().getName())), result);
}
}
}
@Override
public DataType find(Object... objects) {
@Override
public DataType find(Object... objects) {
return new DataType(DataType.BOOL,finds(objects));
}
return new DataType(DataType.BOOL, finds(objects));
}
@Override
public DataType switchs(Object... objects) {
if(objects.length==0||objects==null){
throw new RuntimeException("参数不能为空");
}
if(objects.length<4){
throw new RuntimeException("switch函数的参数长度必须大于4个");
}
if(objects.length%2!=0){
throw new RuntimeException("switch函数的参数长度必须为双数");
}
Object source=objects[0];
Object defaultValue=objects[objects.length-1];
if(source instanceof DataType){
source=ExcelParamUtil.getParamContent(source,"");
}
if(defaultValue instanceof DataType){
defaultValue=ExcelParamUtil.getParamContent(defaultValue,"");
}
Object result=null;
for (int i=1;i<objects.length-1;i++){
if(i%2!=0){
Object param=objects[i];
Object value=null;
if(param instanceof DataType){
value=ExcelParamUtil.getParamContent(param,"");
}else{
value=param;
}
if(source.equals(value)){
result=objects[i+1];
break;
}
}
}
if(result==null){
result=defaultValue;
}
@Override
public DataType switchs(Object... objects) {
if (objects == null || objects.length == 0) {
throw new RuntimeException("参数不能为空");
}
if (objects.length < 4) {
throw new RuntimeException("switch函数的参数长度必须大于4个");
}
if (objects.length % 2 != 0) {
throw new RuntimeException("switch函数的参数长度必须为双数");
}
Object source = objects[0];
Object defaultValue = objects[objects.length - 1];
if (source instanceof DataType) {
source = ExcelParamUtil.getParamContent(source, "");
}
if (defaultValue instanceof DataType) {
defaultValue = ExcelParamUtil.getParamContent(defaultValue, "");
}
Object result = null;
for (int i = 1; i < objects.length - 1; i++) {
if (i % 2 != 0) {
Object param = objects[i];
Object value = null;
if (param instanceof DataType) {
value = ExcelParamUtil.getParamContent(param, "");
} else {
value = param;
}
if (Objects.equals(source.toString(),value.toString())) {
result = objects[i + 1];
break;
}
}
}
if (result == null) {
result = defaultValue;
}
return new DataType(DataType.BOOL,result);
}
return new DataType(DataType.BOOL, result);
}
public Boolean finds(Object... objects){
public Boolean finds(Object... objects) {
if(null==objects || objects.length<2){
throw new RuntimeException("参数不能为空");
}
if (null == objects || objects.length < 2) {
throw new RuntimeException("参数不能为空");
}
//获取查找类型 1用第二个参数去第一个里面找2用第一个参数去第二个里面找
String type=null;
int vali=2;
if(objects.length>=3 ){
if(objects[objects.length-1] instanceof Integer){
vali=Integer.parseInt(objects[objects.length-1].toString());
if(vali!=1&&vali!=2){
throw new RuntimeException("FIND函数第三个参数只允许1和2");
}
}else{
throw new RuntimeException("FIND函数第三个参数只允许1和2");
}
}
//获取查找类型 1用第二个参数去第一个里面找2用第一个参数去第二个里面找
String type = null;
int vali = 2;
if (objects.length >= 3) {
if (objects[objects.length - 1] instanceof Integer) {
vali = Integer.parseInt(objects[objects.length - 1].toString());
if (vali != 1 && vali != 2) {
throw new RuntimeException("FIND函数第三个参数只允许1和2");
}
} else {
throw new RuntimeException("FIND函数第三个参数只允许1和2");
}
}
//将参数转换成List要判断参数是数组还是单个对象
List<Object> objs1=null;
List<Object> objs2=null;
if(objects[0] instanceof Object[]){
Object[] transObj=(Object[])objects[0];
objs1=Arrays.asList(transObj);
}else{
objs1=Arrays.asList(objects[0]);
}
if(objects[1] instanceof Object[]){
Object[] transObj=(Object[])objects[1];
objs2=Arrays.asList(transObj);
}else{
objs2=Arrays.asList(objects[1]);
}
//将参数转换成List要判断参数是数组还是单个对象
List<Object> objs1 = null;
List<Object> objs2 = null;
if (objects[0] instanceof Object[]) {
Object[] transObj = (Object[]) objects[0];
objs1 = Arrays.asList(transObj);
} else {
objs1 = Arrays.asList(objects[0]);
}
if (objects[1] instanceof Object[]) {
Object[] transObj = (Object[]) objects[1];
objs2 = Arrays.asList(transObj);
} else {
objs2 = Arrays.asList(objects[1]);
}
if(objs1.size()==0 || objs2.size() == 0 ){
throw new RuntimeException("参数不能为空");
}
if (objs1.size() == 0 || objs2.size() == 0) {
throw new RuntimeException("参数不能为空");
}
//判断参数类型是否一致
List<Object> all=new ArrayList<>();
all.addAll(objs1);
all.addAll(objs2);
for (Object obj:all){
String localType="";
if(obj instanceof DataType){
String paramType=ExcelParamUtil.getParamType(obj);
if(!paramType.toLowerCase().equals("option")){
localType=ExcelParamUtil.checkParamType(paramType);
}else{
localType=paramType;
}
}else{
localType=ExcelParamUtil.checkParamType(ExcelParamUtil.getParamType(obj.getClass().getName()));
}
if(type==null){
type=localType;
}else{
if(!type.equalsIgnoreCase(localType)){
throw new RuntimeException("参数类型不一致");
}
}
}
//判断参数类型是否一致
List<Object> all = new ArrayList<>();
all.addAll(objs1);
all.addAll(objs2);
for (Object obj : all) {
String localType = "";
if (obj instanceof DataType) {
String paramType = ExcelParamUtil.getParamType(obj);
if (!paramType.toLowerCase().equals("option")) {
localType = ExcelParamUtil.checkParamType(paramType);
} else {
localType = paramType;
}
} else {
localType = ExcelParamUtil.checkParamType(ExcelParamUtil.getParamType(obj.getClass().getName()));
}
if (type == null) {
type = localType;
} else {
if (!type.equalsIgnoreCase(localType)) {
throw new RuntimeException("参数类型不一致");
}
}
}
//根据超找类型判断谁是查找目标谁是查找依据
List<Object> targetList=new ArrayList<>();
List<Object> keyList=new ArrayList<>();
switch (vali){
case 1:
targetList=transOptionData(objs1);
keyList=transOptionData(objs2);
break;
case 2:
targetList=transOptionData(objs2);
keyList=transOptionData(objs1);
break;
default:
throw new RuntimeException("查找类型错误");
}
//根据超找类型判断谁是查找目标谁是查找依据
List<Object> targetList = new ArrayList<>();
List<Object> keyList = new ArrayList<>();
switch (vali) {
case 1:
targetList = transOptionData(objs1);
keyList = transOptionData(objs2);
break;
case 2:
targetList = transOptionData(objs2);
keyList = transOptionData(objs1);
break;
default:
throw new RuntimeException("查找类型错误");
}
for (Object keyO:keyList){
for (Object target:targetList){
if(keyO.equals(target)){
return true;
}
}
}
for (Object keyO : keyList) {
for (Object target : targetList) {
if (keyO.equals(target)) {
return true;
}
}
}
return false;
}
return false;
}
private List<Object> transOptionData(List<Object> dataList){
List<Object> contentArrays=new ArrayList<>();
for (Object data:dataList){
Object param1=ExcelParamUtil.getParamContent(data,"");
//获取依据数据的类型
String keyType="";
if(data instanceof DataType){
keyType=ExcelParamUtil.getParamType(data);
}else{
keyType=ExcelParamUtil.getParamType(data.getClass().getName());
}
keyType=ExcelParamUtil.checkParamType(keyType);
private List<Object> transOptionData(List<Object> dataList) {
List<Object> contentArrays = new ArrayList<>();
for (Object data : dataList) {
Object param1 = ExcelParamUtil.getParamContent(data, "");
//获取依据数据的类型
String keyType = "";
if (data instanceof DataType) {
keyType = ExcelParamUtil.getParamType(data);
} else {
keyType = ExcelParamUtil.getParamType(data.getClass().getName());
}
keyType = ExcelParamUtil.checkParamType(keyType);
if(keyType.toLowerCase().equals(DataType.OPTION)){
contentArrays.addAll(Arrays.asList(param1.toString().split(",")));
}else if(data instanceof Character){
contentArrays.add(param1.toString());
}else if(keyType.toLowerCase().equals("number")){
contentArrays.add(Double.parseDouble(param1.toString()));
}else{
contentArrays.add(param1);
}
}
return contentArrays;
}
if (keyType.toLowerCase().equals(DataType.OPTION)) {
contentArrays.addAll(Arrays.asList(param1.toString().split(",")));
} else if (data instanceof Character) {
contentArrays.add(param1.toString());
} else if (keyType.toLowerCase().equals("number")) {
contentArrays.add(Double.parseDouble(param1.toString()));
} else {
contentArrays.add(param1);
}
}
return contentArrays;
}
private boolean checkParamType(Object[] objects){
boolean result=false;
String type=null;
for (int i=1;i<=objects.length;i++){
if(i%2==0){
Object obj=objects[i-1];
String typeStr=ExcelParamUtil.getParamType(obj);
typeStr=ExcelParamUtil.checkParamType(typeStr);
logger.info(typeStr);
if(type==null){
type=typeStr;
}else{
result=typeStr.equalsIgnoreCase(type);
if(!result){
return result;
}
private boolean checkParamType(Object[] objects) {
boolean result = false;
String type = null;
for (int i = 1; i <= objects.length; i++) {
if (i % 2 == 0) {
Object obj = objects[i - 1];
String typeStr = ExcelParamUtil.getParamType(obj);
typeStr = ExcelParamUtil.checkParamType(typeStr);
logger.info(typeStr);
if (type == null) {
type = typeStr;
} else {
result = typeStr.equalsIgnoreCase(type);
if (!result) {
return result;
}
}
}
}
String typeStr=ExcelParamUtil.checkParamType(ExcelParamUtil.getParamType(objects[objects.length-1]));
result=type.equalsIgnoreCase(typeStr);
return result;
}
}
}
}
String typeStr = ExcelParamUtil.checkParamType(ExcelParamUtil.getParamType(objects[objects.length - 1]));
result = type.equalsIgnoreCase(typeStr);
return result;
}
}