plm项目管理 项目总览相关字段取值逻辑原创
金蝶云社区-明明就是我
明明就是我
4人赞赏了该文章 930次浏览 未经作者许可,禁止转载编辑于2022年07月20日 14:36:52

实际工期:项目实际开始时间到实际结束时间的小时数/每周第一个工作日单日工作时长小时。


超时时长:通过任务计划结束时间和当时间(若任务完成按任务实际结束时间)和工作日历。计算这两段时间之间的工作时长的小时数作为超时时长的取数逻辑。


超时时长: 通过ProjectManager.Instance.GetProjectExtended(ctx, cal, prjObj, false)获得 

     ctx:PLM上下文 

     cal:日历对象,通过ProjectManager.Instance.GetCalendar(ctx, prjObj)获得 

         prjObj:项目对象  通过DomainObjectManager.InstanceByObjectId(ctx, ObjectId).Get(ctx,ObjectId:项目对象Id); 获得 

         ObjectId:项目对象Id 

 计划工期: 通过 Math.Round(planDur / durTime, 2)获得 

     planDur:通过ProjectManager.Instance.GetDuration(ctx, prjObj, cal, dt_PlannedST, dt_PlannedED, timeType) 获得 

     dt_PlannedST:计划开始时间 

     dt_PlannedED:计划结束时间 

     timeType = "小时" 

     durTimes:一天的工作小时数,先获取工作日历里默认第一天的工作时段(可以理解为上午四小时,下午四小时两个时段)

     cal.WeekDays.Where(x => x.DayWorking).FirstOrDefault().WorkingTimes,循环把 WorkingTimes 每项的Duration相加获得durTimes

 实际工期:通过 Math.Round(actDur / durTime, 2) 

     actDur : 通过ProjectManager.Instance.GetDuration(ctx,prjObj, cal, dt_StartTime, dt_EndTime, timeType); 

     dt_StartTime:实际开始时间

     dt_EndTime:实际结束时间 项目基准进度:通过lostDuration / planDur获得 

         lostDuration:通过ProjectManager.Instance.GetDuration(ctx, prjObj, cal, dt_PlannedST, DateTime.Now, timeType);获得 

         planDur:通过 ProjectManager.Instance.GetDuration(ctx, prjObj, cal, dt_PlannedST, dt_PlannedED, timeType);获得

项目基准进度:通过lostDuration / planDur获得 

     lostDuration:通过ProjectManager.Instance.GetDuration(ctx, prjObj, cal, dt_PlannedST, DateTime.Now, timeType);获得 

     planDur:通过 ProjectManager.Instance.GetDuration(ctx, prjObj, cal, dt_PlannedST, dt_PlannedED, timeType);获得

赞 4