Merge branch 'dev_js_20260317'

This commit is contained in:
king
2026-03-17 17:55:20 +08:00
4 changed files with 194 additions and 39 deletions

View File

@@ -59,71 +59,133 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
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.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(" 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(" SUM(tbl_lgbsa.MONTHSAQTY) as MONTHSAQTY, \n"); //本月销量
executePluginSql.append(" CONCAT(ROUND((SELECT SUM(MONTHSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS monthsaqty_s, \n"); executePluginSql.append(" CASE\n");
executePluginSql.append(" CONCAT(ROUND((SELECT SUM(THISSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS thissaqty_s, \n"); executePluginSql.append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\n");
executePluginSql.append(" CONCAT(ROUND((SELECT SUM(LASTSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS lastsaqty_s, \n"); executePluginSql.append(" ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END) > 0 THEN\n");
executePluginSql.append(" -- 原本带CAST的字段简化写法CONCAT会自动转为字符串 \n"); executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\n");
executePluginSql.append(" CONCAT(ROUND((SELECT SUM(MONTHSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS monthsamoney_s, \n"); executePluginSql.append(" ELSE (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END), 2))\n");
executePluginSql.append(" CONCAT(ROUND((SELECT SUM(THISSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000,2), '亿') AS thissamoney_s, \n"); executePluginSql.append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) = 0 THEN IF(sum(tbl_lgbsa.MONTHSAQTY) > 0, 100, 0)\n");
executePluginSql.append(" CONCAT(ROUND((SELECT SUM(LASTSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000,2), '亿') AS lastsamoney_s, \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");
// executePluginSql.append(" -- 原本带CAST的字段简化写法CONCAT会自动转为字符串 \n");
// 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.THISSAQTY) as THISSAQTY, \n"); //本年销量 executePluginSql.append(" SUM(tbl_lgbsa.THISSAQTY) as THISSAQTY, \n"); //本年销量
executePluginSql.append(" SUM(tbl_lgbsa.LASTSAQTY) as LASTSAQTY, \n"); //上年销量 executePluginSql.append(" SUM(tbl_lgbsa.LASTSAQTY) as LASTSAQTY, \n"); //上年销量
executePluginSql.append(" -- 数量同比(原有) \n"); executePluginSql.append(" -- 数量同比(原有) \n");
executePluginSql.append(" CASE \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(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END) > 0 THEN \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(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END), 2), '%') \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(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END) < 0 THEN \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(" CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAQTY) = 0 THEN IF(sum(tbl_lgbsa.THISSAQTY) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END), 2), '%') \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(" ELSE '0.00' \n");
executePluginSql.append(" END AS saqty_yoy, \n"); executePluginSql.append(" END AS saqty_yoy, \n");
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2), '万') as MONTHSAMONEY, \n"); //本月销售金额(元) executePluginSql.append(" ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as MONTHSAMONEY, \n"); //本月销售金额(元)
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.THISSAMONEY) / 10000, 2), '万') as THISSAMONEY, \n"); //本年销售金额(元) executePluginSql.append(" CASE \n");
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.LASTSAMONEY) / 10000, 2), '万') as LASTSAMONEY, \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.THISSAMONEY) / 10000, 2) as THISSAMONEY, \n"); //本年销售金额(元)
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(" -- 销售金额同比(原有新增) \n");
executePluginSql.append(" CASE \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(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END) > 0 THEN \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(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END), 2), '%') \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(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END) < 0 THEN \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(" CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END), 2), '%') \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(" ELSE '0.00' \n");
executePluginSql.append(" END AS samoney_yoy, \n"); //销售收入同比 executePluginSql.append(" END AS samoney_yoy, \n"); //销售收入同比
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.MONTHPROFIT) / 10000, 2), '万') as MONTHPROFIT, \n"); //本月毛利额(元) executePluginSql.append(" ROUND(SUM(tbl_lgbsa.MONTHPROFIT) / 10000, 2) as MONTHPROFIT, \n"); //本月毛利额(元)
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.THISPROFIT) / 10000, 2), '万') as THISPROFIT, \n"); //本年毛利额(元) executePluginSql.append(" CASE \n");
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.LASTPROFIT) / 10000, 2), '万') as LASTPROFIT, \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.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(" ELSE '0.00' \n");
executePluginSql.append(" END AS monthprofit_yoy, \n"); //年度毛利同比
executePluginSql.append(" ROUND(MAX(tbl_lgbsa.THISPROFIT) / 10000, 2) as THISPROFIT, \n"); //本年毛利额(元)
executePluginSql.append(" ROUND(MAX(tbl_lgbsa.LASTPROFIT) / 10000, 2) as LASTPROFIT, \n"); //上年毛利额(元)
executePluginSql.append(" -- 新增:毛利同比 \n"); executePluginSql.append(" -- 新增:毛利同比 \n");
executePluginSql.append(" CASE \n"); executePluginSql.append(" CASE \n");
executePluginSql.append(" -- 正数红色圆点emoji + 数值 + % \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("WHEN (CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(MAX(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END) > 0 THEN \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(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(sum(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END), 2), '%') \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(" -- 负数绿色圆点emoji + 数值 + % \n");
executePluginSql.append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(sum(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \n"); executePluginSql.append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(sum(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END) < 0 THEN \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(" CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTPROFIT) = 0 THEN IF(MAX(tbl_lgbsa.THISPROFIT) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISPROFIT) - sum(tbl_lgbsa.LASTPROFIT)) / sum(tbl_lgbsa.LASTPROFIT) * 100 END), 2), '%') \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(" -- 0值直接显示 \n");
executePluginSql.append(" ELSE '0.00%' \n"); executePluginSql.append(" ELSE '0.00' \n");
executePluginSql.append(" END AS profit_yoy, \n"); //毛利同比 executePluginSql.append(" END AS profit_yoy, \n"); //毛利同比
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.MONTHCOST) / 10000, 2), '万') as MONTHCOST, \n"); //本月销售成本(元) executePluginSql.append(" ROUND(SUM(tbl_lgbsa.MONTHCOST) / 10000, 2) as MONTHCOST, \n"); //本月销售成本(元)
executePluginSql.append(" ROUND(MAX(tbl_lgbsa.THISCOST) / 10000, 2) as THISCOST, \n"); //本年销售成本(元)
executePluginSql.append(" CASE \n");
executePluginSql.append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHCOST) = 0 THEN IF(sum(tbl_lgbsa.MONTHCOST) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.MONTHCOST) - sum(tbl_lgbsa.LASTYEAROFMONTHCOST)) / sum(tbl_lgbsa.LASTYEAROFMONTHCOST) * 100 END) > 0 THEN \n");
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHCOST) = 0 THEN IF(sum(tbl_lgbsa.MONTHCOST) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.MONTHCOST) - sum(tbl_lgbsa.LASTYEAROFMONTHCOST)) / sum(tbl_lgbsa.LASTYEAROFMONTHCOST) * 100 END), 2)) \n");
executePluginSql.append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHCOST) = 0 THEN IF(sum(tbl_lgbsa.MONTHCOST) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.MONTHCOST) - sum(tbl_lgbsa.LASTYEAROFMONTHCOST)) / sum(tbl_lgbsa.LASTYEAROFMONTHCOST) * 100 END) < 0 THEN \n");
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(tbl_lgbsa.LASTYEAROFMONTHCOST) = 0 THEN IF(sum(tbl_lgbsa.MONTHCOST) > 0, 100, 0) \n");
executePluginSql.append(" ELSE (sum(tbl_lgbsa.MONTHCOST) - sum(tbl_lgbsa.LASTYEAROFMONTHCOST)) / sum(tbl_lgbsa.LASTYEAROFMONTHCOST) * 100 END), 2)) \n");
executePluginSql.append(" ELSE '0.00' \n");
executePluginSql.append(" END AS monthcost_yoy, \n"); //本月销售成本同比
executePluginSql.append(" ROUND(avg(tbl_lgbsa.PROFITCHANGE), 2) as PROFITCHANGE, \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.PROFITGROWTH), 2) as PROFITGROWTH, \n"); //毛利额增长率
executePluginSql.append(" ROUND(avg(tbl_lgbsa.THISPROFITRATE), 2) as THISPROFITRATE, \n"); //本年毛利率 executePluginSql.append(" ROUND(avg(tbl_lgbsa.THISPROFITRATE), 2) as THISPROFITRATE, \n"); //本年毛利率
executePluginSql.append(" ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2) as SAMONEYGROWTH, \n"); //销售金额增长率 executePluginSql.append(" CASE \n");
executePluginSql.append(" WHEN tbl_lgbsa.SAMONEYGROWTH > 0 THEN \n");
executePluginSql.append(" CONCAT('🟢 ', ROUND(avg(tbl_lgbsa.SAMONEYGROWTH), 2)) \n");
executePluginSql.append(" WHEN tbl_lgbsa.SAMONEYGROWTH < 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.LASTPROFITSHARE) * 100, 2) as LASTPROFITSHARE, \n"); //上年毛利额占比
executePluginSql.append(" CONCAT(ROUND(avg(tbl_lgbsa.THISPROFITSHARE) * 100, 2), '%') AS THISPROFITSHARE, \n"); //本年毛利额占比 executePluginSql.append(" ROUND(avg(tbl_lgbsa.THISPROFITSHARE) * 100, 2) AS THISPROFITSHARE, \n"); //本年毛利额占比
executePluginSql.append(" CONCAT(ROUND(avg(tbl_lgbsa.MONTHPROFITSHARE) * 100, 2), '%') AS MONTHPROFITSHARE, \n"); //本月毛利额占比 executePluginSql.append(" ROUND(avg(tbl_lgbsa.MONTHPROFITSHARE) * 100, 2) AS MONTHPROFITSHARE, \n"); //本月毛利额占比
executePluginSql.append(" CONCAT(ROUND(avg(tbl_lgbsa.LASTSAMONEYSHARE) * 100, 2), '%') AS LASTSAMONEYSHARE, \n"); //上年销售金额占比 executePluginSql.append(" ROUND(avg(tbl_lgbsa.LASTSAMONEYSHARE) * 100, 2) AS LASTSAMONEYSHARE, \n"); //上年销售金额占比
executePluginSql.append(" CONCAT(ROUND(avg(tbl_lgbsa.THISSAMONEYSHARE) * 100, 2), '%') AS THISSAMONEYSHARE, \n"); //本年销售金额占比 executePluginSql.append(" ROUND(avg(tbl_lgbsa.THISSAMONEYSHARE) * 100, 2) AS THISSAMONEYSHARE, \n"); //本年销售金额占比
executePluginSql.append(" CONCAT(ROUND(avg(tbl_lgbsa.MONTHSAMONEYSHARE) * 100, 2), '%') AS MONTHSAMONEYSHARE \n"); //本月销售金额占比 executePluginSql.append(" ROUND(avg(tbl_lgbsa.MONTHSAMONEYSHARE) * 100, 2) AS MONTHSAMONEYSHARE \n"); //本月销售金额占比
executePluginSql.append(" FROM \n"); executePluginSql.append(" FROM \n");
executePluginSql.append(" yunji_gr_bi_sa_agg tbl_lgbsa \n"); executePluginSql.append(" yunji_gr_bi_sa_agg tbl_lgbsa \n");
executePluginSql.append(" GROUP BY \n"); executePluginSql.append(" GROUP BY \n");

View File

@@ -22,6 +22,9 @@ public interface GrBiSaAggMapper extends BaseMapper<GrBiSaAgg> {
void updateThisData(); void updateThisData();
void updateLastData(); void updateLastData();
void updateLastMonthSamoney();
void updateLastYearOfMonthData();
void updateComplexCalculate1(); void updateComplexCalculate1();
void updateComplexCalculate2(); void updateComplexCalculate2();

View File

@@ -63,7 +63,9 @@ public class GrBiSaAggServiceImpl extends ServiceImpl<GrBiSaAggMapper, GrBiSaAgg
//保存数据 //保存数据
removeAndSaveBatch(pastYear, pastMonth, currentYear, currentMonth, grBiSaSetdtlList); removeAndSaveBatch(pastYear, pastMonth, currentYear, currentMonth, grBiSaSetdtlList);
this.baseMapper.updateThisData(); this.baseMapper.updateThisData();
this.baseMapper.updateLastYearOfMonthData();
this.baseMapper.updateLastData(); this.baseMapper.updateLastData();
this.baseMapper.updateLastMonthSamoney();
this.baseMapper.updateComplexCalculate1(); this.baseMapper.updateComplexCalculate1();
this.baseMapper.updateComplexCalculate2(); this.baseMapper.updateComplexCalculate2();
this.baseMapper.updateComplexCalculate3(); this.baseMapper.updateComplexCalculate3();

View File

@@ -89,7 +89,7 @@
SALERID, SALERID,
SUM( MONTHSAQTY ) AS THISSAQTY, -- 本年销量 SUM( MONTHSAQTY ) AS THISSAQTY, -- 本年销量
SUM( MONTHSAMONEY ) AS THISSAMONEY, -- 本年销售金额 SUM( MONTHSAMONEY ) AS THISSAMONEY, -- 本年销售金额
SUM( MONTHCOST) as THISCOST, -- 本年毛利额 SUM( MONTHCOST) as THISCOST, -- 本年销售成本
SUM( MONTHPROFIT ) AS THISPROFIT -- 本年毛利额 SUM( MONTHPROFIT ) AS THISPROFIT -- 本年毛利额
FROM FROM
yunji_gr_bi_sa_agg yunji_gr_bi_sa_agg
@@ -116,6 +116,94 @@
a.THISPROFIT = COALESCE ( b.THISPROFIT, 0 ); a.THISPROFIT = COALESCE ( b.THISPROFIT, 0 );
</update> </update>
<update id="updateLastYearOfMonthData">
UPDATE yunji_gr_bi_sa_agg a
LEFT JOIN (
SELECT
USEYEAR,
USEMONTH,
GOODSID,
ZONEID,
PROVINCEID,
SALETYPEID,
DOSAGEID,
CUSTOMID,
SALERID,
SUM( MONTHSAQTY ) AS LASTYEAROFMONTHSAQTY,
SUM( MONTHSAMONEY ) AS LASTYEAROFMONTHSAMONEY,
SUM( MONTHCOST) as LASTYEAROFMONTHCOST,
SUM( MONTHPROFIT ) AS LASTYEAROFMONTHPROFIT
FROM
yunji_gr_bi_sa_agg
GROUP BY
USEYEAR,
USEMONTH,
GOODSID,
ZONEID,
PROVINCEID,
SALETYPEID,
DOSAGEID,
CUSTOMID,
SALERID
) b ON b.USEYEAR = a.USEYEAR-1
AND b.USEMONTH = a.USEMONTH
AND b.GOODSID = a.GOODSID
AND b.ZONEID = a.ZONEID
AND b.PROVINCEID = a.PROVINCEID
AND b.SALETYPEID = a.SALETYPEID
AND b.DOSAGEID = a.DOSAGEID
AND b.CUSTOMID = a.CUSTOMID
AND b.SALERID = a.SALERID
SET a.LASTYEAROFMONTHSAQTY = COALESCE ( b.LASTYEAROFMONTHSAQTY, 0 ),
a.LASTYEAROFMONTHSAMONEY = COALESCE ( b.LASTYEAROFMONTHSAMONEY, 0 ),
a.LASTYEAROFMONTHCOST = COALESCE ( b.LASTYEAROFMONTHCOST, 0 ),
a.LASTYEAROFMONTHPROFIT = COALESCE ( b.LASTYEAROFMONTHPROFIT, 0 );
</update>
<update id="updateLastMonthSamoney">
UPDATE yunji_gr_bi_sa_agg AS current_month
JOIN (
SELECT
-- 当前记录的维度和年月
USEYEAR,
USEMONTH,
GOODSID,
ZONEID,
PROVINCEID,
SALETYPEID,
DOSAGEID,
CUSTOMID,
SALERID,
-- 计算上个月的年月
YEAR(DATE_SUB(CONCAT(USEYEAR, '-', USEMONTH, '-01'), INTERVAL 1 MONTH)) AS LAST_YEAR,
MONTH(DATE_SUB(CONCAT(USEYEAR, '-', USEMONTH, '-01'), INTERVAL 1 MONTH)) AS LAST_MONTH,
-- 当前月的销售金额,将作为上个月的金额赋给别的记录
SUM(MONTHSAMONEY) AS CURRENT_MONTH_SAMONEY
FROM yunji_gr_bi_sa_agg
GROUP BY
USEYEAR,
USEMONTH,
GOODSID,
ZONEID,
PROVINCEID,
SALETYPEID,
DOSAGEID,
CUSTOMID,
SALERID
) AS last_month_data
ON current_month.GOODSID = last_month_data.GOODSID
AND current_month.ZONEID = last_month_data.ZONEID
AND current_month.PROVINCEID = last_month_data.PROVINCEID
AND current_month.SALETYPEID = last_month_data.SALETYPEID
AND current_month.DOSAGEID = last_month_data.DOSAGEID
AND current_month.CUSTOMID = last_month_data.CUSTOMID
AND current_month.SALERID = last_month_data.SALERID
AND current_month.USEYEAR = last_month_data.LAST_YEAR
AND current_month.USEMONTH = last_month_data.LAST_MONTH
SET
current_month.LAST_MONTH_SAMONEY = last_month_data.CURRENT_MONTH_SAMONEY;
</update>
<update id="updateLastData"> <update id="updateLastData">
UPDATE yunji_gr_bi_sa_agg a UPDATE yunji_gr_bi_sa_agg a
LEFT JOIN ( LEFT JOIN (