zoukankan      html  css  js  c++  java
  • OEE计算

    记录一下~   你们应该用不到~

     1 --当一个班次时间内同时加工多种产品时,生产节拍=(零件1节拍*班次内零件1设备实际产量+零件2节拍*班次内零件2设备实际产量+...+)/(班次内零件1设备实际产量+班次内零件2设备实际产量+...+)
     2 with
     3 --1、依据公式计算各个零件实际产量及(零件节拍*班次内零件设备实际产量)值
     4 beatInternal as (
     5                 select 
     6                                 c.machineid , 
     7                                 c.MachineCode,
     8                                 c.ShiftDay, 
     9                                 c.MachinesShiftDetailId,
    10                                 c.Yield as RealYield,
    11                                 c.Yield * mb.Beat as  TotalTime
    12                 from (
    13                         select            --班次内各产品产量计算
    14                                         c.machineid , 
    15                                         c.MachineCode,
    16                                         c.ShiftDetail_ShiftDay as ShiftDay, 
    17                                         c.MachinesShiftDetailId,
    18                                         c.ProductId,
    19                                         sum(c.Yield) as Yield 
    20                         from Capacities as c 
    21                         group by c.MachineId,c.MachineCode,c.ShiftDetail_ShiftDay,c.MachinesShiftDetailId,c.ProductId
    22                 ) as c    
    23                     join Products as p on c.ProductId = p.Id
    24                     join MachineBeats as mb on (p.Code = mb.ProductNumber and mb.MachineId = c.MachineId)
    25 ),
    26 --2、依据公式计算班次内 各设备生产节拍
    27 beat as(
    28                 select 
    29                                                         b.machineid , 
    30                                                         b.MachineCode,
    31                                                         b.ShiftDay, 
    32                                                         b.MachinesShiftDetailId,
    33                                                         sum(b.TotalTime ) / sum(b.RealYield) as mbeat  --设备生产节拍
    34                 from beatInternal as b
    35                 group by b.MachineId,b.MachineCode,b.ShiftDay,b.MachinesShiftDetailId
    36 ),
    37 --3、计算班次内设备运行时间
    38 realTime AS (
    39                                 select machineid, 
    40                                     MachineCode,
    41                                     ShiftDetail_ShiftDay as ShiftDay,
    42                                     MachinesShiftDetailId,  
    43                                     sum(case code when 'Run' then Duration else 0 end) as Duration 
    44                                 from states 
    45                                 where  machineid in (1)
    46                                     and ShiftDetail_ShiftDay between  '' and ''
    47                                 group by machineid ,MachineCode,ShiftDetail_ShiftDay,MachinesShiftDetailId
    48             ),
    49 --4、计算班次内设备实际产量
    50 realCapacity as (
    51                         select 
    52                                         c.machineid , 
    53                                         c.MachineCode,
    54                                         c.ShiftDetail_ShiftDay as ShiftDay, 
    55                                         c.MachinesShiftDetailId,
    56                                         sum(c.Yield) as Yield 
    57                         from Capacities as c 
    58                         group by c.MachineId,c.MachineCode,c.ShiftDetail_ShiftDay,c.MachinesShiftDetailId
    59 ),
    60 --5、依据公式计算班次内设备计划产量
    61 planCapacity as(
    62                         select 
    63                             b.machineid, 
    64                             b.MachineCode,
    65                             b.ShiftDay,
    66                             b.MachinesShiftDetailId,  
    67                             r.Duration / b.mbeat as planCount  
    68                         from beat as b
    69                             join realTime as r on (b.MachineId= r.MachineId and b.ShiftDay = r.ShiftDay and b.MachinesShiftDetailId = r.MachinesShiftDetailId)
    70 )
    71 --最后计算班次内各设备性能运转率   =实际产量/计划产量
    72 select    
    73     rc.machineid, 
    74     rc.MachineCode,
    75     rc.ShiftDay,
    76     rc.MachinesShiftDetailId,  
    77     rc.Yield / pc.planCount as PerformanceRate  
    78 from realCapacity as rc
    79     join planCapacity as pc on (rc.MachineId = pc.MachineId and rc.ShiftDay = pc.ShiftDay and rc.MachinesShiftDetailId = pc.MachinesShiftDetailId)
    --性能指标
    with 
    realCapacity as(
                    select 
                        shifts.DeviceGroupId,
                        sc.ShiftDay, 
                        sc.MachineShiftDetailId ,
                        shifts.planId,
                        shifts.ProductId,
                        SUM(ISNULL(mmc.[Count],0)) as realedcapacity
                    from   (
                             select 
                                p.DeviceGroupId, 
                                s.ShiftDay , 
                                s.MachineShiftDetailId as MachinesShiftDetailId,
                                p.id as planId,
                                p.ProductId
                             from ProcessPlans as p 
                                                    join MachineDeviceGroups as mdg on p.DeviceGroupId = mdg.DeviceGroupId 
                                                    join (
                                                        select msd.ShiftDay,ssi.Name as ShiftName, msd.id as MachineShiftDetailId,msd.MachineId  from 
                                                        MachinesShiftDetails as msd 
                                                        join ShiftSolutionItems as ssi on msd.ShiftSolutionItemId = ssi.Id
                                                    ) s on (mdg.MachineId = s.MachineId and p.ShiftDay = s.ShiftDay and p.ShiftName = s.ShiftName)
                                                    where mdg.MachineId in (2541) and mdg.DeviceGroupId in (180) and p.ShiftDay between '2021-01-22' AND '2021-01-22'  
                                                    group by p.DeviceGroupId,s.ShiftDay,s.MachineShiftDetailId,p.id,p.ProductId
                    ) as shifts 
                    join ShiftCalendars as sc on sc.MachineShiftDetailId = shifts.MachinesShiftDetailId 
                    left join MarkingMachineCapacities as mmc
                    on (mmc.ProcessPlanId = shifts.planId and  
                        mmc.CreationTime BETWEEN sc.StartTime AND sc.EndTime
                    )
                    group by shifts.DeviceGroupId, sc.ShiftDay, sc.MachineShiftDetailId ,shifts.planId, shifts.ProductId
    ),
    beatInternal as (
                select 
                        p.DeviceGroupId, 
                        s.ShiftDay , 
                        s.MachineShiftDetailId as MachinesShiftDetailId,
                        p.id as planId,
                        p.ProductId,
                        p.PlanAmount,
                        b.DeviceGroupBeat * p.PlanAmount as TotalTime
                     from ProcessPlans as p 
                                            join MachineDeviceGroups as mdg on p.DeviceGroupId = mdg.DeviceGroupId 
                                            join (
                                                select msd.ShiftDay,ssi.Name as ShiftName, msd.id as MachineShiftDetailId,msd.MachineId  from 
                                                MachinesShiftDetails as msd 
                                                join ShiftSolutionItems as ssi on msd.ShiftSolutionItemId = ssi.Id
                                            ) s on (mdg.MachineId = s.MachineId and p.ShiftDay = s.ShiftDay and p.ShiftName = s.ShiftName)
                                            join Products as pr on p.ProductId = pr.id
                                            join beats as b on (b.DeviceGroupId = p.DeviceGroupId and b.ProductNumber = pr.Code)
                                            where mdg.MachineId in (2541) and mdg.DeviceGroupId in (180) and p.ShiftDay between '2021-01-22' AND '2021-01-22'  
                                            group by p.DeviceGroupId,s.ShiftDay,s.MachineShiftDetailId,p.id,p.ProductId ,p.PlanAmount,b.DeviceGroupBeat
    ),
    --产线同时加工多种产品时,生产节拍=(零件1节拍*班次内零件1计划产量+零件2节拍*班次内零件2计划产量。。。)/(班次内零件1计划产量+班次内零件2计划产量。。。)
    beat as(
                    select 
                                                            bi.DeviceGroupId, 
                                                            bi.ShiftDay, 
                                                            bi.MachinesShiftDetailId,
                                                            iif(sum(bi.PlanAmount) = 0, 0,sum(bi.TotalTime ) / sum(bi.PlanAmount))  as dBeat  --产线生产节拍
                    from beatInternal as bi
                    group by bi.DeviceGroupId,bi.ShiftDay,bi.MachinesShiftDetailId
    ),
    planedCapcity as (
                    select 
                        bi.DeviceGroupId,
                        bi.ShiftDay,
                        bi.MachinesShiftDetailId, 
                        iif(bi.dBeat = 0, 0,DATEDIFF(SECOND,sc.StartTime,sc.EndTime) / bi.dBeat) as planedCapacity
                    from beat as bi 
                        join ShiftCalendars as sc on bi.MachinesShiftDetailId = sc.MachineShiftDetailId
    )
    select 
        rc.DeviceGroupId as DimensionsId,
        dg.DisplayName as DimensionsName,
    CONVERT(varchar(100), sc.MachineShiftDetailName, 23) as ShiftDay,sc.ShiftItemName as ShiftName, 
        rc.MachineShiftDetailId as MachinesShiftDetailId, 
        sum(rc.realedcapacity) as RealCapacity,
        sum(pc.planedCapacity) as PlanCapacity,
        sum(rc.realedcapacity) * 1.0 / sum( pc.planedCapacity) as Rate
    from (
        select DeviceGroupId,ShiftDay,MachineShiftDetailId, sum(realedcapacity) as realedcapacity from realCapacity group by DeviceGroupId,ShiftDay,MachineShiftDetailId
    ) as rc
    join ShiftCalendarsView as sc on rc.MachineShiftDetailId = sc.MachineShiftDetailId
    join DeviceGroups as dg on rc.DeviceGroupId = dg.Id
    join planedCapcity as pc on (rc.DeviceGroupId  =pc.DeviceGroupId and rc.ShiftDay = pc.ShiftDay and rc.MachineShiftDetailId  = pc.MachinesShiftDetailId)
    group by rc.DeviceGroupId,dg.DisplayName,rc.ShiftDay,rc.MachineShiftDetailId ,sc.MachineShiftDetailName,sc.ShiftItemName
    
    go
    ----质量指数 
    with 
    dgPlan as (
                            select 
                                p.DeviceGroupId, 
                                s.ShiftDay , 
                                max(s.MachineShiftDetailId) as MachinesShiftDetailId,   --取产线对应的首个设备班次 
                                p.id as planId
                             from ProcessPlans as p 
                                                    join MachineDeviceGroups as mdg on p.DeviceGroupId = mdg.DeviceGroupId 
                                                    join (
                                                        select msd.ShiftDay,ssi.Name as ShiftName, msd.id as MachineShiftDetailId,msd.MachineId  from 
                                                        MachinesShiftDetails as msd 
                                                        join ShiftSolutionItems as ssi on msd.ShiftSolutionItemId = ssi.Id
                                                    ) s on (mdg.MachineId = s.MachineId and p.ShiftDay = s.ShiftDay and p.ShiftName = s.ShiftName)
                                                    where p.DeviceGroupId in(180) and p.ShiftDay between  '2021-01-22' AND '2021-01-22'  
                                                    group by p.DeviceGroupId,s.ShiftDay,p.id
    )
    select 
                                p.DeviceGroupId as DimensionsId, 
                                dg.DisplayName as DimensionsName,
                                p.ShiftDay , 
                                sc.MachineShiftDetailName,
                                p.MachinesShiftDetailId,
                                sum(c.productCount + c.DefectiveCount) as TotalCount, 
                                sum(c.QualifiedCount) as QualifiedCount 
    from dgPlan as p
    join ShiftCalendarsView as sc on p.MachinesShiftDetailId = sc.MachineShiftDetailId
    join DeviceGroups as dg on p.DeviceGroupId = dg.id
    join CapacityReportResults as c on p.planId = c.ProcessPlanId
    group by p.DeviceGroupId,dg.DisplayName, p.ShiftDay, p.MachinesShiftDetailId,sc.MachineShiftDetailName
    Newd

    版权声明

    作者:扶我起来我还要敲

    地址:https://www.cnblogs.com/Newd/p/13731984.html

    © Newd 尊重知识产权,引用请注出处

    广告位

    (虚位以待,如有需要请私信)

  • 相关阅读:
    MFC调用C动态库函数-----待补充
    硬盘知识总结:
    Android 四:区分刷机与root
    总结:Linux系统启动流程
    Android 三:手机adb 命令解锁
    UVa11136 Hoax or what
    UVa11988 Broken Keyboard (a.k.a. Beiju Text)
    UVa11280 Flying to Fredericton
    UVa10269 Adventure of Super Mario
    UVa12589 Learning Vector
  • 原文地址:https://www.cnblogs.com/Newd/p/13731984.html
Copyright © 2011-2022 走看看