"from t_im_inv_realbalance t1 group by fmaterialid,forgid";
Stringrealbalancesql="/*dialect*//*dialect*/select '1' tqq9_isauto,fmaterialid tqq9_material,forgid tqq9_org,sum(case when forgid="+sh+" then fqty else 0 end) tqq9_shinventory, \n"+
"sum(case when forgid="+bj+" then fqty else 0 end) tqq9_bjinventory,sum(case when forgid="+gz+" then fqty else 0 end) tqq9_gzinventory,\n"+
"sum(case when forgid="+cd+" then fqty else 0 end) tqq9_cdinventory\n"+
"from t_im_inv_realbalance group by fmaterialid,forgid";
////即时库存表
//Stringrealbalancesql="/*dialect*//*dialect*/select '1' tqq9_isauto,fmaterialid tqq9_material,forgid tqq9_org,sum(case when forgid='"+sh+"' then fqty else 0 end) tqq9_shinventory, \n"+
//"sum(case when forgid='"+bj+"' then fqty else 0 end) tqq9_bjinventory,sum(case when forgid='"+gz+"' then fqty else 0 end) tqq9_gzinventory,\n"+
//"sum(case when forgid='"+cd+"' then fqty else 0 end) tqq9_cdinventory\n"+
//"from t_im_inv_realbalance group by fmaterialid,forgid";
//销售订单
Stringsaloutbillsql="/*dialect*/ SELECT sum(CASE WHEN fbiztime >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '3' MONTH) AND fbiztime < DATE_TRUNC('month', CURRENT_DATE)THEN t2.fqty ELSE 0 END) / 3 AS permonthsales,\n"+
" sum(CASE WHEN fbiztime >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '2' MONTH) AND fbiztime < DATE_TRUNC('month', CURRENT_DATE)THEN t2.fqty ELSE 0 END) AS last_2month_sum,\n"+
" sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' then t2.fqty else 0 end) tqq9_totalqty,\n"+
" sum(CASE WHEN t1.fbillstatus in('A','B','C') and t2.fwarehouseid in ("+warehouseSb.substring(1)+") then t2.fqty ELSE 0 END)tqq9_onorderinventory,t2.fmaterialid materialinventoryid, t1.forgid tqq9_org\n"+
" FROM t_im_saloutbill t1,t_im_saloutbillentry t2 WHERE t1.fid = t2.fid AND t1.fbillstatus = 'C'GROUP BY t2.fmaterialid, t1.forgid";
Stringsaloutbillsql="/*dialect*/ SELECT sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' and forgid="+sh+" then t2.fqty else 0 end)/3 tqq9_permonthsales_sh,\n"+
"sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' and forgid="+bj+" then t2.fqty else 0 end)/3 tqq9_permonthsales_bj,\n"+
"sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' and forgid="+gz+" then t2.fqty else 0 end)/3 tqq9_permonthsales_gz,\n"+
"sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' and forgid="+cd+" then t2.fqty else 0 end)/3 tqq9_permonthsales_cd,\n"+
"sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' and forgid="+sh+" then t2.fqty else 0 end) tqq9_totalqty_sh,\n"+
"sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' and forgid="+bj+" then t2.fqty else 0 end) tqq9_totalqty_bj,\n"+
"sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' and forgid="+gz+" then t2.fqty else 0 end) tqq9_totalqty_gz,\n"+
"sum(case when t1.fbiztime>= CURRENT_DATE - INTERVAL '90 days' and forgid="+cd+" then t2.fqty else 0 end) tqq9_totalqty_cd,\n"+
"sum(CASE WHEN t1.fclosestatus='A' and forgid="+sh+" then t2.fqty-t3.finvqty ELSE 0 END) tqq9_inventory_sh,\n"+
"sum(CASE WHEN t1.fclosestatus='A' and forgid="+bj+" then t2.fqty-t3.finvqty ELSE 0 END) tqq9_inventory_bj,\n"+
"sum(CASE WHEN t1.fclosestatus='A' and forgid="+gz+" then t2.fqty-t3.finvqty ELSE 0 END) tqq9_inventory_gz,\n"+
"sum(CASE WHEN t1.fclosestatus='A' and forgid="+cd+" then t2.fqty-t3.finvqty ELSE 0 END) tqq9_inventory_cd \n"+
"from t_pm_purorderbill t1,t_pm_purorderbillentry t2,t_pm_purorderbillentry_r t3 where t1.fid=t2.fid and t2.fid=t3.fid and t1.fbillstatus='C' GROUP BY t2.fmaterialid,t1.forgid";
Stringonordersql_sh="/*dialect*/SELECT cInvCode as tqq9_sku_lc,SUM(iQuantity) as tqq9_onorderinventory_SH from SA_SalesOrderMaster_SH ma(nolock) \n"+
"left join SA_SalesOrderDetail_SH de(nolock) on ma.somid =de.somid where Status in('新增','已审核') and cInvoiceTitle not like '%上海励齿%' \n"+
"and cInvoiceTitle not like '%北京励齿%' and cInvoiceTitle not like '%广州励齿%' and cinvcode is not null GROUP BY cInvCode";
//占单库存-北京
Stringonordersql_bj="/*dialect*/SELECT cInvCode as tqq9_sku_lc,SUM(iQuantity) as tqq9_onorderinventory_BJ from SA_SalesOrderMaster_BJ ma(nolock) \n"+
"left join SA_SalesOrderDetail_BJ de(nolock) on ma.somid =de.somid where Status in('新增','已审核') and cInvoiceTitle not like '%上海励齿%' \n"+
"and cInvoiceTitle not like '%北京励齿%' and cInvoiceTitle not like '%广州励齿%' and cinvcode is not null GROUP BY cInvCode";
//占单库存-广州
Stringonordersql_gz="/*dialect*/SELECT cInvCode as tqq9_sku_lc,SUM(iQuantity) as tqq9_onorderinventory_GZ from SA_SalesOrderMaster_GZ ma(nolock) \n"+
"left join SA_SalesOrderDetail_GZ de(nolock) on ma.somid =de.somid where Status in('新增','已审核') and cInvoiceTitle not like '%上海励齿%' \n"+
"and cInvoiceTitle not like '%北京励齿%' and cInvoiceTitle not like '%广州励齿%' and cinvcode is not null GROUP BY cInvCode";
////排名-上海
//Stringrange_sh="/*dialect*/SELECT cInvCode as tqq9_sku_lc, CASE WHEN SUM(RowNum) = 0 THEN '其他' WHEN SUM(RowNum) <= 100 THEN '前一百' WHEN SUM(RowNum) <= 500 THEN '前五百' \n"+
//"WHEN SUM(RowNum) <= 1000 THEN '前一千' WHEN SUM(RowNum) <= 2000 THEN '前两千' END as tqq9_ranking FROM ( SELECT cInvCode, ROW_NUMBER() OVER (ORDER BY SUM(isum) DESC) as RowNum \n"+
//"FROM SA_SalesOrderMaster_SH ma(nolock) INNER JOIN SA_SalesOrderDetail_SH de(nolock) ON ma.somid = de.somid WHERE DATEDIFF(month, dInputDate,\n"+
//"GETDATE()) BETWEEN 1 AND 3 AND cInvoiceTitle NOT LIKE '%上海励齿%' AND cInvoiceTitle NOT LIKE '%北京励齿%' AND cInvoiceTitle NOT LIKE '%广州励齿%' AND Status != '草稿' \n"+
//"AND cInvCode NOT LIKE 'ZF%' GROUP BY cInvCode ) AS a WHERE a.RowNum <= 2000 GROUP BY cInvCode";
//
////排名-北京
//Stringrange_bj="/*dialect*/SELECT cInvCode as tqq9_sku_lc, CASE WHEN SUM(RowNum) = 0 THEN '其他' WHEN SUM(RowNum) <= 100 THEN '前一百' WHEN SUM(RowNum) <= 500 THEN '前五百' \n"+
//"WHEN SUM(RowNum) <= 1000 THEN '前一千' WHEN SUM(RowNum) <= 2000 THEN '前两千' END as tqq9_ranking FROM ( SELECT cInvCode, ROW_NUMBER() OVER (ORDER BY SUM(isum) DESC) as RowNum \n"+
//"FROM SA_SalesOrderMaster_SH ma(nolock) INNER JOIN SA_SalesOrderDetail_SH de(nolock) ON ma.somid = de.somid WHERE DATEDIFF(month, dInputDate,\n"+
//"GETDATE()) BETWEEN 1 AND 3 AND cInvoiceTitle NOT LIKE '%上海励齿%' AND cInvoiceTitle NOT LIKE '%北京励齿%' AND cInvoiceTitle NOT LIKE '%广州励齿%' AND Status != '草稿' \n"+
//"AND cInvCode NOT LIKE 'ZF%' GROUP BY cInvCode ) AS a WHERE a.RowNum <= 2000 GROUP BY cInvCode";
//
////排名-广州
//Stringrange_gz="/*dialect*/SELECT cInvCode as tqq9_sku_lc, CASE WHEN SUM(RowNum) = 0 THEN '其他' WHEN SUM(RowNum) <= 100 THEN '前一百' WHEN SUM(RowNum) <= 500 THEN '前五百' \n"+
//"WHEN SUM(RowNum) <= 1000 THEN '前一千' WHEN SUM(RowNum) <= 2000 THEN '前两千' END as tqq9_ranking FROM ( SELECT cInvCode, ROW_NUMBER() OVER (ORDER BY SUM(isum) DESC) as RowNum \n"+
//"FROM SA_SalesOrderMaster_SH ma(nolock) INNER JOIN SA_SalesOrderDetail_SH de(nolock) ON ma.somid = de.somid WHERE DATEDIFF(month, dInputDate,\n"+
//"GETDATE()) BETWEEN 1 AND 3 AND cInvoiceTitle NOT LIKE '%上海励齿%' AND cInvoiceTitle NOT LIKE '%北京励齿%' AND cInvoiceTitle NOT LIKE '%广州励齿%' AND Status != '草稿' \n"+
//"AND cInvCode NOT LIKE 'ZF%' GROUP BY cInvCode ) AS a WHERE a.RowNum <= 2000 GROUP BY cInvCode";
//排名
Stringrangesql="/*dialect*/SELECT cInvCode AS tqq9_sku_lc,CASE WHEN RowNum <= 100 THEN '前一百'WHEN RowNum <= 500 THEN '前五百'WHEN RowNum <= 1000 THEN '前一千'WHEN RowNum <= 2000 THEN '前两千'ELSE '其他'END AS tqq9_ranking\n"+
"FROM (SELECT cInvCode,ROW_NUMBER() OVER (ORDER BY SUM(isum) DESC) AS RowNum FROM (SELECT cInvCode, isum FROM SA_SalesOrderMaster_SH ma (nolock)INNER JOIN SA_SalesOrderDetail_SH de (nolock) ON ma.somid = de.somid\n"+
"WHERE DATEDIFF(MONTH, dInputDate, GETDATE()) BETWEEN 1 AND 3 AND cInvoiceTitle NOT LIKE '%上海励齿%'AND Status != '草稿'AND cInvCode NOT LIKE 'ZF%'UNION ALL SELECT cInvCode, isum FROM SA_SalesOrderMaster_BJ ma (nolock)\n"+
"INNER JOIN SA_SalesOrderDetail_BJ de (nolock) ON ma.somid = de.somid WHERE DATEDIFF(MONTH, dInputDate, GETDATE()) BETWEEN 1 AND 3 AND cInvoiceTitle NOT LIKE '%北京励齿%' AND Status != '草稿' AND cInvCode NOT LIKE 'ZF%'\n"+
"UNION ALL SELECT cInvCode, isum FROM SA_SalesOrderMaster_GZ ma (nolock) INNER JOIN SA_SalesOrderDetail_GZ de (nolock) ON ma.somid = de.somid WHERE DATEDIFF(MONTH, dInputDate, GETDATE()) BETWEEN 1 AND 3\n"+
"AND cInvoiceTitle NOT LIKE '%广州励齿%'AND Status != '草稿' AND cInvCode NOT LIKE 'ZF%') AS combined GROUP BY cInvCode) AS a WHERE a.RowNum <= 2000 ORDER BY a.RowNum;";
realbalanceDataSet=realbalanceDataSet.leftJoin(saloutbillDataSet).on("tqq9_sku","tqq9_sku").select("tqq9_sku","tqq9_org","tqq9_totalinventory","permonthsales","last_2month_sum","tqq9_totalqty","tqq9_onorderinventory","case when permonthsales<>0 then tqq9_totalinventory/permonthsales else -1 end tqq9_saledates").finish();
"case when tqq9_saledates>=0 and tqq9_saledates<0.5 then '急需备货' when tqq9_saledates>0.5 and tqq9_saledates<=2 then '需备货' when tqq9_saledates>2 and tqq9_saledates<=4.5 then '不需备货' when tqq9_saledates>4.5 then '滞销' else '无' end tqq9_remark","case when tqq9_saledates<=0.5 then last_2month_sum-tqq9_oninventory-tqq9_totalinventory else 0 end tqq9_suppleinventory",""+
"tqq9_onorderinventory","case when tqq9_totalinventory<>0 and tqq9_onorderinventory/tqq9_totalinventory>0.8 then '需注意' else '无' end tqq9_onorderemark").finish();
"tqq9_shinventory","tqq9_bjinventory","tqq9_gzinventory","tqq9_cdinventory","case when tqq9_org= "+sh+" then tqq9_shinventory when tqq9_org= "+bj+" then tqq9_bjinventory when tqq9_org= "+gz+" then tqq9_gzinventory when tqq9_org= "+cd+" then tqq9_cdinventory else 0 end tqq9_totalinventory").finish();
"tqq9_totalqty_sh","tqq9_totalqty_bj","tqq9_totalqty_gz","tqq9_totalqty_cd").finish().addField("case when tqq9_org= "+sh+" then tqq9_totalqty_sh when tqq9_org= "+bj+" then tqq9_totalqty_bj when tqq9_org= "+gz+" then tqq9_totalqty_gz when tqq9_org= "+cd+" then tqq9_totalqty_cd else 0 end","tqq9_totalqty").addField("case when tqq9_org= "+sh+" then tqq9_permonthsales_sh when tqq9_org= "+bj+" then tqq9_permonthsales_bj when tqq9_org= "+gz+" then tqq9_permonthsales_gz when tqq9_org= "+cd+" then tqq9_permonthsales_cd else 0 end","tqq9_permonthsales");
"case when tqq9_org= "+sh+" and tqq9_shinventory <> 0 and tqq9_permonthsales_sh <> 0 then tqq9_shinventory/tqq9_permonthsales_sh else -1 end tqq9_shsaledates","case when tqq9_org= "+bj+" and tqq9_bjinventory <> 0 and tqq9_permonthsales_bj <> 0 then tqq9_bjinventory/tqq9_permonthsales_bj else -1 end tqq9_bjsaledates",
"case when tqq9_org= "+gz+" and tqq9_gzinventory <> 0 and tqq9_permonthsales_gz <> 0 then tqq9_gzinventory/tqq9_permonthsales_gz else -1 end tqq9_gzsaledates","case when tqq9_org= "+cd+" and tqq9_cdinventory <> 0 and tqq9_permonthsales_cd <> 0 then tqq9_cdinventory/tqq9_permonthsales_cd else -1 end tqq9_cdsaledates",
"tqq9_permonthsales*0.5 tqq9_safeinventory").finish().addField("case when tqq9_org= "+sh+" then tqq9_shsaledates when tqq9_org= "+bj+" then tqq9_bjsaledates when tqq9_org= "+gz+" then tqq9_gzsaledates when tqq9_org= "+cd+" then tqq9_cdsaledates else 0 end","tqq9_saledates").addField("case when tqq9_org= "+sh+" then tqq9_inventory_sh when tqq9_org= "+bj+" then tqq9_inventory_bj when tqq9_org= "+gz+" then tqq9_inventory_gz when tqq9_org= "+cd+" then tqq9_inventory_cd else 0 end","tqq9_oninventory");
"tqq9_shsaledates","tqq9_bjsaledates","tqq9_gzsaledates","tqq9_cdsaledates","tqq9_saledates","tqq9_safeinventory","tqq9_onorderinventory_SH").finish().addField("CASE WHEN tqq9_saledates = -1 THEN CASE WHEN tqq9_saledates = 0 AND tqq9_totalqty = 0 THEN '需关注' WHEN tqq9_saledates <> 0 AND tqq9_totalqty = 0 THEN '滞销'\n"+
"WHEN tqq9_totalqty <> 0 AND tqq9_saledates = 0 THEN '急需备货' END ELSE CASE WHEN tqq9_saledates <= 0.5 THEN '急需备货' WHEN tqq9_saledates > 0.5 AND tqq9_saledates <= 2 THEN '需备货'\n"+
"WHEN tqq9_saledates > 2 AND tqq9_saledates <= 4.5 THEN '不需备货' WHEN tqq9_saledates > 4.5 THEN '滞销' END END","tqq9_remark").
"tqq9_shsaledates","tqq9_bjsaledates","tqq9_gzsaledates","tqq9_cdsaledates","tqq9_saledates","tqq9_safeinventory","case when tqq9_remark='急需备货' then tqq9_permonthsales*2-tqq9_oninventory-tqq9_totalinventory else null end tqq9_suppleinventory","tqq9_onorderinventory_SH","tqq9_onorderinventory_BJ","tqq9_remark").finish().
"tqq9_shsaledates","tqq9_bjsaledates","tqq9_gzsaledates","tqq9_cdsaledates","tqq9_saledates","tqq9_remark","tqq9_safeinventory","tqq9_suppleinventory","tqq9_onorderinventory_SH","tqq9_onorderinventory_BJ","tqq9_onorderinventory_GZ","case when tqq9_org= "+sh+" then tqq9_onorderinventory_SH when tqq9_org= "+bj+" then tqq9_onorderinventory_BJ when tqq9_org= "+gz+" then tqq9_onorderinventory_GZ else 0 end tqq9_onorderinventory",
"case when tqq9_shsaledates > 4.5 or tqq9_shsaledates = -1 then tqq9_shinventory else 0 end tqq9_slowinv_sh","case when tqq9_bjsaledates > 4.5 or tqq9_bjsaledates = -1 then tqq9_bjinventory else 0 end tqq9_slowinv_bj",
"case when tqq9_gzsaledates > 4.5 or tqq9_gzsaledates = -1 then tqq9_gzinventory else 0 end tqq9_slowinv_gz","case when tqq9_cdsaledates > 4.5 or tqq9_cdsaledates = -1 then tqq9_cdinventory else 0 end tqq9_slowinv_cd","tqq9_ranking").finish().addField("case when tqq9_onorderinventory <> 0 and tqq9_totalinventory <> 0 and tqq9_onorderinventory/tqq9_totalinventory>=0.8 then '需注意' else null end","tqq9_onorderemark");
realbalanceDataSet=realbalanceDataSet.where("1=1"+((!tqq9_queryorg.isEmpty())?" and tqq9_org in("+orgBuilder.substring(1)+")":"")+((!tqq9_querysku.isEmpty())?" and tqq9_sku in("+skuBuilder.substring(1)+")":""));
goodspackagDataSet=goodspackagDataSet.where("1=1"+((!tqq9_queryorg.isEmpty())?" and tqq9_org in("+orgBuilder.substring(1)+")":"")+((!tqq9_querysku.isEmpty())?" and tqq9_sku in("+skuBuilder.substring(1)+")":""));