Browse Source

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

tangdi 2 years ago
parent
commit
144c415158

+ 1 - 0
MicroServices/Business/Business.Application.Contracts/Dto/LineStartDto.cs

@@ -36,4 +36,5 @@ namespace Business.Dto
         /// </summary>
         public List<int> ChdParentOps { get; set; }
     }
+   
 }

+ 23 - 0
MicroServices/Business/Business.Application.Contracts/Dto/WorkOrdRoutingDto.cs

@@ -47,10 +47,33 @@ namespace Business.Business.Dto
         /// 产线可开工日期
         /// </summary>
         public DateTime StartTime { get; set; }
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        public decimal sequence { get; set; }
 
         /// <summary>
         /// 当前层级有子级的工序
         /// </summary>
         public List<int> ChdParentOps { get; set; }
+        /// <summary>
+        /// 非标准产线人员配置
+        /// </summary>
+       // public List<prodLineRunCrews> prodLineRunCrews { get; set; }
     }
+    //public class prodLineRunCrews
+    //{
+    //    /// <summary>
+    //    /// 配置UPH
+    //    /// </summary>
+    //    public decimal SetUph { get; set; }
+    //    /// <summary>
+    //    /// 有效开始日期
+    //    /// </summary>
+    //    public DateTime StratDateTime { get; set; }
+    //    /// <summary>
+    //    /// 有效结束日期
+    //    /// </summary>
+    //    public DateTime EndDateTime { get; set; }
+    //}
 }

+ 138 - 2
MicroServices/Business/Business.Application/MES/SyncMESAppService.cs

@@ -1,5 +1,8 @@
 using Business.Core.Utilities;
+using Business.Domain;
 using Business.Dto;
+using Business.EntityFrameworkCore.SqlRepositories;
+using Business.ResourceExamineManagement;
 using Business.StructuredDB.MES;
 using Business.StructuredDB.SaleFcst;
 using Business.StructuredDB.WMS;
@@ -25,6 +28,27 @@ namespace Business.MES
         /// 生产日计划
         /// </summary>
         private readonly IRepository<mes_producedailyplan, long> _producedailyplan;
+        /// <summary>
+        /// 工单表
+        /// </summary>
+        private readonly IRepository<mes_morder, long> _morder;
+        /// <summary>
+        /// 工单
+        /// </summary>
+        private ISqlRepository<WorkOrdMaster> _workOrdMaster;
+        /// <summary>
+        /// 生产线明细表
+        /// </summary>
+        private ISqlRepository<ProdLineDetail> _prodLineDetail;
+        /// <summary>
+        /// 生产线数据
+        /// </summary>
+        private ISqlRepository<LineMaster> _lineMaster;
+        /// <summary>
+        /// 工作日历
+        /// </summary>
+        private ISqlRepository<ShopCalendarWorkCtr> _shopCalendarWorkCtr;
+
         /// <summary>
         ///  雪花算法
         /// </summary>
@@ -33,6 +57,14 @@ namespace Business.MES
         /// 事务
         /// </summary>
         private readonly IUnitOfWorkManager _unitOfWorkManager;
+        /// <summary>
+        /// 生产排产
+        /// </summary>
+        private readonly ProductionScheduleAppService _productionScheduleAppService;
+        /// <summary>
+        /// 产线休息时间记录表
+        /// </summary>
+        private ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
         #endregion
         #region 构造函数
         /// <summary>
@@ -40,21 +72,125 @@ namespace Business.MES
         /// </summary>
         public SyncMESAppService(
             IRepository<mes_producedailyplan, long> mes_producedailyplan,
+            IRepository<mes_morder, long> mes_morder,
+            ISqlRepository<WorkOrdMaster> workOrdMaster,
+            ISqlRepository<ProdLineDetail> prodLineDetail,
+            ISqlRepository<LineMaster> lineMaster,
+            ISqlRepository<ShopCalendarWorkCtr> shopCalendarWorkCtr,
+            ISqlRepository<QualityLineWorkDetail> qualityLineWorkDetail,
             IUnitOfWorkManager unitOfWorkManager,
+            ProductionScheduleAppService productionScheduleAppService,
         ICurrentTenant currentTenant
             )
         {
             _producedailyplan = mes_producedailyplan;
+            _morder = mes_morder;
+            _workOrdMaster = workOrdMaster;
+            _prodLineDetail = prodLineDetail;
+            _lineMaster = lineMaster;
+            _shopCalendarWorkCtr = shopCalendarWorkCtr;
             _unitOfWorkManager = unitOfWorkManager;
+            _qualityLineWorkDetail = qualityLineWorkDetail;
+            _productionScheduleAppService = productionScheduleAppService;
         }
         #endregion
         /// <summary>
         /// 生成日计划
         /// </summary>
         /// <param name="crm_Weekplans"></param>
-        public void SavaProducedailyplanData()
+        public void SavaProducedailyplanData(long factory_id)
         {
-           
+            //var workOrd = _workOrdMaster.Select(x => x.IsActive == true && x.Status == "初始" && x.Domain == factory_id.ToString()).OrderBy(x => x.OrdDate);
+            //var morder = _morder.GetListAsync(x => x.IsDeleted == true && workOrd.Select(p => p.WorkOrd).Contains(x.morder_no));
+
+            //var prodLine = _prodLineDetail.Select(x => workOrd.Select(p => p.ItemNum).Contains(x.Part) && x.IsActive == true && x.Domain == factory_id.ToString()).ToList().OrderBy(y=>y.Sequence);
+
         }
+        #region 注释
+        /// <summary>
+        /// 计算工厂产能
+        /// </summary>
+        /// <param name="StartDataTime">开始时间</param>
+        /// <param name="EndDataTime">结束时间</param>
+        //public void FactoryCapacity(DateTime StartDataTime, DateTime EndDataTime, long factory_id)
+        //{
+        //    var LineData = _lineMaster.Select(x => x.IsActive == true && x.Domain == factory_id.ToString()).ToList();
+        //    var shopCalendarWorkCtr = _shopCalendarWorkCtr.Select(x => (LineData.Select(p => p.Line).Contains(x.ProdLine) || x.ProdLine == "") && x.IsActive == true && x.Domain == factory_id.ToString()).ToList();
+        //    //获取产线休息记录数据
+        //    var qualityLines = _qualityLineWorkDetail.Select(p => p.Domain == factory_id.ToString() && p.IsActive);
+        //    foreach (var item in LineData)
+        //    {
+        //        //当前日期
+        //        DateTime actStart = StartDataTime;
+        //        var datatime = (EndDataTime - EndDataTime).Days;
+        //        //当前产线的每天休息时间记录
+        //        var mlqtyWorkDtls = qualityLines.Where(p => p.ProdLine == item.Line).OrderBy(p => p.Line).ToList();
+        //        for (int i = 0; i < datatime; i++)
+        //        {
+        //            //查询生产线是否配置工作日历
+        //            var data = shopCalendarWorkCtr.Where(x => x.ProdLine == item.Line).ToList();
+        //            if (data != null)
+        //            {
+        //                //有配置 根据配置时长计算
+
+        //            }
+        //            else
+        //            {
+        //                //无对应配置 查询出无产线配置日历计算
+        //                var line = shopCalendarWorkCtr.Where(x => x.ProdLine == "").ToList();
+        //                //开始时间是周几
+        //                int weekDay = (int)actStart.DayOfWeek;
+        //                //判断当天是否是工作日
+        //                bool isWorkDay = _productionScheduleAppService.CheckIsWorkDay(actStart);
+        //                if (!isWorkDay)//是工作日
+        //                {
+        //                    //输出DTO 工作时长为0
+        //                }
+        //                else
+        //                {
+
+        //                    //当天的工作日历
+        //                    var shopCal = line.Where(p => p.WeekDay == weekDay).First();
+        //                    //当前日期的工作时间段
+        //                    List<LineWorkPointDto> workPoints = DealWorkDayToLevels(actStart, shopCal, mlqtyWorkDtls);
+        //                }
+        //            }
+        //            actStart.AddDays(i);
+        //        }
+        //    }
+        //}
+        /// <summary>
+        /// 处理当前日期的工作时间段
+        /// </summary>
+        /// <param name="startTime"></param>
+        /// <param name="shopCal">当前产线的工作日历-周几</param>
+        /// <param name="curQtyDtls">每天休息记录</param>
+        /// <returns></returns>
+        //public List<LineRestDataTimeDto> DealWorkDayToLevels(DateTime startTime, ShopCalendarWorkCtr shopCal, List<QualityLineWorkDetail> curQtyDtls)
+        //{
+        //    //年-月-日
+        //    string date = startTime.Date.ToString("yyyy-MM-dd");
+        //    //排产记录结束日期是周几
+        //    int weekDay = (int)startTime.DayOfWeek;
+        //    //计算当天的开工时间点,停工时间点
+        //    string strStart = shopCal.ShiftsStart1.ToString("0.00").Replace(".", ":");
+        //    DateTime dayStartPoint = Convert.ToDateTime(date + " " + strStart);
+        //    DateTime dayEndPoint = dayStartPoint.AddHours(Convert.ToDouble(shopCal.ShiftsHours1));
+        //    //工作时间段
+        //    List<LineRestDataTimeDto> workPoints = new List<LineRestDataTimeDto>();
+        //    LineRestDataTimeDto dto = new LineRestDataTimeDto();
+        //    TimeSpan span = TimeSpan.Zero;
+        //    foreach (var item in curQtyDtls)
+        //    {
+        //        dto.Line = shopCal.ProdLine;
+        //        dto.WeekDay = weekDay;
+        //        DateTime StarDatime = Convert.ToDateTime(date + " " + item.RestTimePoint);
+        //        dto.StartPoint = StarDatime;
+        //        dto.EndPoint = StarDatime.AddMinutes(item.RestTime); ;
+        //    }
+        //    //return workPoints.OrderBy(p => p.Level).ToList();
+        //}
+        #endregion
+
     }
 }

+ 89 - 32
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs

@@ -4,6 +4,7 @@ using Business.Domain;
 using Business.Dto;
 using Business.EntityFrameworkCore.SqlRepositories;
 using Business.ResourceExamineManagement.Dto;
+using Business.StructuredDB.Production;
 using System;
 using System.Collections.Generic;
 using System.Collections.Immutable;
@@ -70,7 +71,14 @@ namespace Business.ResourceExamineManagement
         /// 产线休息时间记录表
         /// </summary>
         private ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
-
+        /// <summary>
+        /// 产线人员配置表
+        /// </summary>
+        private ISqlRepository<ProdLineDetailRunCrew> _prodLineDetailRunCrew;
+        /// <summary>
+        /// 加班设置表
+        /// </summary>
+        private ISqlRepository<ResourceOccupancyTime> _resourceOccupancyTime;
         /// <summary>
         /// 节假日记录表
         /// </summary>
@@ -114,6 +122,8 @@ namespace Business.ResourceExamineManagement
             ISqlRepository<WorkOrdDetail> workOrdDetail,
             ISqlRepository<WorkOrdRouting> workOrdRouting,
             ISqlRepository<ProdLineDetail> prodLineDetail,
+            ISqlRepository<ProdLineDetailRunCrew> prodLineDetailRunCrew,
+            ISqlRepository<ResourceOccupancyTime> resourceOccupancyTime,
             ISqlRepository<PeriodSequenceDet> periodSequenceDet,
             ISqlRepository<ScheduleResultOpMaster> scheduleResultOpMaster,
             ISqlRepository<InvMaster> invMaster,
@@ -128,6 +138,8 @@ namespace Business.ResourceExamineManagement
             _workOrdDetail = workOrdDetail;
             _workOrdRouting = workOrdRouting;
             _prodLineDetail = prodLineDetail;
+            _prodLineDetailRunCrew = prodLineDetailRunCrew;
+            _resourceOccupancyTime = resourceOccupancyTime;
             _periodSequenceDet = periodSequenceDet;
             _scheduleResultOpMaster = scheduleResultOpMaster;
             _invMaster = invMaster;
@@ -154,7 +166,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="workOrds">工单:定时任务执行时count=0;资源检查调用count>0</param>
         /// <param name="factoryid">工单的工厂id</param>
         /// <returns></returns>
-        public async Task DoProductShcedule(List<WorkOrdMaster> workOrds,string factoryid)
+        public async Task DoProductShcedule(List<WorkOrdMaster> workOrds, string factoryid)
         {
             domain = factoryid;
             if (workOrds.Count == 0)//定时任务调用时,需要获取工单数据
@@ -172,7 +184,8 @@ namespace Business.ResourceExamineManagement
             {
                 earlist = DateTime.Now.Date.AddDays(7);
             }
-            else {
+            else
+            {
                 earlist = workOrds.Min(p => p.OrdDate.GetValueOrDefault()).Date;
             }
 
@@ -182,6 +195,10 @@ namespace Business.ResourceExamineManagement
             //获取物料对应的生产线信息:物料、工序对应的生产线
             List<ProdLineDetail> prodLines = _prodLineDetail.Select(p => workOrds.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == domain && p.IsActive);
             List<string> lines = prodLines.Select(p => p.Line).ToList();
+            //获取非标准产线人员配置
+            List<ProdLineDetailRunCrew> prodLineDetailRunCrews = _prodLineDetailRunCrew.Select(x => prodLines.Select(p => p.RecID).Contains(x.ProdLineDetailRecID) && x.IsActive && x.Domain == domain).ToList();
+            //获取加班设置
+            List<ResourceOccupancyTime> resourceOccupancyTimes = _resourceOccupancyTime.Select(x => prodLines.Select(p => p.Line).Contains(x.Resource) && x.IsActive && x.Domain == domain).ToList();
             //获取生产周期数据
             List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => lines.Contains(p.Line) && p.PlanDate >= earlist && p.Domain == domain && p.IsActive);
             //获取当前日期往后的排产记录数据
@@ -233,6 +250,11 @@ namespace Business.ResourceExamineManagement
                 foreach (var rut in routingDtos)
                 {
                     var lineCals = calendars.Where(p => p.ProdLine == rut.Line).ToList();
+                    //当前产线未配置工作日历取标准无产线工作日历使用
+                    if (lineCals.Count == 0)
+                    {
+                        lineCals = calendars.Where(p => string.IsNullOrEmpty(p.ProdLine)).ToList();
+                    }
                     if (lineCals.Select(p => p.WeekDay).Distinct().Count() != 7)
                     {
                         flag = true;
@@ -503,7 +525,7 @@ namespace Business.ResourceExamineManagement
             }
 
             //开始时间往后推到半小时/整点节点
-            actStart = CalcStartTimeAfter(actStart);
+            //actStart = CalcStartTimeAfter(actStart);
             //当天的工作日历
             var shopCal = curCalendars.Where(p => p.WeekDay == weekDay).First();
             //当前日期的工作时间段
@@ -838,44 +860,79 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         public List<WorkOrdRoutingDto> ProcPretreatment(WorkOrdMaster workOrd, List<WorkOrdRouting> woRuntings, List<ProdLineDetail> prodLines, List<ScheduleResultOpMaster> schedules)
         {
+            #region 注释旧逻辑
+            //List<WorkOrdRoutingDto> routingDtos = new List<WorkOrdRoutingDto>();
+            ////当前工单计划开始时间(默认加两天)
+            //DateTime planStart = workOrd.OrdDate.GetValueOrDefault().AddDays(2);
+            ////取主工序(第一层级工序)
+            //var firsts = woRuntings.Where(p => p.ParentOp == 0).OrderByDescending(p => p.OP).ToList();
+            //if (firsts.Count == 0)
+            //{
+            //    return routingDtos;
+            //}
+            //WorkOrdRoutingDto dto = new WorkOrdRoutingDto();
+            ////主工序按照Op排序,取最大Op
+            //var lastOp = firsts.First();
+            //dto.ParentOp = lastOp.ParentOp;
+            //dto.level = 1;
+            //dto.Op = lastOp.OP;
+            //dto.ChdParentOps = new List<int>();
+            ////获取当前层级工序中有子级的工序集合
+            //var childs = woRuntings.Where(p => firsts.Select(m => m.OP).Contains(p.ParentOp)).Select(m => m.ParentOp).Distinct().ToList();
+            //if (childs.Count > 0)
+            //{
+            //    dto.ChdParentOps = childs;
+            //}
+            ////主工序对应的产线(目前只考虑一个产品对应一条产线的情况)
+            //var line = prodLines.Where(p => p.Part == lastOp.ItemNum && p.Op == lastOp.OP).FirstOrDefault();
+            //if (line != null)
+            //{
+            //    dto.Line = line.Line;
+            //    dto.Rate = line.Rate;
+            //    dto.SetupTime = 0;
+            //    //获取产线占用结束时间
+            //    var schedule = schedules.Where(p => p.Line == line.Line).OrderByDescending(p => p.WorkEndTime).FirstOrDefault();
+            //    dto.StartTime = schedule == null ? planStart : schedule.WorkEndTime <= planStart ? planStart : schedule.WorkEndTime;
+            //}
+            //routingDtos.Add(dto);
+
+            ////递归处理其他层级工序
+            //RecursionProc(woRuntings, firsts, 1, routingDtos, prodLines);
+            #endregion
+            #region 新逻辑
             List<WorkOrdRoutingDto> routingDtos = new List<WorkOrdRoutingDto>();
             //当前工单计划开始时间(默认加两天)
             DateTime planStart = workOrd.OrdDate.GetValueOrDefault().AddDays(2);
-            //取主工序(第一层级工序)
-            var firsts = woRuntings.Where(p => p.ParentOp == 0).OrderByDescending(p => p.OP).ToList();
+
+            var firsts = woRuntings.Where(x => x.WorkOrd == workOrd.WorkOrd && x.MilestoneOp).ToList();
             if (firsts.Count == 0)
             {
                 return routingDtos;
             }
-            WorkOrdRoutingDto dto = new WorkOrdRoutingDto();
-            //主工序按照Op排序,取最大Op
-            var lastOp = firsts.First();
-            dto.ParentOp = lastOp.ParentOp;
-            dto.level = 1;
-            dto.Op = lastOp.OP;
-            dto.ChdParentOps = new List<int>();
-            //获取当前层级工序中有子级的工序集合
-            var childs = woRuntings.Where(p => firsts.Select(m => m.OP).Contains(p.ParentOp)).Select(m => m.ParentOp).Distinct().ToList();
-            if (childs.Count > 0)
-            {
-                dto.ChdParentOps = childs;
-            }
-            //主工序对应的产线(目前只考虑一个产品对应一条产线的情况)
-            var line = prodLines.Where(p => p.Part == lastOp.ItemNum && p.Op == lastOp.OP).FirstOrDefault();
-            if (line != null)
+            foreach (var item in firsts)
             {
-                dto.Line = line.Line;
-                dto.Rate = line.Rate;
-                dto.SetupTime = 0;
-                //获取产线占用结束时间
-                var schedule = schedules.Where(p => p.Line == line.Line).OrderByDescending(p => p.WorkEndTime).FirstOrDefault();
-                dto.StartTime = schedule == null ? planStart : schedule.WorkEndTime <= planStart ? planStart : schedule.WorkEndTime;
+                //多产线处理
+                var line = prodLines.Where(p => p.Part == item.ItemNum && p.Op == item.OP).ToList();
+                foreach (var data in line)
+                {
+                    WorkOrdRoutingDto dto = new WorkOrdRoutingDto();
+                    dto.Line = data.Line;
+                    dto.Rate = data.Rate;
+                    dto.SetupTime = data.SetupTime;
+                    dto.sequence = data.Sequence;
+                    dto.Op = data.Op.Value;
+                    //获取产线占用结束时间
+                    var schedule = schedules.Where(p => p.Line == data.Line).OrderByDescending(p => p.WorkEndTime).FirstOrDefault();
+                    dto.StartTime = schedule == null ? planStart : schedule.WorkEndTime <= planStart ? planStart : schedule.WorkEndTime;
+                    routingDtos.Add(dto);
+                }
             }
-            routingDtos.Add(dto);
-
+            //多生产线优先级处理
+             //var 
+            //var Lines = routingDtos.GroupBy(x => x.Line);
             //递归处理其他层级工序
-            RecursionProc(woRuntings, firsts, 1, routingDtos, prodLines);
-
+            //RecursionProc(woRuntings, firsts, 1, routingDtos, prodLines);
+            #endregion
             return routingDtos;
         }
 

+ 5 - 0
MicroServices/Business/Business.Domain/StructuredDB/Production/ProdLineDetail.cs

@@ -62,5 +62,10 @@ namespace Business.Domain
         /// </summary>
         [Comment("当前产线提前期")]
         public decimal SetupTime { get; set; }
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        [Comment("优先级")]
+        public decimal Sequence { get; set; }
     }
 }

+ 111 - 0
MicroServices/Business/Business.Domain/StructuredDB/Production/ProdLineDetailRunCrew.cs

@@ -0,0 +1,111 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.StructuredDB.Production
+{
+
+    /// <summary>
+    ///  ProdLineDetailRunCrew    
+    /// </summary>
+    public class ProdLineDetailRunCrew
+    {
+        /// <summary>
+        /// 主键ID    
+        /// </summary>
+        public int RecID { get; set; }
+
+        /// <summary>
+        /// 工厂Num   
+        /// </summary>
+        public string Domain { get; set; }
+
+        /// <summary>
+        /// 物料编号
+        /// </summary>
+        public string Part { get; set; }
+
+        /// <summary>
+        /// 工序
+        /// </summary>
+        public int Op { get; set; }
+
+        /// <summary>
+        /// 生产线 
+        /// </summary>
+        public string Line { get; set; }
+
+        /// <summary>
+        /// 配置人数 
+        /// </summary>
+        public string RunCrew { get; set; }
+
+        /// <summary>
+        /// 配置UPH
+        /// </summary>
+        public decimal Rate { get; set; }
+
+        /// <summary>
+        /// 有效开始日期  
+        /// </summary>
+        public DateTime? StartDate { get; set; }
+
+        /// <summary>
+        /// 有效结束日期   
+        /// </summary>
+        public DateTime? EndDate { get; set; }
+
+        /// <summary>
+        /// 无    
+        /// </summary>
+        public string Ufld1 { get; set; }
+
+        /// <summary>
+        /// 无    
+        /// </summary>
+        public string Ufld2 { get; set; }
+
+        /// <summary>
+        /// 无    
+        /// </summary>
+        public long BusinessID { get; set; }
+
+        /// <summary>
+        /// 是否有效
+        /// </summary>
+        public bool IsActive { get; set; }
+
+        /// <summary>
+        /// 是否确认  
+        /// </summary>
+        public bool IsConfirm { get; set; }
+
+        /// <summary>
+        /// 创建账户
+        /// </summary>
+        public string CreateUser { get; set; }
+
+        /// <summary>
+        /// 修改账户
+        /// </summary>
+        public string UpdateUser { get; set; }
+
+        /// <summary>
+        /// 创建日期    
+        /// </summary>
+        public DateTime? CreateTime { get; set; }
+
+        /// <summary>
+        /// 修改日期   
+        /// </summary>
+        public DateTime? UpdateTime { get; set; }
+
+        /// <summary>
+        /// 生产线物料ID  
+        /// </summary>
+        public int ProdLineDetailRecID { get; set; }
+
+    }
+}

+ 111 - 0
MicroServices/Business/Business.Domain/StructuredDB/Production/ResourceOccupancyTime.cs

@@ -0,0 +1,111 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.StructuredDB.Production
+{
+
+    /// <summary>
+    ///  ResourceOccupancyTime    
+    /// </summary>
+    public class ResourceOccupancyTime
+    {
+        /// <summary>
+        /// 主键ID    
+        /// </summary>
+        public int RecID { get; set; }
+
+        /// <summary>
+        /// 工厂Num 
+        /// </summary>
+        public string Domain { get; set; }
+
+        /// <summary>
+        /// 无    
+        /// </summary>
+        public string Site { get; set; }
+
+        /// <summary>
+        /// 无    
+        /// </summary>
+        public long BusinessID { get; set; }
+
+        /// <summary>
+        /// 类型  
+        /// </summary>
+        public string ResourceType { get; set; }
+
+        /// <summary>
+        /// 产线
+        /// </summary>
+        public string Resource { get; set; }
+
+        /// <summary>
+        /// 开始时间    
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 结束时间  
+        /// </summary>
+        public DateTime? EndTime { get; set; }
+
+        /// <summary>
+        /// 描述  
+        /// </summary>
+        public string Descr { get; set; }
+
+        /// <summary>
+        /// 无    
+        /// </summary>
+        public bool IsRest { get; set; }
+
+        /// <summary>
+        /// 是否有效    
+        /// </summary>
+        public bool IsActive { get; set; }
+
+        /// <summary>
+        /// 是否确认 
+        /// </summary>
+        public bool IsConfirm { get; set; }
+
+        /// <summary>
+        /// 无    
+        /// </summary>
+        public bool IsChanged { get; set; }
+
+        /// <summary>
+        /// 有效工作时长
+        /// </summary>
+        public string Ufld1 { get; set; }
+
+        /// <summary>
+        /// 休息时长  
+        /// </summary>
+        public string Ufld2 { get; set; }
+
+        /// <summary>
+        /// 创建账户
+        /// </summary>
+        public string CreateUser { get; set; }
+
+        /// <summary>
+        /// 修改账户
+        /// </summary>
+        public string UpdateUser { get; set; }
+
+        /// <summary>
+        /// 创建日期    
+        /// </summary>
+        public DateTime? CreateTime { get; set; }
+
+        /// <summary>
+        /// 修改日期   
+        /// </summary>
+        public DateTime? UpdateTime { get; set; }
+
+    }
+}