From ddd57cd89956e34337c8add1d3df4dc2962f9525 Mon Sep 17 00:00:00 2001 From: king Date: Thu, 19 Mar 2026 17:19:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=BC=E5=90=88=E9=94=80=E5=94=AE=E6=83=85?= =?UTF-8?q?=E5=86=B5=E8=A1=A8=20=E5=88=86=E7=BB=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/xtsy/zhxsqkLineReportEnhance.java | 622 ++++++++++++------ .../core/framework/entity/NewGrBiSaAgg.java | 108 +++ .../entity/NewGrBiSaAggMonthCount.java | 160 +++++ .../entity/NewGrBiSaAggYearCount.java | 156 +++++ .../framework/mapper/NewGrBiSaAggMapper.java | 7 +- .../service/impl/NewGrBiSaAggServiceImpl.java | 4 +- .../mapper/framework/NewGrBiSaAggMapper.xml | 102 +-- 7 files changed, 907 insertions(+), 252 deletions(-) create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggMonthCount.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java 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 2fd6b2d..8280444 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 @@ -23,61 +23,65 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { Map params = enhanceContext.getParam().getParams(); if (params.containsKey("Group by")) { List 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 = geroupMonthSql(params, groupFieldList); + }else { + 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("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.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(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(" -- 负数:绿色圆点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.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.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.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(" -- 负数:绿色圆点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.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.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(" 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 params, List 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(); + + } } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java new file mode 100644 index 0000000..8a1ea3a --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java @@ -0,0 +1,108 @@ +package com.lideeyunji.core.framework.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; + +/** + * 综合销售情况明细对象 new_gr_bi_sa_agg + * + * @author king + * @date 2026-03-19 + */ +@TableName("new_gr_bi_sa_agg") +@Data +public class NewGrBiSaAgg implements Serializable +{ + private static final long serialVersionUID = 1L; + + @TableField(value = "id") + private Long id; + + + @TableField(value = "use_year") + private int useYear; + + + @TableField(value = "use_month") + private int useMonth; + + + @TableField(value = "zone_id") + private Long zoneId; + + + @TableField(value = "zone_name") + private String zoneName; + + + @TableField(value = "sale_type_id") + private Long saleTypeId; + + + @TableField(value = "sale_type_name") + private String saleTypeName; + + + @TableField(value = "custom_id") + private Long customId; + + + @TableField(value = "custom_name") + private String customName; + + + @TableField(value = "dosage_id") + private Long dosageId; + + + @TableField(value = "dosage_name") + private String dosageName; + + + @TableField(value = "goods_id") + private Long goodsId; + + + @TableField(value = "goods_name") + private String goodsName; + + + @TableField(value = "province_id") + private Long provinceId; + + + @TableField(value = "province_name") + private String provinceName; + + + @TableField(value = "saler_id") + private Long salerId; + + + @TableField(value = "saler_name") + private String salerName; + + + @TableField(value = "this_month_sa_qty") + private BigDecimal thisMonthSaQty; + + + @TableField(value = "this_month_sa_money") + private BigDecimal thisMonthSaMoney; + + + @TableField(value = "this_month_cost") + private BigDecimal thisMonthCost; + + + @TableField(value = "this_month_profit") + private BigDecimal thisMonthProfit; + + + + + +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggMonthCount.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggMonthCount.java new file mode 100644 index 0000000..b81b501 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggMonthCount.java @@ -0,0 +1,160 @@ +package com.lideeyunji.core.framework.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; + +/** + * 综合销售情况月维度对象 new_gr_bi_sa_agg_month_count + * + * @author king + * @date 2026-03-19 + */ +@TableName("new_gr_bi_sa_agg_month_count") +@Data +public class NewGrBiSaAggMonthCount implements Serializable +{ + private static final long serialVersionUID = 1L; + + @TableField(value = "id") + private Long id; + + + @TableField(value = "use_year") + private String useYear; + + + @TableField(value = "use_month") + private Long useMonth; + + + @TableField(value = "zone_id") + private Long zoneId; + + + @TableField(value = "zone_name") + private String zoneName; + + + @TableField(value = "sale_type_id") + private Long saleTypeId; + + + @TableField(value = "sale_type_name") + private String saleTypeName; + + + @TableField(value = "custom_id") + private Long customId; + + + @TableField(value = "custom_name") + private String customName; + + + @TableField(value = "dosage_id") + private Long dosageId; + + + @TableField(value = "dosage_name") + private String dosageName; + + + @TableField(value = "goods_id") + private Long goodsId; + + + @TableField(value = "goods_name") + private String goodsName; + + + @TableField(value = "province_id") + private Long provinceId; + + + @TableField(value = "province_name") + private String provinceName; + + + @TableField(value = "saler_id") + private Long salerId; + + + @TableField(value = "saler_name") + private String salerName; + + + @TableField(value = "this_month_sa_qty") + private Long thisMonthSaQty; + + + @TableField(value = "last_month_sa_qty") + private Long lastMonthSaQty; + + + @TableField(value = "yoy_month_sa_qty") + private Long yoyMonthSaQty; + + + @TableField(value = "this_month_sa_money") + private BigDecimal thisMonthSaMoney; + + + @TableField(value = "last_month_sa_money") + private BigDecimal lastMonthSaMoney; + + + @TableField(value = "yoy_month_sa_money") + private BigDecimal yoyMonthSaMoney; + + + @TableField(value = "this_month_profit") + private BigDecimal thisMonthProfit; + + + @TableField(value = "last_month_profit") + private BigDecimal lastMonthProfit; + + + @TableField(value = "yoy_month_profit") + private BigDecimal yoyMonthProfit; + + + @TableField(value = "this_month_cost") + private BigDecimal thisMonthCost; + + + @TableField(value = "last_month_cost") + private BigDecimal lastMonthCost; + + + @TableField(value = "yoy_last_month_cost") + private BigDecimal yoyLastMonthCost; + + + @TableField(value = "this_month_profit_rate") + private BigDecimal thisMonthProfitRate; + + + @TableField(value = "last_month_profit_rate") + private BigDecimal lastMonthProfitRate; + + + @TableField(value = "last_month_profit_share") + private BigDecimal lastMonthProfitShare; + + + @TableField(value = "this_month_sa_money_share") + private BigDecimal thisMonthSaMoneyShare; + + + @TableField(value = "this_month_profit_share") + private BigDecimal thisMonthProfitShare; + + + + + +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java new file mode 100644 index 0000000..342c9b8 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java @@ -0,0 +1,156 @@ +package com.lideeyunji.core.framework.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; + +/** + * 综合销售情况年维度对象 new_gr_bi_sa_agg_year_count + * + * @author king + * @date 2026-03-19 + */ +@TableName("new_gr_bi_sa_agg_year_count") +@Data +public class NewGrBiSaAggYearCount implements Serializable +{ + private static final long serialVersionUID = 1L; + + @TableField(value = "id") + private Long id; + + + @TableField(value = "use_year") + private String useYear; + + + @TableField(value = "zone_id") + private Long zoneId; + + + @TableField(value = "zone_name") + private String zoneName; + + + @TableField(value = "sale_type_id") + private Long saleTypeId; + + + @TableField(value = "sale_type_name") + private String saleTypeName; + + + @TableField(value = "custom_id") + private Long customId; + + + @TableField(value = "custom_name") + private String customName; + + + @TableField(value = "dosage_id") + private Long dosageId; + + + @TableField(value = "dosage_name") + private String dosageName; + + + @TableField(value = "goods_id") + private Long goodsId; + + + @TableField(value = "goods_name") + private String goodsName; + + + @TableField(value = "province_id") + private Long provinceId; + + + @TableField(value = "province_name") + private String provinceName; + + + @TableField(value = "saler_id") + private Long salerId; + + + @TableField(value = "saler_name") + private String salerName; + + + @TableField(value = "this_year_sa_qty") + private Long thisYearSaQty; + + + @TableField(value = "last_year_sa_qty") + private Long lastYearSaQty; + + + @TableField(value = "this_year_sa_money") + private BigDecimal thisYearSaMoney; + + + @TableField(value = "last_year_sa_money") + private BigDecimal lastYearSaMoney; + + + @TableField(value = "this_year_profit") + private BigDecimal thisYearProfit; + + + @TableField(value = "last_year_profit") + private BigDecimal lastYearProfit; + + + @TableField(value = "this_year_cost") + private BigDecimal thisYearCost; + + + @TableField(value = "last_year_cost") + private BigDecimal lastYearCost; + + + @TableField(value = "this_year_profit_rate") + private BigDecimal thisYearProfitRate; + + + @TableField(value = "last_year_profit_rate") + private BigDecimal lastYearProfitRate; + + + @TableField(value = "this_year_profit_share") + private BigDecimal thisYearProfitShare; + + + @TableField(value = "last_year_profit_share") + private BigDecimal lastYearProfitShare; + + + @TableField(value = "this_year_sa_money_share") + private BigDecimal thisYearSaMoneyShare; + + + @TableField(value = "last_year_sa_money_share") + private BigDecimal lastYearSaMoneyShare; + + + @TableField(value = "this_year_sa_money_growth") + private BigDecimal thisYearSaMoneyGrowth; + + + @TableField(value = "this_year_profit_growth") + private BigDecimal thisYearProfitGrowth; + + + @TableField(value = "this_year_profit_change") + private BigDecimal thisYearProfitChange; + + + + + +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java index 667366f..46c3730 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java @@ -38,10 +38,9 @@ public interface NewGrBiSaAggMapper extends BaseMapper // void updateThisYearData(); // -// void updateLastYearData(); -// void updateLastMonthSamoney(); -// -// void updateYoyMonthData(); + void updateLastYearData(); + void updateLastMonthSamoney(); + void updateYoyMonthData(); // // void updateComplexCalculate1(); // void updateComplexCalculate2(); diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggServiceImpl.java index 32be8a7..105e6f4 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggServiceImpl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggServiceImpl.java @@ -78,7 +78,7 @@ public class NewGrBiSaAggServiceImpl extends ServiceImpl - - UPDATE new_gr_bi_sa_agg_year_count a - LEFT JOIN ( - SELECT - use_year, - goods_id, - zone_id, - province_id, - sale_type_id, - dosage_id, - custom_id, - saler_id, - SUM( this_month_sa_qty ) AS this_year_sa_qty, -- 本年销量 - SUM( this_month_sa_money ) AS this_year_sa_money, -- 本年销售金额 - SUM( this_month_cost) as this_year_cost, -- 本年销售成本 - SUM( this_month_profit ) AS this_year_profit -- 本年毛利额 - FROM - new_gr_bi_sa_agg - GROUP BY - use_year, - goods_id, - zone_id, - province_id, - sale_type_id, - dosage_id, - custom_id, - saler_id - ) b ON b.use_year = a.use_year - AND b.goods_id = a.goods_id - AND b.zone_id = a.zone_id - AND b.province_id = a.province_id - AND b.sale_type_id = a.sale_type_id - AND b.dosage_id = a.dosage_id - AND b.custom_id = a.custom_id - AND b.saler_id = a.saler_id - SET a.this_year_sa_qty = COALESCE ( b.this_year_sa_qty, 0 ), - a.this_year_sa_money = COALESCE ( b.this_year_sa_money, 0 ), - a.this_year_profit = COALESCE ( b.this_year_profit, 0 ), - a.this_year_cost = COALESCE ( b.this_year_cost, 0 ); - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE new_gr_bi_sa_agg_month_count a @@ -326,7 +326,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" UPDATE new_gr_bi_sa_agg_month_count AS current_month - JOIN ( + LEFT JOIN ( SELECT -- 当前记录的维度和年月 @@ -386,10 +386,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dosage_id, custom_id, saler_id, - SUM( this_month_sa_qty ) AS last_month_sa_qty, - SUM( this_month_sa_money ) AS last_month_sa_money, - SUM( this_month_cost) as last_month_cost, - SUM( this_month_profit ) AS last_month_profit + SUM( this_month_sa_qty ) AS last_year_sa_qty, + SUM( this_month_sa_money ) AS last_year_sa_money, + SUM( this_month_cost) as last_year_cost, + SUM( this_month_profit ) AS last_year_profit FROM new_gr_bi_sa_agg GROUP BY @@ -409,10 +409,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND b.dosage_id = a.dosage_id AND b.custom_id = a.custom_id AND b.saler_id = a.saler_id - SET a.last_month_sa_qty = COALESCE ( b.last_month_sa_qty, 0 ), - a.last_month_sa_money = COALESCE ( b.last_month_sa_money, 0 ), - a.last_month_cost = COALESCE ( b.last_month_cost, 0 ), - a.last_month_profit = COALESCE ( b.last_month_profit, 0 ); + SET a.last_year_sa_qty = COALESCE ( b.last_year_sa_qty, 0 ), + a.last_year_sa_money = COALESCE ( b.last_year_sa_money, 0 ), + a.last_year_cost = COALESCE ( b.last_year_cost, 0 ), + a.last_year_profit = COALESCE ( b.last_year_profit, 0 );