Example #1
0
        //public StartEndTime ForwardCalculateNextDeliveryForSpecificWorkCalendar(WorkingCalendar nStart, DateTime currentOrderTime, FlowMaster matchFlow, Entity.SCM.FlowStrategy matchStrategy)
        //{
        //    //首先算出当前的交货时段
        //    StartEndTime startEndTime = new StartEndTime(DateTime.Parse("1900-01-01 00:00:00"), DateTime.Parse("2999-1-1 00:00:00"));
        //    string sysTime = systemMgr.GetEntityPreferenceValue(EntityPreference.CodeEnum.StandardWorkTime);
        //    for (int k = 0; k < 2; k++)
        //    {
        //        if (nStart != null)
        //        {
        //            IList<FlowShiftDetail> flowShiftDetailList = this.genericMgr.FindAll<FlowShiftDetail>("from FlowShiftDetail where Flow = ? and Shift = ? Order by Sequence asc",
        //                 new object[] { matchFlow.Code, nStart.Shift });
        //            if (flowShiftDetailList != null)
        //            {
        //                int currentOrderTimeIndex = -1;
        //                for (int i = 0; i < flowShiftDetailList.Count; i++)
        //                {
        //                    ShiftDetail sd = this.genericMgr.FindAll<ShiftDetail>("from ShiftDetail where Id = ?",
        //                        new object[] { flowShiftDetailList[i].ShiftDetailId }).SingleOrDefault();

        //                    DateTime startTime = KanbanUtility.ConvertDateTimeFromWorkDateAndShiftTime(nStart.WorkingDate, flowShiftDetailList[i].StartTime, sysTime);
        //                    DateTime endTime = KanbanUtility.ConvertDateTimeFromWorkDateAndShiftTime(nStart.WorkingDate, flowShiftDetailList[i].EndTime, sysTime);

        //                    if (currentOrderTime < startTime || (currentOrderTime > startTime && currentOrderTime < endTime))
        //                    {
        //                        currentOrderTimeIndex = i;
        //                        startEndTime = RecursiveForwardCalculateNextDeliveryForSpecificWorkCalendar(nStart, currentOrderTimeIndex, matchFlow.Code, (int)(matchStrategy.LeadTime));
        //                        break;
        //                    }
        //                }
        //                if (!KanbanUtility.IsMinAndMaxDateTime(startEndTime.StartTime, startEndTime.EndTime))
        //                {
        //                    break;
        //                }
        //                nStart = genericMgr.FindAll<WorkingCalendar>("from WorkingCalendar  where Type = ? and WorkingDate > ? and Region = ? and FlowStrategy = ?", new object[] { (int)com.Sconit.CodeMaster.WorkingCalendarType.Work, nStart.WorkingDate, matchFlow.PartyTo, CodeMaster.FlowStrategy.KB }).OrderBy(p => p.WorkingDate).FirstOrDefault();
        //            }
        //        }
        //    }
        //    return startEndTime;

        //}

        //private StartEndTime RecursiveForwardCalculateNextDeliveryForSpecificWorkCalendar(WorkingCalendar nStart, int startIndex, string flow, int leftN)
        //{
        //    string sysTime = systemMgr.GetEntityPreferenceValue(EntityPreference.CodeEnum.StandardWorkTime);
        //    IList<FlowShiftDetail> flowShiftDetail = this.genericMgr.FindAll<FlowShiftDetail>("from FlowShiftDetail where Flow = ? and Shift = ? Order by Sequence",
        //         new object[] { flow, nStart.Shift });

        //    if (flowShiftDetail == null)
        //    {
        //        return new StartEndTime(DateTime.Parse("1900-01-01 00:00:00"), DateTime.Parse("2999-1-1 00:00:00"));
        //    }
        //    else
        //    {
        //        if (startIndex + leftN <= flowShiftDetail.Count - 1)
        //        {
        //            //在当天内
        //            ShiftDetail sd = this.genericMgr.FindAll<ShiftDetail>("from ShiftDetail where Id = ? and Shift = ? ",
        //                    new object[] { flowShiftDetail[startIndex + leftN].ShiftDetailId, flowShiftDetail[startIndex + leftN].Shift }).SingleOrDefault();
        //            DateTime startTime = KanbanUtility.ConvertDateTimeFromWorkDateAndShiftTime(nStart.WorkingDate, flowShiftDetail[startIndex + leftN].StartTime, sysTime);
        //            DateTime endTime = KanbanUtility.ConvertDateTimeFromWorkDateAndShiftTime(nStart.WorkingDate, flowShiftDetail[startIndex + leftN].EndTime, sysTime);

        //            return new StartEndTime(startTime, endTime);
        //        }
        //        else
        //        {
        //            //不在当天,找下一个工作日
        //            WorkingCalendar w = genericMgr.FindAll<WorkingCalendar>("from WorkingCalendar  where Type = ? and WorkingDate > ? and Region = ? ", new object[] { (int)com.Sconit.CodeMaster.WorkingCalendarType.Work, nStart.WorkingDate, nStart.Region }).OrderBy(p => p.WorkingDate).FirstOrDefault();
        //            if (w != null)
        //            {
        //                return RecursiveForwardCalculateNextDeliveryForSpecificWorkCalendar(w, 0, flow, leftN - 1 - (flowShiftDetail.Count - 1 - startIndex));
        //            }
        //            else
        //            {
        //                return new StartEndTime(DateTime.Parse("1900-01-01 00:00:00"), DateTime.Parse("2999-1-1 00:00:00"));
        //            }
        //        }
        //    }
        //}

        private void SetCardRetMsg(KanbanCard card, KBProcessCode ret, string msg)
        {
            card.Ret = ret;
            card.Msg = msg;
        }
Example #2
0
 private KanbanCard CreateKanbanCardError(string item, KBProcessCode ret, string msg)
 {
     KanbanCard card = new KanbanCard();
     card.Flow = "";
     card.FlowDetailId = 0;
     card.Region = "";
     card.RegionName = "";
     card.ItemDescription = "";
     card.Supplier = "";
     card.SupplierName = "";
     card.Qty = 0;
     card.Status = KBStatus.Initial;
     card.KanbanDeltaNum = 0;
     card.KanbanNum = 0;
     card.NeedReprint = false;
     card.Item = item;
     SetCardRetMsg(card, ret, msg);
     return card;
 }