//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; }
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; }