@@ -7,7 +7,9 @@ import com.lideeyunji.tool.framework.exception.lideeYunJiException;
import lombok.extern.slf4j.Slf4j ;
import lombok.extern.slf4j.Slf4j ;
import org.springframework.stereotype.Component ;
import org.springframework.stereotype.Component ;
import java.text.SimpleDateFormat ;
import java.util.Arrays ;
import java.util.Arrays ;
import java.util.Date ;
import java.util.List ;
import java.util.List ;
import java.util.Map ;
import java.util.Map ;
@@ -28,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 {
@@ -60,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(curren t_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 las t_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(curren t_year_data.last_year_sa_qty)) / sum(curren t_year_data.last_year_sa_qty) * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " ELSE (current_year_data.this_year_sa_qty - las t_year_data.last_year_sa_qty) / las t_year_data.last_year_sa_qty * 100 END) > 0 THEN \ n " ) ; ;
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN sum(curren t_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 las t_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(curren t_year_data.last_year_sa_qty)) / sum(curren t_year_data.last_year_sa_qty) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE (current_year_data.this_year_sa_qty - las t_year_data.last_year_sa_qty) / las t_year_data.last_year_sa_qty * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " WHEN (CASE WHEN sum(curren t_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 las t_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(curren t_year_data.last_year_sa_qty)) / sum(curren t_year_data.last_year_sa_qty) * 100 END) < 0 THEN \ n " ) ;
executePluginSql . append ( " ELSE (current_year_data.this_year_sa_qty - las t_year_data.last_year_sa_qty) / las t_year_data.last_year_sa_qty * 100 END) < 0 THEN \ n " ) ; ;
executePluginSql . append ( " CONCAT('🔴 ', ROUND((CASE WHEN sum(curren t_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 las t_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(curren t_year_data.last_year_sa_qty)) / sum(curren t_year_data.last_year_sa_qty) * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE (current_year_data.this_year_sa_qty - las t_year_data.last_year_sa_qty) / las t_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(las t_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(curren t_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(curren t_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) / las t_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(las t_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(curren t_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(curren t_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) / las t_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(las t_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(curren t_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(curren t_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) / las t_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(las t_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(curren t_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_typ e_id \ n " ) ;
//// executePluginSql. append(" provinc e_id, \n") ;
executePluginSql. append( " AND current_year_data.dosage_id = last_year_data.dosag e_id \ n " ) ;
// executePluginSql. append(" sale_typ e_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 " ) ;
@@ -163,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 ) ;
@@ -206,19 +303,19 @@ 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 ( 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 " ) ) { //月
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 " ) ;
if ( groupFieldList . contains ( " useyear " ) | | params . containsKey ( " useyear " ) ) {
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 " ) ; //年月
executePluginSql . append ( " current_month.ny, \ n " ) ; //年月
} else {
} else {
executePluginSql . append ( " MAX( LPAD(current_month.use_month, 2, '0')) as ny, \ n " ) ;
executePluginSql . append ( " LPAD(current_month.use_month, 2, '0') as ny, \ n " ) ;
}
}
}
}
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 ( " zonename " ) | | params . containsKey ( " zonename " ) ) { //业务区域
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) { //业务区域
executePluginSql . append ( " current_month.zone_id, \ n " ) ;
executePluginSql . append ( " current_month.zone_id, \ n " ) ;
executePluginSql . append ( " current_month.zone_name as zonename, \ n " ) ;
executePluginSql . append ( " current_month.zone_name as zonename, \ n " ) ;
@@ -238,201 +335,349 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
if ( groupFieldList . contains ( " stdGoodsName " ) | | params . containsKey ( " stdGoodsName " ) ) { //标准品名
if ( groupFieldList . contains ( " stdGoodsName " ) | | params . containsKey ( " stdGoodsName " ) ) { //标准品名
executePluginSql . append ( " current_month.std_goods_name as stdGoodsName, \ n " ) ;
executePluginSql . append ( " current_month.std_goods_name as stdGoodsName, \ n " ) ;
}
}
executePluginSql . append ( " SUM( current_month.this_month_sa_qty) as thisMonthSaQty, \ n " ) ; //本月销售数量(件)
executePluginSql . append ( " current_month.this_month_sa_qty AS thisMonthSaQty, \ n " ) ; //本月销售数量(件)
executePluginSql . append ( " ROUND(SUM( current_month.this_month_sa_money) / 10000, 2) as thisMonthSaMoney, \ n " ) ; //本月销售金额(元)
executePluginSql . append ( " ROUND(current_month.this_month_sa_money / 10000, 2) AS thisMonthSaMoney, \ n " ) ; //本月销售金额(元)
executePluginSql . append ( " ROUND(SUM( current_month.this_month_profit) / 10000, 2) as thisMonthProfit, \ n " ) ; //本月毛利额(元)
executePluginSql . append ( " ROUND(current_month.this_month_profit / 10000, 2) AS thisMonthProfit, \ n " ) ; //本月毛利额(元)
executePluginSql . append ( " ROUND(SUM( current_month.this_month_cost) / 10000, 2) as thisMonthCost, \ n " ) ; //本月成本(元)
executePluginSql . append ( " ROUND(current_month.this_month_cost / 10000, 2) AS thisMonthCost, \ n " ) ; //本月成本(元)
executePluginSql . append ( " last_month_data.last_month_sa_qty AS lastMonthSaQty, \ n " ) ; //上月销售数量(件)
executePluginSql . append ( " SUM (last_month_data.last_month_sa_qty) as lastMonthSaQty, \ n " ) ; //上月销售数量(件 )
executePluginSql . append ( " ROUND (last_month_data.last_month_sa_money / 10000, 2) AS lastMonthSaMoney, \ n " ) ; //上月销售金额(元 )
executePluginSql . append ( " ROUND(SUM( last_month_data.last_month_sa_money) / 10000, 2) as lastMonthSaMoney, \ n " ) ; //上月销售金 额(元)
executePluginSql . append ( " ROUND(last_month_data.last_month_profit / 10000, 2) AS lastMonthProfit, \ n " ) ; //上月毛利 额(元)
executePluginSql . append ( " ROUND(SUM( last_month_data.last_month_profit) / 10000, 2) as lastMonthProfi t, \ n " ) ; //上月毛利额 (元)
executePluginSql . append ( " ROUND(last_month_data.last_month_cost / 10000, 2) AS lastMonthCos t, \ n " ) ; //上月成本 (元)
executePluginSql . append ( " ROUND(SUM(last_month_data.last _month_cost) / 10000, 2) as lastMonthCost, \ n " ) ; //上月成本(元 )
executePluginSql . append ( " ROUND(yoy_month.yoy _month_sa_qty / 10000, 2) AS yoyMonthSaQty, \ n " ) ; //同比月销售数量(件 )
executePluginSql . append ( " ROUND(yoy_month.yoy_month_sa_money / 10000, 2) AS yoyMonthSaMoney, \ n " ) ; //同比月销售金额(元)
executePluginSql . append ( " ROUND(SUM( yoy_month.yoy_month_sa_qty) / 10000, 2) as yoyMonthSaQty, \ n " ) ; //同比月销售数量(件 )
executePluginSql . append ( " ROUND(yoy_month.yoy_month_profit / 10000, 2) AS yoyMonthProfit, \ n " ) ; //同比月毛利额(元 )
executePluginSql . append ( " ROUND(SUM( yoy_month.yoy_month_sa_money) / 10000, 2) as yoyMonthSaMoney , \ n " ) ; //同比月销售金额 (元)
executePluginSql . append ( " ROUND(yoy_month.yoy_month_cost / 10000, 2) AS yoyMonthCost , \ n " ) ; //同比月成本 (元)
executePluginSql . append ( " ROUND(SUM(yoy_month.yoy _month_ profit) / 10000, 2) as yoyMonthProfit, \ n " ) ; //同比月毛利额(元)
executePluginSql . append ( " current _month. province_id AS province_id, \ n " ) ; //行政区域ID
executePluginSql . append ( " ROUND(SUM(yoy_month.yoy_month_cost) / 10000, 2) as yoyMonthCost, \ n " ) ; //同比月成本(元)
executePluginSql . append ( " current_month.province_name AS province_name, \ n " ) ; //行政区域名称
executePluginSql . append ( " CASE WHEN (CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0) \ n " ) ;
executePluginSql . append ( " GROUP_CONCAT(DISTINCT current_month.province_id ORDER BY current_month.province_id SEPARATOR ',') as province_id, \ n " ) ; //行政区域ID
executePluginSql . append ( " ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END) > 0 THEN \ n " ) ;
executePluginSql . append ( " GROUP_ CONCAT(DISTINCT current_month.province_name ORDER BY current_month.province_name SEPARATOR ',') as province_name, \ n " ) ; //行政区域名称
executePluginSql . append ( " CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0) \ 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 (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy _month.yoy _month_sa_qty * 100 END), 2)) \ 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 ( " WHEN (CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current _month.this _month_sa_qty > 0, 100, 0) \ 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 (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy _month.yoy _month_sa_qty * 100 END) < 0 THEN \ 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 ( " CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current _month.this _month_sa_qty > 0, 100, 0) \ 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 (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy _month.yoy _month_sa_qty * 100 END), 2)) \ 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 ( " 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 ( " CASE WHEN (CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(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 ( " ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / 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 ( " CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(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 (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / 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 ( " WHEN (CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(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 ( " ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / 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 ( " CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(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 (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 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 ( " 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 ( " CASE WHEN (CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(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 ( " ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / 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 ( " CONCAT('🟢 ', ROUND((CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(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 (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / 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 ( " WHEN (CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(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 ( " ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / 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 ( " CONCAT('🔴 ', ROUND((CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(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 (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 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 ( " 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 ( " CASE WHEN (CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(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 ( " ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / 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 ( " CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(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 (current_month.this_month_cost - yoy_month.yoy_month_cost) / 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 ( " WHEN (CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(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 ( " ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / 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 ( " CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(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 (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_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 ( " 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 ( " CASE WHEN (CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current _month.this _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 ( " ELSE (current _month.this _month_profit - yoy_month.yoy_month_profit) / 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 ( " CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current _month.this _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 (current _month.this _month_profit - yoy_month.yoy_month_profit) / 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 ( " WHEN (CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current _month.this _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 ( " ELSE (current _month.this _month_profit - yoy_month.yoy_month_profit) / 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 ( " CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current _month.this _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 (current _month.this _month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END), 2)) \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " ELSE '0.00' \ n " ) ;
executePluginSql . append ( " END AS monthprofit_yoy, \ 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( current_month.this_month_sa_money/ 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 ( " COALESCE (ROUND( current_month.this_month_profit/ total_month_data.this_month_profit_sum * 100, 2), 0 ) as this_month_profit_share \ n " ) ; //本月毛利额占比
executePluginSql . append ( " from new_gr_bi_sa_agg_month_count as current_month \ n " ) ;
executePluginSql . append ( " FROM (SELECT \ n " ) ;
executePluginSql . append ( " use_year AS use_year, \ n " ) ;
executePluginSql . append ( " use_month AS use_month, \ 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 ( " 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_name ORDER BY province_name SEPARATOR ',') AS province_name, \ n " ) ;
executePluginSql . append ( " sum(this_month_sa_qty) AS this_month_sa_qty, \ n " ) ;
executePluginSql . append ( " sum(this_month_sa_money) AS this_month_sa_money, \ n " ) ;
executePluginSql . append ( " sum(this_month_cost) AS this_month_cost, \ n " ) ;
executePluginSql . append ( " sum(this_month_profit) AS this_month_profit \ n " ) ;
executePluginSql . append ( " FROM \ n " ) ;
executePluginSql . append ( " new_gr_bi_sa_agg_month_count \ n " ) ;
appendWhere ( params , executePluginSql ) ;
executePluginSql . append ( " GROUP BY use_year,use_month, " ) ;
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_month \ n " ) ; //current_month 本月数据
executePluginSql . append ( " LEFT JOIN (SELECT \ n " ) ;
executePluginSql . append ( " LEFT JOIN (SELECT \ n " ) ;
executePluginSql . append ( " use_year, \ n " ) ;
executePluginSql . append ( " use_year, \ n " ) ;
executePluginSql . append ( " use_month, \ n " ) ;
executePluginSql . append ( " use_month, \ n " ) ;
executePluginSql . append ( " custom_id, \ n " ) ;
appendSelectField ( params , groupFieldList , executePluginSql ) ;
executePluginSql . append ( " zone_id, \ n " ) ;
executePluginSql . append ( " std_goods_name, \ n " ) ;
executePluginSql . append ( " province_id, \ n " ) ;
executePluginSql . append ( " sale_type_id, \ n " ) ;
executePluginSql . append ( " dosage_id, \ n " ) ;
executePluginSql . append ( " saler_id, \ n " ) ;
executePluginSql . append ( " SUM(this_month_sa_qty) AS last_month_sa_qty, \ n " ) ;
executePluginSql . append ( " SUM(this_month_sa_qty) AS last_month_sa_qty, \ n " ) ;
executePluginSql . append ( " SUM(this_month_sa_money) AS last_month_sa_money, \ n " ) ;
executePluginSql . append ( " SUM(this_month_sa_money) AS last_month_sa_money, \ n " ) ;
executePluginSql . append ( " SUM(this_month_cost) AS last_month_cost, \ n " ) ;
executePluginSql . append ( " SUM(this_month_cost) AS last_month_cost, \ n " ) ;
executePluginSql . append ( " SUM(this_month_profit) AS last_month_profit \ n " ) ;
executePluginSql . append ( " SUM(this_month_profit) AS last_month_profit \ n " ) ;
executePluginSql . append ( " FROM new_gr_bi_sa_agg_month_count \ n " ) ;
executePluginSql . append ( " FROM new_gr_bi_sa_agg_month_count \ n " ) ;
executePluginSql . append ( " GROUP BY use_year, \ n " ) ;
// appendWhere(params, executePluginSql) ;
executePluginSql . append ( " use_month, \ n " ) ;
executePluginSql . append ( " GROUP BY use_year, use_month, " ) ;
executePluginSql . append ( " custom_id, \ n " ) ;
appendGroupByField ( params , groupFieldList , executePluginSql ) ;
executePluginSql . append ( " zone_id, \ n " ) ;
executePluginSql . append ( " ) AS last_month_data \ n " ) ; // last_month_data 上月数据
executePluginSql . append ( " std_goods_name, \ n " ) ;
executePluginSql . append ( " ON last_month_data.use_year = current_month.use_year - (current_month.use_month = 1) \ n " ) ;
executePluginSql . append ( " province_id, \ n " ) ;
executePluginSql . append ( " sale_type_id, \ n " ) ;
executePluginSql . append ( " dosage_id, \ n " ) ;
executePluginSql . append ( " saler_id) AS last_month_data \ n " ) ;
executePluginSql . append ( " ON current_month.std_goods_name = last_month_data.std_goods_name \ 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.sale_type_id = last_month_data.sale_type_id \ n " ) ;
executePluginSql . append ( " AND current_month.dosage_id = last_month_data.dosage_id \ n " ) ;
executePluginSql . append ( " AND current_month.custom_id = last_month_data.custom_id \ n " ) ;
executePluginSql . append ( " AND current_month.saler_id = last_month_data.saler_id \ n " ) ;
executePluginSql . append ( " AND 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 " ) | | params . containsKey ( " customname " ) ) { //客户名称
executePluginSql . append ( " AND current_month.custom_id = last_month_data.custom_id \ n " ) ;
}
if ( groupFieldList . contains ( " stdGoodsName " ) | | params . containsKey ( " stdGoodsName " ) ) { //标准品名
executePluginSql . append ( " AND current_month.std_goods_name = last_month_data.std_goods_name \ n " ) ;
}
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.province_id = last_month_data.province_id \n");
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) { //销售类型
executePluginSql . append ( " AND current_month.sale_type_id = last_month_data.sale_type_id \ n " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) { //剂型
executePluginSql . append ( " AND current_month.dosage_id = last_month_data.dosage_id \ n " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) { //业务员
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 " ) ;
executePluginSql . append ( " use_month, \ n " ) ;
executePluginSql . append ( " use_month, \ n " ) ;
executePluginSql. append( " custom_id, \ n " ) ;
// executePluginSql. append(" custom_id, \n") ;
executePluginSql. append( " zone_id, \ n " ) ;
// executePluginSql. append(" zone_id, \n") ;
executePluginSql. append( " std_goods_name, \ n " ) ;
// executePluginSql. append(" std_goods_name, \n") ;
executePluginSql. append( " province_id, \ n " ) ;
//// executePluginSql. append(" province_id, \n") ;
executePluginSql. append( " sale_type_id, \ n " ) ;
// executePluginSql. append(" sale_type_id, \n") ;
executePluginSql. append( " dosage_id, \ n " ) ;
// executePluginSql. append(" dosage_id, \n") ;
executePluginSql. append( " saler_id, \ n " ) ;
// executePluginSql. append(" saler_id, \n") ;
appendSelectField ( params , groupFieldList , executePluginSql ) ;
executePluginSql . append ( " SUM(this_month_sa_qty) AS yoy_month_sa_qty, \ n " ) ; // 同比月销量
executePluginSql . append ( " SUM(this_month_sa_qty) AS yoy_month_sa_qty, \ n " ) ; // 同比月销量
executePluginSql . append ( " SUM(this_month_sa_money) AS yoy_month_sa_money, \ n " ) ; // 同比月销售金额
executePluginSql . append ( " SUM(this_month_sa_money) AS yoy_month_sa_money, \ n " ) ; // 同比月销售金额
executePluginSql . append ( " SUM(this_month_cost) as yoy_month_cost, \ n " ) ; // 同比月销售成本
executePluginSql . append ( " SUM(this_month_cost) as yoy_month_cost, \ n " ) ; // 同比月销售成本
executePluginSql . append ( " SUM(this_month_profit) AS yoy_month_profit \ n " ) ; // 同比月毛利额
executePluginSql . append ( " SUM(this_month_profit) AS yoy_month_profit \ n " ) ; // 同比月毛利额
executePluginSql . append ( " FROM new_gr_bi_sa_agg_month_count " ) ;
executePluginSql . append ( " FROM new_gr_bi_sa_agg_month_count " ) ;
// if( params. containsKey("useyear")) {
if ( params. containsKey( " useyear " ) ) {
// executePluginSql.append(" where use_ year = " + ( Integer. parseInt( params.get("useyear").toString())-1)) ;
params . put ( " useyear" , Integer. parseInt( params. get ( " useyear " ) . toString ( ) ) - 1 ) ;
// }
}
executePluginSql . append ( " GROUP BY use_year, \ n " ) ;
appendWhere ( params , executePluginSql ) ;
executePluginSql . append ( " use_month, \ 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 " ) ;
executePluginSql . append ( " GROUP BY use_year,use_month, " ) ;
executePluginSql . append ( " province_id, \ n " ) ;
appendGroupByField ( params , groupFieldList , executePluginSql ) ;
executePluginSql . append ( " sale_type_id, \ n " ) ;
executePluginSql . append ( " ) yoy_month ON yoy_month.use_year = current_month.use_year - 1 \ n " ) ; // 同比月数据
executePluginSql . append ( " dosage_id, \ n " ) ;
executePluginSql . append ( " saler_id) yoy_month ON yoy_month.use_year = current_month.use_year - 1 \ n " ) ;
executePluginSql . append ( " AND yoy_month.use_month = current_month.use_month \ n " ) ;
executePluginSql . append ( " AND yoy_month.use_month = current_month.use_month \ n " ) ;
executePluginSql . append ( " AND yoy_month. std_g oods_n ame = current_month. std_g oods_n ame \ n " ) ;
if ( groupFieldList . contains ( " stdG oodsN ame" ) | | params . containsKey ( " stdG oodsN ame" ) ) { //标准品名
executePluginSql . append ( " AND yoy_month.zone_id = current_month.zone_id \ n " ) ;
executePluginSql . append ( " AND yoy_month.std_goods_name = current_month.std_goods_name \ n " ) ;
executePluginSql . append ( " AND yoy_month.province_id = current_month.province_id \ n " ) ;
}
executePluginSql . append ( " AND yoy_month.sale_type_id = current_month.sale_type_id \ n " ) ;
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) { //业务区域
executePluginSql . append ( " AND yoy_month.dosag e_id = current_month.dosag e_id \ n " ) ;
executePluginSql . append ( " AND yoy_month.zon e_id = current_month.zon e_id \ n " ) ;
executePluginSql . append ( " AND yoy_month.custom_id = current_month.custom_id \ n " ) ;
}
executePluginSql. append( " AND yoy_month.saler _id = current_month.saler_id \ n " ) ;
// executePluginSql. append(" AND yoy_month.province _id = current_month.province_id \n") ;
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) { //销售类型
executePluginSql . append ( " AND yoy_month.sale_type_id = current_month.sale_type_id \ n " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) { //剂型
executePluginSql . append ( " AND yoy_month.dosage_id = current_month.dosage_id \ n " ) ;
}
if ( groupFieldList . contains ( " customname " ) | | params . containsKey ( " customname " ) ) { //客户名称
executePluginSql . append ( " AND yoy_month.custom_id = current_month.custom_id \ n " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) { //业务员
executePluginSql . append ( " AND yoy_month.saler_id = current_month.saler_id \ n " ) ;
}
executePluginSql . append ( " LEFT JOIN ( \ n " ) ;
executePluginSql . append ( " LEFT JOIN ( \ n " ) ;
executePluginSql . append ( " SELECT \ n " ) ;
executePluginSql . append ( " SELECT \ n " ) ;
executePluginSql . append ( " use_year, \ n " ) ;
executePluginSql . append ( " use_year, \ n " ) ;
executePluginSql . append ( " use_month, \ n " ) ;
executePluginSql . append ( " SUM( this_month_sa_money ) AS this_month_sa_money_sum, \ n " ) ;
executePluginSql . append ( " SUM( this_month_sa_money ) AS this_month_sa_money_sum, \ n " ) ;
executePluginSql . append ( " SUM(this_month_profit) AS this_month_profit_sum \ n " ) ;
executePluginSql . append ( " SUM(this_month_profit) AS this_month_profit_sum \ n " ) ;
executePluginSql . append ( " FROM new_gr_bi_sa_agg \ n " ) ;
executePluginSql . append ( " FROM new_gr_bi_sa_agg \ n " ) ;
// if(params.containsKey("useyear")){
// executePluginSql.append(" where use_year = " + params.get("useyear"));
// }
executePluginSql . append ( " GROUP BY \ n " ) ;
executePluginSql . append ( " GROUP BY \ n " ) ;
executePluginSql . append ( " use_year, use_month \ n " ) ;
executePluginSql . append ( " use_year \ n " ) ;
executePluginSql . append ( " ) total_month_data ON total_month_data.use_year = current_month.use_year \ n " ) ;
executePluginSql . append ( " ) total_month_data ON total_month_data.use_year = current_month.use_year \ n " ) ;
executePluginSql. append( " AND total_month_data.use_month = current_month.use_month \ n " ) ;
// executePluginSql. append(" AND total_month_data.use_month = current_month.use_month \n") ;
if ( params . containsKey ( " useyear " ) ) {
if ( params . containsKey ( " useyear " ) ) {
executePluginSql . append ( " where current_month.use_year = " + params . get ( " useyear " ) ) ;
executePluginSql . append ( " where current_month.use_year = " + params . get ( " useyear " ) ) ;
if ( params . containsKey ( " usemonth " ) ) {
if ( params . containsKey ( " usemonth " ) ) {
executePluginSql . append ( " and current_month.use_month = " + params . get ( " usemonth " ) ) ;
executePluginSql . append ( " and current_month.use_month = " + params . get ( " usemonth " ) ) ;
}
}
}
}
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_month.custom_id," ) ;
// executePluginSql. append(" current_month.custom_id,") ;
executePluginSql. append( " current_month.custom_name," ) ;
// executePluginSql. append(" current_month.custom_name,") ;
}
// }
if ( groupFieldList. contains( " useyear " ) | | params. containsKey( " useyear " ) ) {
// if ( groupFieldList. contains("useyear") || params. containsKey("useyear")) {
executePluginSql. append( " current_month.use_year," ) ;
// executePluginSql. append(" current_month.use_year,") ;
}
// }
if ( groupFieldList. contains( " usemonth " ) | | params. containsKey( " usemonth " ) ) {
// if ( groupFieldList. contains("usemonth") || params. containsKey("usemonth")) {
executePluginSql. append( " current_month.use_month," ) ;
// executePluginSql. append(" current_month.use_month,") ;
}
// }
if ( groupFieldList. contains( " zonename " ) | | params. containsKey( " zonename " ) ) {
// if ( groupFieldList. contains("zonename") || params. containsKey("zonename")) {
executePluginSql. append( " current_month.zone_id," ) ;
// executePluginSql. append(" current_month.zone_id,") ;
executePluginSql. append( " current_month.zone_name," ) ;
// executePluginSql. append(" current_month.zone_name,") ;
}
// }
if ( groupFieldList. contains( " saletypename" ) | | params. containsKey( " saletypename" ) ) {
// if ( groupFieldList. contains(" saletypename") || params. containsKey(" saletypename")) {
executePluginSql. append( " current_month.sale_type_id," ) ;
// executePluginSql. append(" current_month.sale_type_id,") ;
executePluginSql. append( " current_month.sale_type_name," ) ;
// executePluginSql. append(" current_month.sale_type_name,") ;
}
// }
if ( groupFieldList. contains( " salername" ) | | params. containsKey( " salername" ) ) {
// if ( groupFieldList. contains(" salername") || params. containsKey(" salername")) {
executePluginSql. append( " current_month.saler_id," ) ;
// executePluginSql. append(" current_month.saler_id,") ;
executePluginSql. append( " current_month.saler_name," ) ;
// executePluginSql. append(" current_month.saler_name,") ;
}
// }
if ( groupFieldList. contains( " dosagename" ) | | params. containsKey( " dosagename" ) ) {
// if ( groupFieldList. contains(" dosagename") || params. containsKey(" dosagename")) {
executePluginSql. append( " current_month.dosage_id," ) ;
// executePluginSql. append(" current_month.dosage_id,") ;
executePluginSql. append( " current_month.dosage_name," ) ;
// executePluginSql. append(" current_month.dosage_name,") ;
}
// }
if ( groupFieldList. contains( " stdGoodsName" ) | | params. containsKey( " stdGoodsName" ) ) { //标准品名
// if ( groupFieldList. contains(" stdGoodsName") || params. containsKey(" stdGoodsName")) { //标准品名
executePluginSql. append( " current_month.std_goods_name," ) ;
// executePluginSql. append(" current_month.std_goods_name,") ;
}
// }
//
executePluginSql. deleteCharAt( executePluginSql. length( ) - 1 ) ;
// executePluginSql. deleteCharAt( executePluginSql. length() - 1) ;
return executePluginSql . toString ( ) ;
return executePluginSql . toString ( ) ;
}
}
private void appendGroupByField ( Map < String , Object > params , List < String > groupFieldList , StringBuilder executePluginSql ) {
if ( groupFieldList . contains ( " customname " ) | | params . containsKey ( " customname " ) ) { //客户名称
executePluginSql . append ( " custom_id, " ) ;
}
if ( groupFieldList . contains ( " stdGoodsName " ) | | params . containsKey ( " stdGoodsName " ) ) { //标准品名
executePluginSql . append ( " std_goods_name, " ) ;
}
if ( groupFieldList . contains ( " zonename " ) | | params . containsKey ( " zonename " ) ) { //业务区域
executePluginSql . append ( " zone_id, " ) ;
}
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) { //销售类型
executePluginSql . append ( " sale_type_id, " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) { //剂型
executePluginSql . append ( " dosage_id, " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) { //业务员
executePluginSql . append ( " saler_id, " ) ;
}
executePluginSql . deleteCharAt ( executePluginSql . length ( ) - 1 ) ;
}
private void appendSelectField ( Map < String , Object > params , List < String > groupFieldList , StringBuilder executePluginSql ) {
if ( groupFieldList . contains ( " customname " ) | | params . containsKey ( " customname " ) ) { //客户名称
executePluginSql . append ( " custom_id, \ 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 " ) ;
}
if ( groupFieldList . contains ( " saletypename " ) | | params . containsKey ( " saletypename " ) ) { //销售类型
executePluginSql . append ( " sale_type_id, \ n " ) ;
}
if ( groupFieldList . contains ( " dosagename " ) | | params . containsKey ( " dosagename " ) ) { //剂型
executePluginSql . append ( " dosage_id, \ n " ) ;
}
if ( groupFieldList . contains ( " salername " ) | | params . containsKey ( " salername " ) ) { //业务员
executePluginSql . append ( " saler_id, \ n " ) ;
}
}
private void appendWhere ( Map < String , Object > params , StringBuilder executePluginSql ) {
executePluginSql . append ( " where " ) ;
if ( params . containsKey ( " useyear " ) ) {
executePluginSql . append ( " use_year = ' " ) . append ( Integer . parseInt ( params . get ( " useyear " ) . toString ( ) ) ) . append ( " ' " ) ;
}
if ( params . containsKey ( " usemonth " ) ) {
executePluginSql . append ( " AND use_month = ' " ) . append ( Integer . parseInt ( params . get ( " usemonth " ) . toString ( ) ) ) . append ( " ' " ) ;
}
if ( params . containsKey ( " customname " ) ) {
executePluginSql . append ( " AND custom_name IN (' " ) . append ( params . get ( " customname " ) . toString ( ) . replaceAll ( " , " , " ',' " ) ) . append ( " ') " ) ;
}
if ( params . containsKey ( " stdGoodsName " ) ) {
executePluginSql . append ( " AND std_goods_name IN (' " ) . append ( params . get ( " stdGoodsName " ) . toString ( ) . replaceAll ( " , " , " ',' " ) ) . append ( " ') " ) ;
}
if ( params . containsKey ( " zonename " ) ) {
executePluginSql . append ( " AND zone_name IN (' " ) . append ( params . get ( " zonename " ) . toString ( ) . replaceAll ( " , " , " ',' " ) ) . append ( " ') " ) ;
}
if ( params . containsKey ( " saletypename " ) ) {
executePluginSql . append ( " AND sale_type_name IN (' " ) . append ( params . get ( " saletypename " ) . toString ( ) . replaceAll ( " , " , " ',' " ) ) . append ( " ') " ) ;
}
if ( params . containsKey ( " dosagename " ) ) {
executePluginSql . append ( " AND dosage_name IN (' " ) . append ( params . get ( " dosagename " ) . toString ( ) . replaceAll ( " , " , " ',' " ) ) . append ( " ') " ) ;
}
if ( params . containsKey ( " salername " ) ) {
executePluginSql . append ( " AND saler_name IN (' " ) . append ( params . get ( " salername " ) . toString ( ) . replaceAll ( " , " , " ',' " ) ) . append ( " ') " ) ;
}
}
}
}