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 ;
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 " ) ;
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 " ) ;
2025-08-14 09:05:29 +00:00
DynamicObject dept = null ;
2025-08-12 03:42:59 +00:00
for ( DynamicObject dynamicObject : entryentity ) {
boolean ispartjob = dynamicObject . getBoolean ( " ispartjob " ) ;
2025-08-14 09:05:29 +00:00
if ( ! ispartjob ) {
dept = dynamicObject . getDynamicObject ( " dpt " ) ;
2025-08-12 03:42:59 +00:00
}
2025-08-14 09:05:29 +00:00
}
DynamicObject org = BusinessDataServiceHelper . loadSingle ( " bos_org " , new QFilter [ ] { new QFilter ( " name " , QCP . equals , " 励齿集团 " ) } ) ;
2025-08-12 03:42:59 +00:00
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 ( ) ;
2025-08-29 10:01:57 +00:00
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 " ) ; //作废状态
2025-09-13 09:42:55 +00:00
purapplybill . set ( " changestatus " , " A " ) ; //变更状态
2025-08-29 10:01:57 +00:00
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 ) ; //预计销售时间(月)
2025-09-13 09:42:55 +00:00
if ( StringUtils . equals ( tqq9_org . getString ( " number " ) , " SHLC " ) ) {
2025-09-10 10:16:39 +00:00
dynamicObject1 . set ( " tqq9_zgcgxj " , tqq9_material . getBigDecimal ( " tqq9_maxprice_sh " ) ) ; //最高采购限价
dynamicObject1 . set ( " priceandtax " , tqq9_material . getBigDecimal ( " tqq9_maxprice_sh " ) ) ; //含税单价
2025-09-13 09:42:55 +00:00
} else if ( StringUtils . equals ( tqq9_org . getString ( " number " ) , " BJLC " ) ) {
2025-09-10 10:16:39 +00:00
dynamicObject1 . set ( " tqq9_zgcgxj " , tqq9_material . getBigDecimal ( " tqq9_maxprice_bj " ) ) ; //最高采购限价
dynamicObject1 . set ( " priceandtax " , tqq9_material . getBigDecimal ( " tqq9_maxprice_bj " ) ) ; //含税单价
2025-09-13 09:42:55 +00:00
} else if ( StringUtils . equals ( tqq9_org . getString ( " number " ) , " GZLC " ) ) {
2025-09-10 10:16:39 +00:00
dynamicObject1 . set ( " tqq9_zgcgxj " , tqq9_material . getBigDecimal ( " tqq9_maxprice_gz " ) ) ; //最高采购限价
dynamicObject1 . set ( " priceandtax " , tqq9_material . getBigDecimal ( " tqq9_maxprice_gz " ) ) ; //含税单价
}
2025-08-29 10:01:57 +00:00
dynamicObjectCollection . set ( i , dynamicObject1 ) ;
i + + ;
2025-08-12 03:42:59 +00:00
}
}
2025-08-14 09:05:29 +00:00
purapplybill . set ( " billentry " , dynamicObjectCollection ) ;
2025-08-12 03:42:59 +00:00
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 " ) ;
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
}
}
}