public static int GetStandardWorkingTimeByProductId_SpecificationId(string ProductId, string SpecificationId)
            {
                MOProductSpecification ps = SchedulePlan.GetEntity().MOProductSpecification.Where(p => p.ProductId == ProductId && p.SpecificationId == SpecificationId).FirstOrDefault();

                if (ps != null && ps.StandardWorkingTime != null)
                {
                    return((int)ps.StandardWorkingTime);
                }
                else
                {
                    return(0);
                }
            }
            public static DateTime GetWorkTime(DateTime startTime, string ventureId)
            {
                WorkCenterCalendar noWorkCalender = SchedulePlan.GetEntity().WorkCenterCalendar.Where(p => DbFunctions.TruncateTime(p.NoWorkBeginDate) <= startTime && DbFunctions.TruncateTime(p.NoWorkEndDate) >= startTime).FirstOrDefault();

                DateTime workTime;

                if (noWorkCalender != null)
                {
                    workTime = (DateTime)noWorkCalender.NoWorkEndDate;
                }
                else
                {
                    workTime = startTime;
                }

                List <Venture_Shift> vfList = SchedulePlan.GetEntity().Venture_Shift.Where(p => p.VentureId == ventureId).ToList();



                if (!vfList.Any())
                {
                    Venture v = SchedulePlan.GetEntity().Venture.Where(p => p.VentureId == ventureId).FirstOrDefault();
                    throw new Exception(v.VentureName + "(" + v.VentureId + ")" + "经营体与工厂日历关系未维护!");
                }

                var shiftIdList = vfList.Select(p => p.ShiftId).ToList();


                var shiftList = SchedulePlan.GetEntity().Shift.Where(p => shiftIdList.Contains(p.ShiftId)).ToList();

                var minTimeFrom = shiftList.Max(p => p.TimeFrom);

                Shift shift = shiftList.Where(p => p.TimeFrom == minTimeFrom).FirstOrDefault();

                if (shift == null)
                {
                    throw new Exception("工厂日历未维护!");
                }

                string[] minsecond = shift.TimeFrom.Split(new char[] { ':' });

                DateTime workStartTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, int.Parse(minsecond[0]), int.Parse(minsecond[1]), 0);
                DateTime workEndTime   = workStartTime.AddMinutes(Convert.ToDouble(shift.TimeRange));

                if (workTime < workStartTime || workTime > workEndTime)
                {
                    workTime = workStartTime.AddDays(1);

                    noWorkCalender = SchedulePlan.GetEntity().WorkCenterCalendar.Where(p => DbFunctions.TruncateTime(p.NoWorkBeginDate) >= workTime || DbFunctions.TruncateTime(p.NoWorkEndDate) <= workTime).FirstOrDefault();

                    if (noWorkCalender != null)
                    {
                        TimeSpan?ts  = noWorkCalender.NoWorkEndDate - noWorkCalender.NoWorkBeginDate;
                        int      day = ((TimeSpan)ts).Days;

                        workTime = workStartTime.AddDays(day + 1);
                    }
                }

                //return
                return(workTime);
            }