@@ -23,61 +23,65 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
Map < String , Object > params = enhanceContext . getParam ( ) . getParams ( ) ;
if ( params . containsKey ( " Group by " ) ) {
List < String > groupFieldList = Arrays . asList ( params . get ( " Group by " ) . toString ( ) . split ( " , " ) ) ;
StringBuilder executePluginSql = new StringBuilder ( ) ;
executePluginSql . append ( " SELECT \ n " ) ;
if ( groupFieldList . contains ( " customname " ) | | params . containsKey ( " customname " ) ) { //客户名称
executePluginSql . append ( " tbl_lgbsa.CUSTOMID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.CUSTOMNAME, \ n " ) ;
}
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) { //年
executePluginSql . append ( " tbl_lgbsa.USEYEAR , \ n " ) ;
if ( ! ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) ) {
executePluginSql . append ( " MAX(USEYEAR) as ny, \ n " ) ; //年月
String sql ;
if ( ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) ) {
sql = ge roupMonthSql ( params , groupFieldList ) ;
} else {
StringBuilder executePluginSql = new StringBuilder ( ) ;
executePluginSql . append ( " SELECT \ n " ) ;
if ( groupFieldList . contains ( " c ustomname " ) | | params . containsKey ( " c ustomname " ) ) { //客户名称
executePluginSql . append ( " tbl_lgbsa.C USTOMID , \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.CUSTOMNAME, \ n " ) ;
}
}
if ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) { //月
executePluginSql . append ( " tbl_lgbsa.USEMONTH, \ n " ) ;
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) {
executePluginSql . append ( " MAX(CONCAT(USEYEAR, LPAD(USEMONTH, 2, '0'))) as ny, \ n " ) ; //年月
} else {
executePluginSql . append ( " MAX(LPAD(USEMONTH, 2, '0')) as ny, \ n " ) ;
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) { //年
executePluginSql . append ( " tbl_lgbsa.USEYEAR, \ n " ) ;
if ( ! ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) ) {
executePluginSql . append ( " MAX(USEYEAR) as ny, \ n " ) ; //年月
}
}
if ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) { //月
executePluginSql . append ( " tbl_lgbsa.USEMONTH, \ n " ) ;
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) {
executePluginSql . append ( " MAX(CONCAT(USEYEAR, LPAD(USEMONTH, 2, '0'))) as ny, \ n " ) ; //年月
} else {
executePluginSql . append ( " MAX(LPAD(USEMONTH, 2, '0')) as ny, \ n " ) ;
}
}
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) { //业务区域
executePluginSql . append ( " tbl_lgbsa.ZONEID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.ZONENAME, \ n " ) ;
}
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) { //销售类型
executePluginSql . append ( " tbl_lgbsa.SALETYPEID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.SALETYPENAME, \ n " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) { //业务员
executePluginSql . append ( " tbl_lgbsa.SALERID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.SALERNAME, \ n " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) { //剂型
executePluginSql . append ( " tbl_lgbsa.DOSAGEID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.DOSAGENAME, \ n " ) ;
}
if ( params . containsKey ( " goodsname " ) ) { //货品名称
executePluginSql . append ( " tbl_lgbsa.GOODSID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.GOODSNAME, \ n " ) ;
}
}
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) { //业务区域
executePluginSql . append ( " tbl_lgbsa.ZONEID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.ZONENAME, \ n " ) ;
}
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) { //销售类型
executePluginSql . append ( " tbl_lgbsa.SALETYPEID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.SALETYPENAME, \ n " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) { //业务员
executePluginSql . append ( " tbl_lgbsa.SALERID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.SALERNAME, \ n " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) { //剂型
executePluginSql . append ( " tbl_lgbsa.DOSAGEID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.DOSAGENAME, \ n " ) ;
}
if ( params . containsKey ( " goodsname " ) ) { //货品名称
executePluginSql . append ( " tbl_lgbsa.GOODSID, \ n " ) ;
executePluginSql . append ( " tbl_lgbsa.GOODSNAME, \ n " ) ;
}
executePluginSql . append ( " GROUP_CONCAT(DISTINCT tbl_lgbsa.PROVINCEID ORDER BY tbl_lgbsa.PROVINCEID SEPARATOR ',') as PROVINCEID, \ n " ) ; //行政区域ID
executePluginSql . append ( " GROUP_CONCAT(DISTINCT tbl_lgbsa.PROVINCENAME ORDER BY tbl_lgbsa.PROVINCEID SEPARATOR ',') as PROVINCENAME, \ n " ) ; //行政区域名称
executePluginSql . append ( " SUM(tbl_lgbsa.MONTHSAQTY) as MONTHSAQTY, \ n " ) ; //本月销量
executePluginSql. append( " CASE \ n " ) ;
executePluginSql. append( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END) > 0 THEN\ n " ) ;
executePluginSql. append( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END), 2))\ n " ) ;
executePluginSql. append( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END) < 0 THEN\ n " ) ;
executePluginSql. append( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END), 2))\ n " ) ;
executePluginSql. append( " ELSE '0.00'\ n " ) ;
executePluginSql. append( " END AS monthsaqty_yoy,\ n " ) ;
executePluginSql . append ( " GROUP_CONCAT(DISTINCT tbl_lgbsa.PROVINCEID ORDER BY tbl_lgbsa.PROVINCEID SEPARATOR ',') as PROVINCEID, \ n " ) ; //行政区域ID
executePluginSql . append ( " GROUP_CONCAT(DISTINCT tbl_lgbsa.PROVINCENAME ORDER BY tbl_lgbsa.PROVINCEID SEPARATOR ',') as PROVINCENAME, \ n " ) ; //行政区域名称
executePluginSql . append ( " SUM(tbl_lgbsa.MONTHSAQTY) as MONTHSAQTY, \ n " ) ; //本月销量
// executePluginSql. append(" CASE\n") ;
// executePluginSql. append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END) > 0 THEN\n") ;
// executePluginSql. append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END), 2))\n") ;
// executePluginSql. append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END) < 0 THEN\n") ;
// executePluginSql. append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END), 2))\n") ;
// executePluginSql. append(" ELSE '0.00'\n") ;
// executePluginSql. append(" END AS monthsaqty_yoy,\n"); //本月销量同比
// executePluginSql.append(" CONCAT(ROUND((SELECT SUM(MONTHSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS monthsaqty_s, \n");
// executePluginSql.append(" CONCAT(ROUND((SELECT SUM(THISSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS thissaqty_s, \n");
// executePluginSql.append(" CONCAT(ROUND((SELECT SUM(LASTSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS lastsaqty_s, \n");
@@ -85,156 +89,384 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
// executePluginSql.append(" CONCAT(ROUND((SELECT SUM(MONTHSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS monthsamoney_s, \n");
// executePluginSql.append(" CONCAT(ROUND((SELECT SUM(THISSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000,2), '亿') AS thissamoney_s, \n");
// executePluginSql.append(" CONCAT(ROUND((SELECT SUM(LASTSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000,2), '亿') AS lastsamoney_s, \n");
executePluginSql . append ( " SUM(tbl_lgbsa.MONTHSAQTY) as THISSAQTY, \ n " ) ; //本年销量
executePluginSql . append ( " SUM(tbl_lgbsa.LASTSAQTY) as LASTSAQTY, \ n " ) ; //上年销量
executePluginSql . append ( " -- 数量同比(原有) \ n " ) ;
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS saqty_yoy, \ n " ) ;
executePluginSql. append( " ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as MONTHSAMONEY, \ n " ) ; //本月销售金额(元)
executePluginSql. append( " CASE \ n " ) ;
executePluginSql. append( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END) > 0 THEN \ n " ) ;
executePluginSql. append( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END), 2)) \ n " ) ;
executePluginSql. append( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END) < 0 THEN \ n " ) ;
executePluginSql. append( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END), 2)) \ n " ) ;
executePluginSql. append( " ELSE '0.00' \ n " ) ;
executePluginSql. append( " END AS monthsamoney_yoy, \ n " ) ;
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as THISSAMONEY, \ n " ) ; //本年销售金额(元)
executePluginSql . append ( " SUM(tbl_lgbsa.MONTHSAQTY) as THISSAQTY, \ n " ) ; //本年销量
executePluginSql . append ( " SUM(tbl_lgbsa.LASTSAQTY) as LASTSAQTY, \ n " ) ; //上年销量
executePluginSql . append ( " -- 数量同比(原有) \ n " ) ;
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS saqty_yoy, \ n " ) ; //数量同比
// executePluginSql. append(" ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as MONTHSAMONEY, \n"); //本月销售金额(元)
// executePluginSql. append(" CASE \n") ;
// executePluginSql. append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END) > 0 THEN \n") ;
// executePluginSql. append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END), 2)) \n") ;
// executePluginSql. append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END) < 0 THEN \n") ;
// executePluginSql. append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END), 2)) \n") ;
// executePluginSql. append(" ELSE '0.00' \n") ;
// executePluginSql. append(" END AS monthsamoney_yoy, \n"); //本月销售金额同比
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as THISSAMONEY, \ n " ) ; //本年销售金额(元)
// SUM( MONTHSAQTY ) AS THISSAQTY, -- 本年销量
// SUM( MONTHSAMONEY ) AS THISSAMONEY, -- 本年销售金额
// SUM( MONTHCOST) as THISCOST, -- 本年销售成本
// SUM( MONTHPROFIT ) AS THISPROFIT -- 本年毛利额
executePluginSql. append( " CASE \ n " ) ;
executePluginSql. append( " WHEN (CASE WHEN sum(tbl_lgbsa.LAST_MONTH_SAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LAST_MONTH_SAMONEY)) / sum(tbl_lgbsa.LAST_MONTH_SAMONEY) * 100 END) > 0 THEN \ n " ) ;
executePluginSql. append( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LAST_MONTH_SAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LAST_MONTH_SAMONEY)) / sum(tbl_lgbsa.LAST_MONTH_SAMONEY) * 100 END), 2)) \ n " ) ;
executePluginSql. append( " WHEN (CASE WHEN sum(tbl_lgbsa.LAST_MONTH_SAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LAST_MONTH_SAMONEY)) / sum(tbl_lgbsa.LAST_MONTH_SAMONEY) * 100 END) < 0 THEN \ n " ) ;
executePluginSql. append( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LAST_MONTH_SAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LAST_MONTH_SAMONEY)) / sum(tbl_lgbsa.LAST_MONTH_SAMONEY) * 100 END), 2)) \ n " ) ;
executePluginSql. append( " ELSE '0.00' \ n " ) ;
executePluginSql. append( " END AS lastMonthSaMoney_yoy, \ n " ) ; //本月销售金额增长率
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.LASTSAMONEY) / 10000, 2) as LASTSAMONEY, \ n " ) ; //上年销售金额(元)
executePluginSql . append ( " -- 销售金额同比(原有新增) \ n " ) ;
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS samoney_yoy, \ n " ) ; //销售收入同比
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.MONTHPROFIT) / 10000, 2) as MONTHPROFIT, \ n " ) ; //本月毛利额(元)
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHPROFIT) = 0 THEN IF(sum(tbl_lgbsa.MONTHPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(tbl_lgbsa.MONTHPROFIT) - sum(tbl_lgbsa.LASTYEAROFMONTHPROFIT)) / sum(tbl_lgbsa.LASTYEAROFMONTHPROFIT) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHPROFIT) = 0 THEN IF(sum(tbl_lgbsa.MONTHPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(tbl_lgbsa.MONTHPROFIT) - sum(tbl_lgbsa.LASTYEAROFMONTHPROFIT)) / sum(tbl_lgbsa.LASTYEAROFMONTHPROFIT) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTH PROFIT) = 0 THEN IF(sum (tbl_lgbsa.MON THPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum (tbl_lgbsa.MON THPROFIT) - sum(tbl_lgbsa.LASTYEAROFMONTH PROFIT)) / sum(tbl_lgbsa.LASTYEAROFMONTH PROFIT) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTH PROFIT) = 0 THEN IF(sum(tbl_lgbsa.MON THPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum (tbl_lgbsa.MON THPROFIT) - sum(tbl_lgbsa.LASTYEAROFMONTH PROFIT)) / sum(tbl_lgbsa.LASTYEAROFMONTH PROFIT) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS monthprofit_yoy, \ n " ) ; //年度毛利同比
executePluginSql . append ( " ROUND(SUM (tbl_lgbsa.MONTH PROFIT) / 10000, 2) as THISPROFIT, \ n " ) ; //本年毛利额(元)
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.LASTPROFIT) / 10000, 2) as LASTPROFIT, \ n " ) ; //上年毛利额(元)
executePluginSql . append ( " -- 新增:毛利同比 \ n " ) ;
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " -- 正数: 红色圆点emoji + 数值 + % \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(MAX(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(sum(tbl_lgbsa.THISPROFIT) > 0, 1 00, 0 ) \ n " ) ;
executePluginSql. append( " ELSE (MAX(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END), 2)) \ n " ) ;
executePluginSql. append( " -- 负数: 绿色圆点emoji + 数值 + % \ n " ) ;
executePluginSql. append( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(sum(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (MAX(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END) < 0 THEN \ n " ) ;
executePluginSql. append( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(MAX(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql. append( " ELSE (MAX(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END), 2)) \ n " ) ;
executePluginSql. append( " -- 0值: 直接显示 \ n " ) ;
executePluginSql. append( " ELSE '0.00' \ n " ) ;
executePluginSql. append( " END AS profit_yoy, \ n " ) ; //毛利同比
executePluginSql. append( " ROUND(SUM(tbl_lgbsamc.this_month_cost) / 10000, 2) as this_month_cost, \ n " ) ; //本月销售成本(元)
executePluginSql. append( " ROUND(MAX(tbl_lgbsayc.this_year_cost) / 10000, 2) as this_year_cost, \ n " ) ; //本年 销售成本(元)
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsamc.yoy_last_month_cost) = 0 THEN IF(sum(tbl_lgbsamc.this_month_cost) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(tbl_lgbsamc.this_month_cost) - sum(tbl_lgbsamc.yoy_last_month_cost)) / sum(tbl_lgbsamc.yoy_last_month_cost) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsamc.yoy_last_month_cost) = 0 THEN IF(sum(tbl_lgbsamc.this_month_cost) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(tbl_lgbsamc.this_month_cost) - sum(tbl_lgbsamc.yoy_last_month_cost)) / sum(tbl_lgbsamc.yoy_last_month_cost) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsamc.yoy_last_month_cost) = 0 THEN IF(sum(tbl_lgbsamc.this_month_cost) > 0, 100, 0 ) \ n " ) ;
executePluginSql . append ( " ELSE (sum(tbl_lgbsamc.this_month_cost) - sum(tbl_lgbsamc.yoy_last_month_cost)) / sum(tbl_lgbsamc.yoy_last_month_cost) * 100 END ) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsamc.yoy_last_month_cost) = 0 THEN IF(sum(tbl_lgbsamc.this_month_cost) > 0, 100, 0 ) \ n " ) ;
executePluginSql . append ( " ELSE (sum(tbl_lgbsamc.this_month_cost) - sum(tbl_lgbsamc.yoy_last_month_cost)) / sum(tbl_lgbsamc.yoy_last_month_cost) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS this_month_cost_yoy , \ n " ) ; //本月销售成本同 比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.PROFITC HANGE), 2) as PROFITC HANG E, \ n " ) ; //毛利变动(元)
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.PROFITGROWTH), 2) as PROFITGROWTH , \ n " ) ; //毛利额增长率
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.THISPROFITRATE) , 2) as THISPROFITRAT E, \ n " ) ; //本年毛利率
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " WHEN ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2)) \ n " ) ;
executePluginSql . append ( " WHEN ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS SAMONEYGROWTH, \ n " ) ; //销售金额增长率
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.LASTPROFITSHARE) * 100, 2) as LASTPROFITSHARE, \ n " ) ; //上年毛利额占比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.THISPROFITSHARE) * 100, 2) AS THISPROFITSHARE, \ n " ) ; //本年毛利额占比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.MONTHPROFITSHARE) * 100, 2) AS MONTHPROFITSHARE, \ n " ) ; //本月毛利额占比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.LASTSAMONEYSHARE) * 100, 2) AS LASTSAMONEYSHARE, \ n " ) ; //上年销售金额占比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.THISSAMONEYSHARE) * 100, 2) AS THISSAMONEYSHARE, \ n " ) ; //本年销售金额占比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.MONTHSAMONEYSHARE) * 100, 2) AS MONTHSAMONEYSHARE \ n " ) ; //本月销售金额占比
executePluginSql . append ( " FROM \ n " ) ;
executePluginSql . append ( " yunji_gr_bi_sa_agg tbl_lgbsa \ n " ) ;
executePluginSql . append ( " GROUP BY \ n " ) ;
if ( groupFieldList . contains ( " customname " ) | | params . containsKey ( " customname " ) ) {
executePluginSql . append ( " tbl_lgbsa.CUSTOMID, " ) ;
executePluginSql . append ( " tbl_lgbsa.CUSTOMNAME , " ) ;
// executePluginSql. append(" CASE \n") ;
// executePluginSql. append(" WHEN (CASE WHEN sum(tbl_lgbsa.LAST_MONTH_SAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LAST_MONTH_SAMONEY)) / sum(tbl_lgbsa.LAST_MONTH_SAMONEY) * 100 END) > 0 THEN \n") ;
// executePluginSql. append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LAST_MONTH_SAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LAST_MONTH_SAMONEY)) / sum(tbl_lgbsa.LAST_MONTH_SAMONEY) * 100 END), 2)) \n") ;
// executePluginSql. append(" WHEN (CASE WHEN sum(tbl_lgbsa.LAST_MONTH_SAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LAST_MONTH_SAMONEY)) / sum(tbl_lgbsa.LAST_MONTH_SAMONEY) * 100 END) < 0 THEN \n") ;
// executePluginSql. append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LAST_MONTH_SAMONEY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAMONEY) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LAST_MONTH_SAMONEY)) / sum(tbl_lgbsa.LAST_MONTH_SAMONEY) * 100 END), 2)) \n") ;
// executePluginSql. append(" ELSE '0.00' \n") ;
// executePluginSql. append(" END AS lastMonthSaMoney_yoy, \n"); //本月销售金额增长率
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.LASTSAMONEY) / 10000, 2) as LASTSAMONEY, \ n " ) ; //上年销售金额(元)
executePluginSql . append ( " -- 销售金额同比(原有新增) \ n " ) ;
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS samoney_yoy, \ n " ) ; //销售收入同比
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.MONTHPROFIT) / 10000, 2) as MONTHPROFIT, \ n " ) ; //本月毛利额(元)
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.MONTHPROFIT) / 10000, 2) as THISPROFIT, \ n " ) ; //本年毛利额(元)
executePluginSql . append ( " ROUND(SUM(tbl_lgbsa.LASTPROFIT) / 10000, 2) as LASTPROFIT, \ n " ) ; //上年毛利额(元)
executePluginSql . append ( " -- 新增:毛利同比 \ n " ) ;
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " -- 正数: 红色圆点emoji + 数值 + % \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(MAX (tbl_lgbsa.THIS PROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX (tbl_lgbsa.THIS PROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(sum(tbl_lgbsa.THIS PROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX (tbl_lgbsa.THIS PROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " -- 负数: 绿色圆点emoji + 数值 + % \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(sum(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum (tbl_lgbsa.LAST PROFIT) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(MAX(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (MAX(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " -- 0值: 直接显示 \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS profit_yoy, \ n " ) ; //本年毛利同比
executePluginSql . append ( " ROUND(SUM(tbl_lgbsamc.this_month_cost) / 10000, 2) as this_month_cost, \ n " ) ; //本月销售成本(元)
executePluginSql . append ( " ROUND(MAX(tbl_lgbsayc.this_year_cost) / 100 00, 2 ) as this_year_cost, \ n " ) ; //本年销售成本(元)
// executePluginSql. append(" CASE \n") ;
// executePluginSql. append(" WHEN (CASE WHEN sum(tbl_lgbsamc.yoy_last_month_cost) = 0 THEN IF(sum(tbl_lgbsamc.this_month_cost) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsamc.this_month_cost) - sum(tbl_lgbsamc.yoy_last_month_cost)) / sum(tbl_lgbsamc.yoy_last_month_cost) * 100 END) > 0 THEN \n") ;
// executePluginSql. append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsamc.yoy_last_month_cost) = 0 THEN IF(sum(tbl_lgbsamc.this_month_cost) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsamc.this_month_cost) - sum(tbl_lgbsamc.yoy_last_month_cost)) / sum(tbl_lgbsamc.yoy_last_month_cost) * 100 END), 2)) \n") ;
// executePluginSql. append(" WHEN (CASE WHEN sum(tbl_lgbsamc.yoy_last_month_cost) = 0 THEN IF(sum(tbl_lgbsamc.this_month_cost) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsamc.this_month_cost) - sum(tbl_lgbsamc.yoy_last_month_cost)) / sum(tbl_lgbsamc.yoy_last_month_cost) * 100 END) < 0 THEN \n") ;
// executePluginSql. append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsamc.yoy_last_month_cost) = 0 THEN IF(sum(tbl_lgbsamc.this_month_cost) > 0, 100, 0) \n") ;
// executePluginSql. append(" ELSE (sum(tbl_lgbsamc.this_month_cost) - sum(tbl_lgbsamc.yoy_last_month_cost)) / sum(tbl_lgbsamc.yoy_last_month_cost) * 100 END), 2)) \n");
// executePluginSql. append(" ELSE '0.00' \n");
// executePluginSql. append(" END AS this_month_cost_yoy, \n"); //本月 销售成本同比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.PROFITCHANGE), 2) as PROFITCHANGE, \ n " ) ; //毛利变动(元)
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.PROFITGROWTH), 2) as PROFITGROWTH, \ n " ) ; //毛利额增长率
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.THISPROFITRATE), 2) as THISPROFITRATE, \ n " ) ; //本年毛利率
executePluginSql . append ( " CASE \ n " ) ;
executePluginSql . append ( " WHEN ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2) ) \ n " ) ;
executePluginSql . append ( " WHEN ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2 ) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2) ) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS SAMONEYGROWTH, \ n " ) ; //销售金额增长率
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.LASTPROFITSHARE) * 100, 2) as LASTPROFITSHARE , \ n " ) ; //上年毛利额占 比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.THIS PROFITS HARE) * 100, 2) AS THIS PROFITS HAR E, \ n " ) ; //本年毛利额占比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.LASTSAMONEYSHARE) * 100, 2) AS LASTSAMONEYSHARE , \ n " ) ; //上年销售金额占比
executePluginSql . append ( " ROUND(avg(tbl_lgbsa.THISSAMONEYSHARE) * 100 , 2) AS THISSAMONEYSHAR E, \ n " ) ; //本年销售金额占比
executePluginSql . append ( " FROM \ n " ) ;
executePluginSql . append ( " yunji_gr_bi_sa_agg tbl_lgbsa \ n " ) ;
executePluginSql . append ( " GROUP BY \ n " ) ;
if ( groupFieldList . contains ( " customname " ) | | params . containsKey ( " customname " ) ) {
executePluginSql . append ( " tbl_lgbsa.CUSTOMID, " ) ;
executePluginSql . append ( " tbl_lgbsa.CUSTOMNAME, " ) ;
}
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) {
executePluginSql . append ( " tbl_lgbsa.USEYEAR, " ) ;
}
if ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) {
executePluginSql . append ( " tbl_lgbsa.USEMONTH, " ) ;
}
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) {
executePluginSql . append ( " tbl_lgbsa.ZONEID, " ) ;
executePluginSql . append ( " tbl_lgbsa.ZONENAME, " ) ;
}
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) {
executePluginSql . append ( " tbl_lgbsa.SALETYPEID ," ) ;
executePluginSql . append ( " tbl_lgbsa.SALETYPENAME, " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) {
executePluginSql . append ( " tbl_lgbsa.SALERID, " ) ;
executePluginSql . append ( " tbl_lgbsa.SALERNAME, " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) {
executePluginSql . append ( " tbl_lgbsa.DOSAGEID, " ) ;
executePluginSql . append ( " tbl_lgbsa.DOSAGENAME, " ) ;
}
if ( params . containsKey ( " goodsname " ) ) { //货品名称
executePluginSql . append ( " tbl_lgbsa.GOODSID, " ) ;
executePluginSql . append ( " tbl_lgbsa.GOODSNAME, " ) ;
}
executePluginSql . deleteCharAt ( executePluginSql . length ( ) - 1 ) ;
sql = executePluginSql . toString ( ) ;
}
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) {
executePluginSql . append ( " tbl_lgbsa.USEYEAR, " ) ;
}
if ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) {
executePluginSql . append ( " tbl_lgbsa.USEMONTH, " ) ;
}
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) {
executePluginSql . append ( " tbl_lgbsa.ZONEID, " ) ;
executePluginSql . append ( " tbl_lgbsa.ZONENAME, " ) ;
}
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) {
executePluginSql . append ( " tbl_lgbsa.SALETYPEID, " ) ;
executePluginSql . append ( " tbl_lgbsa.SALETYPENAME, " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) {
executePluginSql . append ( " tbl_lgbsa.SALERID, " ) ;
executePluginSql . append ( " tbl_lgbsa.SALERNAME, " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) {
executePluginSql . append ( " tbl_lgbsa.DOSAGEID, " ) ;
executePluginSql . append ( " tbl_lgbsa.DOSAGENAME, " ) ;
}
if ( params . containsKey ( " goodsname " ) ) { //货品名称
executePluginSql . append ( " tbl_lgbsa.GOODSID, " ) ;
executePluginSql . append ( " tbl_lgbsa.GOODSNAME, " ) ;
}
executePluginSql . deleteCharAt ( executePluginSql . length ( ) - 1 ) ;
params . put ( " executePluginSql " , executePluginSql . toString ( ) ) ;
params . put ( " executePluginSql " , sql ) ;
// params.remove("Group by"); // 原有的逻辑注释了,这里也注释
}
}
private String geroupMonthSql ( Map < String , Object > params , List < String > groupFieldList ) {
StringBuilder executePluginSql = new StringBuilder ( ) ;
executePluginSql . append ( " select " ) ;
if ( groupFieldList . contains ( " customname " ) | | params . containsKey ( " customname " ) ) { //客户名称
executePluginSql . append ( " current_month.custom_id as customid, \ n " ) ;
executePluginSql . append ( " current_month.custom_name as customname, \ n " ) ;
}
if ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) { //月
executePluginSql . append ( " current_month.use_year as useyear, " ) ;
executePluginSql . append ( " current_month.use_month as usemonth, \ n " ) ;
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) {
executePluginSql . append ( " MAX(CONCAT(current_month.use_year, LPAD(current_month.use_month, 2, '0'))) as ny, \ n " ) ; //年月
} else {
executePluginSql . append ( " MAX(LPAD(current_month.use_month, 2, '0')) as ny, \ n " ) ;
}
}
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) { //业务区域
executePluginSql . append ( " current_month.zone_id, \ n " ) ;
executePluginSql . append ( " current_month.zone_name as zonename, \ n " ) ;
}
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) { //销售类型
executePluginSql . append ( " current_month.sale_type_id, \ n " ) ;
executePluginSql . append ( " current_month.sale_type_name as saletypename, \ n " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) { //业务员
executePluginSql . append ( " current_month.saler_id, \ n " ) ;
executePluginSql . append ( " current_month.saler_name as salername, \ n " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) { //剂型
executePluginSql . append ( " current_month.dosage_id, \ n " ) ;
executePluginSql . append ( " current_month.dosage_name as dosagename, \ n " ) ;
}
if ( params . containsKey ( " goodsname " ) ) { //货品名称
executePluginSql . append ( " current_month.goods_id, \ n " ) ;
executePluginSql . append ( " current_month.goods_name as goodsname, \ n " ) ;
}
executePluginSql . append ( " SUM(current_month.this_month_sa_qty) as thisMonthSaQty, " ) ; //本月销售数量(件)
executePluginSql . append ( " ROUND(SUM(current_month.this_month_sa_money) / 10000, 2) as thisMonthSaMoney, " ) ; //本月销售金额(元)
executePluginSql . append ( " ROUND(SUM(current_month.this_month_profit) / 10000, 2) as thisMonthProfit, " ) ; //本月毛利额(元)
executePluginSql . append ( " ROUND(SUM(current_month.this_month_cost) / 10000, 2) as thisMonthCost, " ) ; //本月成本(元)
executePluginSql . append ( " SUM(last_month_data.last_month_sa_qty) as lastMonthSaQty, " ) ; //上月销售数量(件)
executePluginSql . append ( " ROUND(SUM(last_month_data.last_month_sa_money) / 10000, 2) as lastMonthSaMoney, " ) ; //上月销售金额(元)
executePluginSql . append ( " ROUND(SUM(last_month_data.last_month_profit) / 10000, 2) as lastMonthProfit, " ) ; //上月毛利额(元)
executePluginSql . append ( " ROUND(SUM(last_month_data.last_month_cost) / 10000, 2) as lastMonthCost, " ) ; //上月成本(元)
executePluginSql . append ( " ROUND(SUM(yoy_month.yoy_month_sa_qty)/ 10000, 2) as yoyMonthSaQty, " ) ; //同比月销售数量(件)
executePluginSql . append ( " ROUND(SUM(yoy_month.yoy_month_sa_money) / 10000, 2) as yoyMonthSaMoney, " ) ; //同比月销售金额(元)
executePluginSql . append ( " ROUND(SUM(yoy_month.yoy_month_profit) / 10000, 2) as yoyMonthProfit, " ) ; //同比月毛利额(元)
executePluginSql . append ( " ROUND(SUM(yoy_month.yoy_month_cost) / 10000, 2) as yoyMonthCost, " ) ; //同比月成本(元)
executePluginSql . append ( " GROUP_CONCAT(DISTINCT current_month.province_id ORDER BY current_month.province_id SEPARATOR ',') as province_id, \ n " ) ; //行政区域ID
executePluginSql . append ( " GROUP_CONCAT(DISTINCT current_month.province_name ORDER BY current_month.province_name SEPARATOR ',') as province_name, \ n " ) ; //行政区域名称
executePluginSql . append ( " CASE WHEN (CASE WHEN sum(yoy_month.yoy_month_sa_qty) = 0 THEN IF(sum(current_month.this_month_sa_qty) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_qty) - sum(yoy_month.yoy_month_sa_qty)) / sum(yoy_month.yoy_month_sa_qty) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_sa_qty) = 0 THEN IF(sum(current_month.this_month_sa_qty) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_qty) - sum(yoy_month.yoy_month_sa_qty)) / sum(yoy_month.yoy_month_sa_qty) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(yoy_month.yoy_month_sa_qty) = 0 THEN IF(sum(current_month.this_month_sa_qty) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_qty) - sum(yoy_month.yoy_month_sa_qty)) / sum(yoy_month.yoy_month_sa_qty) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_sa_qty) = 0 THEN IF(sum(current_month.this_month_sa_qty) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_qty) - sum(yoy_month.yoy_month_sa_qty)) / sum(yoy_month.yoy_month_sa_qty) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS monthsaqty_yoy, \ n " ) ; //本月销量同比
executePluginSql . append ( " CASE WHEN (CASE WHEN sum(yoy_month.yoy_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_money) - sum(yoy_month.yoy_month_sa_money)) / sum(yoy_month.yoy_month_sa_money) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_money) - sum(yoy_month.yoy_month_sa_money)) / sum(yoy_month.yoy_month_sa_money) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(yoy_month.yoy_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_money) - sum(yoy_month.yoy_month_sa_money)) / sum(yoy_month.yoy_month_sa_money) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_money) - sum(yoy_month.yoy_month_sa_money)) / sum(yoy_month.yoy_month_sa_money) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS monthsamoney_yoy, \ n " ) ; //本月销售金额同比
executePluginSql . append ( " CASE WHEN (CASE WHEN sum(last_month_data.last_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_money) - sum(last_month_data.last_month_sa_money)) / sum(last_month_data.last_month_sa_money) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(last_month_data.last_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_money) - sum(last_month_data.last_month_sa_money)) / sum(last_month_data.last_month_sa_money) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(last_month_data.last_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_money) - sum(last_month_data.last_month_sa_money)) / sum(last_month_data.last_month_sa_money) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(last_month_data.last_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_sa_money) - sum(last_month_data.last_month_sa_money)) / sum(last_month_data.last_month_sa_money) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS lastMonthSaMoney_yoy, \ n " ) ; //本月销售金额增长率
executePluginSql . append ( " CASE WHEN (CASE WHEN sum(yoy_month.yoy_month_cost) = 0 THEN IF(sum(current_month.this_month_cost) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_cost) - sum(yoy_month.yoy_month_cost)) / sum(yoy_month.yoy_month_cost) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_cost) = 0 THEN IF(sum(current_month.this_month_cost) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_cost) - sum(yoy_month.yoy_month_cost)) / sum(yoy_month.yoy_month_cost) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(yoy_month.yoy_month_cost) = 0 THEN IF(sum(current_month.this_month_cost) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_cost) - sum(yoy_month.yoy_month_cost)) / sum(yoy_month.yoy_month_cost) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_cost) = 0 THEN IF(sum(current_month.this_month_cost) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(current_month.this_month_cost) - sum(yoy_month.yoy_month_cost)) / sum(yoy_month.yoy_month_cost) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS this_month_cost_yoy, \ n " ) ; //本月销售成本同比
executePluginSql . append ( " CASE WHEN (CASE WHEN sum(yoy_month.yoy_month_profit) = 0 THEN IF(sum(yoy_month.yoy_month_profit) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(yoy_month.yoy_month_profit) - sum(yoy_month.yoy_month_profit)) / sum(yoy_month.yoy_month_profit) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_profit) = 0 THEN IF(sum(yoy_month.yoy_month_profit) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(yoy_month.yoy_month_profit) - sum(yoy_month.yoy_month_profit)) / sum(yoy_month.yoy_month_profit) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(yoy_month.yoy_month_profit) = 0 THEN IF(sum(yoy_month.yoy_month_profit) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(yoy_month.yoy_month_profit) - sum(yoy_month.yoy_month_profit)) / sum(yoy_month.yoy_month_profit) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_profit) = 0 THEN IF(sum(yoy_month.yoy_month_profit) > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " ELSE (sum(yoy_month.yoy_month_profit) - sum(yoy_month.yoy_month_profit)) / sum(yoy_month.yoy_month_profit) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS monthprofit_yoy, \ n " ) ; //本月毛利同比
executePluginSql . append ( " COALESCE (ROUND( sum(current_month.this_month_sa_money)/SUM(total_month_data.this_month_sa_money_sum) * 100, 2), 0 ) as this_month_sa_money_share, \ n " ) ; //本月毛利额占比
executePluginSql . append ( " COALESCE (ROUND( sum(current_month.this_month_profit)/SUM(total_month_data.this_month_profit_sum) * 100, 2), 0 ) as this_month_profit_share \ n " ) ; //本月销售金额占比
// executePluginSql.append(" ROUND(avg(tbl_lgbsa.MONTHPROFITSHARE) * 100, 2) AS MONTHPROFITSHARE, \n"); //本月毛利额占比
// executePluginSql.append(" ROUND(avg(tbl_lgbsa.MONTHSAMONEYSHARE) * 100, 2) AS MONTHSAMONEYSHARE \n"); //本月销售金额占比
executePluginSql . append ( " from new_gr_bi_sa_agg_month_count as current_month " ) ;
executePluginSql . append ( " LEFT JOIN (SELECT " ) ;
executePluginSql . append ( " use_year, " ) ;
executePluginSql . append ( " use_month, " ) ;
executePluginSql . append ( " goods_id, " ) ;
executePluginSql . append ( " zone_id, " ) ;
executePluginSql . append ( " province_id, " ) ;
executePluginSql . append ( " sale_type_id, " ) ;
executePluginSql . append ( " dosage_id, " ) ;
executePluginSql . append ( " custom_id, " ) ;
executePluginSql . append ( " saler_id, " ) ;
executePluginSql . append ( " SUM(this_month_sa_qty) AS last_month_sa_qty, " ) ;
executePluginSql . append ( " SUM(this_month_sa_money) AS last_month_sa_money, " ) ;
executePluginSql . append ( " SUM(this_month_cost) AS last_month_cost, " ) ;
executePluginSql . append ( " SUM(this_month_profit) AS last_month_profit " ) ;
executePluginSql . append ( " FROM new_gr_bi_sa_agg_month_count " ) ;
executePluginSql . append ( " GROUP BY use_year, " ) ;
executePluginSql . append ( " use_month, " ) ;
executePluginSql . append ( " goods_id, " ) ;
executePluginSql . append ( " zone_id, " ) ;
executePluginSql . append ( " province_id, " ) ;
executePluginSql . append ( " sale_type_id, " ) ;
executePluginSql . append ( " dosage_id, " ) ;
executePluginSql . append ( " custom_id, " ) ;
executePluginSql . append ( " saler_id) AS last_month_data " ) ;
executePluginSql . append ( " ON current_month.goods_id = last_month_data.goods_id " ) ;
executePluginSql . append ( " AND current_month.zone_id = last_month_data.zone_id " ) ;
executePluginSql . append ( " AND current_month.province_id = last_month_data.province_id " ) ;
executePluginSql . append ( " AND current_month.sale_type_id = last_month_data.sale_type_id " ) ;
executePluginSql . append ( " AND current_month.dosage_id = last_month_data.dosage_id " ) ;
executePluginSql . append ( " AND current_month.custom_id = last_month_data.custom_id " ) ;
executePluginSql . append ( " AND current_month.saler_id = last_month_data.saler_id " ) ;
executePluginSql . append ( " AND last_month_data.use_year = current_month.use_year - (current_month.use_month = 1) " ) ;
executePluginSql . append ( " AND last_month_data.use_month = IF(current_month.use_month = 1, 12, current_month.use_month - 1) " ) ;
executePluginSql . append ( " LEFT JOIN (SELECT use_year, " ) ;
executePluginSql . append ( " use_month, " ) ;
executePluginSql . append ( " goods_id, " ) ;
executePluginSql . append ( " zone_id, " ) ;
executePluginSql . append ( " province_id, " ) ;
executePluginSql . append ( " sale_type_id, " ) ;
executePluginSql . append ( " dosage_id, " ) ;
executePluginSql . append ( " custom_id, " ) ;
executePluginSql . append ( " saler_id, " ) ;
executePluginSql . append ( " SUM(this_month_sa_qty) AS yoy_month_sa_qty, " ) ; // 同比月销量
executePluginSql . append ( " SUM(this_month_sa_money) AS yoy_month_sa_money, " ) ; // 同比月销售金额
executePluginSql . append ( " SUM(this_month_cost) as yoy_month_cost, " ) ; // 同比月销售成本
executePluginSql . append ( " SUM(this_month_profit) AS yoy_month_profit " ) ; // 同比月毛利额
executePluginSql . append ( " FROM new_gr_bi_sa_agg_month_count " ) ;
// if(params.containsKey("useyear")){
// executePluginSql.append(" where use_year = " + (Integer.parseInt(params.get("useyear").toString())-1));
// }
executePluginSql . append ( " GROUP BY use_year, " ) ;
executePluginSql . append ( " use_month, " ) ;
executePluginSql . append ( " goods_id, " ) ;
executePluginSql . append ( " zone_id, " ) ;
executePluginSql . append ( " province_id, " ) ;
executePluginSql . append ( " sale_type_id, " ) ;
executePluginSql . append ( " dosage_id, " ) ;
executePluginSql . append ( " custom_id, " ) ;
executePluginSql . append ( " saler_id) yoy_month ON yoy_month.use_year = current_month.use_year - 1 " ) ;
executePluginSql . append ( " AND yoy_month.use_month = current_month.use_month " ) ;
executePluginSql . append ( " AND yoy_month.goods_id = current_month.goods_id " ) ;
executePluginSql . append ( " AND yoy_month.zone_id = current_month.zone_id " ) ;
executePluginSql . append ( " AND yoy_month.province_id = current_month.province_id " ) ;
executePluginSql . append ( " AND yoy_month.sale_type_id = current_month.sale_type_id " ) ;
executePluginSql . append ( " AND yoy_month.dosage_id = current_month.dosage_id " ) ;
executePluginSql . append ( " AND yoy_month.custom_id = current_month.custom_id " ) ;
executePluginSql . append ( " AND yoy_month.saler_id = current_month.saler_id " ) ;
executePluginSql . append ( " LEFT JOIN ( " ) ;
executePluginSql . append ( " SELECT " ) ;
executePluginSql . append ( " use_year, " ) ;
executePluginSql . append ( " use_month, " ) ;
executePluginSql . append ( " SUM( this_month_sa_money ) AS this_month_sa_money_sum, " ) ;
executePluginSql . append ( " SUM(this_month_profit) AS this_month_profit_sum " ) ;
executePluginSql . append ( " FROM new_gr_bi_sa_agg " ) ;
// if(params.containsKey("useyear")){
// executePluginSql.append(" where use_year = " + params.get("useyear"));
// }
executePluginSql . append ( " GROUP BY " ) ;
executePluginSql . append ( " use_year, use_month " ) ;
executePluginSql . append ( " ) total_month_data ON total_month_data.use_year = current_month.use_year " ) ;
executePluginSql . append ( " AND total_month_data.use_month = current_month.use_month " ) ;
// if(params.containsKey("useyear")){
// executePluginSql.append(" where current_month.use_year = " + params.get("useyear"));
// if(params.containsKey("usemonth")){
// executePluginSql.append(" and current_month.use_month = " + params.get("usemonth"));
// }
// }
executePluginSql . append ( " GROUP BY \ n " ) ;
if ( groupFieldList . contains ( " customname " ) | | params . containsKey ( " customname " ) ) {
executePluginSql . append ( " current_month.custom_id, " ) ;
executePluginSql . append ( " current_month.custom_name, " ) ;
}
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) {
executePluginSql . append ( " current_month.use_year, " ) ;
}
if ( groupFieldList . contains ( " usemonth " ) | | params . containsKey ( " usemonth " ) ) {
executePluginSql . append ( " current_month.use_month, " ) ;
}
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) {
executePluginSql . append ( " current_month.zone_id, " ) ;
executePluginSql . append ( " current_month.zone_name, " ) ;
}
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) {
executePluginSql . append ( " current_month.sale_type_id, " ) ;
executePluginSql . append ( " current_month.sale_type_name, " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) {
executePluginSql . append ( " current_month.saler_id, " ) ;
executePluginSql . append ( " current_month.saler_name, " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) {
executePluginSql . append ( " current_month.dosage_id, " ) ;
executePluginSql . append ( " current_month.dosage_name, " ) ;
}
if ( params . containsKey ( " goodsname " ) ) { //货品名称
executePluginSql . append ( " current_month.goods_id, " ) ;
executePluginSql . append ( " current_month.goods_name, " ) ;
}
executePluginSql . deleteCharAt ( executePluginSql . length ( ) - 1 ) ;
return executePluginSql . toString ( ) ;
}
}