易飞8无销售报价的BOM成本参考

ALTER PROCEDURE [dbo].[SP_BOM_EXPAND] (@ITEMNO VARCHAR(80))
AS   
BEGIN
    --BOM展阶 
 --@ITEMNO:查询品号
 --返回:元件品号V1001,主件品号V1002,阶码V1004,阶层次V1005,尾阶标志V1006,展开标志V1007,组成用量V1011,底数V1012,损耗率%V1013,价格%V1014
 DECLARE @ITEM_CHILD VARCHAR(80), @ITEM_EXPAND VARCHAR(80), @ITEM_LEVELNO INT, @COUNT INT
 DECLARE @BATCH_NUMBER NUMERIC(18,6)
 DECLARE @JE NUMERIC(18,6)
DECLARE @JE2 NUMERIC(18,6)
DECLARE @PH VARCHAR(80)
DECLARE @SX VARCHAR(2)
DECLARE @rq varchar(8)
 CREATE TABLE  #VIEW1 (V1001 VARCHAR(80),VRQ VARCHAR(8), V1002 VARCHAR(80), V1004 VARCHAR(80) DEFAULT '', V1005 INT DEFAULT 0, V1006 CHAR(1) DEFAULT '0', V1007 CHAR(1) DEFAULT '0'
 , V1011 NUMERIC(18,6) DEFAULT 0, V1012 NUMERIC(18,6) DEFAULT 0, V1013 NUMERIC(18,6) DEFAULT 0,V1014 NUMERIC(18,6) DEFAULT 0) 


 SELECT @ITEM_LEVELNO = 1   --当前阶层为1


 INSERT INTO #VIEW1 (V1001, V1002, V1004, V1005, V1011, V1012, V1013,V1014)
 SELECT MD003, @ITEMNO, MD002, 1, MD006 , MD007*MC004, MD008,0 FROM BOMMC, BOMMD WHERE BOMMC.MC001 = BOMMD.MD001 AND MC001 = @ITEMNO
  --找一下输入参数的品号有没有相关的BOM单身档,看一下第一层
--select * from #VIEW1


 DECLARE BOMEXPAND CURSOR FOR SELECT V1001, V1004, V1005, V1011/V1012 FROM #VIEW1 WHERE V1007 = '0' FOR UPDATE   
--建立第一层的游标,同时这个游标是可以更新的一个临时表扫描
    OPEN BOMEXPAND  /* 打开游标 */ 
 FETCH NEXT FROM BOMEXPAND INTO @ITEM_CHILD, @ITEM_EXPAND, @ITEM_LEVELNO, @BATCH_NUMBER
 WHILE @@FETCH_STATUS = 0   /* 用WHILE循环控制游标活动*/ 
 BEGIN
     --SELECT @ITEM_LEVELNO, @ITEM_CHILD, @ITEM_EXPAND
SET @SX=(SELECT MB025 FROM INVMB WHERE MB001=@ITEM_CHILD)
if(@SX='P')
begin
SET @JE=(select TOP 1 TH018 FROM PURTH WHERE TH004=@ITEM_CHILD ORDER BY TH014 DESC)
Set @rq=(select top 1 TH014 FROM PURTH WHERE TH004=@ITEM_CHILD ORDER BY TH014 DESC)
--SET @JE=(select TOP 1 LA012 FROM INVLA WHERE LA001=@ITEM_CHILD ORDER BY LA004 DESC)
--set @rq=(select top 1 LA004 FROM INVLA  WHERE LA001=@ITEM_CHILD ORDER BY LA004 DESC)
END
ELSE IF(@SX='S')
SET @JE=(select TOP 1 TA022 from MOCTA where TA006=@ITEM_CHILD order by  TA003 DESC)
ELSE IF(@SX='M' OR @SX='Y' OR @SX='C')
-- SET @JE=0
if(@ITEM_LEVELNO=1)
set @JE=(select TOP 1 LB012+LB013 
from INVLB 
WHERE LB012<>0 AND LB013 <>0 and LB001=@ITEM_CHILD ORDER BY LB002 DESC)
else 
SET @JE=0



UPDATE #VIEW1 SET V1007 = '1' WHERE CURRENT OF BOMEXPAND --将第一层的展开标致为1,更新了游标锁定的表


SET @JE2=(SELECT MB057 FROM INVMB WHERE MB001=@ITEM_CHILD)
set @JE=ISNULL(@JE,0)
IF(@JE=0 AND @SX='P')
UPDATE #VIEW1 SET V1014=@JE2,VRQ='' WHERE CURRENT OF BOMEXPAND
ELSE
begin
UPDATE #VIEW1 SET V1014=@JE,VRQ=@rq where CURRENT OF BOMEXPAND
--UPDATE #VIEW1 SET Vrq=@rq where CURRENT OF BOMEXPAND
end
SELECT @COUNT = COUNT(*) FROM BOMMC, BOMMD WHERE BOMMC.MC001 = BOMMD.MD001 AND MC001 = @ITEM_CHILD  --统计一下BOMMD单身档里有多少条
IF @COUNT = 0 
UPDATE #VIEW1 SET V1006 = '1' WHERE CURRENT OF BOMEXPAND   --如果没有了,则当前一阶即为尾阶,更新了游标锁定的表
ELSE
BEGIN
INSERT INTO #VIEW1 (V1001, V1002, V1004, V1005, V1011, V1012, V1013)
SELECT MD003, @ITEM_CHILD, @ITEM_EXPAND + '.' + MD002, @ITEM_LEVELNO + 1, MD006 * @BATCH_NUMBER, MD007*MC004, MD008 FROM BOMMC, BOMMD WHERE BOMMC.MC001 = BOMMD.MD001 AND MC001 = @ITEM_CHILD
--插入当前扫描的行的子项进入到表里去,同时因为游标有了FOR UPDATE,还会进入循环


--SET @JE=(select TOP 1 TH018 FROM PURTH WHERE TH004=@ITEM_CHILD ORDER BY TH014 DESC)
--UPDATE #VIEW1 SET V1014=@JE WHERE V1001=@ITEM_CHILD
END
FETCH NEXT FROM BOMEXPAND INTO @ITEM_CHILD, @ITEM_EXPAND, @ITEM_LEVELNO, @BATCH_NUMBER /* 在循环体内将读取其余行数据 */
 END
 CLOSE BOMEXPAND   /* 关闭游标 */ 
 DEALLOCATE BOMEXPAND   /* 删除游标 */ 
--SELECT * FROM #VIEW1
--
--UNION
  SELECT space(V1005*1)+'.'+cast(V1005  as varchar)  as 阶层,V1002 as 主件品号,V1001 as 元件品号,case when MB025='P' THEN '采购件'
                                                               when MB025='M' THEN '自制件'
                                                               when MB025='S' THEN '委外加工件'
                                                               when MB025='Y' THEN '虚设件'
                                                               else '配置件'END AS  品号属性,VRQ AS '采购日期',
         MB002 品名,MB003 规格,MB004 as 单位,V1011 as 组成用量,V1012 as 底数,V1013 as 损耗率,V1011/V1012*(1+V1013) as 总用量,V1014 AS 单价, V1011/V1012*(1+V1013)*V1014 AS 总价 FROM #VIEW1 INNER JOIN  INVMB ON V1001=MB001
--union all
--select '',  '', '', '' , '' ,'',  '', '', '' , NULL ,NULL,NULL, SUM(V1011/V1012*(1+V1013)*V1014)  from #VIEW1
ORDER BY V1004


SELECT @ITEMNO 主件品号, SUM(V1011/V1012*(1+V1013)*V1014) as 合计材料进价 FROM #VIEW1







END
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值