Просмотр исходного кода

合计栏增加formula计算公式

(cherry picked from commit fd498097d82a514fab641080ec2435d49b693b9f)

# Conflicts:
#	src/com/uas/erp/model/DataList.java
shenliang 1 год назад
Родитель
Сommit
37d115c81c
2 измененных файлов с 34 добавлено и 34 удалено
  1. 11 1
      WebContent/app/view/v6/query/Grid.js
  2. 23 33
      src/com/uas/erp/model/DataList.java

+ 11 - 1
WebContent/app/view/v6/query/Grid.js

@@ -776,7 +776,17 @@ Ext.define('erp.view.v6.query.Grid', {
                     }
                     if (c.dataIndex == o.field && c.text) {
                         var format = (c.format || '0,000.00');
-                        items.push(c.text + '(' + o.type + '):' + Ext.util.Format.number(o.value, format));
+                        if(o.type.indexOf('formula:')<0){
+                            items.push(c.text + '(' + o.type + '):' + Ext.util.Format.number(o.value, format));
+                        }else{
+                            if(Ext.isNumber(o.value)){
+                                items.push(c.text + ':' + Ext.util.Format.number(o.value, format));
+                            }else {
+                                items.push(c.text + ':' + o.value);
+                            }
+
+                        }
+
                         return false;
                     }
                 })

+ 23 - 33
src/com/uas/erp/model/DataList.java

@@ -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();
 	}