综合销售情况表 分组调整
This commit is contained in:
@@ -23,6 +23,10 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
Map<String, Object> params = enhanceContext.getParam().getParams();
|
Map<String, Object> params = enhanceContext.getParam().getParams();
|
||||||
if (params.containsKey("Group by")) {
|
if (params.containsKey("Group by")) {
|
||||||
List<String> groupFieldList = Arrays.asList(params.get("Group by").toString().split(","));
|
List<String> groupFieldList = Arrays.asList(params.get("Group by").toString().split(","));
|
||||||
|
String sql;
|
||||||
|
if((groupFieldList.contains("usemonth") || params.containsKey("usemonth"))){
|
||||||
|
sql = geroupMonthSql(params, groupFieldList);
|
||||||
|
}else {
|
||||||
StringBuilder executePluginSql = new StringBuilder();
|
StringBuilder executePluginSql = new StringBuilder();
|
||||||
executePluginSql.append(" SELECT \n");
|
executePluginSql.append(" SELECT \n");
|
||||||
if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称
|
if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称
|
||||||
@@ -31,15 +35,15 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
}
|
}
|
||||||
if (groupFieldList.contains("useyear") || params.containsKey("useyear")) { //年
|
if (groupFieldList.contains("useyear") || params.containsKey("useyear")) { //年
|
||||||
executePluginSql.append(" tbl_lgbsa.USEYEAR, \n");
|
executePluginSql.append(" tbl_lgbsa.USEYEAR, \n");
|
||||||
if(!(groupFieldList.contains("usemonth") || params.containsKey("usemonth"))){
|
if (!(groupFieldList.contains("usemonth") || params.containsKey("usemonth"))) {
|
||||||
executePluginSql.append(" MAX(USEYEAR) as ny, \n"); //年月
|
executePluginSql.append(" MAX(USEYEAR) as ny, \n"); //年月
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { //月
|
if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { //月
|
||||||
executePluginSql.append(" tbl_lgbsa.USEMONTH, \n");
|
executePluginSql.append(" tbl_lgbsa.USEMONTH, \n");
|
||||||
if(groupFieldList.contains("useyear") || params.containsKey("useyear")){
|
if (groupFieldList.contains("useyear") || params.containsKey("useyear")) {
|
||||||
executePluginSql.append(" MAX(CONCAT(USEYEAR, LPAD(USEMONTH, 2, '0'))) as ny, \n"); //年月
|
executePluginSql.append(" MAX(CONCAT(USEYEAR, LPAD(USEMONTH, 2, '0'))) as ny, \n"); //年月
|
||||||
}else{
|
} else {
|
||||||
executePluginSql.append(" MAX(LPAD(USEMONTH, 2, '0')) as ny, \n");
|
executePluginSql.append(" MAX(LPAD(USEMONTH, 2, '0')) as ny, \n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -67,17 +71,17 @@ 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(" CASE\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(" 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(" 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(" 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 (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(" 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(" 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(" 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 (sum(tbl_lgbsa.MONTHSAQTY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAQTY) * 100 END), 2))\n");
|
||||||
executePluginSql.append(" ELSE '0.00'\n");
|
// executePluginSql.append(" ELSE '0.00'\n");
|
||||||
executePluginSql.append(" END AS monthsaqty_yoy,\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(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(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(" CONCAT(ROUND((SELECT SUM(LASTSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS lastsaqty_s, \n");
|
||||||
@@ -98,35 +102,35 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
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 (MAX(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(" ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as MONTHSAMONEY, \n"); //本月销售金额(元)
|
// executePluginSql.append(" ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as MONTHSAMONEY, \n"); //本月销售金额(元)
|
||||||
executePluginSql.append(" CASE \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(" 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(" 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(" 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 (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(" 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(" 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(" 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 (sum(tbl_lgbsa.MONTHSAMONEY) - sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY)) / sum(tbl_lgbsa.LASTYEAROFMONTHSAMONEY) * 100 END), 2)) \n");
|
||||||
executePluginSql.append(" ELSE '0.00' \n");
|
// executePluginSql.append(" ELSE '0.00' \n");
|
||||||
executePluginSql.append(" END AS monthsamoney_yoy, \n");
|
// executePluginSql.append(" END AS monthsamoney_yoy, \n"); //本月销售金额同比
|
||||||
executePluginSql.append(" ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as THISSAMONEY, \n"); //本年销售金额(元)
|
executePluginSql.append(" ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2) as THISSAMONEY, \n"); //本年销售金额(元)
|
||||||
// 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 -- 本年毛利额
|
||||||
executePluginSql.append(" CASE \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(" 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(" 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(" 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 (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(" 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(" 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(" 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 (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(" ELSE '0.00' \n");
|
||||||
executePluginSql.append(" END AS lastMonthSaMoney_yoy, \n"); //本月销售金额增长率
|
// executePluginSql.append(" END AS lastMonthSaMoney_yoy, \n"); //本月销售金额增长率
|
||||||
executePluginSql.append(" ROUND(SUM(tbl_lgbsa.LASTSAMONEY) / 10000, 2) as LASTSAMONEY, \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");
|
||||||
@@ -141,17 +145,6 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
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(" ROUND(SUM(tbl_lgbsa.MONTHPROFIT) / 10000, 2) as MONTHPROFIT, \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.MONTHPROFIT) / 10000, 2) as THISPROFIT, \n"); //本年毛利额(元)
|
||||||
executePluginSql.append(" ROUND(SUM(tbl_lgbsa.LASTPROFIT) / 10000, 2) as LASTPROFIT, \n"); //上年毛利额(元)
|
executePluginSql.append(" ROUND(SUM(tbl_lgbsa.LASTPROFIT) / 10000, 2) as LASTPROFIT, \n"); //上年毛利额(元)
|
||||||
executePluginSql.append(" -- 新增:毛利同比 \n");
|
executePluginSql.append(" -- 新增:毛利同比 \n");
|
||||||
@@ -168,20 +161,20 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
executePluginSql.append(" ELSE (MAX(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(" ROUND(SUM(tbl_lgbsamc.this_month_cost) / 10000, 2) as this_month_cost, \n"); //本月销售成本(元)
|
executePluginSql.append(" ROUND(SUM(tbl_lgbsamc.this_month_cost) / 10000, 2) as this_month_cost, \n"); //本月销售成本(元)
|
||||||
executePluginSql.append(" ROUND(MAX(tbl_lgbsayc.this_year_cost) / 10000, 2) as this_year_cost, \n"); //本年销售成本(元)
|
executePluginSql.append(" ROUND(MAX(tbl_lgbsayc.this_year_cost) / 10000, 2) as this_year_cost, \n"); //本年销售成本(元)
|
||||||
executePluginSql.append(" CASE \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(" 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(" 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(" 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 (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(" 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(" 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(" 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 (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(" ELSE '0.00' \n");
|
||||||
executePluginSql.append(" END AS this_month_cost_yoy, \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.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"); //本年毛利率
|
||||||
@@ -194,10 +187,8 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
executePluginSql.append(" END AS SAMONEYGROWTH, \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(" ROUND(avg(tbl_lgbsa.THISPROFITSHARE) * 100, 2) AS THISPROFITSHARE, \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.LASTSAMONEYSHARE) * 100, 2) AS LASTSAMONEYSHARE, \n"); //上年销售金额占比
|
||||||
executePluginSql.append(" ROUND(avg(tbl_lgbsa.THISSAMONEYSHARE) * 100, 2) AS THISSAMONEYSHARE, \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(" 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");
|
||||||
@@ -232,9 +223,250 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
executePluginSql.append(" tbl_lgbsa.GOODSNAME,");
|
executePluginSql.append(" tbl_lgbsa.GOODSNAME,");
|
||||||
}
|
}
|
||||||
executePluginSql.deleteCharAt(executePluginSql.length() - 1);
|
executePluginSql.deleteCharAt(executePluginSql.length() - 1);
|
||||||
params.put("executePluginSql", executePluginSql.toString());
|
sql = executePluginSql.toString();
|
||||||
|
}
|
||||||
|
params.put("executePluginSql", sql);
|
||||||
// params.remove("Group by"); // 原有的逻辑注释了,这里也注释
|
// params.remove("Group by"); // 原有的逻辑注释了,这里也注释
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String geroupMonthSql(Map<String, Object> params, List<String> groupFieldList) {
|
||||||
|
|
||||||
|
|
||||||
|
StringBuilder executePluginSql = new StringBuilder();
|
||||||
|
|
||||||
|
executePluginSql.append("select");
|
||||||
|
if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称
|
||||||
|
executePluginSql.append(" current_month.custom_id as customid, \n");
|
||||||
|
executePluginSql.append(" current_month.custom_name as customname, \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { //月
|
||||||
|
executePluginSql.append(" current_month.use_year as useyear,");
|
||||||
|
executePluginSql.append(" current_month.use_month as usemonth, \n");
|
||||||
|
if(groupFieldList.contains("useyear") || params.containsKey("useyear")){
|
||||||
|
executePluginSql.append(" MAX(CONCAT(current_month.use_year, LPAD(current_month.use_month, 2, '0'))) as ny, \n"); //年月
|
||||||
|
}else{
|
||||||
|
executePluginSql.append(" MAX(LPAD(current_month.use_month, 2, '0')) as ny, \n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域
|
||||||
|
executePluginSql.append(" current_month.zone_id, \n");
|
||||||
|
executePluginSql.append(" current_month.zone_name as zonename, \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型
|
||||||
|
executePluginSql.append(" current_month.sale_type_id, \n");
|
||||||
|
executePluginSql.append(" current_month.sale_type_name as saletypename, \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员
|
||||||
|
executePluginSql.append(" current_month.saler_id, \n");
|
||||||
|
executePluginSql.append(" current_month.saler_name as salername, \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型
|
||||||
|
executePluginSql.append(" current_month.dosage_id, \n");
|
||||||
|
executePluginSql.append(" current_month.dosage_name as dosagename, \n");
|
||||||
|
}
|
||||||
|
if (params.containsKey("goodsname")) { //货品名称
|
||||||
|
executePluginSql.append(" current_month.goods_id, \n");
|
||||||
|
executePluginSql.append(" current_month.goods_name as goodsname, \n");
|
||||||
|
}
|
||||||
|
executePluginSql.append(" SUM(current_month.this_month_sa_qty) as thisMonthSaQty, "); //本月销售数量(件)
|
||||||
|
executePluginSql.append(" ROUND(SUM(current_month.this_month_sa_money) / 10000, 2) as thisMonthSaMoney, "); //本月销售金额(元)
|
||||||
|
executePluginSql.append(" ROUND(SUM(current_month.this_month_profit) / 10000, 2) as thisMonthProfit, "); //本月毛利额(元)
|
||||||
|
executePluginSql.append(" ROUND(SUM(current_month.this_month_cost) / 10000, 2) as thisMonthCost, "); //本月成本(元)
|
||||||
|
|
||||||
|
executePluginSql.append(" SUM(last_month_data.last_month_sa_qty) as lastMonthSaQty, "); //上月销售数量(件)
|
||||||
|
executePluginSql.append(" ROUND(SUM(last_month_data.last_month_sa_money) / 10000, 2) as lastMonthSaMoney, "); //上月销售金额(元)
|
||||||
|
executePluginSql.append(" ROUND(SUM(last_month_data.last_month_profit) / 10000, 2) as lastMonthProfit, "); //上月毛利额(元)
|
||||||
|
executePluginSql.append(" ROUND(SUM(last_month_data.last_month_cost) / 10000, 2) as lastMonthCost, "); //上月成本(元)
|
||||||
|
|
||||||
|
executePluginSql.append(" ROUND(SUM(yoy_month.yoy_month_sa_qty)/ 10000, 2) as yoyMonthSaQty, "); //同比月销售数量(件)
|
||||||
|
executePluginSql.append(" ROUND(SUM(yoy_month.yoy_month_sa_money) / 10000, 2) as yoyMonthSaMoney, "); //同比月销售金额(元)
|
||||||
|
executePluginSql.append(" ROUND(SUM(yoy_month.yoy_month_profit) / 10000, 2) as yoyMonthProfit, "); //同比月毛利额(元)
|
||||||
|
executePluginSql.append(" ROUND(SUM(yoy_month.yoy_month_cost) / 10000, 2) as yoyMonthCost, "); //同比月成本(元)
|
||||||
|
executePluginSql.append(" GROUP_CONCAT(DISTINCT current_month.province_id ORDER BY current_month.province_id SEPARATOR ',') as province_id, \n"); //行政区域ID
|
||||||
|
executePluginSql.append(" GROUP_CONCAT(DISTINCT current_month.province_name ORDER BY current_month.province_name SEPARATOR ',') as province_name, \n"); //行政区域名称
|
||||||
|
executePluginSql.append(" CASE WHEN (CASE WHEN sum(yoy_month.yoy_month_sa_qty) = 0 THEN IF(sum(current_month.this_month_sa_qty) > 0, 100, 0)\n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_qty) - sum(yoy_month.yoy_month_sa_qty)) / sum(yoy_month.yoy_month_sa_qty) * 100 END) > 0 THEN\n");
|
||||||
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_sa_qty) = 0 THEN IF(sum(current_month.this_month_sa_qty) > 0, 100, 0)\n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_qty) - sum(yoy_month.yoy_month_sa_qty)) / sum(yoy_month.yoy_month_sa_qty) * 100 END), 2))\n");
|
||||||
|
executePluginSql.append(" WHEN (CASE WHEN sum(yoy_month.yoy_month_sa_qty) = 0 THEN IF(sum(current_month.this_month_sa_qty) > 0, 100, 0)\n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_qty) - sum(yoy_month.yoy_month_sa_qty)) / sum(yoy_month.yoy_month_sa_qty) * 100 END) < 0 THEN\n");
|
||||||
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_sa_qty) = 0 THEN IF(sum(current_month.this_month_sa_qty) > 0, 100, 0)\n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_qty) - sum(yoy_month.yoy_month_sa_qty)) / sum(yoy_month.yoy_month_sa_qty) * 100 END), 2))\n");
|
||||||
|
executePluginSql.append(" ELSE '0.00'\n");
|
||||||
|
executePluginSql.append(" END AS monthsaqty_yoy,\n"); //本月销量同比
|
||||||
|
|
||||||
|
executePluginSql.append(" CASE WHEN (CASE WHEN sum(yoy_month.yoy_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_money) - sum(yoy_month.yoy_month_sa_money)) / sum(yoy_month.yoy_month_sa_money) * 100 END) > 0 THEN \n");
|
||||||
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_money) - sum(yoy_month.yoy_month_sa_money)) / sum(yoy_month.yoy_month_sa_money) * 100 END), 2)) \n");
|
||||||
|
executePluginSql.append(" WHEN (CASE WHEN sum(yoy_month.yoy_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_money) - sum(yoy_month.yoy_month_sa_money)) / sum(yoy_month.yoy_month_sa_money) * 100 END) < 0 THEN \n");
|
||||||
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_money) - sum(yoy_month.yoy_month_sa_money)) / sum(yoy_month.yoy_month_sa_money) * 100 END), 2)) \n");
|
||||||
|
executePluginSql.append(" ELSE '0.00' \n");
|
||||||
|
executePluginSql.append(" END AS monthsamoney_yoy, \n"); //本月销售金额同比
|
||||||
|
|
||||||
|
executePluginSql.append(" CASE WHEN (CASE WHEN sum(last_month_data.last_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_money) - sum(last_month_data.last_month_sa_money)) / sum(last_month_data.last_month_sa_money) * 100 END) > 0 THEN \n");
|
||||||
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(last_month_data.last_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_money) - sum(last_month_data.last_month_sa_money)) / sum(last_month_data.last_month_sa_money) * 100 END), 2)) \n");
|
||||||
|
executePluginSql.append(" WHEN (CASE WHEN sum(last_month_data.last_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_money) - sum(last_month_data.last_month_sa_money)) / sum(last_month_data.last_month_sa_money) * 100 END) < 0 THEN \n");
|
||||||
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(last_month_data.last_month_sa_money) = 0 THEN IF(sum(current_month.this_month_sa_money) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_sa_money) - sum(last_month_data.last_month_sa_money)) / sum(last_month_data.last_month_sa_money) * 100 END), 2)) \n");
|
||||||
|
executePluginSql.append(" ELSE '0.00' \n");
|
||||||
|
executePluginSql.append(" END AS lastMonthSaMoney_yoy, \n"); //本月销售金额增长率
|
||||||
|
|
||||||
|
executePluginSql.append(" CASE WHEN (CASE WHEN sum(yoy_month.yoy_month_cost) = 0 THEN IF(sum(current_month.this_month_cost) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_cost) - sum(yoy_month.yoy_month_cost)) / sum(yoy_month.yoy_month_cost) * 100 END) > 0 THEN \n");
|
||||||
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_cost) = 0 THEN IF(sum(current_month.this_month_cost) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_cost) - sum(yoy_month.yoy_month_cost)) / sum(yoy_month.yoy_month_cost) * 100 END), 2)) \n");
|
||||||
|
executePluginSql.append(" WHEN (CASE WHEN sum(yoy_month.yoy_month_cost) = 0 THEN IF(sum(current_month.this_month_cost) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_cost) - sum(yoy_month.yoy_month_cost)) / sum(yoy_month.yoy_month_cost) * 100 END) < 0 THEN \n");
|
||||||
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_cost) = 0 THEN IF(sum(current_month.this_month_cost) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(current_month.this_month_cost) - sum(yoy_month.yoy_month_cost)) / sum(yoy_month.yoy_month_cost) * 100 END), 2)) \n");
|
||||||
|
executePluginSql.append(" ELSE '0.00' \n");
|
||||||
|
executePluginSql.append(" END AS this_month_cost_yoy, \n"); //本月销售成本同比
|
||||||
|
|
||||||
|
executePluginSql.append(" CASE WHEN (CASE WHEN sum(yoy_month.yoy_month_profit) = 0 THEN IF(sum(yoy_month.yoy_month_profit) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(yoy_month.yoy_month_profit) - sum(yoy_month.yoy_month_profit)) / sum(yoy_month.yoy_month_profit) * 100 END) > 0 THEN \n");
|
||||||
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_profit) = 0 THEN IF(sum(yoy_month.yoy_month_profit) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(yoy_month.yoy_month_profit) - sum(yoy_month.yoy_month_profit)) / sum(yoy_month.yoy_month_profit) * 100 END), 2)) \n");
|
||||||
|
executePluginSql.append(" WHEN (CASE WHEN sum(yoy_month.yoy_month_profit) = 0 THEN IF(sum(yoy_month.yoy_month_profit) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(yoy_month.yoy_month_profit) - sum(yoy_month.yoy_month_profit)) / sum(yoy_month.yoy_month_profit) * 100 END) < 0 THEN \n");
|
||||||
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(yoy_month.yoy_month_profit) = 0 THEN IF(sum(yoy_month.yoy_month_profit) > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (sum(yoy_month.yoy_month_profit) - sum(yoy_month.yoy_month_profit)) / sum(yoy_month.yoy_month_profit) * 100 END), 2)) \n");
|
||||||
|
executePluginSql.append(" ELSE '0.00' \n");
|
||||||
|
executePluginSql.append(" END AS monthprofit_yoy, \n"); //本月毛利同比
|
||||||
|
|
||||||
|
executePluginSql.append(" COALESCE (ROUND( sum(current_month.this_month_sa_money)/SUM(total_month_data.this_month_sa_money_sum) * 100, 2), 0 ) as this_month_sa_money_share,\n"); //本月毛利额占比
|
||||||
|
executePluginSql.append(" COALESCE (ROUND( sum(current_month.this_month_profit)/SUM(total_month_data.this_month_profit_sum) * 100, 2), 0 ) as this_month_profit_share \n"); //本月销售金额占比
|
||||||
|
// executePluginSql.append(" ROUND(avg(tbl_lgbsa.MONTHPROFITSHARE) * 100, 2) AS MONTHPROFITSHARE, \n"); //本月毛利额占比
|
||||||
|
// executePluginSql.append(" ROUND(avg(tbl_lgbsa.MONTHSAMONEYSHARE) * 100, 2) AS MONTHSAMONEYSHARE \n"); //本月销售金额占比
|
||||||
|
executePluginSql.append(" from new_gr_bi_sa_agg_month_count as current_month ");
|
||||||
|
executePluginSql.append(" LEFT JOIN (SELECT ");
|
||||||
|
executePluginSql.append(" use_year, ");
|
||||||
|
executePluginSql.append(" use_month, ");
|
||||||
|
executePluginSql.append(" goods_id, ");
|
||||||
|
executePluginSql.append(" zone_id, ");
|
||||||
|
executePluginSql.append(" province_id, ");
|
||||||
|
executePluginSql.append(" sale_type_id, ");
|
||||||
|
executePluginSql.append(" dosage_id, ");
|
||||||
|
executePluginSql.append(" custom_id, ");
|
||||||
|
executePluginSql.append(" saler_id, ");
|
||||||
|
executePluginSql.append(" SUM(this_month_sa_qty) AS last_month_sa_qty, ");
|
||||||
|
executePluginSql.append(" SUM(this_month_sa_money) AS last_month_sa_money, ");
|
||||||
|
executePluginSql.append(" SUM(this_month_cost) AS last_month_cost, ");
|
||||||
|
executePluginSql.append(" SUM(this_month_profit) AS last_month_profit ");
|
||||||
|
executePluginSql.append(" FROM new_gr_bi_sa_agg_month_count ");
|
||||||
|
executePluginSql.append(" GROUP BY use_year, ");
|
||||||
|
executePluginSql.append(" use_month, ");
|
||||||
|
executePluginSql.append(" goods_id, ");
|
||||||
|
executePluginSql.append(" zone_id, ");
|
||||||
|
executePluginSql.append(" province_id, ");
|
||||||
|
executePluginSql.append(" sale_type_id, ");
|
||||||
|
executePluginSql.append(" dosage_id, ");
|
||||||
|
executePluginSql.append(" custom_id, ");
|
||||||
|
executePluginSql.append(" saler_id) AS last_month_data ");
|
||||||
|
executePluginSql.append(" ON current_month.goods_id = last_month_data.goods_id ");
|
||||||
|
executePluginSql.append(" AND current_month.zone_id = last_month_data.zone_id ");
|
||||||
|
executePluginSql.append(" AND current_month.province_id = last_month_data.province_id ");
|
||||||
|
executePluginSql.append(" AND current_month.sale_type_id = last_month_data.sale_type_id ");
|
||||||
|
executePluginSql.append(" AND current_month.dosage_id = last_month_data.dosage_id ");
|
||||||
|
executePluginSql.append(" AND current_month.custom_id = last_month_data.custom_id ");
|
||||||
|
executePluginSql.append(" AND current_month.saler_id = last_month_data.saler_id ");
|
||||||
|
executePluginSql.append(" AND last_month_data.use_year = current_month.use_year - (current_month.use_month = 1)");
|
||||||
|
executePluginSql.append(" AND last_month_data.use_month = IF(current_month.use_month = 1, 12, current_month.use_month - 1)");
|
||||||
|
executePluginSql.append(" LEFT JOIN (SELECT use_year, ");
|
||||||
|
executePluginSql.append(" use_month, ");
|
||||||
|
executePluginSql.append(" goods_id, ");
|
||||||
|
executePluginSql.append(" zone_id, ");
|
||||||
|
executePluginSql.append(" province_id, ");
|
||||||
|
executePluginSql.append(" sale_type_id, ");
|
||||||
|
executePluginSql.append(" dosage_id, ");
|
||||||
|
executePluginSql.append(" custom_id, ");
|
||||||
|
executePluginSql.append(" saler_id, ");
|
||||||
|
executePluginSql.append(" SUM(this_month_sa_qty) AS yoy_month_sa_qty, "); // 同比月销量
|
||||||
|
executePluginSql.append(" SUM(this_month_sa_money) AS yoy_month_sa_money, "); // 同比月销售金额
|
||||||
|
executePluginSql.append(" SUM(this_month_cost) as yoy_month_cost, "); // 同比月销售成本
|
||||||
|
executePluginSql.append(" SUM(this_month_profit) AS yoy_month_profit "); // 同比月毛利额
|
||||||
|
executePluginSql.append(" FROM new_gr_bi_sa_agg_month_count ");
|
||||||
|
// if(params.containsKey("useyear")){
|
||||||
|
// executePluginSql.append(" where use_year = " + (Integer.parseInt(params.get("useyear").toString())-1));
|
||||||
|
// }
|
||||||
|
executePluginSql.append(" GROUP BY use_year, ");
|
||||||
|
executePluginSql.append(" use_month, ");
|
||||||
|
executePluginSql.append(" goods_id, ");
|
||||||
|
executePluginSql.append(" zone_id, ");
|
||||||
|
executePluginSql.append(" province_id, ");
|
||||||
|
executePluginSql.append(" sale_type_id, ");
|
||||||
|
executePluginSql.append(" dosage_id, ");
|
||||||
|
executePluginSql.append(" custom_id, ");
|
||||||
|
executePluginSql.append(" saler_id) yoy_month ON yoy_month.use_year = current_month.use_year - 1 ");
|
||||||
|
executePluginSql.append(" AND yoy_month.use_month = current_month.use_month ");
|
||||||
|
executePluginSql.append(" AND yoy_month.goods_id = current_month.goods_id ");
|
||||||
|
executePluginSql.append(" AND yoy_month.zone_id = current_month.zone_id ");
|
||||||
|
executePluginSql.append(" AND yoy_month.province_id = current_month.province_id ");
|
||||||
|
executePluginSql.append(" AND yoy_month.sale_type_id = current_month.sale_type_id ");
|
||||||
|
executePluginSql.append(" AND yoy_month.dosage_id = current_month.dosage_id ");
|
||||||
|
executePluginSql.append(" AND yoy_month.custom_id = current_month.custom_id ");
|
||||||
|
executePluginSql.append(" AND yoy_month.saler_id = current_month.saler_id ");
|
||||||
|
executePluginSql.append(" LEFT JOIN (");
|
||||||
|
executePluginSql.append(" SELECT ");
|
||||||
|
executePluginSql.append(" use_year, ");
|
||||||
|
executePluginSql.append(" use_month, ");
|
||||||
|
executePluginSql.append(" SUM( this_month_sa_money ) AS this_month_sa_money_sum, ");
|
||||||
|
executePluginSql.append(" SUM(this_month_profit) AS this_month_profit_sum ");
|
||||||
|
executePluginSql.append(" FROM new_gr_bi_sa_agg ");
|
||||||
|
// if(params.containsKey("useyear")){
|
||||||
|
// executePluginSql.append(" where use_year = " + params.get("useyear"));
|
||||||
|
// }
|
||||||
|
executePluginSql.append(" GROUP BY ");
|
||||||
|
executePluginSql.append(" use_year, use_month");
|
||||||
|
executePluginSql.append(" ) total_month_data ON total_month_data.use_year = current_month.use_year ");
|
||||||
|
executePluginSql.append(" AND total_month_data.use_month = current_month.use_month ");
|
||||||
|
// if(params.containsKey("useyear")){
|
||||||
|
// executePluginSql.append(" where current_month.use_year = " + params.get("useyear"));
|
||||||
|
// if(params.containsKey("usemonth")){
|
||||||
|
// executePluginSql.append(" and current_month.use_month = " + params.get("usemonth"));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
executePluginSql.append(" GROUP BY \n");
|
||||||
|
if (groupFieldList.contains("customname") || params.containsKey("customname")) {
|
||||||
|
executePluginSql.append(" current_month.custom_id,");
|
||||||
|
executePluginSql.append(" current_month.custom_name,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("useyear") || params.containsKey("useyear")) {
|
||||||
|
executePluginSql.append(" current_month.use_year,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) {
|
||||||
|
executePluginSql.append(" current_month.use_month,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("zonename") || params.containsKey("zonename")) {
|
||||||
|
executePluginSql.append(" current_month.zone_id,");
|
||||||
|
executePluginSql.append(" current_month.zone_name,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) {
|
||||||
|
executePluginSql.append(" current_month.sale_type_id,");
|
||||||
|
executePluginSql.append(" current_month.sale_type_name,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("salername") || params.containsKey("salername")) {
|
||||||
|
executePluginSql.append(" current_month.saler_id,");
|
||||||
|
executePluginSql.append(" current_month.saler_name,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) {
|
||||||
|
executePluginSql.append(" current_month.dosage_id,");
|
||||||
|
executePluginSql.append(" current_month.dosage_name,");
|
||||||
|
}
|
||||||
|
if (params.containsKey("goodsname")) { //货品名称
|
||||||
|
executePluginSql.append(" current_month.goods_id,");
|
||||||
|
executePluginSql.append(" current_month.goods_name,");
|
||||||
|
}
|
||||||
|
|
||||||
|
executePluginSql.deleteCharAt(executePluginSql.length() - 1);
|
||||||
|
return executePluginSql.toString();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -38,10 +38,9 @@ public interface NewGrBiSaAggMapper extends BaseMapper<NewGrBiSaAgg>
|
|||||||
|
|
||||||
// void updateThisYearData();
|
// void updateThisYearData();
|
||||||
//
|
//
|
||||||
// void updateLastYearData();
|
void updateLastYearData();
|
||||||
// void updateLastMonthSamoney();
|
void updateLastMonthSamoney();
|
||||||
//
|
void updateYoyMonthData();
|
||||||
// void updateYoyMonthData();
|
|
||||||
//
|
//
|
||||||
// void updateComplexCalculate1();
|
// void updateComplexCalculate1();
|
||||||
// void updateComplexCalculate2();
|
// void updateComplexCalculate2();
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public class NewGrBiSaAggServiceImpl extends ServiceImpl<NewGrBiSaAggMapper, New
|
|||||||
removeAndSaveBatch(pastYear, pastMonth, currentYear, currentMonth, grBiSaSetdtlList);
|
removeAndSaveBatch(pastYear, pastMonth, currentYear, currentMonth, grBiSaSetdtlList);
|
||||||
// this.baseMapper.updateThisYearData();
|
// this.baseMapper.updateThisYearData();
|
||||||
// this.baseMapper.updateYoyMonthData();
|
// this.baseMapper.updateYoyMonthData();
|
||||||
// this.baseMapper.updateLastYearData();
|
this.baseMapper.updateLastYearData();
|
||||||
// this.baseMapper.updateLastMonthSamoney();
|
// this.baseMapper.updateLastMonthSamoney();
|
||||||
// this.baseMapper.updateComplexCalculate1();
|
// this.baseMapper.updateComplexCalculate1();
|
||||||
// this.baseMapper.updateComplexCalculate2();
|
// this.baseMapper.updateComplexCalculate2();
|
||||||
@@ -107,7 +107,7 @@ public class NewGrBiSaAggServiceImpl extends ServiceImpl<NewGrBiSaAggMapper, New
|
|||||||
log.info("批量新增数量-month:{}", reNum);
|
log.info("批量新增数量-month:{}", reNum);
|
||||||
baseMapper.insertSelectMonth(pastYear * 100 + pastMonth, currentYear * 100 + currentMonth);
|
baseMapper.insertSelectMonth(pastYear * 100 + pastMonth, currentYear * 100 + currentMonth);
|
||||||
reNum = this.baseMapper.deleteSalesReportYear(pastYear, currentYear);
|
reNum = this.baseMapper.deleteSalesReportYear(pastYear, currentYear);
|
||||||
baseMapper.insertSelectYear(pastYear , currentYear * 100);
|
baseMapper.insertSelectYear(pastYear , currentYear);
|
||||||
log.info("批量新增数量-year:{}", reNum);
|
log.info("批量新增数量-year:{}", reNum);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,8 +132,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
saler_name,
|
saler_name,
|
||||||
this_month_sa_qty,
|
this_month_sa_qty,
|
||||||
this_month_sa_money,
|
this_month_sa_money,
|
||||||
this_month_profit,
|
this_month_cost,
|
||||||
this_month_cost
|
this_month_profit
|
||||||
) SELECT
|
) SELECT
|
||||||
use_year,
|
use_year,
|
||||||
use_month,
|
use_month,
|
||||||
@@ -239,46 +239,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
saler_id,
|
saler_id,
|
||||||
saler_name
|
saler_name
|
||||||
</insert>
|
</insert>
|
||||||
<update id="updateThisYearData">
|
<!-- <update id="updateThisYearData">-->
|
||||||
UPDATE new_gr_bi_sa_agg_year_count a
|
<!-- UPDATE new_gr_bi_sa_agg_year_count a-->
|
||||||
LEFT JOIN (
|
<!-- LEFT JOIN (-->
|
||||||
SELECT
|
<!-- SELECT-->
|
||||||
use_year,
|
<!-- use_year,-->
|
||||||
goods_id,
|
<!-- goods_id,-->
|
||||||
zone_id,
|
<!-- zone_id,-->
|
||||||
province_id,
|
<!-- province_id,-->
|
||||||
sale_type_id,
|
<!-- sale_type_id,-->
|
||||||
dosage_id,
|
<!-- dosage_id,-->
|
||||||
custom_id,
|
<!-- custom_id,-->
|
||||||
saler_id,
|
<!-- saler_id,-->
|
||||||
SUM( this_month_sa_qty ) AS this_year_sa_qty, -- 本年销量
|
<!-- SUM( this_month_sa_qty ) AS this_year_sa_qty, -- 本年销量-->
|
||||||
SUM( this_month_sa_money ) AS this_year_sa_money, -- 本年销售金额
|
<!-- SUM( this_month_sa_money ) AS this_year_sa_money, -- 本年销售金额-->
|
||||||
SUM( this_month_cost) as this_year_cost, -- 本年销售成本
|
<!-- SUM( this_month_cost) as this_year_cost, -- 本年销售成本-->
|
||||||
SUM( this_month_profit ) AS this_year_profit -- 本年毛利额
|
<!-- SUM( this_month_profit ) AS this_year_profit -- 本年毛利额-->
|
||||||
FROM
|
<!-- FROM-->
|
||||||
new_gr_bi_sa_agg
|
<!-- new_gr_bi_sa_agg-->
|
||||||
GROUP BY
|
<!-- GROUP BY-->
|
||||||
use_year,
|
<!-- use_year,-->
|
||||||
goods_id,
|
<!-- goods_id,-->
|
||||||
zone_id,
|
<!-- zone_id,-->
|
||||||
province_id,
|
<!-- province_id,-->
|
||||||
sale_type_id,
|
<!-- sale_type_id,-->
|
||||||
dosage_id,
|
<!-- dosage_id,-->
|
||||||
custom_id,
|
<!-- custom_id,-->
|
||||||
saler_id
|
<!-- saler_id-->
|
||||||
) b ON b.use_year = a.use_year
|
<!-- ) b ON b.use_year = a.use_year-->
|
||||||
AND b.goods_id = a.goods_id
|
<!-- AND b.goods_id = a.goods_id-->
|
||||||
AND b.zone_id = a.zone_id
|
<!-- AND b.zone_id = a.zone_id-->
|
||||||
AND b.province_id = a.province_id
|
<!-- AND b.province_id = a.province_id-->
|
||||||
AND b.sale_type_id = a.sale_type_id
|
<!-- AND b.sale_type_id = a.sale_type_id-->
|
||||||
AND b.dosage_id = a.dosage_id
|
<!-- AND b.dosage_id = a.dosage_id-->
|
||||||
AND b.custom_id = a.custom_id
|
<!-- AND b.custom_id = a.custom_id-->
|
||||||
AND b.saler_id = a.saler_id
|
<!-- AND b.saler_id = a.saler_id-->
|
||||||
SET a.this_year_sa_qty = COALESCE ( b.this_year_sa_qty, 0 ),
|
<!-- 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_sa_money = COALESCE ( b.this_year_sa_money, 0 ),-->
|
||||||
a.this_year_profit = COALESCE ( b.this_year_profit, 0 ),
|
<!-- a.this_year_profit = COALESCE ( b.this_year_profit, 0 ),-->
|
||||||
a.this_year_cost = COALESCE ( b.this_year_cost, 0 );
|
<!-- a.this_year_cost = COALESCE ( b.this_year_cost, 0 );-->
|
||||||
</update>
|
<!-- </update>-->
|
||||||
|
|
||||||
<update id="updateYoyMonthData">
|
<update id="updateYoyMonthData">
|
||||||
UPDATE new_gr_bi_sa_agg_month_count a
|
UPDATE new_gr_bi_sa_agg_month_count a
|
||||||
@@ -326,7 +326,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
|
|
||||||
<update id="updateLastMonthSamoney">
|
<update id="updateLastMonthSamoney">
|
||||||
UPDATE new_gr_bi_sa_agg_month_count AS current_month
|
UPDATE new_gr_bi_sa_agg_month_count AS current_month
|
||||||
JOIN (
|
LEFT JOIN (
|
||||||
SELECT
|
SELECT
|
||||||
-- 当前记录的维度和年月
|
-- 当前记录的维度和年月
|
||||||
|
|
||||||
@@ -386,10 +386,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
dosage_id,
|
dosage_id,
|
||||||
custom_id,
|
custom_id,
|
||||||
saler_id,
|
saler_id,
|
||||||
SUM( this_month_sa_qty ) AS last_month_sa_qty,
|
SUM( this_month_sa_qty ) AS last_year_sa_qty,
|
||||||
SUM( this_month_sa_money ) AS last_month_sa_money,
|
SUM( this_month_sa_money ) AS last_year_sa_money,
|
||||||
SUM( this_month_cost) as last_month_cost,
|
SUM( this_month_cost) as last_year_cost,
|
||||||
SUM( this_month_profit ) AS last_month_profit
|
SUM( this_month_profit ) AS last_year_profit
|
||||||
FROM
|
FROM
|
||||||
new_gr_bi_sa_agg
|
new_gr_bi_sa_agg
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@@ -409,10 +409,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
AND b.dosage_id = a.dosage_id
|
AND b.dosage_id = a.dosage_id
|
||||||
AND b.custom_id = a.custom_id
|
AND b.custom_id = a.custom_id
|
||||||
AND b.saler_id = a.saler_id
|
AND b.saler_id = a.saler_id
|
||||||
SET a.last_month_sa_qty = COALESCE ( b.last_month_sa_qty, 0 ),
|
SET a.last_year_sa_qty = COALESCE ( b.last_year_sa_qty, 0 ),
|
||||||
a.last_month_sa_money = COALESCE ( b.last_month_sa_money, 0 ),
|
a.last_year_sa_money = COALESCE ( b.last_year_sa_money, 0 ),
|
||||||
a.last_month_cost = COALESCE ( b.last_month_cost, 0 ),
|
a.last_year_cost = COALESCE ( b.last_year_cost, 0 ),
|
||||||
a.last_month_profit = COALESCE ( b.last_month_profit, 0 );
|
a.last_year_profit = COALESCE ( b.last_year_profit, 0 );
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user