diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
index db8744b..9ea156b 100644
--- a/.idea/sqldialects.xml
+++ b/.idea/sqldialects.xml
@@ -10,6 +10,7 @@
+
diff --git a/FineReport/销售主题/报表/销售业绩/酱酒计划执行表.sql b/FineReport/销售主题/报表/销售业绩/酱酒计划执行表.sql
new file mode 100644
index 0000000..11e0bdf
--- /dev/null
+++ b/FineReport/销售主题/报表/销售业绩/酱酒计划执行表.sql
@@ -0,0 +1,322 @@
+-- ======================================
+-- 主语句
+-- ======================================
+select a.period_id, -- 时间ID
+ a.year, -- 年度
+ a.month, -- 月度
+ a.deal_code, -- 主经销商编码
+ a.deal_name, -- 主经销商名称
+ a.src_deal_code, -- 子经销商编码
+ a.src_deal_name, -- 子经销商名称
+ d.fist_dept_code as bu_code, --
+ d.secd_dept_code as region_code, -- 大区编码
+ d.secd_dept_name as region_name, -- 大区名称
+ a.plan_type, -- 计划类型
+ a.plan_item, -- 计划项目
+ a.plan_pi_name, -- 计划品项
+ a.plan_in_num, -- 计划内瓶数
+ a.plan_in_pack, -- 计划内件数
+ a.plan_in_ton, -- 计划内吨数
+ a.plan_in_amt, -- 计划内金额
+ a.plan_out_num, -- 计划外瓶数
+ a.plan_out_pack, -- 计划外件数
+ a.plan_out_ton, -- 计划外吨数
+ a.plan_out_amt, -- 计划外金额
+ a.create_by, -- 创建人
+ a.create_time, -- 创建时间
+ a.update_by, -- 更新人
+ a.update_time, -- 更新时间
+ a.plan_pi_code, -- 计划品相编码
+ nvl(stp.is_suspend,'0') as is_suspend
+from
+(
+ SELECT
+ *
+ FROM dm.dm_cus_flavour_plan_executed
+ WHERE year = '${SYear}'
+ -- 计划类型
+ ${if(len(sPlantype) == 0,"","and plan_type IN ('"+sPlantype+"')")}
+ -- 计划品项
+ ${if(len(sPlanpi) == 0,"","and plan_pi_name IN ('"+sPlanpi+"')")}
+ -- 子主经销商
+ ${if(sDeal == 1,if(len(sDealName) == 0,"","and deal_code IN ('"+ sDealName+"')"),if(len(sDealName) == 0,"","and src_deal_code IN ('"+ sDealName +"')"))}
+)a
+left join dwr.dim_department d on a.city_unit_code=d.dept_code
+left join
+ (
+ select
+ bu_code -- 事业部编码
+ ,deal_code -- 经销商编码
+ ,'1' as is_suspend
+ from dwi.dwi_mdm_customers_lifecycle -- 经销商生命周期
+where bill_type='终止' -- 单据类型
+group by bu_code,deal_code
+having max(bill_date)<=sysdate -- 单据时间
+) stp
+on a.src_deal_code=stp.deal_code
+and d.fist_dept_code=stp.bu_code
+WHERE 1=1
+-- 事业部
+${if(len(sBu) == 0,"","and stp.bu_code IN ('"+sBu+"')")}
+-- 经销商是否终止
+${if(len(SIsstop) == 0,"","and nvl(stp.is_suspend,'0') = '"+SIsstop+"'")}
+ORDER BY a.month
+;
+
+-- ======================================
+-- 语句处理
+-- ======================================
+
+-- 月份数据是执行的
+-- 增加计划是计划调整为正数的
+-- 减少计划是计划调整为负数的
+
+-- 计划调整
+-- 订单执行
+-- 订单预占
+-- 合同约定
+
+
+select
+ a.year -- 年度
+ ,CONCAT(a.month,'月达成') AS month -- 月度
+ ,a.deal_code -- 主经销商编码
+ ,a.deal_name -- 主经销商名称
+ ,a.src_deal_code -- 子经销商编码
+ ,a.src_deal_name -- 子经销商名称
+ ,d.fist_dept_code as bu_code -- 事业部编码
+ ,d.secd_dept_code as region_code -- 大区编码
+ ,d.secd_dept_name as region_name -- 大区名称
+ ,a.plan_type -- 计划类型
+ ,a.plan_item -- 计划项目
+ ,a.plan_pi_name -- 计划品项
+ -- 月份的
+ ,SUM(a.m_plan_in_num) AS m_plan_in_num -- 计划内瓶数
+ ,SUM(a.m_plan_in_pack) AS m_plan_in_pack -- 计划内件数
+ ,SUM(a.m_plan_in_ton) AS m_plan_in_ton -- 计划内吨数
+ ,SUM(a.m_plan_in_amt) / 10000 AS m_plan_in_amt -- 计划内金额
+ ,SUM(a.m_plan_out_num) AS m_plan_out_num -- 计划外瓶数
+ ,SUM(a.m_plan_out_pack) AS m_plan_out_pack -- 计划外件数
+ ,SUM(a.m_plan_out_ton) AS m_plan_out_ton-- 计划外吨数
+ ,SUM(a.m_plan_out_amt) / 10000 AS m_plan_out_amt -- 计划外金额
+ -- 合同约定
+ ,SUM(a.ct_plan_in_num ) AS ct_plan_in_num -- 合同约定计划内瓶数
+ ,SUM(a.ct_plan_in_pack ) AS ct_plan_in_pack -- 合同约定计划内件数
+ ,SUM(a.ct_plan_in_ton ) AS ct_plan_in_ton -- 合同约定计划内吨数
+ ,SUM(a.ct_plan_in_amt) / 10000 AS ct_plan_in_amt -- 合同约定计划内金额
+ ,SUM(a.ct_plan_out_num) AS ct_plan_out_num -- 合同约定计划外瓶数
+ ,SUM(a.ct_plan_out_pack) AS ct_plan_out_pack -- 合同约定计划外件数
+ ,SUM(a.ct_plan_out_ton) AS ct_plan_out_ton -- 合同约定计划外吨数
+ ,SUM(a.ct_plan_out_amt) / 10000 AS ct_plan_out_amt -- 合同约定计划外金额
+
+ -- 增加计划
+ ,SUM(a.add_plan_in_num ) AS add_plan_in_num -- 增加计划内瓶数
+ ,SUM(a.add_plan_in_pack ) AS add_plan_in_pack -- 增加计划内件数
+ ,SUM(a.add_plan_in_ton ) AS add_plan_in_ton -- 增加计划内吨数
+ ,SUM(a.add_plan_in_amt) / 10000 AS add_plan_in_amt-- 增加计划内金额
+ ,SUM(a.add_plan_out_num ) AS add_plan_out_num -- 增加计划外瓶数
+ ,SUM(a.add_plan_out_pack ) AS add_plan_out_pack -- 增加计划外件数
+ ,SUM(a.add_plan_out_ton ) AS add_plan_out_ton -- 增加计划外吨数
+ ,SUM(a.add_plan_out_amt) / 10000 ASadd_plan_out_amt -- 增加计划外金额
+
+ -- 减少计划
+ ,SUM(a.cut_plan_in_num ) AS cut_plan_in_num -- 减少计划内瓶数
+ ,SUM(a.cut_plan_in_pack ) AS cut_plan_in_pack -- 减少计划内件数
+ ,SUM(a.cut_plan_in_ton ) AS cut_plan_in_ton -- 减少计划内吨数
+ ,SUM(a.cut_plan_in_amt ) / 10000 AS cut_plan_in_amt-- 减少计划内金额
+ ,SUM(a.cut_plan_out_num ) AS cut_plan_out_num -- 减少计划外瓶数
+ ,SUM(a.cut_plan_out_park ) AS cut_plan_out_park -- 减少计划外件数
+ ,SUM(a.cut_plan_out_ton ) AS cut_plan_out_ton -- 减少计划外吨数
+ ,SUM(a.cut_plan_out_amt) / 10000 AS cut_plan_out_amt -- 减少加计划外金额
+from
+(
+ SELECT
+ -- 维度
+ year -- 年度
+ ,month -- 月度
+ ,deal_code -- 主经销商编码
+ ,deal_name -- 主经销商名称
+ ,src_deal_code -- 子经销商编码
+ ,src_deal_name -- 子经销商名称
+ ,plan_type -- 计划类型
+ ,plan_item -- 计划项目
+ ,plan_pi_name -- 计划品项
+ ,city_unit_code
+ ,plan_pi_code -- 计划品相编码
+ -- 月份的
+ ,CASE WHEN plan_item = '订单执行' THEN plan_in_num ELSE 0 END AS m_plan_in_num -- 计划内瓶数
+ ,CASE WHEN plan_item = '订单执行' THEN plan_in_pack ELSE 0 END AS m_plan_in_pack -- 计划内件数
+ ,CASE WHEN plan_item = '订单执行' THEN plan_in_ton ELSE 0 END AS m_plan_in_ton -- 计划内吨数
+ ,CASE WHEN plan_item = '订单执行' THEN plan_in_amt ELSE 0 END AS m_plan_in_amt -- 计划内金额
+ ,CASE WHEN plan_item = '订单执行' THEN plan_out_num ELSE 0 END AS m_plan_out_num -- 计划外瓶数
+ ,CASE WHEN plan_item = '订单执行' THEN plan_out_pack ELSE 0 END AS m_plan_out_pack -- 计划外件数
+ ,CASE WHEN plan_item = '订单执行' THEN plan_out_ton ELSE 0 END AS m_plan_out_ton -- 计划外吨数
+ ,CASE WHEN plan_item = '订单执行' THEN plan_out_amt ELSE 0 END AS m_plan_out_amt -- 计划外金额
+ -- 合同约定
+ ,CASE WHEN plan_item = '合同约定' THEN plan_in_num ELSE 0 END AS ct_plan_in_num -- 合同约定计划内瓶数
+ ,CASE WHEN plan_item = '合同约定' THEN plan_in_pack ELSE 0 END AS ct_plan_in_pack -- 合同约定计划内件数
+ ,CASE WHEN plan_item = '合同约定' THEN plan_in_ton ELSE 0 END AS ct_plan_in_ton -- 合同约定计划内吨数
+ ,CASE WHEN plan_item = '合同约定' THEN plan_in_amt ELSE 0 END AS ct_plan_in_amt -- 合同约定计划内金额
+ ,CASE WHEN plan_item = '合同约定' THEN plan_out_num ELSE 0 END AS ct_plan_out_num -- 合同约定计划外瓶数
+ ,CASE WHEN plan_item = '合同约定' THEN plan_out_pack ELSE 0 END AS ct_plan_out_pack -- 合同约定计划外件数
+ ,CASE WHEN plan_item = '合同约定' THEN plan_out_ton ELSE 0 END AS ct_plan_out_ton -- 合同约定计划外吨数
+ ,CASE WHEN plan_item = '合同约定' THEN plan_out_amt ELSE 0 END AS ct_plan_out_amt -- 合同约定计划外金额
+
+ -- 增加计划
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num > 0) THEN plan_in_num ELSE 0 END AS add_plan_in_num -- 增加计划内瓶数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_pack > 0) THEN plan_in_pack ELSE 0 END AS add_plan_in_pack -- 增加计划内件数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_ton > 0) THEN plan_in_ton ELSE 0 END AS add_plan_in_ton -- 增加计划内吨数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_amt > 0) THEN plan_in_amt ELSE 0 END AS add_plan_in_amt -- 增加计划内金额
+ ,CASE WHEN (plan_item = '计划调整' AND plan_out_num > 0) THEN plan_out_num ELSE 0 END AS add_plan_out_num -- 增加计划外瓶数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_out_pack > 0) THEN plan_out_pack ELSE 0 END AS add_plan_out_pack -- 增加计划外件数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_out_ton > 0) THEN plan_out_ton ELSE 0 END AS add_plan_out_ton -- 增加计划外吨数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_out_amt > 0) THEN plan_out_amt ELSE 0 END AS add_plan_out_amt -- 增加计划外金额
+
+ -- 减少计划
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num < 0) THEN plan_in_num ELSE 0 END AS cut_plan_in_num -- 减少计划内瓶数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num < 0) THEN plan_in_pack ELSE 0 END AS cut_plan_in_pack -- 减少计划内件数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num < 0) THEN plan_in_ton ELSE 0 END AS cut_plan_in_ton -- 减少计划内吨数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num < 0) THEN plan_in_amt ELSE 0 END AS cut_plan_in_amt -- 减少计划内金额
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num < 0) THEN plan_out_num ELSE 0 END AS cut_plan_out_num -- 减少计划外瓶数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num < 0) THEN plan_out_pack ELSE 0 END AS cut_plan_out_park -- 减少计划外件数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num < 0) THEN plan_out_ton ELSE 0 END AS cut_plan_out_ton -- 减少计划外吨数
+ ,CASE WHEN (plan_item = '计划调整' AND plan_in_num < 0) THEN plan_out_amt ELSE 0 END AS cut_plan_out_amt -- 减少加计划外金额
+ FROM dm.dm_cus_flavour_plan_executed
+ WHERE year = '${SYear}'
+ -- 计划类型
+ ${if(len(sPlantype) == 0,"","and plan_type IN ('"+sPlantype+"')")}
+ -- 计划品项
+ ${if(len(sPlanpi) == 0,"","and plan_pi_name IN ('"+sPlanpi+"')")}
+ -- 子主经销商
+ ${if(sDeal == 1,if(len(sDealName) == 0,"","and deal_code IN ('"+ sDealName +"')"),if(len(sDealName) == 0,"","and src_deal_code IN ('"+ sDealName +"')"))}
+
+)a
+left join dwr.dim_department d on a.city_unit_code=d.dept_code
+left join
+(
+ select
+ bu_code -- 事业部编码
+ ,deal_code -- 经销商编码
+ ,'1' as is_suspend
+ from dwi.dwi_mdm_customers_lifecycle -- 经销商生命周期
+ where bill_type='终止' -- 单据类型
+ group by bu_code,deal_code
+ having max(bill_date)<=sysdate -- 单据时间
+) stp
+on a.src_deal_code=stp.deal_code
+and d.fist_dept_code=stp.bu_code
+WHERE 1=1
+-- 事业部
+ ${if(len(sBu) == 0,"","and stp.bu_code IN ('"+sBu+"')")}
+-- 经销商是否终止
+ ${if(len(SIsstop) == 0,"","and nvl(stp.is_suspend,'0') = '"+SIsstop+"'")}
+GROUP BY
+ a.year -- 年度
+ ,CONCAT(a.month,'月达成') -- 月度
+ ,a.deal_code -- 主经销商编码
+ ,a.deal_name -- 主经销商名称
+ ,a.src_deal_code -- 子经销商编码
+ ,a.src_deal_name -- 子经销商名称
+ ,d.fist_dept_code -- 事业部编码
+ ,d.secd_dept_code -- 大区编码
+ ,d.secd_dept_name -- 大区名称
+ ,a.plan_type -- 计划类型
+ ,a.plan_item -- 计划项目
+ ,a.plan_pi_name -- 计划品项
+ORDER BY CONCAT(a.month,'月达成')
+;
+
+
+
+
+
+-- 计划类型
+SELECT DISTINCT plan_type FROM dm.dm_cus_flavour_plan_executed
+SELECT DISTINCT plan_item FROM dm.dm_cus_flavour_plan_executed
+
+
+-- 计划品项
+SELECT
+DISTINCT
+plan_pi_name
+FROM dm.dm_cus_flavour_plan_executed
+WHERE 1=1
+-- 计划类型
+${if(len(sPlantype) == 0,"","and plan_type IN ('"+sPlantype+"')")}
+-- 子主经销商
+${if(sDeal == 1,if(len(sDealName) == 0,"","and deal_code IN ('"+ sDealName+"')"),if(len(sDealName) == 0,"","and src_deal_code IN ('"+ sDealName +"')"))}
+
+
+-- ======================================
+-- 月度维度
+-- ======================================
+
+select
+ period_year,
+ quarter,
+ month,
+ period_year||month as "年月"
+from dwr.dim_date
+where period_year<=to_char(sysdate-30,'yyyy') + 2
+ and period_year>='2019'
+group by period_year,quarter,month
+order by period_year,quarter,month;
+
+
+-- ======================================
+-- 产品维度
+-- ======================================
+
+select product_code,
+ product_name,
+ pi_code,
+ pi_name,
+ case when product_name like '%T3%' then 'T3'
+ when product_name like '%T6%' then 'T6'
+ when product_name like '%T8%' then 'T8'
+ when product_name like '%T9%' then 'T9'
+ when product_name like '%鉴赏%' then '鉴赏级'
+ when product_name like '%黑马特%' and product_name not like '%郎牌·%黑马特%'
+ then '黑马特1.0'
+ when product_name like '%郎牌·%黑马特%'
+ then '黑马特2.0'
+ when product_name like '%白马特%' and product_name not like '%郎牌·%白马特%'
+ then '白马特1.0'
+ when product_name like '%郎牌·%白马特%'
+ then '白马特2.0'
+ when product_name like '%新郎酒%' then '新郎酒'
+ when product_name ~ '皇福特|鸿福特' then '福系列'
+ else pi_name end as bu_pi_name,
+ pl_code,
+ pl_name,
+ price,
+ spec,
+ base_unit,
+ pack_unit,
+ pack_base_num,
+ pack_length,
+ pack_width,
+ pack_height,
+ length_unit,
+ pack_volume,
+ volume_unit,
+ gross_weight,
+ weight_unit,
+ box_number,
+ bottle_number,
+ sale_status,
+ prod_status,
+ pr_code,
+ report_pi_name,
+ pr_name,
+ bu_code,
+ d.dept_name as bu_name,
+ aroma_type,
+ plan_type,
+ plan_pi_name,
+ plan_pi_code,
+ alc_degree,
+ price_out
+from dwr.dim_product a
+ left join dwr.dim_department d on a.bu_code=d.dept_code
+