package tqq9.lc123.cloud.app.plugin.form.pm; import kd.bos.algo.DataSet; import kd.bos.bill.BillShowParameter; 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.CloseCallBack; import kd.bos.form.ShowType; import kd.bos.form.control.events.ItemClickEvent; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.license.api.LicenseConfigParseResult; 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.sdk.plugin.Plugin; import java.math.BigDecimal; import java.util.*; /** * 采购建议报表 */ public class PurSuggestRptFromPlugin extends AbstractFormPlugin implements Plugin { private final static Log logger = LogFactory.getLog(PurSuggestRptFromPlugin.class); private static DynamicObject BILLTYPE; private static DynamicObject BILLTYPE1; private static DynamicObject BIZTYPE; private static DynamicObject LINETYPE; static { // 申请单 DynamicObject billtype = BusinessDataServiceHelper.loadSingle("bos_billtype", new QFilter[]{new QFilter("number", QCP.equals, "pm_PurApplyBill_STD_BT_S")}); BILLTYPE = billtype; //订单 DynamicObject billtype1 = BusinessDataServiceHelper.loadSingle("bos_billtype", new QFilter[]{new QFilter("number", QCP.equals, "pm_PurOrderBill_STD_BT_S")}); BILLTYPE1 = billtype1; 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) { logger.info("InvoiceMatchGrayLicenseUpgradePlugin imgray start"); LicenseConfigParseResult imResult = kd.bos.servicehelper.license.LicenseGrayServiceHelper.parseLicenseGrayControlFile("/grayConfig/licenseGrayControl_constellation_PRO_IM.config"); logger.info("InvoiceMatchGrayLicenseUpgradePlugin imgray result : " + imResult.getSuccess());//注意观察返回结果 logger.info("InvoiceMatchGrayLicenseUpgradePlugin imgray result : " + imResult.getMsg());//注意观察返回结果 super.itemClick(evt); String itemKey = evt.getItemKey(); IDataModel model = this.getModel(); DynamicObject dataEntity = model.getDataEntity(true); if ("tqq9_query".equals(itemKey)) { //清除分录数据 DynamicObjectCollection entryentity = dataEntity.getDynamicObjectCollection("tqq9_pursuggestrptentry"); if (entryentity.size() != 0) { entryentity.clear(); } //业务归属查询 QFilter qFilter = new QFilter("number", QCP.in, new String[]{"SHLC", "BJLC", "GZLC", "CDLC"}); DynamicObject[] load = BusinessDataServiceHelper.load("bos_org", "id,number", qFilter.toArray()); Long sh = 0L; Long bj = 0L; Long gz = 0L; Long cd = 0L; for (int i = 0; load != null && i < load.length; i++) { DynamicObject dynamicObject = load[i]; String number = dynamicObject.getString("number"); switch (number) { case "SHLC": sh = dynamicObject.getLong("id"); break; case "BJLC": bj = dynamicObject.getLong("id"); break; case "GZLC": gz = dynamicObject.getLong("id"); break; case "CDLC": cd = dynamicObject.getLong("id"); break; } } DynamicObjectCollection tqq9_queryorg = dataEntity.getDynamicObjectCollection("tqq9_queryorg"); DynamicObjectCollection tqq9_querysku = dataEntity.getDynamicObjectCollection("tqq9_querysku"); List org = new ArrayList<>(); List 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 materialMap = new HashMap(); for (DynamicObject dynamicObject : materials) { materialMap.put(dynamicObject.getLong("id"), dynamicObject); } //商城商品 DynamicObject[] goods = BusinessDataServiceHelper.load("tqq9_goodspackage", "id,number,name,tqq9_brand", null); HashMap goodMap = new HashMap(); for (DynamicObject dynamicObject : goods) { goodMap.put(dynamicObject.getLong("id"), dynamicObject); } //执行采购Map DynamicObject[] operators = BusinessDataServiceHelper.load("bd_operator", "id,operatornumber,operatorname", null); HashMap operatorMap = new HashMap(); for (DynamicObject dynamicObject : operators) { operatorMap.put(dynamicObject.getLong("id"), dynamicObject); } //组织Map DynamicObject[] adminorgs = BusinessDataServiceHelper.load("bos_adminorg", "id,number", null); HashMap adminorgMap = new HashMap(); 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("'"); } DataSet materialpurchaseinfoDataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "bd_materialpurchaseinfo", "id as tqq9_purordermaterial,masterid as tqq9_material ", new QFilter[]{}, null); DynamicObject[] bd_warehouses = BusinessDataServiceHelper.load("bd_warehouse", "id,number,createorg", null); StringBuilder warehouse_sh = new StringBuilder(); StringBuilder warehouse_bj = new StringBuilder(); StringBuilder warehouse_gz = new StringBuilder(); StringBuilder warehouse_cd = new StringBuilder(); String[] array_sh = {"01", "05", "SHZC01", "SHZC02", "SHZC03"}; List list_sh = Arrays.asList(array_sh); String[] array_bj = {"001", "05"}; List list_bj = Arrays.asList(array_bj); String[] array_gz = {"88", "05"}; List list_gz = Arrays.asList(array_gz); String[] array_cd = {"CD88", "05"}; List list_cd = Arrays.asList(array_cd); for (DynamicObject bd_warehouse : bd_warehouses) { String id = bd_warehouse.getString("id"); String number = bd_warehouse.getString("number"); String createorgNumber = bd_warehouse.getString("createorg.number"); if (list_sh.contains(number) && StringUtils.equals("SHLC", createorgNumber)) { warehouse_sh.append(",").append(id); } if (list_bj.contains(number) && StringUtils.equals("BJLC", createorgNumber)) { warehouse_bj.append(",").append(id); } if (list_gz.contains(number) && StringUtils.equals("GZLC", createorgNumber)) { warehouse_gz.append(",").append(id); } if (list_cd.contains(number) && StringUtils.equals("GZLC", createorgNumber)) { warehouse_cd.append(",").append(id); } } //商城商品 String goodspackagesql = "/*dialect*/select fk_tqq9_mater tqq9_material,fk_tqq9_onsale tqq9_onsale_sh,fk_tqq9_onsale_bj tqq9_onsale_bj,fk_tqq9_onsale_gz tqq9_onsale_gz \n" + "from tk_tqq9_goodspackage where fstatus ='C' and fenable='1'"; //物料 String materialpackagesql = "/*dialect*/select material.*,goods.tqq9_onsale_sh,goods.tqq9_onsale_bj,goods.tqq9_onsale_gz,purchaser_sh.tqq9_purchaser_sh,purchaser_bj.tqq9_purchaser_bj,purchaser_gz.tqq9_purchaser_gz from(select m.fid tqq9_material,m.fnumber tqq9_sku_lc,m_pur.fcreateorgid tqq9_org,m_pur.fid tqq9_purordermaterial,m_inv.fid tqq9_materialinventoryinfo from T_BD_Material m,t_bd_materialpurinfo m_pur,t_bd_materialinvinfo m_inv where m.fid=m_pur.fmasterid and m.fid=m_inv.fmasterid and m_pur.fcreateorgid=m_inv.fcreateorgid and m.fenable='1' and m.fstatus='C'and m_pur.fstatus='C' and m_pur.fenable='1') material \n" + "left join (select fk_tqq9_mater tqq9_material,fk_tqq9_onsale tqq9_onsale_sh,fk_tqq9_onsale_bj tqq9_onsale_bj,fk_tqq9_onsale_gz tqq9_onsale_gz from tk_tqq9_goodspackage where fstatus ='C' and fenable='1') goods on material.tqq9_material=goods.tqq9_material\n" + "left join (select m_shcg.fid tqq9_material,STRING_AGG(ftruename ,';') AS tqq9_purchaser_sh FROM tk_tqq9_shcg m_shcg,t_bd_operatorgroupentry operatorgr,t_SEC_User_l Users where m_shcg.fbasedataid=operatorgr.fentryid and operatorgr.foperatorid=Users.fid GROUP BY m_shcg.fid) purchaser_sh on material.tqq9_material=purchaser_sh.tqq9_material\n" + "left join (select m_bjcg.fid tqq9_material,STRING_AGG(ftruename ,';') AS tqq9_purchaser_bj FROM tk_tqq9_bjcg m_bjcg,t_bd_operatorgroupentry operatorgr,t_SEC_User_l Users where m_bjcg.fbasedataid=operatorgr.fentryid and operatorgr.foperatorid=Users.fid GROUP BY m_bjcg.fid) purchaser_bj on material.tqq9_material=purchaser_bj.tqq9_material\n" + "left join (select m_gzcg.fid tqq9_material,STRING_AGG(ftruename ,';') AS tqq9_purchaser_gz FROM tk_tqq9_gzcg m_gzcg,t_bd_operatorgroupentry operatorgr,t_SEC_User_l Users where m_gzcg.fbasedataid=operatorgr.fentryid and operatorgr.foperatorid=Users.fid GROUP BY m_gzcg.fid) purchaser_gz on material.tqq9_material=purchaser_gz.tqq9_material"; //即时库存表 String realbalancesql = "/*dialect*//*dialect*/select '1' tqq9_isauto,fmaterialid tqq9_material,forgid tqq9_org,sum(case when forgid=" + sh + " and fwarehouseid in (" + warehouse_sh.substring(1) + ") then fqty else 0 end) tqq9_shinventory, \n" + "sum(case when forgid=" + bj + " and fwarehouseid in (" + warehouse_bj.substring(1) + ") then fqty else 0 end) tqq9_bjinventory,sum(case when forgid=" + gz + " and fwarehouseid in (" + warehouse_gz.substring(1) + ") then fqty else 0 end) tqq9_gzinventory,\n" + "sum(case when forgid=" + cd + " and fwarehouseid in (" + warehouse_cd.substring(1) + ") then fqty else 0 end) tqq9_cdinventory\n" + "from t_im_inv_realbalance group by fmaterialid,forgid"; //销售出库 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.fmaterialid tqq9_materialinventoryinfo,t1.forgid tqq9_org\n" + "FROM t_im_saloutbill t1,t_im_saloutbillentry t2 WHERE t1.fid = t2.fid AND t1.fbillstatus = 'C'GROUP BY t2.fmaterialid,t1.forgid"; //采购订单 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 " + sh + " tqq9_org, 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 " + bj + " tqq9_org, 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 " + gz + " tqq9_org, 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"; //排名 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;"; //已收货未上架数量 String pendingsql = "/*dialect*/select t2.fmaterialid tqq9_purordermaterial,t1.forgid tqq9_org,sum(t2.fk_tqq9_ckqty) 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"; DataSet materialpackageDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("sys"), materialpackagesql); DataSet goodspackagDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("sys"), goodspackagesql); 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); 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 rangeDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("lc"), rangesql); DataSet pendingSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("scm"), pendingsql); materialpackageDataSet = materialpackageDataSet.leftJoin(realbalanceDataSet).on("tqq9_material", "tqq9_material").on("tqq9_org", "tqq9_org").select("tqq9_material", "tqq9_sku_lc", "tqq9_org", "tqq9_purordermaterial", "tqq9_materialinventoryinfo", "tqq9_onsale_sh", "tqq9_onsale_bj", "tqq9_onsale_gz", "tqq9_purchaser_sh", "tqq9_purchaser_bj", "tqq9_purchaser_gz", "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(); materialpackageDataSet = materialpackageDataSet.leftJoin(saloutbillDataSet).on("tqq9_materialinventoryinfo", "tqq9_materialinventoryinfo").on("tqq9_org", "tqq9_org").select("tqq9_material", "tqq9_sku_lc", "tqq9_org", "tqq9_purordermaterial", "tqq9_materialinventoryinfo", "tqq9_onsale_sh", "tqq9_onsale_bj", "tqq9_onsale_gz", "tqq9_purchaser_sh", "tqq9_purchaser_bj", "tqq9_purchaser_gz", "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(); // pendingSet = pendingSet.leftJoin(materialpurchaseinfoDataSet).on("tqq9_purordermaterial", "tqq9_purordermaterial").select("tqq9_isauto", "tqq9_org", "tqq9_material", "tqq9_pendingqty").finish(); materialpackageDataSet = materialpackageDataSet.leftJoin(purorderbillDataSet).on("tqq9_org", "tqq9_org").on("tqq9_purordermaterial", "tqq9_purordermaterial").select("tqq9_material", "tqq9_sku_lc", "tqq9_org", "tqq9_purordermaterial", "tqq9_materialinventoryinfo", "tqq9_onsale_sh", "tqq9_onsale_bj", "tqq9_onsale_gz", "tqq9_purchaser_sh", "tqq9_purchaser_bj", "tqq9_purchaser_gz", "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"); materialpackageDataSet = materialpackageDataSet.leftJoin(onorder_shDataSet).on("tqq9_sku_lc", "tqq9_sku_lc").on("tqq9_org", "tqq9_org").select("tqq9_material", "tqq9_sku_lc", "tqq9_org", "tqq9_purordermaterial", "tqq9_materialinventoryinfo", "tqq9_onsale_sh", "tqq9_onsale_bj", "tqq9_onsale_gz", "tqq9_purchaser_sh", "tqq9_purchaser_bj", "tqq9_purchaser_gz", "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").on("tqq9_org", "tqq9_org").select("tqq9_material", "tqq9_sku_lc", "tqq9_org", "tqq9_purordermaterial", "tqq9_materialinventoryinfo", "tqq9_onsale_sh", "tqq9_onsale_bj", "tqq9_onsale_gz", "tqq9_purchaser_sh", "tqq9_purchaser_bj", "tqq9_purchaser_gz", "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").on("tqq9_org", "tqq9_org").select("tqq9_material", "tqq9_sku_lc", "tqq9_org", "tqq9_purordermaterial", "tqq9_materialinventoryinfo", "tqq9_onsale_sh", "tqq9_onsale_bj", "tqq9_onsale_gz", "tqq9_purchaser_sh", "tqq9_purchaser_bj", "tqq9_purchaser_gz", "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(); materialpackageDataSet = materialpackageDataSet.leftJoin(rangeDataSet).on("tqq9_sku_lc", "tqq9_sku_lc").select("tqq9_material", "tqq9_sku_lc", "tqq9_org", "tqq9_purordermaterial", "tqq9_materialinventoryinfo", "tqq9_onsale_sh", "tqq9_onsale_bj", "tqq9_onsale_gz", "tqq9_purchaser_sh", "tqq9_purchaser_bj", "tqq9_purchaser_gz", "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"); materialpackageDataSet = materialpackageDataSet.leftJoin(pendingSet).on("tqq9_org", "tqq9_org").on("tqq9_purordermaterial", "tqq9_purordermaterial").select("tqq9_material", "tqq9_sku_lc", "tqq9_org", "tqq9_purordermaterial", "tqq9_materialinventoryinfo", "tqq9_onsale_sh", "tqq9_onsale_bj", "tqq9_onsale_gz", "tqq9_purchaser_sh", "tqq9_purchaser_bj", "tqq9_purchaser_gz", "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", "tqq9_onorderemark", "tqq9_pendingqty").finish(); materialpackageDataSet = materialpackageDataSet.where("1=1" + ((!tqq9_queryorg.isEmpty()) ? " and tqq9_org in(" + orgBuilder.substring(1) + ")" : "") + ((!tqq9_querysku.isEmpty()) ? " and tqq9_material in(" + skuBuilder.substring(1) + ")" : "")); DataSet copy1 = materialpackageDataSet.copy(); DynamicObjectCollection dynamicObjects = ORM.create().toPlainDynamicObjectCollection(copy1); int size = dynamicObjects.size(); String sizeStr = String.valueOf(size); Iterator iterator = dynamicObjects.iterator(); while (iterator.hasNext()) { DynamicObject next = iterator.next(); DynamicObject entry = new DynamicObject(entryentity.getDynamicObjectType()); DynamicObject tqq9_material = materialMap.get(next.getLong("tqq9_material")); DynamicObject tqq9_org = adminorgMap.get(next.getLong("tqq9_org")); entry.set("tqq9_material", tqq9_material);//物料 entry.set("tqq9_skuname", tqq9_material.getString("name"));//名称 entry.set("tqq9_skubrand", tqq9_material.getDynamicObject("tqq9_brand"));//品牌 entry.set("tqq9_unit", tqq9_material.getDynamicObject("baseunit"));//基本单位 entry.set("tqq9_org", tqq9_org);//业务归属(组织) 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"));//成都库存 if (StringUtils.equals("SHLC", tqq9_org.getString("number"))) { entry.set("tqq9_warename", "上海仓库");//仓库名称 entry.set("tqq9_purchasertext", next.getString("tqq9_purchaser_sh"));//执行采购 entry.set("tqq9_onsale", next.get("tqq9_onsale_sh"));//上下架 } else if (StringUtils.equals("BJLC", tqq9_org.getString("number"))) { entry.set("tqq9_warename", "北京仓库");//仓库名称 entry.set("tqq9_purchasertext", next.getString("tqq9_purchaser_bj"));//执行采购 entry.set("tqq9_onsale", next.get("tqq9_onsale_bj"));//上下架 } else if (StringUtils.equals("GZLC", tqq9_org.getString("number"))) { entry.set("tqq9_warename", "广州仓库");//仓库名称 entry.set("tqq9_purchasertext", next.getString("tqq9_purchaser_gz"));//执行采购 entry.set("tqq9_onsale", next.get("tqq9_onsale_gz"));//上下架 } else if (StringUtils.equals("CDLC", tqq9_org.getString("number"))) { entry.set("tqq9_warename", "成都仓库");//仓库名称 } entry.set("tqq9_totalinventory", next.get("tqq9_totalinventory"));//总仓库存 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"));//预计销售时间(成都) if(next.getBigDecimal("tqq9_saledates").compareTo(BigDecimal.ZERO)==0){ entry.set("tqq9_saledates", -1);//预计销售时间 }else{ entry.set("tqq9_saledates", next.get("tqq9_saledates"));//预计销售时间 } entry.set("tqq9_remark", next.get("tqq9_remark"));//备货状态 entry.set("tqq9_safeinventory", next.get("tqq9_safeinventory"));//安全库存 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"));//成都在途库存 entry.set("tqq9_oninventory", next.get("tqq9_oninventory"));//在途库存 entry.set("tqq9_suppleinventory", next.get("tqq9_suppleinventory"));//待补库存 entry.set("tqq9_pendingqty", next.get("tqq9_pendingqty"));//待补库存 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"));//广州占单库存 entry.set("tqq9_onorderemark", next.get("tqq9_onorderemark"));//占单库存备注 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"));// 排名 entryentity.add(entry); } dataEntity.set("tqq9_pursuggestrptentry", entryentity); dataEntity.set("tqq9_queryqty", sizeStr); this.getView().updateView(); } else if (StringUtils.equals("tqq9_purapply", itemKey)) { DynamicObjectCollection tqq9_pursuggestrptentry = dataEntity.getDynamicObjectCollection("tqq9_pursuggestrptentry"); DynamicObject dynamicObject = tqq9_pursuggestrptentry.get(0); DynamicObject tqq9_org = dynamicObject.getDynamicObject("tqq9_org"); if (tqq9_org == null) { this.getView().showMessage("请先进行查询操作"); return; } 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); } else if (StringUtils.equals("tqq9_pushcgdd", itemKey)) { DynamicObjectCollection tqq9_pursuggestrptentry = dataEntity.getDynamicObjectCollection("tqq9_pursuggestrptentry"); DynamicObject dynamicObject = tqq9_pursuggestrptentry.get(0); DynamicObject tqq9_org = dynamicObject.getDynamicObject("tqq9_org"); if (tqq9_org == null) { this.getView().showMessage("请先进行查询操作"); return; } 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); } } }