|
@@ -513,10 +513,10 @@ public class DataList implements Saveable, Serializable {
|
|
|
if (fieldString.contains(" ")) {
|
|
|
String aliasfield=fieldString.substring( fieldString.lastIndexOf(" ")).trim();
|
|
|
String repString=fieldString.substring(0, fieldString.lastIndexOf(" ")).trim();
|
|
|
- patternstr="(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)("+aliasfield+")(\\s|\\(|\\)|>|=|<|!=|<>|\\,|\\+|\\-|\\*|\\/)";
|
|
|
+ patternstr="(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)("+aliasfield+")(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)";
|
|
|
Pattern pattern=Pattern.compile(patternstr,Pattern.CASE_INSENSITIVE);
|
|
|
- while(condition.matches(".*(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)((?i)"+aliasfield+")(\\s|\\(|\\)|>|=|<|!=|<>|\\,|\\+|\\-|\\*|\\/)[^a-z].*")){
|
|
|
- Matcher matcher=pattern.matcher(condition);
|
|
|
+ while(condition.matches(".*(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)((?i)"+aliasfield+")(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)[^a-z].*")){
|
|
|
+ Matcher matcher=pattern.matcher(condition);
|
|
|
if(matcher.find())
|
|
|
{
|
|
|
String str2=condition.substring(0,matcher.start()+1);
|
|
@@ -594,9 +594,9 @@ public class DataList implements Saveable, Serializable {
|
|
|
if (fieldString.contains(" ")) {
|
|
|
String aliasfield=fieldString.substring( fieldString.lastIndexOf(" ")).trim();
|
|
|
String repString=fieldString.substring(0, fieldString.lastIndexOf(" ")).trim();
|
|
|
- patternstr="(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)("+aliasfield+")(\\s|\\(|\\)|>|=|<|!=|<>|\\,|\\+|\\-|\\*|\\/)";
|
|
|
+ patternstr="(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)("+aliasfield+")(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)";
|
|
|
Pattern pattern=Pattern.compile(patternstr,Pattern.CASE_INSENSITIVE);
|
|
|
- while(con.matches(".*(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)((?i)"+aliasfield+")(\\s|\\(|\\)|>|=|<|!=|<>|\\,|\\+|\\-|\\*|\\/)[^a-z].*")){
|
|
|
+ while(con.matches(".*(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)((?i)"+aliasfield+")(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)[^a-z].*")){
|
|
|
Matcher matcher=pattern.matcher(con);
|
|
|
if(matcher.find())
|
|
|
{
|
|
@@ -839,10 +839,10 @@ public class DataList implements Saveable, Serializable {
|
|
|
if(StringUtils.hasText(detail.getDld_summarytype())){
|
|
|
String field = detail.getDld_field();
|
|
|
if(isShowField){
|
|
|
- if(field.indexOf(" ")>-1){
|
|
|
- String[] arr = field.split(" ");
|
|
|
- field = arr[arr.length-1];
|
|
|
- }
|
|
|
+ if(field.indexOf(" ")>-1){
|
|
|
+ String[] arr = field.split(" ");
|
|
|
+ field = arr[arr.length-1];
|
|
|
+ }
|
|
|
}else{
|
|
|
field="0";
|
|
|
}
|
|
@@ -852,17 +852,17 @@ public class DataList implements Saveable, Serializable {
|
|
|
sumFields.append("min("+field+")").append(",");
|
|
|
}else if(Constant.SUMMARY_MAX.equalsIgnoreCase(detail.getDld_summarytype())){
|
|
|
sumFields.append("max("+field+")").append(",");
|
|
|
- }else if(Constant.SUMMARY_SUM.equalsIgnoreCase(detail.getDld_summarytype())){
|
|
|
- sumFields.append("sum("+field+")").append(",");
|
|
|
}else if(detail.getDld_summarytype().startsWith(Constant.SUMMARY_FORMULA)){
|
|
|
sumFields.append(detail.getDld_summarytype().substring(detail.getDld_summarytype().indexOf(Constant.SUMMARY_FORMULA)+8)).append(",");
|
|
|
}
|
|
|
+ else{
|
|
|
+ sumFields.append("sum("+field+")").append(",");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
StringBuffer fieldStr = new StringBuffer();
|
|
|
BaseDao baseDao = (BaseDao) ContextUtil.getBean("baseDao");
|
|
|
- boolean hasAlias=false;
|
|
|
if(sumFields.length()>1){
|
|
|
StringBuffer sb = new StringBuffer("SELECT ");
|
|
|
if(!baseDao.isDBSetting("newDatalistSql")){
|
|
@@ -892,34 +892,25 @@ public class DataList implements Saveable, Serializable {
|
|
|
if (fieldString.contains(" ")) {
|
|
|
String aliasfield=fieldString.substring( fieldString.lastIndexOf(" ")).trim();
|
|
|
String repString=fieldString.substring(0, fieldString.lastIndexOf(" ")).trim();
|
|
|
- String patternstr="(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)("+aliasfield+")(\\s|\\(|\\)|>|=|<|!=|<>|\\,|\\+|\\-|\\*|\\/)";
|
|
|
- Pattern pattern = Pattern.compile(patternstr,Pattern.CASE_INSENSITIVE);
|
|
|
- while(condition.matches(".*(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)((?i)"+aliasfield+")(\\s|\\(|\\)|>|=|<|!=|<>|\\,|\\+|\\-|\\*|\\/)[^a-z].*")){
|
|
|
- Matcher matcher=pattern.matcher(condition);
|
|
|
+ String patternstr="(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)("+aliasfield+")(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)";
|
|
|
+ Pattern pattern=Pattern.compile(patternstr,Pattern.CASE_INSENSITIVE);
|
|
|
+ while(condition.matches(".*(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)((?i)"+aliasfield+")(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)[^a-z].*")){
|
|
|
+ Matcher matcher=pattern.matcher(condition);
|
|
|
if(matcher.find())
|
|
|
{
|
|
|
String str2=condition.substring(0,matcher.start()+1);
|
|
|
String str3=condition.substring(matcher.end()-1,condition.length());
|
|
|
condition=str2+" ("+repString+") "+str3;
|
|
|
}
|
|
|
- }
|
|
|
- hasAlias=true;
|
|
|
+ }
|
|
|
}
|
|
|
fieldStr.append(",").append(detail.getDld_field());
|
|
|
- }
|
|
|
- if(StringUtils.hasText(this.dl_groupby) && !hasAlias){
|
|
|
- sb.append(" FROM "+this.dl_tablename);
|
|
|
- sb.append(" ");
|
|
|
- sb.append(condition);
|
|
|
- sb.append(StringUtils.hasText(this.dl_groupby)?this.dl_groupby:"");
|
|
|
- }else{
|
|
|
- sb.append(" FROM (");
|
|
|
- sb.append(" SELECT ").append(fieldStr.substring(1)).append(" from ").append(this.dl_tablename);
|
|
|
- sb.append(" ");
|
|
|
- sb.append(condition);
|
|
|
- sb.append(StringUtils.hasText(this.dl_groupby)?this.dl_groupby:"");
|
|
|
- sb.append(")");
|
|
|
- }
|
|
|
+ }
|
|
|
+ sb.append(" FROM (");
|
|
|
+ sb.append(" SELECT ").append(fieldStr.substring(1)).append(" from ").append(this.dl_tablename);
|
|
|
+ sb.append(" ");
|
|
|
+ sb.append(condition).append(")");
|
|
|
+ sb.append(StringUtils.hasText(this.dl_groupby)?this.dl_groupby:"");
|
|
|
}
|
|
|
return sb.toString();
|
|
|
}else return null;
|
|
@@ -984,7 +975,6 @@ public class DataList implements Saveable, Serializable {
|
|
|
sb.append(" ");
|
|
|
sb.append(orderby);
|
|
|
sb.append(" )");
|
|
|
- System.out.println(sb.toString());
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|