@@ -305,16 +305,42 @@ public AbstractSQLConfig setGroup(String group) {
305305 }
306306 @ JSONField (serialize = false )
307307 public String getGroupString (boolean hasPrefix ) {
308- //TODO 加上子表的group
308+ //加上子表的 group
309+ String joinGroup = "" ;
310+ if (joinList != null ) {
311+ SQLConfig ecfg ;
312+ SQLConfig cfg ;
313+ String c ;
314+ boolean first = true ;
315+ for (Join j : joinList ) {
316+ if (j .isAppJoin ()) {
317+ continue ;
318+ }
309319
310- group = StringUtil .getTrimedString (group );
311- if (group .isEmpty ()) {
312- return "" ;
313- }
320+ ecfg = j .getOutterConfig ();
321+ if (ecfg != null && ecfg .getGroup () != null ) { //优先级更高
322+ cfg = ecfg ;
323+ }
324+ else {
325+ cfg = j .getJoinConfig ();
326+ }
327+
328+ cfg .setAlias (cfg .getTable ());
329+
330+ c = ((AbstractSQLConfig ) cfg ).getGroupString (false );
331+ if (StringUtil .isEmpty (c , true ) == false ) {
332+ joinGroup += (first ? "" : ", " ) + c ;
333+ first = false ;
334+ }
314335
336+ }
337+ }
338+
339+
340+ group = StringUtil .getTrimedString (group );
315341 String [] keys = StringUtil .split (group );
316342 if (keys == null || keys .length <= 0 ) {
317- return "" ;
343+ return StringUtil . isEmpty ( joinGroup , true ) ? "" : ( hasPrefix ? " GROUP BY " : "" ) + joinGroup ;
318344 }
319345
320346 for (int i = 0 ; i < keys .length ; i ++) {
@@ -327,7 +353,7 @@ public String getGroupString(boolean hasPrefix) {
327353 keys [i ] = getKey (keys [i ]);
328354 }
329355
330- return " GROUP BY " + StringUtil .getString (keys );
356+ return ( hasPrefix ? " GROUP BY " : "" ) + StringUtil .concat ( StringUtil . getString (keys ), joinGroup , ", " );
331357 }
332358
333359 @ Override
@@ -435,7 +461,7 @@ public AbstractSQLConfig setOrder(String order) {
435461 }
436462 @ JSONField (serialize = false )
437463 public String getOrderString (boolean hasPrefix ) {
438- //加上子表的 Order
464+ //加上子表的 order
439465 String joinOrder = "" ;
440466 if (joinList != null ) {
441467 SQLConfig ecfg ;
0 commit comments