@ -643,7 +643,7 @@ public class CustomerFormServiceImpl implements CustomerFormService {
关联表单组件下拉数据标题选项获取 ( 所有 )
* /
@Override
public ArrayList < CustomerFormTableSingleFieldValue > getAsfDataTitles ( String key , String token , String formId , String dataTitle , String rangeFormula , String rangeString , String hideFormula , String hideString ) {
public ArrayList < CustomerFormTableSingleFieldValue > getAsfDataTitles ( String key , String token , String formId , String dataTitle , String rangeFormula , String rangeString , String hideFormula , String hideString , String masterOnField ) {
//关联表单的id
String AsfFormId = formId ;
//根据formId(cfid)查询关联表单表名
@ -682,7 +682,17 @@ public class CustomerFormServiceImpl implements CustomerFormService {
String operator = leftOperatorsAndRight . get ( "operator" ) ;
//System.out.println(operator);
String right = leftOperatorsAndRight . get ( "right" ) ;
//System.out.println(right);
if ( containsDangerousWords ( right ) ) { //有sql注入的风险的输入 记录操作人key 时间,和输入的right条件 用来追究法律责任.
//获取用户信息 从redis中根据userkey和usertoken拿到userdetail
Map < String , String > keytokenmap = new HashMap < > ( ) ;
keytokenmap . put ( "userkey" , key ) ;
keytokenmap . put ( "usertoken" , token ) ;
UserDetail userDetail = userService . getUserDetailFromRedis ( keytokenmap ) ;
logger . error ( "用户进行了SQL注入攻击:key--" + userDetail . getWmKey ( ) + "姓名--" + userDetail . getName ( ) + "输入的条件" + rangeFormula ) ;
dataTitleMapList = new ArrayList < > ( ) ; //直接返回空数据标题列表
} else {
if ( operator . equals ( "包含" ) ) {
if ( right . equals ( "数据拥有者" ) ) {
//此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤
@ -734,20 +744,35 @@ public class CustomerFormServiceImpl implements CustomerFormService {
//System.out.println(right+"----"+operator+"----"+left+"----"+toSelectDataTitles);
//dataTitleMapList = handleLeftArrLength3(right, operator, left, toSelectDataTitles);
if ( leftArr [ 0 ] . equals ( "roleid" ) ) {
System . out . println ( right + "----" + operator + "----" + left + "----" + toSelectDataTitles ) ; //高管包含数据拥有者
String roleId = leftArr [ 2 ] ;
/ *
//System.out.println(right+"----"+operator+"----"+left+"----"+toSelectDataTitles);
String targetRoleId = leftArr [ 2 ] ; // 条件示例: 高管包含数据拥有者
//查出当前这条数据的owner的roleId数组,若该数组中有roleId,则是这个角色
dataTitleMapList = getDataTitles ( asfFormName , toSelectDataTitles ) ; //全部数据标题
List < TreeMap < String , Object > > filteredDataTitleMapList = new ArrayList < > ( ) ;
for ( TreeMap < String , Object > item : dataTitleMapList ) {
ManCont manCont = userService . getManContByKey ( item . get ( "owner" ) . toString ( ) ) ;
String currentRoleStr = manCont . getRole ( ) ;
if ( ! StringUtils . isBlank ( currentRoleStr ) ) {
String [ ] currentRoleArr = currentRoleStr . split ( "," ) ;
for ( String roleItem : currentRoleArr ) {
if ( roleItem . equals ( targetRoleId ) ) {
filteredDataTitleMapList . add ( item ) ;
break ;
}
}
}
}
dataTitleMapList = filteredDataTitleMapList ;
* * /
//查出
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
dataTitleMapList = new ArrayList < > ( ) ;
} else { //不应该存在的东西
logger . error ( "数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else if ( leftArr . length = = 4 ) { // formField:44:table1722576832462:input1722576838785 子表字段条件
dataTitleMapList = new ArrayList < > ( ) ;
}
} catch ( Exception e ) {
@ -805,24 +830,106 @@ public class CustomerFormServiceImpl implements CustomerFormService {
} * /
} else if ( leftArr . length = = 3 ) { // roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件
if ( leftArr [ 0 ] . equals ( "roleid" ) ) {
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
logger . error ( "数据范围条件查询出现不应该存在的条件---系统角色包含数据所属部门---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
dataTitleMapList = new ArrayList < > ( ) ;
} else { //不应该存在的东西
logger . error ( "数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else if ( leftArr . length = = 4 ) { // formField:44:table1722576832462:input1722576838785 子表字段条件
dataTitleMapList = new ArrayList < > ( ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
logger . error ( "数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else { //无法处理的情况,直接返回全部数据标题
logger . error ( "数据范围条件查询出现无法处理的情况---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
} else { //模糊查询
//logger.error("数据范围条件查询出现无法处理的情况---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList);
//dataTitleMapList = new ArrayList<>();
String [ ] leftArr = left . split ( ":" ) ;
String leftValue = leftArr [ leftArr . length - 1 ] ; //字段名
String masterFormName = "" ; //关联关联表单的表单名
boolean isChildTable = false ; //条件是否是子表字段
String tableName = "" ; //子表名
boolean isMaster = false ; //条件字段是否来自关联关联表单的表单
String conditionFormName = customerFormViewMapper . getTableNameByCfid ( leftArr [ 1 ] ) . getTablekey ( ) ;
if ( leftArr . length = = 3 ) { //条件不涉及子表字段
} else if ( leftArr . length = = 4 ) { //条件涉及到子表字段
isChildTable = true ;
tableName = leftArr [ 2 ] ;
} else {
dataTitleMapList = new ArrayList < > ( ) ;
}
if ( asfFormName . equals ( conditionFormName ) ) { //left条件的表单字段属于被关联的表单
} else { //left条件的表单字段属于关联关联表单的表单
isMaster = true ;
masterFormName = conditionFormName ;
}
if ( leftArr [ 0 ] = = "roleid" ) { //不允许角色权限自定义输入条件
dataTitleMapList = new ArrayList < > ( ) ;
} else {
if ( leftArr [ 0 ] . equals ( "formField" ) ) { //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if ( isChildTable ) { //条件涉及到子表字段
if ( isMaster ) { //条件字段来自关联关联表单的表单 master 目前为止不知道应该有什么效果,暂时返回空数据标题列表
dataTitleMapList = new ArrayList < > ( ) ;
} else { //asf
String parent = "" ;
String child = "" ;
parent = asfFormName ;
child = tableName ;
String whereConditionValue = right ;
String whereConditionField = leftValue ;
operator = "like" ;
whereConditionValue = "'%" + whereConditionValue + "%'" ;
dataTitleMapList = getDataTitlesWithWhere_Master_IsTable ( parent , toSelectDataTitles , child , whereConditionField , operator , whereConditionValue ) ;
System . out . println ( dataTitleMapList ) ;
}
} else { //条件不涉及到子表字段
if ( isMaster ) { //条件字段来自关联关联表单的表单 master
//System.out.println(masterOnField);
//System.out.println(masterFormName);
//System.out.println(asfFormName);
//System.out.println(operator);
String whereConditionValue = right ;
String whereConditionField = leftValue ;
operator = "like" ;
whereConditionValue = "'%" + whereConditionValue + "%'" ;
dataTitleMapList = getDataTitlesWithWhere_Master_NotTable ( asfFormName , toSelectDataTitles , masterFormName , masterOnField , whereConditionField , operator , whereConditionValue ) ; //根据where条件查询数据标题
} else {
operator = "like" ;
right = "'%" + right + "%'" ;
dataTitleMapList = getDataTitlesWithWhere_Asf_NotTable ( asfFormName , toSelectDataTitles , operator , right , leftValue ) ; //根据where条件查询数据标题
}
}
} else { //不支持的条件
dataTitleMapList = new ArrayList < > ( ) ;
}
}
}
} else if ( operator . equals ( "不包含" ) ) {
if ( right . equals ( "数据拥有者" ) ) {
try {
@ -868,14 +975,38 @@ public class CustomerFormServiceImpl implements CustomerFormService {
} * /
} else if ( leftArr . length = = 3 ) { // roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件
if ( leftArr [ 0 ] . equals ( "roleid" ) ) {
//System.out.println(right+"----"+operator+"----"+left+"----"+toSelectDataTitles);
String targetRoleId = leftArr [ 2 ] ; // 条件示例: 高管不包含数据拥有者
//查出当前这条数据的owner的roleId数组,若该数组中有roleId,则是这个角色
dataTitleMapList = getDataTitles ( asfFormName , toSelectDataTitles ) ; //全部数据标题
List < TreeMap < String , Object > > filteredDataTitleMapList = new ArrayList < > ( ) ;
for ( TreeMap < String , Object > item : dataTitleMapList ) {
ManCont manCont = userService . getManContByKey ( item . get ( "owner" ) . toString ( ) ) ;
String currentRoleStr = manCont . getRole ( ) ;
if ( ! StringUtils . isBlank ( currentRoleStr ) ) {
String [ ] currentRoleArr = currentRoleStr . split ( "," ) ;
int count = 0 ;
for ( String roleItem : currentRoleArr ) {
if ( roleItem . equals ( targetRoleId ) ) {
//filteredDataTitleMapList.add(item);
count + + ;
break ;
}
}
if ( count = = 0 ) {
filteredDataTitleMapList . add ( item ) ;
}
}
}
dataTitleMapList = filteredDataTitleMapList ;
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
dataTitleMapList = new ArrayList < > ( ) ;
} else { //不应该存在的东西
logger . error ( "数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else if ( leftArr . length = = 4 ) { // formField:44:table1722576832462:input1722576838785 子表字段条件
dataTitleMapList = new ArrayList < > ( ) ;
}
} catch ( Exception e ) {
@ -933,14 +1064,16 @@ public class CustomerFormServiceImpl implements CustomerFormService {
} * /
} else if ( leftArr . length = = 3 ) { // roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件
if ( leftArr [ 0 ] . equals ( "roleid" ) ) {
logger . error ( "数据范围条件查询出现不应该存在的条件---系统角色包含数据所属部门---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
dataTitleMapList = new ArrayList < > ( ) ;
} else { //不应该存在的东西
logger . error ( "数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else if ( leftArr . length = = 4 ) { // formField:44:table1722576832462:input1722576838785 子表字段条件
dataTitleMapList = new ArrayList < > ( ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@ -997,14 +1130,33 @@ public class CustomerFormServiceImpl implements CustomerFormService {
} * /
} else if ( leftArr . length = = 3 ) { // roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件
if ( leftArr [ 0 ] . equals ( "roleid" ) ) {
//System.out.println(right+"----"+operator+"----"+left+"----"+toSelectDataTitles);
String targetRoleId = leftArr [ 2 ] ; // 条件示例: 高管==数据拥有者
//查出当前这条数据的owner的roleId数组,若该数组中有roleId,则是这个角色
dataTitleMapList = getDataTitles ( asfFormName , toSelectDataTitles ) ; //全部数据标题
List < TreeMap < String , Object > > filteredDataTitleMapList = new ArrayList < > ( ) ;
for ( TreeMap < String , Object > item : dataTitleMapList ) {
ManCont manCont = userService . getManContByKey ( item . get ( "owner" ) . toString ( ) ) ;
String currentRoleStr = manCont . getRole ( ) ;
if ( ! StringUtils . isBlank ( currentRoleStr ) ) {
String [ ] currentRoleArr = currentRoleStr . split ( "," ) ;
for ( String roleItem : currentRoleArr ) {
if ( roleItem . equals ( targetRoleId ) ) {
filteredDataTitleMapList . add ( item ) ;
break ;
}
}
}
}
dataTitleMapList = filteredDataTitleMapList ;
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
dataTitleMapList = new ArrayList < > ( ) ;
} else { //不应该存在的东西
logger . error ( "数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else if ( leftArr . length = = 4 ) { // formField:44:table1722576832462:input1722576838785 子表字段条件
dataTitleMapList = new ArrayList < > ( ) ;
}
} catch ( Exception e ) {
@ -1056,14 +1208,38 @@ public class CustomerFormServiceImpl implements CustomerFormService {
} * /
} else if ( leftArr . length = = 3 ) { // roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件
if ( leftArr [ 0 ] . equals ( "roleid" ) ) {
//System.out.println(right+"----"+operator+"----"+left+"----"+toSelectDataTitles);
String targetRoleId = leftArr [ 2 ] ; // 条件示例: 高管!=数据拥有者
//查出当前这条数据的owner的roleId数组,若该数组中有roleId,则是这个角色
dataTitleMapList = getDataTitles ( asfFormName , toSelectDataTitles ) ; //全部数据标题
List < TreeMap < String , Object > > filteredDataTitleMapList = new ArrayList < > ( ) ;
for ( TreeMap < String , Object > item : dataTitleMapList ) {
ManCont manCont = userService . getManContByKey ( item . get ( "owner" ) . toString ( ) ) ;
String currentRoleStr = manCont . getRole ( ) ;
if ( ! StringUtils . isBlank ( currentRoleStr ) ) {
String [ ] currentRoleArr = currentRoleStr . split ( "," ) ;
int count = 0 ;
for ( String roleItem : currentRoleArr ) {
if ( roleItem . equals ( targetRoleId ) ) {
//filteredDataTitleMapList.add(item);
count + + ;
break ;
}
}
if ( count = = 0 ) {
filteredDataTitleMapList . add ( item ) ;
}
}
}
dataTitleMapList = filteredDataTitleMapList ;
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
dataTitleMapList = new ArrayList < > ( ) ;
} else { //不应该存在的东西
logger . error ( "数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else if ( leftArr . length = = 4 ) { // formField:44:table1722576832462:input1722576838785 子表字段条件
dataTitleMapList = new ArrayList < > ( ) ;
}
} catch ( Exception e ) {
@ -1126,14 +1302,16 @@ public class CustomerFormServiceImpl implements CustomerFormService {
} * /
} else if ( leftArr . length = = 3 ) { // roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件
if ( leftArr [ 0 ] . equals ( "roleid" ) ) {
logger . error ( "数据范围条件查询出现不应该存在的条件---系统角色包含数据所属部门---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
dataTitleMapList = new ArrayList < > ( ) ;
} else { //不应该存在的东西
logger . error ( "数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else if ( leftArr . length = = 4 ) { // formField:44:table1722576832462:input1722576838785 子表字段条件
dataTitleMapList = new ArrayList < > ( ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@ -1190,15 +1368,17 @@ public class CustomerFormServiceImpl implements CustomerFormService {
} * /
} else if ( leftArr . length = = 3 ) { // roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件
if ( leftArr [ 0 ] . equals ( "roleid" ) ) {
logger . error ( "数据范围条件查询出现不应该存在的条件---系统角色包含数据所属部门---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
} else if ( leftArr [ 0 ] . equals ( "formField" ) ) {
dataTitleMapList = new ArrayList < > ( ) ;
} else { //不应该存在的东西
logger . error ( "数据范围条件查询出现不应该出现的条件---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
dataTitleMapList = new ArrayList < > ( ) ;
}
} else if ( leftArr . length = = 4 ) { // formField:44:table1722576832462:input1722576838785 子表字段条件
dataTitleMapList = new ArrayList < > ( ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@ -1211,9 +1391,109 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}
} else { //这边对于数字的情况>,>=,<,<=是生效的,文字的情况则不生效,==和!=条件必定生效
try {
System . out . println ( right + "----" + operator + "----" + left ) ;
if ( operator . equals ( "==" ) ) {
operator = "=" ;
}
//System.out.println(right+"----"+operator+"----"+left);
boolean isNumberRic = isNumeric ( right ) ; //输入的条件是否能转化成数字
String [ ] leftArr = left . split ( ":" ) ;
String leftValue = leftArr [ leftArr . length - 1 ] ; //字段名
String masterFormName = "" ; //关联关联表单的表单名
boolean isChildTable = false ; //条件是否是子表字段
String tableName = "" ; //子表名
boolean isMaster = false ; //条件字段是否来自关联关联表单的表单
String conditionFormName = customerFormViewMapper . getTableNameByCfid ( leftArr [ 1 ] ) . getTablekey ( ) ;
if ( leftArr . length = = 3 ) { //条件不涉及子表字段
} else if ( leftArr . length = = 4 ) { //条件涉及到子表字段
isChildTable = true ;
tableName = leftArr [ 2 ] ;
} else {
dataTitleMapList = new ArrayList < > ( ) ;
}
if ( asfFormName . equals ( conditionFormName ) ) { //left条件的表单字段属于被关联的表单
} else { //left条件的表单字段属于关联关联表单的表单
isMaster = true ;
masterFormName = conditionFormName ;
}
if ( isNumberRic ) { //可以转换成数字
if ( isChildTable ) { //条件涉及到子表字段
if ( isMaster ) { //条件字段来自关联关联表单的表单 master 目前为止不知道应该有什么效果,暂时返回空数据标题列表
dataTitleMapList = new ArrayList < > ( ) ;
} else { //asf
String parent = "" ;
String child = "" ;
parent = asfFormName ;
child = tableName ;
String whereConditionValue = right ;
String whereConditionField = leftValue ;
dataTitleMapList = getDataTitlesWithWhere_Master_IsTable ( parent , toSelectDataTitles , child , whereConditionField , operator , whereConditionValue ) ;
System . out . println ( dataTitleMapList ) ;
}
} else { //条件不涉及到子表字段
if ( isMaster ) { //条件字段来自关联关联表单的表单 master
//System.out.println(masterOnField);
//System.out.println(masterFormName);
//System.out.println(asfFormName);
//System.out.println(operator);
String whereConditionValue = right ;
String whereConditionField = leftValue ;
dataTitleMapList = getDataTitlesWithWhere_Master_NotTable ( asfFormName , toSelectDataTitles , masterFormName , masterOnField , whereConditionField , operator , whereConditionValue ) ; //根据where条件查询数据标题
} else {
dataTitleMapList = getDataTitlesWithWhere_Asf_NotTable ( asfFormName , toSelectDataTitles , operator , right , leftValue ) ; //根据where条件查询数据标题
}
}
} else {
System . out . println ( "非数字条件_" + right ) ;
right = "'" + right + "'" ;
if ( operator . equals ( ">" ) | | operator . equals ( ">=" ) | | operator . equals ( "<" ) | | operator . equals ( "<=" ) ) { //非数字条件时,对于这些符号无法处理,返回空数据标题列表
dataTitleMapList = new ArrayList < > ( ) ;
} else { // == != 的情况
if ( isChildTable ) { //条件涉及到子表字段
if ( isMaster ) { //条件字段来自关联关联表单的表单 master 目前为止不知道应该有什么效果,暂时返回空数据标题列表
dataTitleMapList = new ArrayList < > ( ) ;
} else { //asf
String parent = "" ;
String child = "" ;
parent = asfFormName ;
child = tableName ;
String whereConditionValue = right ;
String whereConditionField = leftValue ;
dataTitleMapList = getDataTitlesWithWhere_Master_IsTable ( parent , toSelectDataTitles , child , whereConditionField , operator , whereConditionValue ) ;
System . out . println ( dataTitleMapList ) ;
}
} else { //条件不涉及到子表字段
if ( isMaster ) { //条件字段来自关联关联表单的表单 master
//System.out.println(masterOnField);
//System.out.println(masterFormName);
//System.out.println(asfFormName);
//System.out.println(operator);
String whereConditionValue = right ;
String whereConditionField = leftValue ;
dataTitleMapList = getDataTitlesWithWhere_Master_NotTable ( asfFormName , toSelectDataTitles , masterFormName , masterOnField , whereConditionField , operator , whereConditionValue ) ; //根据where条件查询数据标题
} else {
dataTitleMapList = getDataTitlesWithWhere_Asf_NotTable ( asfFormName , toSelectDataTitles , operator , right , leftValue ) ; //根据where条件查询数据标题
}
}
}
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
logger . error ( "数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight + "---" + dataTitleMapList ) ;
@ -1223,6 +1503,9 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}
}
}
}
}
@ -1272,6 +1555,45 @@ public class CustomerFormServiceImpl implements CustomerFormService {
return toReturnSortedDataTitleList ;
}
public static boolean isNumeric ( String str ) {
try {
Double . parseDouble ( str ) ;
return true ;
} catch ( NumberFormatException e ) {
return false ;
}
}
public static boolean containsDangerousWords ( String str ) {
Set < String > dangerousWords = new HashSet < > ( ) ;
dangerousWords . add ( "drop" ) ;
dangerousWords . add ( "table" ) ;
dangerousWords . add ( "where" ) ;
dangerousWords . add ( "select" ) ;
dangerousWords . add ( "insert" ) ;
dangerousWords . add ( "update" ) ;
dangerousWords . add ( "delete" ) ;
dangerousWords . add ( "and" ) ;
dangerousWords . add ( "or" ) ;
dangerousWords . add ( "union" ) ;
dangerousWords . add ( "order by" ) ;
dangerousWords . add ( "group by" ) ;
dangerousWords . add ( "having" ) ;
dangerousWords . add ( "exec" ) ;
dangerousWords . add ( "execute" ) ;
String [ ] words = str . split ( " " ) ;
for ( String word : words ) {
if ( dangerousWords . contains ( word . toLowerCase ( ) ) ) {
return true ;
}
}
return false ;
}
public static HashMap < String , String > splitString ( String str ) {
List < String > operators = Arrays . asList ( "==" , ">" , ">=" , "<" , "<=" , "!=" , "不包含" , "包含" ) ;
for ( String operator : operators ) {
@ -1297,6 +1619,46 @@ public class CustomerFormServiceImpl implements CustomerFormService {
processDataTitles ( dataTitles ) ;
return dataTitles ;
}
private List < TreeMap < String , Object > > getDataTitlesWithWhere_Asf_NotTable ( String asfFormName , ArrayList < String > toSelectDataTitles , String operator , String whereCondition , String leftValue ) {
List < TreeMap < String , Object > > newDataTitles = new ArrayList < > ( ) ;
List < TreeMap < String , Object > > dataTitles = fieldRecordMapper . getDataTitlesWithWhere_Asf_NotTable ( asfFormName , toSelectDataTitles , operator , whereCondition , leftValue ) ;
//没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner
//没有org的
processDataTitles ( dataTitles ) ;
return dataTitles ;
}
private List < TreeMap < String , Object > > getDataTitlesWithWhere_Master_NotTable ( String asfFormName , ArrayList < String > toSelectDataTitles , String masterFormName , String masterOnField , String whereConditionField , String operator , String whereConditionValue ) {
ArrayList < String > toSelectDataTitles1 = new ArrayList < > ( ) ;
for ( String item : toSelectDataTitles ) {
String a = "asf." + item ;
toSelectDataTitles1 . add ( a ) ;
}
List < TreeMap < String , Object > > newDataTitles = new ArrayList < > ( ) ;
List < TreeMap < String , Object > > dataTitles = fieldRecordMapper . getDataTitlesWithWhere_Master_NotTable ( asfFormName , toSelectDataTitles1 , masterFormName , masterOnField , whereConditionField , operator , whereConditionValue ) ;
//没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner
//没有org的
processDataTitles ( dataTitles ) ;
return dataTitles ;
} //
private List < TreeMap < String , Object > > getDataTitlesWithWhere_Master_IsTable ( String parent , ArrayList < String > toSelectDataTitles , String child , String whereConditionField , String operator , String whereConditionValue ) {
ArrayList < String > toSelectDataTitles1 = new ArrayList < > ( ) ;
for ( String item : toSelectDataTitles ) {
String a = "parent." + item ;
toSelectDataTitles1 . add ( a ) ;
}
List < TreeMap < String , Object > > newDataTitles = new ArrayList < > ( ) ;
List < TreeMap < String , Object > > dataTitles = fieldRecordMapper . getDataTitlesWithWhere_Master_IsTable ( parent , toSelectDataTitles1 , child , whereConditionField , operator , whereConditionValue ) ;
//没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner
//没有org的
processDataTitles ( dataTitles ) ;
return dataTitles ;
}
public void processDataTitles ( List < TreeMap < String , Object > > dataTitles ) {
for ( TreeMap < String , Object > map : dataTitles ) {