按树型显示BOM的结构
2016-04-28 15:56
495 查看
在制造企业中,生产的每一个产品都由一道或多道工序组成,在组成成品之前,每一道工序经由物料--物料组成半成品,或物料--半成品组成新的半成品,亦或由半成品--半成品组成新的半成品。复杂的成品经由多道工序最终形成。在这一过程中,某一物料或半成品可能出现在多道工序这中。而每一道工序又涉及损耗(包括调机损耗和加工损耗等)等一系列问题都是需要在实际的生产系统中考虑到。在从事ERP与MES开发多年,目前系统设计的结构已满足了这些方方面的要求。今天,趁着闲暇的时候记录一下,一来是自己对整个结构做一个回顾,另一方面也希望给新人一丁点启发。
首先,我们的BOM结构主要分为三层。其基本表是 Bom, BomDTL, BomDTL2
其各表的关键字如下图:
View Code
首先,我们的BOM结构主要分为三层。其基本表是 Bom, BomDTL, BomDTL2
其各表的关键字如下图:
ALTER PROCEDURE [dbo].[frmBomMap_List] @sknum1 VARCHAR(50), @sknum2 VARCHAR(50) AS CREATE TABLE #TEMP (TOPLEVEL VARCHAR(50) COLLATE Chinese_PRC_BIN, Ancestor VARCHAR(50) COLLATE Chinese_PRC_BIN, ProNum VARCHAR(50) COLLATE Chinese_PRC_BIN, [SETS] INT, QTY FLOAT, BOMLEVEL INT) SELECT TOPLEVEL=Ancestor,Ancestor='Root',ProNum=Ancestor,Ver INTO #t1 FROM dbo.Bom WHERE DrawNum between @sknum1 AND @sknum2 AND IsEffect=1 --AND IsOrigin=1 -- 非原型也要取 IF (SELECT COUNT(1) FROM #t1) >200 BEGIN RAISERROR('数据过多,请缩小设计卡的范围',11,-1) RETURN END SELECT * INTO #t2 FROM #t1 declare @ancestor varchar(50),@version VARCHAR(5) while (select count(*) from #t1)>0 BEGIN select TOP 1 @ancestor=TOPLEVEL,@version=Ver FROM #t1 delete #t1 where TOPLEVEL=@ancestor AND Ver=@version ;WITH BOMList(TOPLEVEL, Ancestor, ProNum,[SETS], QTY,BOMLEVEL) AS ( SELECT TOPLEVEL=Ancestor, Ancestor,ProNum,Sets, Qty AS QTY, 0 AS BOMLEVEL -- Sets*Qty AS QTY FROM dbo.BomDTL2 WHERE Ancestor=@ancestor AND Ver=@version UNION ALL SELECT TOPLEVEL, B2.Ancestor, B2.ProNum, B2.Sets,B2.Qty AS QTY,BOMLEVEL + 1 FROM BomDTL2 B2, BOMList BB WHERE B2.Ancestor=BB.ProNum ) INSERT #TEMP SELECT TOPLEVEL, Ancestor, ProNum,[SETS],QTY,BOMLEVEL FROM BOMList END --delete #TEMP where ProNum in (select Ancestor from #TEMP) SELECT DISTINCT #TEMP.*,p.ProType FROM #TEMP,dbo.Product p WHERE #TEMP.ProNum = p.ProNum UNION ALL SELECT TOPLEVEL,Ancestor,ProNum,1,1,-1,'02' FROM #t2 -- 02是成品 ORDER BY TOPLEVEL ASC,BOMLEVEL ASC,ProType DESC,ProNum ASC DROP TABLE #t1,#t2,#TEMP
View Code
相关文章推荐
- 图片溢出div问题的快速解决方法推荐
- 关于block的总结,欢迎大家补充
- cmd执行Java源码需要注意的一些地方
- 七周七种前端框架四:Vue.js 组件和组件通信
- Ubuntu下安装配置Android SDK
- 【USACO】Mixing Milk 混合牛奶
- JSON
- Android Volley完全解析(一),初识Volley的基本用法
- 配置VirtualBox共享文件夹
- 自定义RadioGrop,支持添加包裹着的RadioButton
- JavaPersistenceWithMyBatis3笔记-第5章Configuring MyBatis in a Spring applications-001
- 深入理解Java之线程池(下)
- Error:Execution failed for task ':app:transformClassesWithDexForUmengDebug'.
- 值得推荐的android开源框架
- 编译LAPACK 3.6.0
- 深入理解Java之线程池(中)
- bzoj 3295: [Cqoi2011]动态逆序对(树套树)
- 10分钟让你有胆量在众人前演讲(1)
- 341. Flatten Nested List Iterator
- 如何让Sublime2中支持Markdown