为了账号安全,请及时绑定邮箱和手机立即绑定

机器实际产能

标签:
SQL Server

公式:(机器实际上班时间 - 停机时间) / 机器实际加工时间 * 标准夹具数

代码

CREATE FUNCTION [dbo].[udf_ActualCapacity]
(
    @MachineId SMALLINT,
    @OperatorDate DATETIME 
)
RETURNS decimal(18,6) 
AS
 BEGIN
    DECLARE @ReturnValue DECIMAL(18,6)
    
    --取得机器实际上班时间
    DECLARE @WorkTime DECIMAL(18,6)
    SELECT @WorkTime  = (SELECT SUM([WorkTime]) FROM [dbo].[udf_WorkTicketData_1]() WHERE [MachineId] = @MachineId AND [OperatorDate] = @OperatorDate)
    
    --取得机器停机时间
    DECLARE @MachineHaltTime DECIMAL(18,6)
    SELECT @MachineHaltTime = (SELECT SUM([MachineHaltTime]) FROM [dbo].[udf_WorkTicketData_1]() WHERE [MachineId] = @MachineId AND [OperatorDate] = @OperatorDate) 
    
    --计算机器运作时间
    DECLARE @RealWorkTime DECIMAL(18,6)
    SELECT @RealWorkTime = (ISNULL(@WorkTime,0) * 3600 - ISNULL(@MachineHaltTime,0) * 60)
    
    --机器实际加工时间    
    DECLARE @ProcessTime DECIMAL(18,6)
    SELECT @ProcessTime = (SELECT (AVG(ISNULL([ProcessTime],0))) FROM dbo.udf_WorkTicketData_1() WHERE [MachineId] = @MachineId AND [OperatorDate] = @OperatorDate)
    
    --从机器参数表,取得机器的标准夹具数
    DECLARE @StandJigNumber TINYINT
    SELECT @StandJigNumber = (SELECT [JigNumber] FROM [MachineParameter] WHERE [MachineId] = @MachineId AND  (YEAR([MonthName])= YEAR(@OperatorDate)) AND (MONTH([MonthName]) = MONTH(@OperatorDate)))
    
    --计算机器实际产能
    SELECT @ReturnValue=(CASE WHEN @ProcessTime = 0 THEN NULL  WHEN @ProcessTime IS NULL THEN NULL  WHEN @ProcessTime <> 0 THEN ((ISNULL(@RealWorkTime,0) / @ProcessTime) * ISNULL(@StandJigNumber,0)) END)
    RETURN @ReturnValue
 END 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消