2025-08-12 03:42:59 +00:00
package tqq9.lc123.cloud.app.plugin.form.pm ;
import kd.bos.algo.DataSet ;
import kd.bos.bill.BillShowParameter ;
import kd.bos.coderule.api.CodeRuleInfo ;
import kd.bos.dataentity.entity.DynamicObject ;
import kd.bos.dataentity.entity.DynamicObjectCollection ;
import kd.bos.dataentity.utils.StringUtils ;
import kd.bos.db.DB ;
import kd.bos.db.DBRoute ;
import kd.bos.entity.datamodel.IDataModel ;
2025-09-16 08:05:06 +00:00
import kd.bos.form.CloseCallBack ;
2025-08-12 03:42:59 +00:00
import kd.bos.form.ShowType ;
import kd.bos.form.control.events.ItemClickEvent ;
import kd.bos.form.plugin.AbstractFormPlugin ;
import kd.bos.logging.Log ;
import kd.bos.logging.LogFactory ;
import kd.bos.orm.ORM ;
import kd.bos.orm.query.QCP ;
import kd.bos.orm.query.QFilter ;
import kd.bos.servicehelper.BusinessDataServiceHelper ;
import kd.bos.servicehelper.QueryServiceHelper ;
import kd.bos.servicehelper.coderule.CodeRuleServiceHelper ;
import kd.bos.servicehelper.operation.SaveServiceHelper ;
import kd.bos.servicehelper.user.UserServiceHelper ;
import kd.sdk.plugin.Plugin ;
import java.math.BigDecimal ;
import java.util.* ;
/ * *
2025-08-21 08:48:38 +00:00
* 采购建议报表
2025-08-12 03:42:59 +00:00
* /
public class PurSuggestRptFromPlugin extends AbstractFormPlugin implements Plugin {
private final static Log logger = LogFactory . getLog ( PurSuggestRptFromPlugin . class ) ;
private static DynamicObject BILLTYPE ;
2025-09-13 09:42:55 +00:00
private static DynamicObject BILLTYPE1 ;
2025-08-12 03:42:59 +00:00
private static DynamicObject BIZTYPE ;
private static DynamicObject LINETYPE ;
2025-08-14 09:05:29 +00:00
2025-08-12 03:42:59 +00:00
static {
2025-09-13 09:42:55 +00:00
// 申请单
2025-08-12 03:42:59 +00:00
DynamicObject billtype = BusinessDataServiceHelper . loadSingle ( " bos_billtype " , new QFilter [ ] { new QFilter ( " number " , QCP . equals , " pm_PurApplyBill_STD_BT_S " ) } ) ;
BILLTYPE = billtype ;
2025-09-13 09:42:55 +00:00
//订单
DynamicObject billtype1 = BusinessDataServiceHelper . loadSingle ( " bos_billtype " , new QFilter [ ] { new QFilter ( " number " , QCP . equals , " pm_PurOrderBill_STD_BT_S " ) } ) ;
BILLTYPE1 = billtype1 ;
2025-08-12 03:42:59 +00:00
DynamicObject biztype = BusinessDataServiceHelper . loadSingle ( " bd_biztype " , new QFilter [ ] { new QFilter ( " number " , QCP . equals , " 110 " ) } ) ;
BIZTYPE = biztype ;
DynamicObject linetype = BusinessDataServiceHelper . loadSingle ( " bd_linetype " , new QFilter [ ] { new QFilter ( " number " , QCP . equals , " 010 " ) } ) ;
LINETYPE = linetype ;
}
@Override
public void registerListener ( EventObject e ) {
super . registerListener ( e ) ;
this . addItemClickListeners ( " tbmain " ) ;
}
@Override
public void itemClick ( ItemClickEvent evt ) {
super . itemClick ( evt ) ;
String itemKey = evt . getItemKey ( ) ;
IDataModel model = this . getModel ( ) ;
DynamicObject dataEntity = model . getDataEntity ( true ) ;
if ( " tqq9_query " . equals ( itemKey ) ) {
2025-08-14 09:05:29 +00:00
//清除分录数据
2025-08-12 03:42:59 +00:00
DynamicObjectCollection entryentity = dataEntity . getDynamicObjectCollection ( " tqq9_pursuggestrptentry " ) ;
if ( entryentity . size ( ) ! = 0 ) {
entryentity . clear ( ) ;
}
2025-08-14 09:05:29 +00:00
//业务归属查询
2025-08-26 10:05:59 +00:00
QFilter qFilter = new QFilter ( " number " , QCP . in , new String [ ] { " SHLC " , " BJLC " , " GZLC " , " CDLC " } ) ;
2025-08-14 09:05:29 +00:00
DynamicObject [ ] load = BusinessDataServiceHelper . load ( " bos_org " , " id,number " , qFilter . toArray ( ) ) ;
2025-08-26 10:05:59 +00:00
Long sh = 0L ;
Long bj = 0L ;
Long gz = 0L ;
Long cd = 0L ;
2025-08-14 09:05:29 +00:00
for ( int i = 0 ; load ! = null & & i < load . length ; i + + ) {
DynamicObject dynamicObject = load [ i ] ;
String number = dynamicObject . getString ( " number " ) ;
switch ( number ) {
2025-08-26 10:05:59 +00:00
case " SHLC " :
sh = dynamicObject . getLong ( " id " ) ;
2025-08-14 09:05:29 +00:00
break ;
2025-08-26 10:05:59 +00:00
case " BJLC " :
bj = dynamicObject . getLong ( " id " ) ;
2025-08-14 09:05:29 +00:00
break ;
2025-08-26 10:05:59 +00:00
case " GZLC " :
gz = dynamicObject . getLong ( " id " ) ;
2025-08-14 09:05:29 +00:00
break ;
2025-08-26 10:05:59 +00:00
case " CDLC " :
cd = dynamicObject . getLong ( " id " ) ;
2025-08-14 09:05:29 +00:00
break ;
}
}
2025-08-12 03:42:59 +00:00
DynamicObjectCollection tqq9_queryorg = dataEntity . getDynamicObjectCollection ( " tqq9_queryorg " ) ;
DynamicObjectCollection tqq9_querysku = dataEntity . getDynamicObjectCollection ( " tqq9_querysku " ) ;
List < String > org = new ArrayList < > ( ) ;
List < String > sku = new ArrayList < > ( ) ;
StringBuilder orgBuilder = new StringBuilder ( ) ;
StringBuilder skuBuilder = new StringBuilder ( ) ;
for ( DynamicObject dynamicObject : tqq9_queryorg ) {
String id = dynamicObject . getString ( " fbasedataid.id " ) ;
org . add ( id ) ;
orgBuilder . append ( " , " ) . append ( id ) ;
}
for ( DynamicObject dynamicObject : tqq9_querysku ) {
String id = dynamicObject . getString ( " fbasedataid.id " ) ;
sku . add ( id ) ;
skuBuilder . append ( " , " ) . append ( id ) ;
}
//物料Map
DynamicObject [ ] materials = BusinessDataServiceHelper . load ( " bd_material " , " id,number,name,tqq9_brand,baseunit " , null ) ;
HashMap < Long , DynamicObject > materialMap = new HashMap < Long , DynamicObject > ( ) ;
for ( DynamicObject dynamicObject : materials ) {
materialMap . put ( dynamicObject . getLong ( " id " ) , dynamicObject ) ;
}
2025-08-26 10:05:59 +00:00
//商城商品
DynamicObject [ ] goods = BusinessDataServiceHelper . load ( " tqq9_goodspackage " , " id,number,name,tqq9_brand " , null ) ;
HashMap < Long , DynamicObject > goodMap = new HashMap < Long , DynamicObject > ( ) ;
for ( DynamicObject dynamicObject : goods ) {
goodMap . put ( dynamicObject . getLong ( " id " ) , dynamicObject ) ;
}
//执行采购Map
DynamicObject [ ] operators = BusinessDataServiceHelper . load ( " bd_operator " , " id,operatornumber,operatorname " , null ) ;
HashMap < Long , DynamicObject > operatorMap = new HashMap < Long , DynamicObject > ( ) ;
for ( DynamicObject dynamicObject : operators ) {
operatorMap . put ( dynamicObject . getLong ( " id " ) , dynamicObject ) ;
}
2025-08-12 03:42:59 +00:00
//组织Map
DynamicObject [ ] adminorgs = BusinessDataServiceHelper . load ( " bos_adminorg " , " id,number " , null ) ;
HashMap < Long , DynamicObject > adminorgMap = new HashMap < Long , DynamicObject > ( ) ;
for ( DynamicObject dynamicObject : adminorgs ) {
adminorgMap . put ( dynamicObject . getLong ( " id " ) , dynamicObject ) ;
}
QFilter warehouseF = new QFilter ( " number " , QCP . in , new String [ ] { " 001 " , " 006 " } ) ;
DynamicObject [ ] warehouses = BusinessDataServiceHelper . load ( " bd_warehouse " , " id,number " , warehouseF . toArray ( ) ) ;
StringBuilder warehouseSb = new StringBuilder ( ) ;
for ( DynamicObject warehouse : warehouses ) {
String id = warehouse . getString ( " id " ) ;
warehouseSb . append ( " ,' " ) . append ( id ) . append ( " ' " ) ;
}
2025-08-26 10:05:59 +00:00
DataSet materialpurchaseinfoDataSet = QueryServiceHelper . queryDataSet ( this . getClass ( ) . getName ( ) ,
" bd_materialpurchaseinfo " ,
" id as tqq9_purordermaterial,masterid as tqq9_material " ,
2025-08-12 03:42:59 +00:00
new QFilter [ ] { } ,
null ) ;
2025-08-13 10:38:04 +00:00
2025-08-14 09:05:29 +00:00
//商城商品
2025-08-26 10:05:59 +00:00
String goodspackagesql = " /*dialect*/select t1.fid tqq9_sku,t1.fk_tqq9_isauto tqq9_isauto,t1.fk_tqq9_mater tqq9_material,t1.fk_tqq9_skuno tqq9_sku_lc,t1.fcreateorgid tqq9_org, \ n " +
2025-09-03 09:49:27 +00:00
" t1.fk_tqq9_purchaser tqq9_purchaser,t1.fk_tqq9_onsale tqq9_onsale ,t1.fk_tqq9_totalupstock tqq9_totalupstock from tk_tqq9_goodspackage t1 where fstatus ='C' \ n " ;
2025-08-12 03:42:59 +00:00
//即时库存表
2025-08-26 10:05:59 +00:00
String realbalancesql = " /*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 " ;
// //即时库存表
// String realbalancesql = "/*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";
2025-09-13 09:42:55 +00:00
//销售出库
2025-08-26 10:05:59 +00:00
String saloutbillsql = " /*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 " +
" t2.fk_tqq9_goodspackage tqq9_sku,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.fk_tqq9_goodspackage,t1.forgid " ;
2025-08-12 03:42:59 +00:00
//采购订单
2025-08-26 10:05:59 +00:00
String purorderbillsql = " /*dialect*/select '1' tqq9_isauto,t2.fmaterialid tqq9_purordermaterial,t1.forgid tqq9_org, \ 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 " ;
//占单库存-上海
String onordersql_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 " ;
//占单库存-北京
String onordersql_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 " ;
//占单库存-广州
String onordersql_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 " ;
2025-08-12 03:42:59 +00:00
2025-08-26 10:05:59 +00:00
// //排名-上海
// String range_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";
//
// //排名-北京
// String range_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";
//
// //排名-广州
// String range_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";
//排名
String rangesql = " /*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; " ;
2025-09-01 08:50:23 +00:00
//已收货未上架数量
String pendingsql = " /*dialect*/select '1' tqq9_isauto,t2.fmaterialid tqq9_purordermaterial,t1.forgid tqq9_org,sum(t2.fk_tqq9_dhsl) tqq9_pendingqty \ n " +
" from t_pm_receiptnotice t1,t_pm_receiptnoticeentry t2 where t1.fid=t2.fid and fbillstatus='C' GROUP BY t2.fmaterialid,t1.forgid " ;
2025-08-26 10:05:59 +00:00
DataSet goodspackagDataSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " sys " ) , goodspackagesql ) ;
2025-08-12 03:42:59 +00:00
DataSet realbalanceDataSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " scm " ) , realbalancesql ) ;
DataSet saloutbillDataSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " scm " ) , saloutbillsql ) ;
DataSet purorderbillDataSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " scm " ) , purorderbillsql ) ;
2025-08-26 10:05:59 +00:00
DataSet onorder_shDataSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " lc " ) , onordersql_sh ) ;
DataSet onorder_bjDataSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " lc " ) , onordersql_bj ) ;
DataSet onorder_gzDataSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " lc " ) , onordersql_gz ) ;
// DataSet range_shDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("lc"), range_sh);
// DataSet range_bjDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("lc"), range_bj);
// DataSet range_gzDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("lc"), range_gz);
DataSet rangeDataSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " lc " ) , rangesql ) ;
2025-09-13 09:42:55 +00:00
DataSet pendingSet = DB . queryDataSet ( this . getClass ( ) . getName ( ) , DBRoute . of ( " scm " ) , pendingsql ) ;
2025-08-26 10:05:59 +00:00
goodspackagDataSet = goodspackagDataSet . leftJoin ( realbalanceDataSet ) . on ( " tqq9_material " , " tqq9_material " ) . on ( " tqq9_isauto " , " tqq9_isauto " ) . on ( " tqq9_org " , " tqq9_org " ) . select ( " tqq9_sku " , " tqq9_org " , " tqq9_isauto " , " tqq9_material " , " tqq9_sku_lc " , " tqq9_purchaser " , " tqq9_onsale " , " tqq9_totalupstock " ,
" 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 ( ) ;
goodspackagDataSet = goodspackagDataSet . leftJoin ( saloutbillDataSet ) . on ( " tqq9_sku " , " tqq9_sku " ) . on ( " tqq9_org " , " tqq9_org " ) . select ( " tqq9_sku " , " tqq9_org " , " tqq9_isauto " , " tqq9_material " , " tqq9_sku_lc " , " tqq9_purchaser " , " tqq9_onsale " , " tqq9_totalupstock " , " tqq9_shinventory " , " tqq9_bjinventory " ,
" tqq9_gzinventory " , " tqq9_cdinventory " , " tqq9_totalinventory " , " tqq9_permonthsales_sh " , " tqq9_permonthsales_bj " , " tqq9_permonthsales_gz " , " tqq9_permonthsales_cd " ,
" 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 " ) ;
purorderbillDataSet = purorderbillDataSet . leftJoin ( materialpurchaseinfoDataSet ) . on ( " tqq9_purordermaterial " , " tqq9_purordermaterial " ) . select ( " tqq9_isauto " , " tqq9_org " , " tqq9_material " , " tqq9_inventory_sh " , " tqq9_inventory_bj " , " tqq9_inventory_gz " , " tqq9_inventory_cd " ) . finish ( ) ;
2025-09-01 08:50:23 +00:00
pendingSet = pendingSet . leftJoin ( materialpurchaseinfoDataSet ) . on ( " tqq9_purordermaterial " , " tqq9_purordermaterial " ) . select ( " tqq9_isauto " , " tqq9_org " , " tqq9_material " , " tqq9_pendingqty " ) . finish ( ) ;
2025-08-26 10:05:59 +00:00
goodspackagDataSet = goodspackagDataSet . leftJoin ( purorderbillDataSet ) . on ( " tqq9_isauto " , " tqq9_isauto " ) . on ( " tqq9_org " , " tqq9_org " ) . on ( " tqq9_material " , " tqq9_material " ) . select ( " tqq9_sku " , " tqq9_org " , " tqq9_isauto " , " tqq9_material " , " tqq9_sku_lc " , " tqq9_purchaser " , " tqq9_onsale " , " tqq9_totalupstock " , " tqq9_shinventory " , " tqq9_bjinventory " ,
" tqq9_gzinventory " , " tqq9_cdinventory " , " tqq9_totalinventory " , " tqq9_permonthsales_sh " , " tqq9_permonthsales_bj " , " tqq9_permonthsales_gz " , " tqq9_permonthsales_cd " , " tqq9_permonthsales " , " tqq9_totalqty_sh " , " tqq9_totalqty_bj " , " tqq9_totalqty_gz " , " tqq9_totalqty_cd " , " tqq9_totalqty " , " tqq9_inventory_sh " , " tqq9_inventory_bj " , " tqq9_inventory_gz " , " tqq9_inventory_cd " ,
" 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 " ) ;
goodspackagDataSet = goodspackagDataSet . leftJoin ( onorder_shDataSet ) . on ( " tqq9_sku_lc " , " tqq9_sku_lc " ) . select ( " tqq9_sku " , " tqq9_org " , " tqq9_isauto " , " tqq9_material " , " tqq9_sku_lc " , " tqq9_purchaser " , " tqq9_onsale " , " tqq9_totalupstock " , " tqq9_shinventory " , " tqq9_bjinventory " ,
" tqq9_gzinventory " , " tqq9_cdinventory " , " tqq9_totalinventory " , " tqq9_permonthsales_sh " , " tqq9_permonthsales_bj " , " tqq9_permonthsales_gz " , " tqq9_permonthsales_cd " , " tqq9_permonthsales " , " tqq9_totalqty_sh " , " tqq9_totalqty_bj " , " tqq9_totalqty_gz " , " tqq9_totalqty_cd " , " tqq9_totalqty " , " tqq9_inventory_sh " , " tqq9_inventory_bj " , " tqq9_inventory_gz " , " tqq9_inventory_cd " , " 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 " ) .
leftJoin ( onorder_bjDataSet ) . on ( " tqq9_sku_lc " , " tqq9_sku_lc " ) . select ( " tqq9_sku " , " tqq9_org " , " tqq9_isauto " , " tqq9_material " , " tqq9_sku_lc " , " tqq9_purchaser " , " tqq9_onsale " , " tqq9_totalupstock " , " tqq9_shinventory " , " tqq9_bjinventory " ,
" tqq9_gzinventory " , " tqq9_cdinventory " , " tqq9_totalinventory " , " tqq9_permonthsales_sh " , " tqq9_permonthsales_bj " , " tqq9_permonthsales_gz " , " tqq9_permonthsales_cd " , " tqq9_permonthsales " , " tqq9_totalqty_sh " , " tqq9_totalqty_bj " , " tqq9_totalqty_gz " , " tqq9_totalqty_cd " , " tqq9_totalqty " , " tqq9_inventory_sh " , " tqq9_inventory_bj " , " tqq9_inventory_gz " , " tqq9_inventory_cd " , " tqq9_oninventory " ,
" 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 ( ) .
leftJoin ( onorder_gzDataSet ) . on ( " tqq9_sku_lc " , " tqq9_sku_lc " ) . select ( " tqq9_sku " , " tqq9_org " , " tqq9_isauto " , " tqq9_material " , " tqq9_sku_lc " , " tqq9_purchaser " , " tqq9_onsale " , " tqq9_totalupstock " , " tqq9_shinventory " , " tqq9_bjinventory " ,
" tqq9_gzinventory " , " tqq9_cdinventory " , " tqq9_totalinventory " , " tqq9_permonthsales_sh " , " tqq9_permonthsales_bj " , " tqq9_permonthsales_gz " , " tqq9_permonthsales_cd " , " tqq9_permonthsales " , " tqq9_totalqty_sh " , " tqq9_totalqty_bj " , " tqq9_totalqty_gz " , " tqq9_totalqty_cd " , " tqq9_totalqty " , " tqq9_inventory_sh " , " tqq9_inventory_bj " , " tqq9_inventory_gz " , " tqq9_inventory_cd " , " tqq9_oninventory " ,
" tqq9_shsaledates " , " tqq9_bjsaledates " , " tqq9_gzsaledates " , " tqq9_cdsaledates " , " tqq9_saledates " , " tqq9_safeinventory " , " tqq9_suppleinventory " , " tqq9_onorderinventory_SH " , " tqq9_onorderinventory_BJ " , " tqq9_onorderinventory_GZ " , " tqq9_remark " ) . finish ( ) ;
goodspackagDataSet = goodspackagDataSet . leftJoin ( rangeDataSet ) . on ( " tqq9_sku_lc " , " tqq9_sku_lc " ) . select ( " tqq9_sku " , " tqq9_org " , " tqq9_isauto " , " tqq9_material " , " tqq9_sku_lc " , " tqq9_purchaser " , " tqq9_onsale " , " tqq9_totalupstock " , " tqq9_shinventory " , " tqq9_bjinventory " ,
" tqq9_gzinventory " , " tqq9_cdinventory " , " tqq9_totalinventory " , " tqq9_permonthsales_sh " , " tqq9_permonthsales_bj " , " tqq9_permonthsales_gz " , " tqq9_permonthsales_cd " , " tqq9_permonthsales " , " tqq9_totalqty_sh " , " tqq9_totalqty_bj " , " tqq9_totalqty_gz " , " tqq9_totalqty_cd " , " tqq9_totalqty " , " tqq9_inventory_sh " , " tqq9_inventory_bj " , " tqq9_inventory_gz " , " tqq9_inventory_cd " , " tqq9_oninventory " ,
" 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 " ) ;
2025-09-13 09:42:55 +00:00
goodspackagDataSet = goodspackagDataSet . leftJoin ( pendingSet ) . on ( " tqq9_isauto " , " tqq9_isauto " ) . on ( " tqq9_org " , " tqq9_org " ) . on ( " tqq9_material " , " tqq9_material " ) . select ( " tqq9_sku " , " tqq9_org " , " tqq9_isauto " , " tqq9_material " , " tqq9_sku_lc " , " tqq9_purchaser " , " tqq9_onsale " , " tqq9_totalupstock " , " tqq9_shinventory " , " tqq9_bjinventory " ,
2025-09-01 08:50:23 +00:00
" tqq9_gzinventory " , " tqq9_cdinventory " , " tqq9_totalinventory " , " tqq9_permonthsales_sh " , " tqq9_permonthsales_bj " , " tqq9_permonthsales_gz " , " tqq9_permonthsales_cd " , " tqq9_permonthsales " , " tqq9_totalqty_sh " , " tqq9_totalqty_bj " , " tqq9_totalqty_gz " , " tqq9_totalqty_cd " , " tqq9_totalqty " , " tqq9_inventory_sh " , " tqq9_inventory_bj " , " tqq9_inventory_gz " , " tqq9_inventory_cd " , " tqq9_oninventory " ,
" 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 " ,
2025-09-13 09:42:55 +00:00
" 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 " , " tqq9_onorderemark " , " tqq9_pendingqty " ) . finish ( ) ;
2025-08-12 03:42:59 +00:00
2025-08-26 10:05:59 +00:00
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 ) + " ) " : " " ) ) ;
2025-08-12 03:42:59 +00:00
2025-08-26 10:05:59 +00:00
DataSet copy1 = goodspackagDataSet . copy ( ) ;
2025-08-12 03:42:59 +00:00
DynamicObjectCollection dynamicObjects = ORM . create ( ) . toPlainDynamicObjectCollection ( copy1 ) ;
Iterator < DynamicObject > iterator = dynamicObjects . iterator ( ) ;
while ( iterator . hasNext ( ) ) {
DynamicObject next = iterator . next ( ) ;
DynamicObject entry = new DynamicObject ( entryentity . getDynamicObjectType ( ) ) ;
2025-08-26 10:05:59 +00:00
DynamicObject tqq9_sku = goodMap . get ( next . getLong ( " tqq9_sku " ) ) ;
DynamicObject tqq9_material = materialMap . get ( next . getLong ( " tqq9_material " ) ) ;
2025-09-13 09:42:55 +00:00
DynamicObject tqq9_org = adminorgMap . get ( next . getLong ( " tqq9_org " ) ) ;
2025-08-26 10:05:59 +00:00
entry . set ( " tqq9_sku " , tqq9_sku ) ; //tqq9_sku
entry . set ( " tqq9_material " , tqq9_material ) ; //物料
2025-08-12 03:42:59 +00:00
entry . set ( " tqq9_skuname " , tqq9_sku . getString ( " name " ) ) ; //名称
entry . set ( " tqq9_skubrand " , tqq9_sku . getDynamicObject ( " tqq9_brand " ) ) ; //品牌
2025-08-26 10:05:59 +00:00
entry . set ( " tqq9_unit " , tqq9_material . getDynamicObject ( " baseunit " ) ) ; //基本单位
2025-09-13 09:42:55 +00:00
entry . set ( " tqq9_org " , tqq9_org ) ; //业务归属(组织)
2025-08-26 10:05:59 +00:00
entry . set ( " tqq9_purchaser " , operatorMap . get ( next . getLong ( " tqq9_purchaser " ) ) ) ; //执行采购
entry . set ( " tqq9_onsale " , next . get ( " tqq9_onsale " ) ) ; //上下架
entry . set ( " tqq9_totalupstock " , next . get ( " tqq9_totalupstock " ) ) ; //需上传总库存
entry . set ( " tqq9_shinventory " , next . get ( " tqq9_shinventory " ) ) ; //上海库存
entry . set ( " tqq9_bjinventory " , next . get ( " tqq9_bjinventory " ) ) ; //北京库存
entry . set ( " tqq9_gzinventory " , next . get ( " tqq9_gzinventory " ) ) ; //广州库存
entry . set ( " tqq9_cdinventory " , next . get ( " tqq9_cdinventory " ) ) ; //成都库存
2025-09-13 09:42:55 +00:00
if ( StringUtils . equals ( " SHLC " , tqq9_org . getString ( " number " ) ) ) {
entry . set ( " tqq9_warename " , " 上海仓库 " ) ; //仓库名称
} else if ( StringUtils . equals ( " BJLC " , tqq9_org . getString ( " number " ) ) ) {
entry . set ( " tqq9_warename " , " 北京仓库 " ) ; //仓库名称
} else if ( StringUtils . equals ( " GZLC " , tqq9_org . getString ( " number " ) ) ) {
entry . set ( " tqq9_warename " , " 广州仓库 " ) ; //仓库名称
} else if ( StringUtils . equals ( " CDLC " , tqq9_org . getString ( " number " ) ) ) {
entry . set ( " tqq9_warename " , " 成都仓库 " ) ; //仓库名称
}
2025-08-12 03:42:59 +00:00
entry . set ( " tqq9_totalinventory " , next . get ( " tqq9_totalinventory " ) ) ; //总仓库存
2025-08-26 10:05:59 +00:00
entry . set ( " tqq9_permonthsales_sh " , next . get ( " tqq9_permonthsales_sh " ) ) ; //上海月平均销量
entry . set ( " tqq9_permonthsales_bj " , next . get ( " tqq9_permonthsales_bj " ) ) ; //北京月平均销量
entry . set ( " tqq9_permonthsales_gz " , next . get ( " tqq9_permonthsales_gz " ) ) ; //广州月平均销量
entry . set ( " tqq9_permonthsales_cd " , next . get ( " tqq9_permonthsales_cd " ) ) ; //成都月平均销量
entry . set ( " tqq9_permonthsales " , next . get ( " tqq9_permonthsales " ) ) ; //月平均销量
entry . set ( " tqq9_totalqty_sh " , next . get ( " tqq9_totalqty_sh " ) ) ; //上海合计销量
entry . set ( " tqq9_totalqty_bj " , next . get ( " tqq9_totalqty_bj " ) ) ; //北京合计销量
entry . set ( " tqq9_totalqty_gz " , next . get ( " tqq9_totalqty_gz " ) ) ; //广州合计销量
entry . set ( " tqq9_totalqty_cd " , next . get ( " tqq9_totalqty_cd " ) ) ; //成都合计销量
entry . set ( " tqq9_totalqty " , next . get ( " tqq9_totalqty " ) ) ; //合计销量
entry . set ( " tqq9_shsaledates " , next . get ( " tqq9_shsaledates " ) ) ; //预计销售时间(上海)
entry . set ( " tqq9_bjsaledates " , next . get ( " tqq9_bjsaledates " ) ) ; //预计销售时间(北京)
entry . set ( " tqq9_gzsaledates " , next . get ( " tqq9_gzsaledates " ) ) ; //预计销售时间(广州)
entry . set ( " tqq9_cdsaledates " , next . get ( " tqq9_cdsaledates " ) ) ; //预计销售时间(成都)
2025-08-12 03:42:59 +00:00
entry . set ( " tqq9_saledates " , next . get ( " tqq9_saledates " ) ) ; //预计销售时间
2025-08-26 10:05:59 +00:00
entry . set ( " tqq9_remark " , next . get ( " tqq9_remark " ) ) ; //备货状态
2025-08-12 03:42:59 +00:00
entry . set ( " tqq9_safeinventory " , next . get ( " tqq9_safeinventory " ) ) ; //安全库存
2025-08-26 10:05:59 +00:00
entry . set ( " tqq9_inventory_sh " , next . get ( " tqq9_inventory_sh " ) ) ; //上海在途库存
entry . set ( " tqq9_inventory_bj " , next . get ( " tqq9_inventory_bj " ) ) ; //北京在途库存
entry . set ( " tqq9_inventory_gz " , next . get ( " tqq9_inventory_gz " ) ) ; //广州在途库存
entry . set ( " tqq9_inventory_cd " , next . get ( " tqq9_inventory_cd " ) ) ; //成都在途库存
2025-08-12 03:42:59 +00:00
entry . set ( " tqq9_oninventory " , next . get ( " tqq9_oninventory " ) ) ; //在途库存
entry . set ( " tqq9_suppleinventory " , next . get ( " tqq9_suppleinventory " ) ) ; //待补库存
2025-09-01 08:50:23 +00:00
entry . set ( " tqq9_pendingqty " , next . get ( " tqq9_pendingqty " ) ) ; //待补库存
2025-08-26 10:05:59 +00:00
entry . set ( " tqq9_onorderinventory_SH " , next . get ( " tqq9_onorderinventory_SH " ) ) ; //上海占单库存
entry . set ( " tqq9_onorderinventory_BJ " , next . get ( " tqq9_onorderinventory_BJ " ) ) ; //北京占单库存
entry . set ( " tqq9_onorderinventory_GZ " , next . get ( " tqq9_onorderinventory_GZ " ) ) ; //广州占单库存
2025-08-12 03:42:59 +00:00
entry . set ( " tqq9_onorderemark " , next . get ( " tqq9_onorderemark " ) ) ; //占单库存备注
2025-08-26 10:05:59 +00:00
entry . set ( " tqq9_slowinv_sh " , next . get ( " tqq9_slowinv_sh " ) ) ; //上海滞销库存
entry . set ( " tqq9_slowinv_bj " , next . get ( " tqq9_slowinv_bj " ) ) ; //北京滞销库存
entry . set ( " tqq9_slowinv_gz " , next . get ( " tqq9_slowinv_gz " ) ) ; //广州滞销库存
entry . set ( " tqq9_slowinv_cd " , next . get ( " tqq9_slowinv_cd " ) ) ; //成都滞销库存
entry . set ( " tqq9_ranking " , next . get ( " tqq9_ranking " ) ) ; // 排名
2025-08-12 03:42:59 +00:00
entryentity . add ( entry ) ;
}
dataEntity . set ( " tqq9_pursuggestrptentry " , entryentity ) ;
this . getView ( ) . updateView ( ) ;
} else if ( StringUtils . equals ( " tqq9_purapply " , itemKey ) ) {
DynamicObjectCollection tqq9_pursuggestrptentry = dataEntity . getDynamicObjectCollection ( " tqq9_pursuggestrptentry " ) ;
2025-09-16 08:05:06 +00:00
DynamicObject dynamicObject = tqq9_pursuggestrptentry . get ( 0 ) ;
DynamicObject tqq9_org = dynamicObject . getDynamicObject ( " tqq9_org " ) ;
if ( tqq9_org = = null ) {
this . getView ( ) . showMessage ( " 请先进行查询操作 " ) ;
return ;
2025-08-12 03:42:59 +00:00
}
2025-09-16 08:05:06 +00:00
BillShowParameter param = new BillShowParameter ( ) ;
param . setFormId ( " pm_purapplybill " ) ;
param . setCustomParam ( " pm_purapplybill " , dataEntity ) ; //采购建议报表单号
param . setCloseCallBack ( new CloseCallBack ( this , " pm_purapplybill " ) ) ;
param . getOpenStyle ( ) . setShowType ( ShowType . Modal ) ;
this . getView ( ) . showForm ( param ) ;
//-------------------------
// DynamicObject purapplybill = BusinessDataServiceHelper.newDynamicObject("pm_purapplybill");
// DynamicObjectCollection dynamicObjectCollection = purapplybill.getDynamicObjectCollection("billentry");
//
// long currentUserId = UserServiceHelper.getCurrentUserId();
// DynamicObject user = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{new QFilter("id", QCP.equals, currentUserId)});
// DynamicObjectCollection entryentity = user.getDynamicObjectCollection("entryentity");
// DynamicObject dept = null;
// for (DynamicObject dynamicObject : entryentity) {
// boolean ispartjob = dynamicObject.getBoolean("ispartjob");
// if (!ispartjob) {
// dept = dynamicObject.getDynamicObject("dpt");
// }
// }
// DynamicObject org = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{new QFilter("name", QCP.equals, "励齿集团")});
// CodeRuleInfo vouCodeRule = CodeRuleServiceHelper.getCodeRule("pm_purapplybill",
// purapplybill, org.getString("id"));
// String billno = CodeRuleServiceHelper.getNumber(vouCodeRule, purapplybill);//采购申请单编号
// DynamicObject currency = BusinessDataServiceHelper.loadSingle("bd_currency",
// new QFilter[]{new QFilter("number", QCP.equals, "CNY")});//币别
// DynamicObject taxrate = BusinessDataServiceHelper.loadSingle("bd_taxrate",
// new QFilter[]{new QFilter("number", QCP.equals, "V13")});//税率
// Date date = new Date();
// int i = 0;
// for (DynamicObject dynamicObject : tqq9_pursuggestrptentry) {
// if (dynamicObject.getBoolean("tqq9_ischange")) {
// if (i == 0) {
// purapplybill.set("org", org);//申请组织
// purapplybill.set("dept", dept);//申请部门
// purapplybill.set("bizuser", user);//申请人
// purapplybill.set("currency", currency);//币别
// purapplybill.set("creator", user);//创建人
// purapplybill.set("lastupdateuser", user);//修改人
// purapplybill.set("lastupdatetime", date);//修改时间
// purapplybill.set("billno", billno);//采购申请单编号
// purapplybill.set("billtype", BILLTYPE);//单据类型
// purapplybill.set("biztype", BIZTYPE);//业务类型
// purapplybill.set("biztime", date);//申请日期
// purapplybill.set("billstatus", "A");//单据状态
// purapplybill.set("closestatus", "A");//关闭状态
// purapplybill.set("cancelstatus", "A");//作废状态
// purapplybill.set("changestatus", "A");//变更状态
// purapplybill.set("subversion", "1");//子版本号
// purapplybill.set("version", "1");//版本号
// purapplybill.set("tqq9_sfsyhf_sh", "false");//是否使用货返
// purapplybill.set("tqq9_hshfsysl_sh", taxrate);//含税货返使用税率
// purapplybill.set("tqq9_sfsyxf_sh", "false");//是否使用现返
// purapplybill.set("tqq9_hsxfsysl_sh", taxrate);//含税现返使用税率
// purapplybill.set("tqq9_sfsyhf_bj", "false");//是否使用货返
// purapplybill.set("tqq9_hshfsysl_bj", taxrate);//含税货返使用税率
// purapplybill.set("tqq9_sfsyxf_bj", "false");//是否使用现返
// purapplybill.set("tqq9_hsxfsysl_bj", taxrate);//含税现返使用税率
// purapplybill.set("tqq9_sfsyhf_gz", "false");//是否使用货返
// purapplybill.set("tqq9_hshfsysl_gz", taxrate);//含税货返使用税率
// purapplybill.set("tqq9_sfsyxf_gz", "false");//是否使用现返
// purapplybill.set("tqq9_hsxfsysl_gz", taxrate);//含税现返使用税率
// }
// DynamicObject tqq9_org = dynamicObject.getDynamicObject("tqq9_org");//组织
// DynamicObject tqq9_material = dynamicObject.getDynamicObject("tqq9_material");//物料
// DynamicObject materialpurchaseinfo = BusinessDataServiceHelper.loadSingle("bd_materialpurchaseinfo",
// new QFilter[]{new QFilter("masterid", QCP.equals, tqq9_material.getLong("id"))});//物料采购信息
// BigDecimal tqq9_saledates = dynamicObject.getBigDecimal("tqq9_saledates");
// DynamicObject dynamicObject1 = dynamicObjectCollection.addNew();
// dynamicObject1.set("seq", i + 1);//分录号
// dynamicObject1.set("material", materialpurchaseinfo);//物料
// dynamicObject1.set("materialname", tqq9_material.getString("name"));//物料名称
// dynamicObject1.set("unit", tqq9_material.getDynamicObject("baseunit"));//计量单位
// dynamicObject1.set("baseunit", tqq9_material.getDynamicObject("baseunit"));//基本单位
// dynamicObject1.set("rowclosestatus", "A");//行关闭状态
// dynamicObject1.set("rowterminatestatus", "A");//行终止状态
// dynamicObject1.set("entryrecorg", tqq9_org);//收货组织
// dynamicObject1.set("entryreqorg", tqq9_org);//需求组织
// dynamicObject1.set("entryreqdept", dept);//需求部门
// dynamicObject1.set("reqdate", date);//需求日期
// dynamicObject1.set("purdate", date);//建议采购日期
// dynamicObject1.set("deliverdate", date);//交货日期
// dynamicObject1.set("bomtime", date);//展BOM时间
// dynamicObject1.set("entrychangetype", "B");//变更方式
// dynamicObject1.set("linetype", LINETYPE);//行类型
// dynamicObject1.set("linetype", LINETYPE);//行类型
// dynamicObject1.set("entrycreator", user);//创建人
// dynamicObject1.set("entryrecdept", tqq9_org);//收货部门
// dynamicObject1.set("entrypurdept", tqq9_org);//采购部门
// dynamicObject1.set("entryoperatorgroup", tqq9_org);//采购组
// dynamicObject1.set("tqq9_expectsaletime", tqq9_saledates);//预计销售时间(月)
// if (StringUtils.equals(tqq9_org.getString("number"), "SHLC")) {
// dynamicObject1.set("tqq9_zgcgxj", tqq9_material.getBigDecimal("tqq9_maxprice_sh"));//最高采购限价
// dynamicObject1.set("priceandtax", tqq9_material.getBigDecimal("tqq9_maxprice_sh"));//含税单价
// } else if (StringUtils.equals(tqq9_org.getString("number"), "BJLC")) {
// dynamicObject1.set("tqq9_zgcgxj", tqq9_material.getBigDecimal("tqq9_maxprice_bj"));//最高采购限价
// dynamicObject1.set("priceandtax", tqq9_material.getBigDecimal("tqq9_maxprice_bj"));//含税单价
// } else if (StringUtils.equals(tqq9_org.getString("number"), "GZLC")) {
// dynamicObject1.set("tqq9_zgcgxj", tqq9_material.getBigDecimal("tqq9_maxprice_gz"));//最高采购限价
// dynamicObject1.set("priceandtax", tqq9_material.getBigDecimal("tqq9_maxprice_gz"));//含税单价
// }
// dynamicObjectCollection.set(i, dynamicObject1);
// i++;
// }
// }
// purapplybill.set("billentry", dynamicObjectCollection);
// SaveServiceHelper.save(new DynamicObject[]{purapplybill});
// BillShowParameter billShowParameter = new BillShowParameter();
// billShowParameter.getOpenStyle().setShowType(ShowType.Modal);
// billShowParameter.setFormId("pm_purapplybill");
// DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(purapplybill.getLong("id"), "pm_purapplybill");
// billShowParameter.setPkId(dynamicObject.get("id"));
// this.getView().showForm(billShowParameter);
2025-09-13 09:42:55 +00:00
} else if ( StringUtils . equals ( " tqq9_pushcgdd " , itemKey ) ) {
DynamicObjectCollection tqq9_pursuggestrptentry = dataEntity . getDynamicObjectCollection ( " tqq9_pursuggestrptentry " ) ;
2025-09-16 08:05:06 +00:00
DynamicObject dynamicObject = tqq9_pursuggestrptentry . get ( 0 ) ;
DynamicObject tqq9_org = dynamicObject . getDynamicObject ( " tqq9_org " ) ;
if ( tqq9_org = = null ) {
this . getView ( ) . showMessage ( " 请先进行查询操作 " ) ;
return ;
2025-09-13 09:42:55 +00:00
}
2025-09-16 08:05:06 +00:00
BillShowParameter param = new BillShowParameter ( ) ;
param . setFormId ( " pm_purorderbill " ) ;
param . setCustomParam ( " pm_purorderbill " , dataEntity ) ; //采购订单号
param . setCloseCallBack ( new CloseCallBack ( this , " pm_purorderbill " ) ) ;
param . getOpenStyle ( ) . setShowType ( ShowType . Modal ) ;
this . getView ( ) . showForm ( param ) ;
//----------------------------
// DynamicObject pm_purorderbill = BusinessDataServiceHelper.newDynamicObject("pm_purorderbill");
// DynamicObjectCollection dynamicObjectCollection = pm_purorderbill.getDynamicObjectCollection("billentry");
//
// long currentUserId = UserServiceHelper.getCurrentUserId();
// DynamicObject user = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{new QFilter("id", QCP.equals, currentUserId)});
// DynamicObjectCollection entryentity = user.getDynamicObjectCollection("entryentity");
// DynamicObject dept = null;
// for (DynamicObject dynamicObject : entryentity) {
// boolean ispartjob = dynamicObject.getBoolean("ispartjob");
// if (!ispartjob) {
// dept = dynamicObject.getDynamicObject("dpt");
// }
// }
// DynamicObject dynamicObject2 = tqq9_pursuggestrptentry.get(0);
// DynamicObject org = dynamicObject2.getDynamicObject("tqq9_org");//组织
// CodeRuleInfo vouCodeRule = CodeRuleServiceHelper.getCodeRule("pm_purorderbill",
// pm_purorderbill, org.getString("id"));
// String billno = String.valueOf(new Date().getTime());//采购申请单编号
//// String billno = CodeRuleServiceHelper.getNumber(vouCodeRule, pm_purorderbill);//采购申请单编号
// DynamicObject currency = BusinessDataServiceHelper.loadSingle("bd_currency",
// new QFilter[]{new QFilter("number", QCP.equals, "CNY")});//币别
// DynamicObject taxrate = BusinessDataServiceHelper.loadSingle("bd_taxrate",
// new QFilter[]{new QFilter("number", QCP.equals, "V13")});//税率
// Date date = new Date();
// int i = 0;
// for (DynamicObject dynamicObject : tqq9_pursuggestrptentry) {
// org = dynamicObject2.getDynamicObject("tqq9_org");//组织
// if (dynamicObject.getBoolean("tqq9_ischange")) {
// if (i == 0) {
// pm_purorderbill.set("org", org);//申请组织
// pm_purorderbill.set("dept", dept);//申请部门
// pm_purorderbill.set("currency", currency);//币别
// pm_purorderbill.set("creator", user);//创建人
// pm_purorderbill.set("lastupdateuser", user);//修改人
// pm_purorderbill.set("lastupdatetime", date);//修改时间
// pm_purorderbill.set("billno", billno);//采购订单编号
// pm_purorderbill.set("billtype", BILLTYPE1);//单据类型
// pm_purorderbill.set("biztype", BIZTYPE);//业务类型
// pm_purorderbill.set("biztime", date);//申请日期
// pm_purorderbill.set("billstatus", "A");//单据状态
// pm_purorderbill.set("closestatus", "A");//关闭状态
// pm_purorderbill.set("cancelstatus", "A");//作废状态
// pm_purorderbill.set("changestatus", "A");//变更状态
// pm_purorderbill.set("subversion", "1");//子版本号
// pm_purorderbill.set("version", "1");//版本号
// pm_purorderbill.set("tqq9_sfsyhf", "false");//是否使用货返
// pm_purorderbill.set("tqq9_hshfsysl", taxrate);//含税货返使用税率
// pm_purorderbill.set("tqq9_sfsyxf", "false");//是否使用现返
// pm_purorderbill.set("tqq9_hsxfsysl", taxrate);//含税现返使用税率
// }
// DynamicObject tqq9_material = dynamicObject.getDynamicObject("tqq9_material");//物料
// DynamicObject materialpurchaseinfo = BusinessDataServiceHelper.loadSingle("bd_materialpurchaseinfo",
// new QFilter[]{new QFilter("masterid", QCP.equals, tqq9_material.getLong("id"))});//物料采购信息
// BigDecimal tqq9_saledates = dynamicObject.getBigDecimal("tqq9_saledates");
// DynamicObject dynamicObject1 = dynamicObjectCollection.addNew();
// dynamicObject1.set("seq", i + 1);//分录号
// dynamicObject1.set("material", materialpurchaseinfo);//物料
// dynamicObject1.set("materialname", tqq9_material.getString("name"));//物料名称
// dynamicObject1.set("unit", tqq9_material.getDynamicObject("baseunit"));//计量单位
// dynamicObject1.set("baseunit", tqq9_material.getDynamicObject("baseunit"));//基本单位
// dynamicObject1.set("tqq9_brand", tqq9_material.getDynamicObject("tqq9_brand"));//品牌
// dynamicObject1.set("rowclosestatus", "A");//行关闭状态
// dynamicObject1.set("rowterminatestatus", "A");//行终止状态
// dynamicObject1.set("entryrecorg", org);//收货组织
// dynamicObject1.set("entryreqorg", org);//需求组织
// dynamicObject1.set("entryreqdept", dept);//需求部门
// dynamicObject1.set("deliverdate", date);//交货日期
// dynamicObject1.set("entrychangetype", "B");//变更方式
// dynamicObject1.set("linetype", LINETYPE);//行类型
// dynamicObject1.set("entrycreator", user);//创建人
// dynamicObject1.set("entryrecdept", org);//收货部门
// dynamicObject1.set("discounttype", "C");//折扣方式
// dynamicObject1.set("tqq9_expectsaletime", tqq9_saledates);//预计销售时间(月)
// if (StringUtils.equals(org.getString("number"), "SHLC")) {
// dynamicObject1.set("tqq9_zgcgxj", tqq9_material.getBigDecimal("tqq9_maxprice_sh"));//最高采购限价
// dynamicObject1.set("priceandtax", tqq9_material.getBigDecimal("tqq9_maxprice_sh"));//含税单价
// } else if (StringUtils.equals(org.getString("number"), "BJLC")) {
// dynamicObject1.set("tqq9_zgcgxj", tqq9_material.getBigDecimal("tqq9_maxprice_bj"));//最高采购限价
// dynamicObject1.set("priceandtax", tqq9_material.getBigDecimal("tqq9_maxprice_bj"));//含税单价
// } else if (StringUtils.equals(org.getString("number"), "GZLC")) {
// dynamicObject1.set("tqq9_zgcgxj", tqq9_material.getBigDecimal("tqq9_maxprice_gz"));//最高采购限价
// dynamicObject1.set("priceandtax", tqq9_material.getBigDecimal("tqq9_maxprice_gz"));//含税单价
// }
// dynamicObjectCollection.set(i, dynamicObject1);
// i++;
// }
// }
// pm_purorderbill.set("billentry", dynamicObjectCollection);
// SaveServiceHelper.save(new DynamicObject[]{pm_purorderbill});
// BillShowParameter billShowParameter = new BillShowParameter();
// billShowParameter.getOpenStyle().setShowType(ShowType.Modal);
// billShowParameter.setFormId("pm_purorderbill");
// DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(pm_purorderbill.getLong("id"), "pm_purorderbill");
// billShowParameter.setPkId(dynamicObject.get("id"));
// this.getView().showForm(billShowParameter);
2025-08-12 03:42:59 +00:00
}
}
}