综合销售情况表 调整月度,年度 报表数据
This commit is contained in:
@@ -30,6 +30,9 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
}
|
}
|
||||||
List<String> groupFieldList = Arrays.asList(params.get("Group by").toString().split(","));
|
List<String> groupFieldList = Arrays.asList(params.get("Group by").toString().split(","));
|
||||||
String sql;
|
String sql;
|
||||||
|
if(!params.containsKey("useyear")){
|
||||||
|
params.put("useyear", new SimpleDateFormat("yyyy").format(new Date()));
|
||||||
|
}
|
||||||
if((groupFieldList.contains("usemonth") || params.containsKey("usemonth"))){
|
if((groupFieldList.contains("usemonth") || params.containsKey("usemonth"))){
|
||||||
sql = geroupMonthSql(params, groupFieldList);
|
sql = geroupMonthSql(params, groupFieldList);
|
||||||
}else {
|
}else {
|
||||||
@@ -62,102 +65,194 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名
|
if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名
|
||||||
executePluginSql.append(" current_year_data.std_goods_name as stdGoodsName, \n");
|
executePluginSql.append(" current_year_data.std_goods_name as stdGoodsName, \n");
|
||||||
}
|
}
|
||||||
executePluginSql.append(" GROUP_CONCAT(DISTINCT current_year_data.province_id ORDER BY current_year_data.province_id SEPARATOR ',') as province_id, \n"); //行政区域ID
|
executePluginSql.append(" current_year_data.province_id as province_id, \n"); //行政区域ID
|
||||||
executePluginSql.append(" GROUP_CONCAT(DISTINCT current_year_data.province_name ORDER BY current_year_data.province_name SEPARATOR ',') as province_name, \n"); //行政区域名称
|
executePluginSql.append(" current_year_data.province_name as province_name, \n"); //行政区域名称
|
||||||
|
|
||||||
executePluginSql.append(" SUM(current_year_data.this_year_sa_qty) AS thissaqty, \n"); //本年销量
|
executePluginSql.append(" current_year_data.this_year_sa_qty AS thissaqty, \n"); //本年销量
|
||||||
executePluginSql.append(" ROUND(SUM(current_year_data.this_year_sa_money) / 10000, 2) AS thissamoney, \n"); //本年销售金额(元)
|
executePluginSql.append(" ROUND(current_year_data.this_year_sa_money / 10000, 2) AS thissamoney, \n"); //本年销售金额(元)
|
||||||
executePluginSql.append(" ROUND(SUM(current_year_data.this_year_profit) / 10000, 2) AS thisprofit, \n"); //本年毛利额(元)
|
executePluginSql.append(" ROUND(current_year_data.this_year_profit / 10000, 2) AS thisprofit, \n"); //本年毛利额(元)
|
||||||
executePluginSql.append(" ROUND(SUM(current_year_data.this_year_cost) / 10000, 2) AS thiscost, \n");//本年销售成本(元)
|
executePluginSql.append(" ROUND(current_year_data.this_year_cost / 10000, 2) AS thiscost, \n");//本年销售成本(元)
|
||||||
executePluginSql.append(" SUM(last_year_data.last_year_sa_qty) AS lastYearSaQty, \n"); //上年销量
|
executePluginSql.append(" last_year_data.last_year_sa_qty AS lastYearSaQty, \n"); //上年销量
|
||||||
executePluginSql.append(" ROUND(SUM(last_year_data.last_year_sa_money) / 10000, 2) AS lastYearSaMoney, \n"); //上年销售金额(元)
|
executePluginSql.append(" ROUND(last_year_data.last_year_sa_money / 10000, 2) AS lastYearSaMoney, \n"); //上年销售金额(元)
|
||||||
executePluginSql.append(" ROUND(SUM(last_year_data.last_year_profit) / 10000, 2) AS lastYearProfit, \n");//上年毛利额(元)
|
executePluginSql.append(" ROUND(last_year_data.last_year_profit / 10000, 2) AS lastYearProfit, \n");//上年毛利额(元)
|
||||||
executePluginSql.append(" ROUND(SUM(last_year_data.last_year_cost) / 10000, 2) AS lastYearCost, \n"); //上年销售成本(元)
|
executePluginSql.append(" ROUND(last_year_data.last_year_cost / 10000, 2) AS lastYearCost, \n"); //上年销售成本(元)
|
||||||
|
|
||||||
// executePluginSql.append(" CONCAT(ROUND((max(total_year_data.this_year_sa_money_sum))/100000000 ,2), '亿') AS thissamoney_s, \n");
|
// executePluginSql.append(" CONCAT(ROUND((max(total_year_data.this_year_sa_money_sum))/100000000 ,2), '亿') AS thissamoney_s, \n");
|
||||||
// executePluginSql.append(" CONCAT(ROUND((max(total_year_data.this_year_profit_sum))/100000000 ,2), '亿') AS thisprofit_s, \n");
|
// executePluginSql.append(" CONCAT(ROUND((max(total_year_data.this_year_profit_sum))/100000000 ,2), '亿') AS thisprofit_s, \n");
|
||||||
executePluginSql.append(" COALESCE(ROUND(sum(current_year_data.this_year_sa_money) / SUM(total_year_data.this_year_sa_money_sum) * 100, 2), 0) AS this_year_sa_money_share, \n");//上年销售金额占比
|
executePluginSql.append(" COALESCE(ROUND(current_year_data.this_year_sa_money / total_year_data.this_year_sa_money_sum * 100, 2), 0) AS this_year_sa_money_share, \n");//上年销售金额占比
|
||||||
executePluginSql.append(" COALESCE (ROUND( sum(current_year_data.this_year_profit)/SUM(total_year_data.this_year_profit_sum) * 100, 2), 0 ) as thisprofitshare, \n"); //本年毛利额占比
|
executePluginSql.append(" COALESCE (ROUND(current_year_data.this_year_profit/total_year_data.this_year_profit_sum * 100, 2), 0 ) as thisprofitshare, \n"); //本年毛利额占比
|
||||||
executePluginSql.append(" -- 数量同比(原有) \n");
|
executePluginSql.append(" -- 数量同比(原有) \n");
|
||||||
executePluginSql.append(" CASE \n");
|
executePluginSql.append(" CASE \n");
|
||||||
executePluginSql.append(" WHEN (CASE WHEN sum(current_year_data.last_year_sa_qty) = 0 THEN IF(sum(current_year_data.this_year_sa_qty) > 0, 100, 0) \n");
|
executePluginSql.append(" WHEN (CASE WHEN last_year_data.last_year_sa_qty = 0 THEN IF(current_year_data.this_year_sa_qty > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_sa_qty) - sum(current_year_data.last_year_sa_qty)) / sum(current_year_data.last_year_sa_qty) * 100 END) > 0 THEN \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_qty - last_year_data.last_year_sa_qty) / last_year_data.last_year_sa_qty * 100 END) > 0 THEN \n");;
|
||||||
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(current_year_data.last_year_sa_qty) = 0 THEN IF(sum(current_year_data.this_year_sa_qty) > 0, 100, 0) \n");
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN last_year_data.last_year_sa_qty = 0 THEN IF(current_year_data.this_year_sa_qty > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_sa_qty) - sum(current_year_data.last_year_sa_qty)) / sum(current_year_data.last_year_sa_qty) * 100 END), 2)) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_qty - last_year_data.last_year_sa_qty) / last_year_data.last_year_sa_qty * 100 END), 2)) \n");
|
||||||
executePluginSql.append(" WHEN (CASE WHEN sum(current_year_data.last_year_sa_qty) = 0 THEN IF(sum(current_year_data.this_year_sa_qty) > 0, 100, 0) \n");
|
executePluginSql.append(" WHEN (CASE WHEN last_year_data.last_year_sa_qty = 0 THEN IF(current_year_data.this_year_sa_qty > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_sa_qty) - sum(current_year_data.last_year_sa_qty)) / sum(current_year_data.last_year_sa_qty) * 100 END) < 0 THEN \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_qty - last_year_data.last_year_sa_qty) / last_year_data.last_year_sa_qty * 100 END) < 0 THEN \n");;
|
||||||
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(current_year_data.last_year_sa_qty) = 0 THEN IF(sum(current_year_data.this_year_sa_qty) > 0, 100, 0) \n");
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN last_year_data.last_year_sa_qty = 0 THEN IF(current_year_data.this_year_sa_qty > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_sa_qty) - sum(current_year_data.last_year_sa_qty)) / sum(current_year_data.last_year_sa_qty) * 100 END), 2)) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_qty - last_year_data.last_year_sa_qty) / last_year_data.last_year_sa_qty * 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(" -- 销售金额同比(原有新增) \n");
|
executePluginSql.append(" -- 销售金额同比(原有新增) \n");
|
||||||
executePluginSql.append(" CASE \n");
|
executePluginSql.append(" CASE \n");
|
||||||
executePluginSql.append(" WHEN (CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n");
|
executePluginSql.append(" WHEN (CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END) > 0 THEN \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END) > 0 THEN \n");
|
||||||
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n");
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END), 2)) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END), 2)) \n");
|
||||||
executePluginSql.append(" WHEN (CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n");
|
executePluginSql.append(" WHEN (CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END) < 0 THEN \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END) < 0 THEN \n");
|
||||||
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n");
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END), 2)) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END), 2)) \n");
|
||||||
executePluginSql.append(" ELSE '0.00' \n");
|
executePluginSql.append(" ELSE '0.00' \n");
|
||||||
executePluginSql.append(" END AS samoney_yoy, \n"); //销售收入同比
|
executePluginSql.append(" END AS samoney_yoy, \n"); //销售收入同比
|
||||||
executePluginSql.append(" -- 新增:毛利同比 \n");
|
executePluginSql.append(" -- 新增:毛利同比 \n");
|
||||||
executePluginSql.append(" CASE \n");
|
executePluginSql.append(" CASE \n");
|
||||||
executePluginSql.append(" -- 正数:红色圆点emoji + 数值 + % \n");
|
executePluginSql.append(" -- 正数:红色圆点emoji + 数值 + % \n");
|
||||||
executePluginSql.append("WHEN (CASE WHEN sum(last_year_data.last_year_profit) = 0 THEN IF(MAX(current_year_data.this_year_profit) > 0, 100, 0) \n");
|
executePluginSql.append(" WHEN (CASE WHEN last_year_data.last_year_profit = 0 THEN IF(current_year_data.this_year_profit > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_profit) - sum(last_year_data.last_year_profit)) / sum(last_year_data.last_year_profit) * 100 END) > 0 THEN \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_profit - last_year_data.last_year_profit) / last_year_data.last_year_profit * 100 END) > 0 THEN \n");
|
||||||
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(last_year_data.last_year_profit) = 0 THEN IF(sum(current_year_data.this_year_profit) > 0, 100, 0) \n");
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN last_year_data.last_year_profit = 0 THEN IF(current_year_data.this_year_profit > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_profit) - sum(last_year_data.last_year_profit)) / sum(last_year_data.last_year_profit) * 100 END), 2)) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_profit - last_year_data.last_year_profit) / last_year_data.last_year_profit * 100 END), 2)) \n");
|
||||||
executePluginSql.append(" -- 负数:绿色圆点emoji + 数值 + % \n");
|
executePluginSql.append(" -- 负数:绿色圆点emoji + 数值 + % \n");
|
||||||
executePluginSql.append(" WHEN (CASE WHEN sum(last_year_data.last_year_profit) = 0 THEN IF(sum(current_year_data.this_year_profit) > 0, 100, 0) \n");
|
executePluginSql.append(" WHEN (CASE WHEN last_year_data.last_year_profit = 0 THEN IF(current_year_data.this_year_profit > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_profit) - sum(last_year_data.last_year_profit)) / sum(last_year_data.last_year_profit) * 100 END) < 0 THEN \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_profit - last_year_data.last_year_profit) / last_year_data.last_year_profit * 100 END) < 0 THEN \n");
|
||||||
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(last_year_data.last_year_profit) = 0 THEN IF(MAX(current_year_data.this_year_profit) > 0, 100, 0) \n");
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN last_year_data.last_year_profit = 0 THEN IF(current_year_data.this_year_profit > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" ELSE (MAX(current_year_data.this_year_profit) - sum(last_year_data.last_year_profit)) / sum(last_year_data.last_year_profit) * 100 END), 2)) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_profit - last_year_data.last_year_profit) / last_year_data.last_year_profit * 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(" CASE WHEN (CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n");
|
executePluginSql.append(" CASE \n");
|
||||||
executePluginSql.append(" ELSE (sum(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END) > 0 THEN \n");
|
executePluginSql.append(" WHEN (CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END) > 0 THEN \n");;
|
||||||
executePluginSql.append(" ELSE (sum(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END), 2)) \n");
|
executePluginSql.append(" CONCAT('🟢 ', ROUND((CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" WHEN (CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END), 2)) \n");
|
||||||
executePluginSql.append(" ELSE (sum(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END) < 0 THEN \n");
|
executePluginSql.append(" WHEN (CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) \n");
|
||||||
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN sum(last_year_data.last_year_sa_money) = 0 THEN IF(sum(current_year_data.this_year_sa_money) > 0, 100, 0) \n");
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END) < 0 THEN \n");;
|
||||||
executePluginSql.append(" ELSE (sum(current_year_data.this_year_sa_money) - sum(last_year_data.last_year_sa_money)) / sum(last_year_data.last_year_sa_money) * 100 END), 2)) \n");
|
executePluginSql.append(" CONCAT('🔴 ', ROUND((CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) \n");
|
||||||
|
executePluginSql.append(" ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END), 2)) \n");
|
||||||
executePluginSql.append(" ELSE '0.00' \n");
|
executePluginSql.append(" ELSE '0.00' \n");
|
||||||
executePluginSql.append(" END AS samoneygrowth \n"); //本年销售金额增长率
|
executePluginSql.append(" END AS samoneygrowth \n"); //本年销售金额增长率
|
||||||
executePluginSql.append(" FROM \n");
|
executePluginSql.append(" FROM \n");
|
||||||
executePluginSql.append(" new_gr_bi_sa_agg_year_count as current_year_data \n");
|
executePluginSql.append(" (SELECT use_year , \n");
|
||||||
|
executePluginSql.append(" use_year AS ny, \n");
|
||||||
|
if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称
|
||||||
|
executePluginSql.append(" custom_id, \n");
|
||||||
|
executePluginSql.append(" custom_name , \n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名
|
||||||
|
executePluginSql.append(" std_goods_name, \n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域
|
||||||
|
executePluginSql.append(" zone_id, \n");
|
||||||
|
executePluginSql.append(" zone_name, \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型
|
||||||
|
executePluginSql.append(" sale_type_id, \n");
|
||||||
|
executePluginSql.append(" sale_type_name, \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型
|
||||||
|
executePluginSql.append(" dosage_id, \n");
|
||||||
|
executePluginSql.append(" dosage_name, \n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员
|
||||||
|
executePluginSql.append(" saler_id, \n");
|
||||||
|
executePluginSql.append(" saler_name, \n");
|
||||||
|
}
|
||||||
|
executePluginSql.append(" GROUP_CONCAT(DISTINCT province_id ORDER BY province_id SEPARATOR ',') AS province_id, \n");
|
||||||
|
executePluginSql.append(" GROUP_CONCAT(DISTINCT province_name ORDER BY province_name SEPARATOR ',') AS province_name, \n");
|
||||||
|
executePluginSql.append(" sum(this_year_sa_qty) AS this_year_sa_qty, \n");
|
||||||
|
executePluginSql.append(" sum(this_year_sa_money) AS this_year_sa_money, \n");
|
||||||
|
executePluginSql.append(" sum(this_year_cost) AS this_year_cost, \n");
|
||||||
|
executePluginSql.append(" sum(this_year_profit) AS this_year_profit \n");
|
||||||
|
executePluginSql.append(" FROM new_gr_bi_sa_agg_year_count \n");
|
||||||
|
appendWhere(params,executePluginSql);
|
||||||
|
executePluginSql.append(" GROUP BY use_year,");
|
||||||
|
|
||||||
|
if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称
|
||||||
|
executePluginSql.append(" custom_id,");
|
||||||
|
executePluginSql.append(" custom_name,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名
|
||||||
|
executePluginSql.append(" std_goods_name,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域
|
||||||
|
executePluginSql.append(" zone_id,");
|
||||||
|
executePluginSql.append(" zone_name,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型
|
||||||
|
executePluginSql.append(" sale_type_id,");
|
||||||
|
executePluginSql.append(" sale_type_name,");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型
|
||||||
|
executePluginSql.append(" dosage_id,");
|
||||||
|
executePluginSql.append(" dosage_name,");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员
|
||||||
|
executePluginSql.append(" saler_id,");
|
||||||
|
executePluginSql.append(" saler_name,");
|
||||||
|
}
|
||||||
|
executePluginSql.deleteCharAt(executePluginSql.length() - 1);
|
||||||
|
executePluginSql.append(" ) as current_year_data \n");
|
||||||
executePluginSql.append(" LEFT JOIN (SELECT use_year, \n");
|
executePluginSql.append(" LEFT JOIN (SELECT use_year, \n");
|
||||||
executePluginSql.append(" custom_id, \n");
|
appendSelectField(params, groupFieldList,executePluginSql);
|
||||||
executePluginSql.append(" zone_id, \n");
|
// executePluginSql.append(" custom_id, \n");
|
||||||
executePluginSql.append(" std_goods_name, \n");
|
// executePluginSql.append(" zone_id, \n");
|
||||||
// executePluginSql.append(" province_id, \n");
|
// executePluginSql.append(" std_goods_name, \n");
|
||||||
executePluginSql.append(" sale_type_id, \n");
|
// // executePluginSql.append(" province_id, \n");
|
||||||
executePluginSql.append(" dosage_id, \n");
|
// executePluginSql.append(" sale_type_id, \n");
|
||||||
executePluginSql.append(" saler_id, \n");
|
// executePluginSql.append(" dosage_id, \n");
|
||||||
|
// executePluginSql.append(" saler_id, \n");
|
||||||
executePluginSql.append(" SUM(this_year_sa_qty) AS last_year_sa_qty, \n");
|
executePluginSql.append(" SUM(this_year_sa_qty) AS last_year_sa_qty, \n");
|
||||||
executePluginSql.append(" SUM(this_year_sa_money) AS last_year_sa_money, \n");
|
executePluginSql.append(" SUM(this_year_sa_money) AS last_year_sa_money, \n");
|
||||||
executePluginSql.append(" SUM(this_year_cost) AS last_year_cost, \n");
|
executePluginSql.append(" SUM(this_year_cost) AS last_year_cost, \n");
|
||||||
executePluginSql.append(" SUM(this_year_profit) AS last_year_profit \n");
|
executePluginSql.append(" SUM(this_year_profit) AS last_year_profit \n");
|
||||||
executePluginSql.append(" FROM new_gr_bi_sa_agg_year_count \n");
|
executePluginSql.append(" FROM new_gr_bi_sa_agg_year_count \n");
|
||||||
executePluginSql.append(" GROUP BY use_year, \n");
|
if(params.containsKey("useyear")){
|
||||||
executePluginSql.append(" custom_id, \n");
|
params.put("useyear", Integer.parseInt(params.get("useyear").toString()) - 1);
|
||||||
executePluginSql.append(" zone_id, \n");
|
}
|
||||||
executePluginSql.append(" std_goods_name, \n");
|
appendWhere(params, executePluginSql);
|
||||||
// executePluginSql.append(" province_id, \n");
|
if(params.containsKey("useyear")){
|
||||||
executePluginSql.append(" sale_type_id, \n");
|
params.put("useyear", Integer.parseInt(params.get("useyear").toString() ) + 1);
|
||||||
executePluginSql.append(" dosage_id, \n");
|
}
|
||||||
executePluginSql.append(" saler_id) AS last_year_data \n");
|
executePluginSql.append(" GROUP BY use_year,");
|
||||||
executePluginSql.append(" ON current_year_data.std_goods_name = last_year_data.std_goods_name \n");
|
// executePluginSql.append(" custom_id, \n");
|
||||||
executePluginSql.append(" AND current_year_data.zone_id = last_year_data.zone_id \n");
|
// executePluginSql.append(" zone_id, \n");
|
||||||
// executePluginSql.append(" AND current_year_data.province_id = last_year_data.province_id \n");
|
// executePluginSql.append(" std_goods_name, \n");
|
||||||
executePluginSql.append(" AND current_year_data.sale_type_id = last_year_data.sale_type_id \n");
|
//// executePluginSql.append(" province_id, \n");
|
||||||
executePluginSql.append(" AND current_year_data.dosage_id = last_year_data.dosage_id \n");
|
// executePluginSql.append(" sale_type_id, \n");
|
||||||
executePluginSql.append(" AND current_year_data.custom_id = last_year_data.custom_id \n");
|
// executePluginSql.append(" dosage_id,saler_id \n");
|
||||||
executePluginSql.append(" AND current_year_data.saler_id = last_year_data.saler_id \n");
|
appendGroupByField(params, groupFieldList,executePluginSql);
|
||||||
executePluginSql.append(" AND last_year_data.use_year = current_year_data.use_year - 1 \n");
|
executePluginSql.append(" ) AS last_year_data \n");
|
||||||
|
executePluginSql.append(" ON last_year_data.use_year = current_year_data.use_year - 1 \n");
|
||||||
|
if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称
|
||||||
|
executePluginSql.append(" AND current_year_data.custom_id = last_year_data.custom_id \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名
|
||||||
|
executePluginSql.append(" AND current_year_data.std_goods_name = last_year_data.std_goods_name \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域
|
||||||
|
executePluginSql.append(" AND current_year_data.zone_id = last_year_data.zone_id \n");
|
||||||
|
}
|
||||||
|
// executePluginSql.append(" AND current_month.province_id = last_year_data.province_id \n");
|
||||||
|
if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型
|
||||||
|
executePluginSql.append(" AND current_year_data.sale_type_id = last_year_data.sale_type_id \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型
|
||||||
|
executePluginSql.append(" AND current_year_data.dosage_id = last_year_data.dosage_id \n");
|
||||||
|
}
|
||||||
|
if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员
|
||||||
|
executePluginSql.append(" AND current_year_data.saler_id = last_year_data.saler_id \n");
|
||||||
|
}
|
||||||
|
// executePluginSql.append(" ON current_year_data.std_goods_name = last_year_data.std_goods_name \n");
|
||||||
|
// executePluginSql.append(" AND current_year_data.zone_id = last_year_data.zone_id \n");
|
||||||
|
//// executePluginSql.append(" AND current_year_data.province_id = last_year_data.province_id \n");
|
||||||
|
// executePluginSql.append(" AND current_year_data.sale_type_id = last_year_data.sale_type_id \n");
|
||||||
|
// executePluginSql.append(" AND current_year_data.dosage_id = last_year_data.dosage_id \n");
|
||||||
|
// executePluginSql.append(" AND current_year_data.custom_id = last_year_data.custom_id \n");
|
||||||
|
// executePluginSql.append(" AND current_year_data.saler_id = last_year_data.saler_id \n");
|
||||||
executePluginSql.append(" LEFT JOIN (SELECT use_year, \n");
|
executePluginSql.append(" LEFT JOIN (SELECT use_year, \n");
|
||||||
executePluginSql.append(" SUM(this_year_sa_money) AS this_year_sa_money_sum, \n");
|
executePluginSql.append(" SUM(this_year_sa_money) AS this_year_sa_money_sum, \n");
|
||||||
executePluginSql.append(" SUM(this_year_profit) AS this_year_profit_sum \n");
|
executePluginSql.append(" SUM(this_year_profit) AS this_year_profit_sum \n");
|
||||||
@@ -165,38 +260,38 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
executePluginSql.append(" GROUP BY use_year) as total_year_data \n");
|
executePluginSql.append(" GROUP BY use_year) as total_year_data \n");
|
||||||
executePluginSql.append(" ON total_year_data.use_year = current_year_data.use_year \n");
|
executePluginSql.append(" ON total_year_data.use_year = current_year_data.use_year \n");
|
||||||
|
|
||||||
executePluginSql.append(" GROUP BY \n");
|
// executePluginSql.append(" GROUP BY \n");
|
||||||
if (groupFieldList.contains("customname") || params.containsKey("customname")) {
|
// if (groupFieldList.contains("customname") || params.containsKey("customname")) {
|
||||||
executePluginSql.append(" current_year_data.custom_id,");
|
// executePluginSql.append(" current_year_data.custom_id,");
|
||||||
executePluginSql.append(" current_year_data.custom_name,");
|
// executePluginSql.append(" current_year_data.custom_name,");
|
||||||
}
|
// }
|
||||||
if (groupFieldList.contains("useyear") || params.containsKey("useyear")) {
|
// if (groupFieldList.contains("useyear") || params.containsKey("useyear")) {
|
||||||
executePluginSql.append(" current_year_data.use_year,");
|
// executePluginSql.append(" current_year_data.use_year,");
|
||||||
}
|
// }
|
||||||
if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) {
|
// if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) {
|
||||||
executePluginSql.append(" current_year_data.use_month,");
|
// executePluginSql.append(" current_year_data.use_month,");
|
||||||
}
|
// }
|
||||||
if (groupFieldList.contains("zonename") || params.containsKey("zonename")) {
|
// if (groupFieldList.contains("zonename") || params.containsKey("zonename")) {
|
||||||
executePluginSql.append(" current_year_data.zone_id,");
|
// executePluginSql.append(" current_year_data.zone_id,");
|
||||||
executePluginSql.append(" current_year_data.zone_name,");
|
// executePluginSql.append(" current_year_data.zone_name,");
|
||||||
}
|
// }
|
||||||
if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) {
|
// if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) {
|
||||||
executePluginSql.append(" current_year_data.sale_type_id,");
|
// executePluginSql.append(" current_year_data.sale_type_id,");
|
||||||
executePluginSql.append(" current_year_data.sale_type_name,");
|
// executePluginSql.append(" current_year_data.sale_type_name,");
|
||||||
}
|
// }
|
||||||
if (groupFieldList.contains("salername") || params.containsKey("salername")) {
|
// if (groupFieldList.contains("salername") || params.containsKey("salername")) {
|
||||||
executePluginSql.append(" current_year_data.saler_id,");
|
// executePluginSql.append(" current_year_data.saler_id,");
|
||||||
executePluginSql.append(" current_year_data.saler_name,");
|
// executePluginSql.append(" current_year_data.saler_name,");
|
||||||
}
|
// }
|
||||||
if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) {
|
// if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) {
|
||||||
executePluginSql.append(" current_year_data.dosage_id,");
|
// executePluginSql.append(" current_year_data.dosage_id,");
|
||||||
executePluginSql.append(" current_year_data.dosage_name,");
|
// executePluginSql.append(" current_year_data.dosage_name,");
|
||||||
}
|
// }
|
||||||
if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名
|
// if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名
|
||||||
executePluginSql.append(" current_year_data.std_goods_name,");
|
// executePluginSql.append(" current_year_data.std_goods_name,");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
executePluginSql.deleteCharAt(executePluginSql.length() - 1);
|
// executePluginSql.deleteCharAt(executePluginSql.length() - 1);
|
||||||
sql = executePluginSql.toString();
|
sql = executePluginSql.toString();
|
||||||
}
|
}
|
||||||
params.put("executePluginSql", sql);
|
params.put("executePluginSql", sql);
|
||||||
@@ -208,9 +303,6 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
private String geroupMonthSql(Map<String, Object> params, List<String> groupFieldList) {
|
private String geroupMonthSql(Map<String, Object> params, List<String> groupFieldList) {
|
||||||
StringBuilder executePluginSql = new StringBuilder();
|
StringBuilder executePluginSql = new StringBuilder();
|
||||||
executePluginSql.append("select");
|
executePluginSql.append("select");
|
||||||
if(!params.containsKey("useyear")){
|
|
||||||
params.put("useyear", new SimpleDateFormat("yyyy").format(new Date()));
|
|
||||||
}
|
|
||||||
if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { //月
|
if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { //月
|
||||||
executePluginSql.append(" current_month.use_year as useyear,");
|
executePluginSql.append(" current_month.use_year as useyear,");
|
||||||
executePluginSql.append(" current_month.use_month as usemonth, \n");
|
executePluginSql.append(" current_month.use_month as usemonth, \n");
|
||||||
@@ -317,31 +409,31 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
executePluginSql.append(" use_year AS use_year, \n");
|
executePluginSql.append(" use_year AS use_year, \n");
|
||||||
executePluginSql.append(" use_month AS use_month, \n");
|
executePluginSql.append(" use_month AS use_month, \n");
|
||||||
|
|
||||||
if (groupFieldList.contains("customname")) { //客户名称
|
if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称
|
||||||
executePluginSql.append(" custom_id, \n");
|
executePluginSql.append(" custom_id, \n");
|
||||||
executePluginSql.append(" custom_name , \n");
|
executePluginSql.append(" custom_name , \n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (groupFieldList.contains("stdGoodsName")) { //标准品名
|
if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName") ) { //标准品名
|
||||||
executePluginSql.append(" std_goods_name, \n");
|
executePluginSql.append(" std_goods_name, \n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (groupFieldList.contains("zonename") ) { //业务区域
|
if (groupFieldList.contains("zonename") || params.containsKey("zonename") ) { //业务区域
|
||||||
executePluginSql.append(" zone_id, \n");
|
executePluginSql.append(" zone_id, \n");
|
||||||
executePluginSql.append(" zone_name, \n");
|
executePluginSql.append(" zone_name, \n");
|
||||||
}
|
}
|
||||||
if (groupFieldList.contains("saletypename") ) { //销售类型
|
if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型
|
||||||
executePluginSql.append(" sale_type_id, \n");
|
executePluginSql.append(" sale_type_id, \n");
|
||||||
executePluginSql.append(" sale_type_name, \n");
|
executePluginSql.append(" sale_type_name, \n");
|
||||||
}
|
}
|
||||||
if (groupFieldList.contains("dosagename")) { //剂型
|
if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型
|
||||||
executePluginSql.append(" dosage_id, \n");
|
executePluginSql.append(" dosage_id, \n");
|
||||||
executePluginSql.append(" dosage_name, \n");
|
executePluginSql.append(" dosage_name, \n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (groupFieldList.contains("salername")) { //业务员
|
if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员
|
||||||
executePluginSql.append(" current_month.saler_id, \n");
|
executePluginSql.append(" saler_id, \n");
|
||||||
executePluginSql.append(" current_month.saler_name, \n");
|
executePluginSql.append(" saler_name, \n");
|
||||||
}
|
}
|
||||||
executePluginSql.append(" MAX(CONCAT(use_year, LPAD(use_month, 2, '0'))) AS ny, \n");
|
executePluginSql.append(" MAX(CONCAT(use_year, LPAD(use_month, 2, '0'))) AS ny, \n");
|
||||||
executePluginSql.append(" GROUP_CONCAT(DISTINCT province_id ORDER BY province_id SEPARATOR ',') AS province_id, \n");
|
executePluginSql.append(" GROUP_CONCAT(DISTINCT province_id ORDER BY province_id SEPARATOR ',') AS province_id, \n");
|
||||||
@@ -397,23 +489,23 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
executePluginSql.append(" ON last_month_data.use_year = current_month.use_year - (current_month.use_month = 1)\n");
|
executePluginSql.append(" ON last_month_data.use_year = current_month.use_year - (current_month.use_month = 1)\n");
|
||||||
executePluginSql.append(" AND last_month_data.use_month = IF(current_month.use_month = 1, 12, current_month.use_month - 1)\n");
|
executePluginSql.append(" AND last_month_data.use_month = IF(current_month.use_month = 1, 12, current_month.use_month - 1)\n");
|
||||||
|
|
||||||
if (groupFieldList.contains("customname") ) { //客户名称
|
if (groupFieldList.contains("customname") || params.containsKey("customname") ) { //客户名称
|
||||||
executePluginSql.append(" AND current_month.custom_id = last_month_data.custom_id \n");
|
executePluginSql.append(" AND current_month.custom_id = last_month_data.custom_id \n");
|
||||||
}
|
}
|
||||||
if (groupFieldList.contains("stdGoodsName")) { //标准品名
|
if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名
|
||||||
executePluginSql.append(" AND current_month.std_goods_name = last_month_data.std_goods_name \n");
|
executePluginSql.append(" AND current_month.std_goods_name = last_month_data.std_goods_name \n");
|
||||||
}
|
}
|
||||||
if (groupFieldList.contains("zonename") ) { //业务区域
|
if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域
|
||||||
executePluginSql.append(" AND current_month.zone_id = last_month_data.zone_id \n");
|
executePluginSql.append(" AND current_month.zone_id = last_month_data.zone_id \n");
|
||||||
}
|
}
|
||||||
// executePluginSql.append(" AND current_month.province_id = last_month_data.province_id \n");
|
// executePluginSql.append(" AND current_month.province_id = last_month_data.province_id \n");
|
||||||
if (groupFieldList.contains("saletypename")) { //销售类型
|
if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型
|
||||||
executePluginSql.append(" AND current_month.sale_type_id = last_month_data.sale_type_id \n");
|
executePluginSql.append(" AND current_month.sale_type_id = last_month_data.sale_type_id \n");
|
||||||
}
|
}
|
||||||
if (groupFieldList.contains("dosagename")) { //剂型
|
if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型
|
||||||
executePluginSql.append(" AND current_month.dosage_id = last_month_data.dosage_id \n");
|
executePluginSql.append(" AND current_month.dosage_id = last_month_data.dosage_id \n");
|
||||||
}
|
}
|
||||||
if (groupFieldList.contains("salername")) { //业务员
|
if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员
|
||||||
executePluginSql.append(" AND current_month.saler_id = last_month_data.saler_id \n");
|
executePluginSql.append(" AND current_month.saler_id = last_month_data.saler_id \n");
|
||||||
}
|
}
|
||||||
executePluginSql.append(" LEFT JOIN (SELECT use_year, \n");
|
executePluginSql.append(" LEFT JOIN (SELECT use_year, \n");
|
||||||
@@ -569,22 +661,22 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
|
|||||||
executePluginSql.append(" AND use_month = '").append(Integer.parseInt(params.get("usemonth").toString())).append("'");
|
executePluginSql.append(" AND use_month = '").append(Integer.parseInt(params.get("usemonth").toString())).append("'");
|
||||||
}
|
}
|
||||||
if (params.containsKey("customname")) {
|
if (params.containsKey("customname")) {
|
||||||
executePluginSql.append(" AND custom_name IN (").append(params.get("customname")).append(")");
|
executePluginSql.append(" AND custom_name IN ('").append(params.get("customname").toString().replaceAll(",", "','")).append("')");
|
||||||
}
|
}
|
||||||
if (params.containsKey("stdGoodsName")) {
|
if (params.containsKey("stdGoodsName")) {
|
||||||
executePluginSql.append(" AND std_goods_name IN (").append(params.get("stdGoodsName")).append(")");
|
executePluginSql.append(" AND std_goods_name IN ('").append(params.get("stdGoodsName").toString().replaceAll(",", "','")).append("')");
|
||||||
}
|
}
|
||||||
if (params.containsKey("zonename")) {
|
if (params.containsKey("zonename")) {
|
||||||
executePluginSql.append(" AND zone_name IN (").append(params.get("zonename")).append(")");
|
executePluginSql.append(" AND zone_name IN ('").append(params.get("zonename").toString().replaceAll(",", "','")).append("')");
|
||||||
}
|
}
|
||||||
if (params.containsKey("saletypename")) {
|
if (params.containsKey("saletypename")) {
|
||||||
executePluginSql.append(" AND sale_type_name IN (").append(params.get("saletypename")).append(")");
|
executePluginSql.append(" AND sale_type_name IN ('").append(params.get("saletypename").toString().replaceAll(",", "','")).append("')");
|
||||||
}
|
}
|
||||||
if (params.containsKey("dosagename")) {
|
if (params.containsKey("dosagename")) {
|
||||||
executePluginSql.append(" AND dosage_name IN (").append(params.get("dosagename")).append(")");
|
executePluginSql.append(" AND dosage_name IN ('").append(params.get("dosagename").toString().replaceAll(",", "','")).append("')");
|
||||||
}
|
}
|
||||||
if (params.containsKey("salername")) {
|
if (params.containsKey("salername")) {
|
||||||
executePluginSql.append(" AND saler_name IN (").append(params.get("salername")).append(")");
|
executePluginSql.append(" AND saler_name IN ('").append(params.get("salername").toString().replaceAll(",", "','")).append("')");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user