diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkLineReportEnhance.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkLineReportEnhance.java index 0f92a3f..6350c4b 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkLineReportEnhance.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkLineReportEnhance.java @@ -29,142 +29,173 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { }else { StringBuilder executePluginSql = new StringBuilder(); executePluginSql.append(" SELECT \n"); + executePluginSql.append(" current_month.use_year as useyear, \n"); if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 - executePluginSql.append(" tbl_lgbsa.CUSTOMID, \n"); - executePluginSql.append(" tbl_lgbsa.CUSTOMNAME, \n"); + executePluginSql.append(" current_month.custom_id as customid, \n"); + executePluginSql.append(" current_month.custom_name as 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"); //年月 - } - } - 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(" current_month.use_year as ny, \n"); //年月 } if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 - executePluginSql.append(" tbl_lgbsa.ZONEID, \n"); - executePluginSql.append(" tbl_lgbsa.ZONENAME, \n"); + 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(" tbl_lgbsa.SALETYPEID, \n"); - executePluginSql.append(" tbl_lgbsa.SALETYPENAME, \n"); + 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(" tbl_lgbsa.SALERID, \n"); - executePluginSql.append(" tbl_lgbsa.SALERNAME, \n"); + 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(" tbl_lgbsa.DOSAGEID, \n"); - executePluginSql.append(" tbl_lgbsa.DOSAGENAME, \n"); + executePluginSql.append(" current_month.dosage_id, \n"); + executePluginSql.append(" current_month.dosage_name as dosagename, \n"); } if (params.containsKey("goodsname")) { //货品名称 - executePluginSql.append(" tbl_lgbsa.GOODSID, \n"); - executePluginSql.append(" tbl_lgbsa.GOODSNAME, \n"); + executePluginSql.append(" current_month.goods_id, \n"); + executePluginSql.append(" current_month.goods_name as goodsname, \n"); } + executePluginSql.append(" GROUP_CONCAT(DISTINCT current_year.province_id ORDER BY current_year.province_id SEPARATOR ',') as province_id, \n"); //行政区域ID + executePluginSql.append(" GROUP_CONCAT(DISTINCT current_year.province_name ORDER BY current_year.province_name SEPARATOR ',') as province_name, \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 THISSAQTY, \n"); //本年销量 - executePluginSql.append(" SUM(tbl_lgbsa.LASTSAQTY) as LASTSAQTY, \n"); //上年销量 + executePluginSql.append(" SUM(current_year.this_year_sa_qty) AS thisYearSaQty, \n"); //本年销量 + executePluginSql.append(" ROUND(SUM(current_year.this_year_sa_money) / 10000, 2) AS thisYearSaMoney, \n"); //本年销售金额(元) + executePluginSql.append(" ROUND(SUM(current_year.this_year_profit) / 10000, 2) AS thisYearProfit, \n"); //本年毛利额(元) + executePluginSql.append(" ROUND(SUM(current_year.this_year_cost) / 10000, 2) AS thisYearCost, \n");//本年销售成本(元) + executePluginSql.append(" SUM(last_year_data.last_year_sa_qty) AS lastYearSaQty, \n"); //上年销量 + executePluginSql.append(" ROUND(SUM(last_year_data.last_year_sa_money) / 10000, 2) AS lastYearSaMoney, \n"); //上年销售金额(元) + executePluginSql.append(" ROUND(SUM(last_year_data.last_year_profit) / 10000, 2) AS lastYearProfit, \n");//上年毛利额(元) + executePluginSql.append(" ROUND(SUM(last_year_data.last_year_cost) / 10000, 2) AS lastYearCost, \n"); //上年销售成本(元) + + executePluginSql.append(" ROUND(avg(current_year.profit_change), 2) as PROFITCHANGE, \n"); //毛利变动(元) + executePluginSql.append(" ROUND(avg(current_year.profit_growth), 2) as PROFITGROWTH, \n"); //毛利额增长率 + executePluginSql.append(" ROUND(avg(current_year.this_profit_rate), 2) as THISPROFITRATE, \n"); //本年毛利率 + executePluginSql.append(" ROUND(avg(current_year.last_year_profit_share) * 100, 2) as last_year_profit_share, \n"); //上年毛利额占比 + executePluginSql.append(" ROUND(avg(current_year.this_year_profit_share) * 100, 2) AS this_year_profit_share, \n"); //本年毛利额占比 + executePluginSql.append(" COALESCE(ROUND(sum(current_year.this_year_sa_money) / SUM(total_year_data.this_year_sa_money_sum) * 100, 2), 0) AS this_year_sa_money_share, \n");//上年销售金额占比 + executePluginSql.append(" COALESCE (ROUND( sum(current_year.this_year_profit)/SUM(total_year_data.this_year_profit_sum) * 100, 2), 0 ) as this_year_profit_share \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(" WHEN (CASE WHEN sum(current_year.last_year_sa_qty) = 0 THEN IF(sum(current_year.this_year_sa_qty) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_sa_qty) - sum(current_year.last_year_sa_qty)) / sum(current_year.last_year_sa_qty) * 100 END) > 0 THEN \n"); + executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(current_year.last_year_sa_qty) = 0 THEN IF(sum(current_year.this_year_sa_qty) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_sa_qty) - sum(current_year.last_year_sa_qty)) / sum(current_year.last_year_sa_qty) * 100 END), 2)) \n"); + executePluginSql.append(" WHEN (CASE WHEN sum(current_year.last_year_sa_qty) = 0 THEN IF(sum(current_year.this_year_sa_qty) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_sa_qty) - sum(current_year.last_year_sa_qty)) / sum(current_year.last_year_sa_qty) * 100 END) < 0 THEN \n"); + executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(current_year.last_year_sa_qty) = 0 THEN IF(sum(current_year.this_year_sa_qty) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_sa_qty) - sum(current_year.last_year_sa_qty)) / sum(current_year.last_year_sa_qty) * 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 THISSAMONEY, \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(" WHEN (CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year.this_year_sa_money) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END) > 0 THEN \n"); + executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year.this_year_sa_money) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END), 2)) \n"); + executePluginSql.append(" WHEN (CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year.this_year_sa_money) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END) < 0 THEN \n"); + executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year.this_year_sa_money) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 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.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, 100, 0) \n"); - executePluginSql.append(" ELSE (MAX(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END), 2)) \n"); + executePluginSql.append("WHEN (CASE WHEN sum(last_year_data.last_year_profit) = 0 THEN IF(MAX(current_year.this_year_profit) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_profit) - sum(last_year_data.last_year_profit)) / sum(last_year_data.last_year_profit) * 100 END) > 0 THEN \n"); + executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(last_year_data.last_year_profit) = 0 THEN IF(sum(current_year.this_year_profit) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_profit) - sum(last_year_data.last_year_profit)) / sum(last_year_data.last_year_profit) * 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(" WHEN (CASE WHEN sum(last_year_data.last_year_profit) = 0 THEN IF(sum(current_year.this_year_profit) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_profit) - sum(last_year_data.last_year_profit)) / sum(last_year_data.last_year_profit) * 100 END) < 0 THEN \n"); + executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(last_year_data.last_year_profit) = 0 THEN IF(MAX(current_year.this_year_profit) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (MAX(current_year.this_year_profit) - sum(last_year_data.last_year_profit)) / sum(last_year_data.last_year_profit) * 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(" 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(" CASE WHEN (CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (sum(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END) > 0 THEN \n"); + executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (sum(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END), 2)) \n"); + executePluginSql.append(" WHEN (CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (sum(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END) < 0 THEN \n"); + executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n"); + executePluginSql.append(" ELSE (sum(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END), 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.LASTSAMONEYSHARE) * 100, 2) AS LASTSAMONEYSHARE, \n"); //上年销售金额占比 - executePluginSql.append(" ROUND(avg(tbl_lgbsa.THISSAMONEYSHARE) * 100, 2) AS THISSAMONEYSHARE, \n"); //本年销售金额占比 + executePluginSql.append(" END AS lastMonthSaMoney_yoy, \n"); //本年销售金额增长率 executePluginSql.append(" FROM \n"); - executePluginSql.append(" yunji_gr_bi_sa_agg tbl_lgbsa \n"); + executePluginSql.append(" yunji_gr_bi_sa_agg as current_year \n"); + executePluginSql.append(" LEFT JOIN (SELECT use_year, \n"); + executePluginSql.append(" goods_id, \n"); + executePluginSql.append(" zone_id, \n"); + executePluginSql.append(" province_id, \n"); + executePluginSql.append(" sale_type_id, \n"); + executePluginSql.append(" dosage_id, \n"); + executePluginSql.append(" custom_id, \n"); + executePluginSql.append(" saler_id, \n"); + executePluginSql.append(" SUM(this_year_sa_qty) AS last_year_sa_qty, \n"); + executePluginSql.append(" SUM(this_year_sa_money) AS last_year_sa_money, \n"); + executePluginSql.append(" SUM(this_year_cost) AS last_year_cost, \n"); + executePluginSql.append(" SUM(this_year_profit) AS last_year_profit \n"); + executePluginSql.append(" FROM new_gr_bi_sa_agg_year_count \n"); + executePluginSql.append(" GROUP BY use_year, \n"); + executePluginSql.append(" goods_id, \n"); + executePluginSql.append(" zone_id, \n"); + executePluginSql.append(" province_id, \n"); + executePluginSql.append(" sale_type_id, \n"); + executePluginSql.append(" dosage_id, \n"); + executePluginSql.append(" custom_id, \n"); + executePluginSql.append(" saler_id) AS last_year_data \n"); + executePluginSql.append(" ON current_year.goods_id = last_year_data.goods_id \n"); + executePluginSql.append(" AND current_year.zone_id = last_year_data.zone_id \n"); + executePluginSql.append(" AND current_year.province_id = last_year_data.province_id \n"); + executePluginSql.append(" AND current_year.sale_type_id = last_year_data.sale_type_id \n"); + executePluginSql.append(" AND current_year.dosage_id = last_year_data.dosage_id \n"); + executePluginSql.append(" AND current_year.custom_id = last_year_data.custom_id \n"); + executePluginSql.append(" AND current_year.saler_id = last_year_data.saler_id \n"); + executePluginSql.append(" AND last_year_data.use_year = current_year.use_year - 1 \n"); + executePluginSql.append(" LEFT JOIN (SELECT use_year, \n"); + executePluginSql.append(" SUM(this_year_sa_money) AS this_year_sa_money_sum, \n"); + executePluginSql.append(" SUM(this_year_profit) AS this_year_profit_sum \n"); + executePluginSql.append(" FROM new_gr_bi_sa_agg_year_count \n"); + executePluginSql.append(" WHERE use_year = 2026 \n"); + executePluginSql.append(" GROUP BY use_year) as total_year_data \n"); + executePluginSql.append(" ON total_year_data.use_year = current_year.use_year \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(" current_month.custom_id,"); + executePluginSql.append(" current_month.custom_name,"); } if (groupFieldList.contains("useyear") || params.containsKey("useyear")) { - executePluginSql.append(" tbl_lgbsa.USEYEAR,"); + executePluginSql.append(" current_month.use_year,"); } if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { - executePluginSql.append(" tbl_lgbsa.USEMONTH,"); + executePluginSql.append(" current_month.use_month,"); } if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { - executePluginSql.append(" tbl_lgbsa.ZONEID,"); - executePluginSql.append(" tbl_lgbsa.ZONENAME,"); + executePluginSql.append(" current_month.zone_id,"); + executePluginSql.append(" current_month.zone_name,"); } if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { - executePluginSql.append(" tbl_lgbsa.SALETYPEID,"); - executePluginSql.append(" tbl_lgbsa.SALETYPENAME,"); + executePluginSql.append(" current_month.sale_type_id,"); + executePluginSql.append(" current_month.sale_type_name,"); } if (groupFieldList.contains("salername") || params.containsKey("salername")) { - executePluginSql.append(" tbl_lgbsa.SALERID,"); - executePluginSql.append(" tbl_lgbsa.SALERNAME,"); + executePluginSql.append(" current_month.saler_id,"); + executePluginSql.append(" current_month.saler_name,"); } if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { - executePluginSql.append(" tbl_lgbsa.DOSAGEID,"); - executePluginSql.append(" tbl_lgbsa.DOSAGENAME,"); + executePluginSql.append(" current_month.dosage_id,"); + executePluginSql.append(" current_month.dosage_name,"); } if (params.containsKey("goodsname")) { //货品名称 - executePluginSql.append(" tbl_lgbsa.GOODSID,"); - executePluginSql.append(" tbl_lgbsa.GOODSNAME,"); + executePluginSql.append(" current_month.goods_id,"); + executePluginSql.append(" current_month.goods_name,"); } + executePluginSql.deleteCharAt(executePluginSql.length() - 1); sql = executePluginSql.toString(); } @@ -331,9 +362,9 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" SUM(this_month_cost) as yoy_month_cost, \n"); // 同比月销售成本 executePluginSql.append(" SUM(this_month_profit) AS yoy_month_profit \n"); // 同比月毛利额 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)); - } +// if(params.containsKey("useyear")){ +// executePluginSql.append(" where use_year = " + (Integer.parseInt(params.get("useyear").toString())-1)); +// } executePluginSql.append(" GROUP BY use_year, \n"); executePluginSql.append(" use_month, \n"); executePluginSql.append(" goods_id, \n"); @@ -358,9 +389,9 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" SUM( this_month_sa_money ) AS this_month_sa_money_sum, \n"); executePluginSql.append(" SUM(this_month_profit) AS this_month_profit_sum \n"); executePluginSql.append(" FROM new_gr_bi_sa_agg \n"); - if(params.containsKey("useyear")){ - executePluginSql.append(" where use_year = " + params.get("useyear")); - } +// if(params.containsKey("useyear")){ +// executePluginSql.append(" where use_year = " + params.get("useyear")); +// } executePluginSql.append(" GROUP BY \n"); executePluginSql.append(" use_year, use_month\n"); executePluginSql.append(" ) total_month_data ON total_month_data.use_year = current_month.use_year \n");