Exemplo n.º 1
0
        internal static void WriteStayHourHist(FabLot lot)
        {
            if (lot.QtimeInfo == null)
            {
                return;
            }

            DateTime planEndTime = ModelContext.Current.EndTime;

            foreach (StayHour item in lot.QtimeInfo.List)
            {
                if (item.FromStepOutTime == DateTime.MinValue)
                {
                    continue;
                }

                if (IsTraverseStep(item, lot) == false)
                {
                    continue;
                }

                Outputs.QTimeHistory row = new QTimeHistory();

                row.VERSION_NO = ModelContext.Current.VersionNo;
                row.FACTORY_ID = item.FatoryID;

                row.LOT_ID     = lot.LotID;
                row.PRODUCT_ID = lot.CurrentProductID;

                row.Q_TYPE = item.QType.ToString();

                row.FROM_SHOP_ID    = item.FromStep.ShopID;
                row.FROM_PROCESS_ID = item.FromStep.ProcessID;
                row.FROM_STEP_ID    = item.FromStep.StepID;

                row.TO_SHOP_ID    = item.ToStep.ShopID;
                row.TO_PROCESS_ID = item.ToStep.ProcessID;
                row.TO_STEP_ID    = item.ToStep.StepID;

                row.FROM_STEP_OUT_TIME = item.FromStepOutTime.DbNullDateTime();
                row.TO_STEP_IN_TIME    = item.ToStepInTime.DbNullDateTime();

                row.Q_TIME = item.QTime.TotalMinutes;

                DateTime lastStateTime = item.ToStepInTime.IsMinValue() ? planEndTime : item.ToStepInTime;

                var stayTime = (lastStateTime - item.FromStepOutTime).TotalMinutes;

                row.STAY_TIME = LcdHelper.ToRound(stayTime, 3);

                row.ISSUE = "N";
                if (item.QType == QTimeType.MAX)
                {
                    if (stayTime > item.QTime.TotalMinutes)
                    {
                        row.ISSUE = "Y";
                    }
                }
                else if (item.QType == QTimeType.MIN)
                {
                    if (item.ToStepInTime.IsMinValue() == false)
                    {
                        if (stayTime < item.QTime.TotalMinutes)
                        {
                            row.ISSUE = "Y";
                        }
                    }
                }

                OutputMart.Instance.QTimeHistory.Add(row);
            }
        }