/// <summary> /// 添加一个工单到日报列表 /// </summary> protected void AddDailyToUserList_Single() { if (Daily.Date != null) { var temDatily = new BPM_Daily() { Department = Daily.Department, ClientName = Order.ClientName, OrderCount = Convert.ToInt32(Order.Count), ProductName = Order.ProductName, Spec = Order.Spec, State = Order.State, WorkShop = Order.WorkShop, ProductID = Order.ProductID, Month = Daily.Date.Value.Date.ToString("yyyyMM"), Workstation = Daily.Workstation, ClassType = Daily.ClassType, ProcessID = Process.ProcessID, ProcessName = Process.Name, StandardHours = Process.StandardHours * Process.Relax, Qty = Daily.QtyOK + Daily.QtyNG, JobNum = UserID, Name = UserName, QtyOK = Daily.QtyOK, QtyNG = Daily.QtyNG, OrderID = OrderID, WorkHours = WorksHours, Date = Daily.Date.Value.Date, DateTime = Daily.DateTime, NotWorkHours = Daily.NotWorkHours, Efficiency = Convert.ToDouble(((((Daily.QtyNG + Daily.QtyOK) * Process.StandardHours) / (Daily.WorkHours * 60)) * 100).Value.ToString("F")), }; temDatily.TotalWorkHoursStandard = (temDatily.Qty * temDatily.StandardHours) / 60; if (Order != null && Order.Product != null && Order.Product.ProcessList != null) { var temPt = Order.Product.ProcessList.FirstOrDefault(p => p.ProcessID == Process.ProcessID); temDatily.ProcessNum = temPt != null ? temPt.Num : 0; temDatily.ProcessSign = temPt != null ? temPt.ProcessSign : "未设置"; } temDatily.TotalWorkHoursNotRelax = (temDatily.Qty * process.StandardHours) / 60; //未宽放得到工时 temDatily.TotalWorkHoursStandard = (temDatily.Qty * temDatily.StandardHours) / 60; userDailyList.Add(temDatily); savaDailyList.Add(temDatily); Business.BpmHelper.Daily.Add(temDatily); } }
/// <summary> /// 分配工时 /// </summary> /// <param name="sumOrderCount">所有附加工单的总批量之和</param> /// <param name="fjOrderList">附加工单列表</param> /// <param name="YetAllotWorkHoursOrderList">已非配过的日报列表</param> private void AllotWorkHours(double sumOrderCount, List <BPM_Order> fjOrderList, List <BPM_Daily> YetAllotWorkHoursOrderList) { foreach (BPM_Order temOrder in fjOrderList) { if (Daily.Date != null) { var temDatily = new BPM_Daily() { Department = Daily.Department, ClientName = temOrder.ClientName, OrderCount = Convert.ToInt32(temOrder.Count), ProductName = temOrder.ProductName, Spec = temOrder.Spec, State = temOrder.State, WorkShop = temOrder.WorkShop, ProductID = temOrder.ProductID, Month = Daily.Date.Value.Date.ToString("yyyyMM"), Workstation = Daily.Workstation, ClassType = Daily.ClassType, ProcessID = Process.ProcessID, ProcessName = Process.Name, JobNum = UserID, Name = UserName, OrderID = temOrder.OrderID, Date = Daily.Date.Value.Date, DateTime = Daily.DateTime, NotWorkHours = Daily.NotWorkHours, StandardHours = Process.StandardHours * Process.Relax, //计算附加工单的良品数量和生产工时 QtyOK = Convert.ToInt32((Convert.ToDouble(temOrder.Count) / sumOrderCount) * Convert.ToDouble(Daily.QtyOK)), QtyNG = Convert.ToInt32((Convert.ToDouble(temOrder.Count) / sumOrderCount) * Convert.ToDouble(Daily.QtyNG)), WorkHours = Convert.ToDecimal( ((Convert.ToDouble(temOrder.Count) / sumOrderCount) * Convert.ToDouble(Daily.WorkHours)) .ToString("F0")), Qty = Convert.ToInt32((Convert.ToDouble(temOrder.Count) / sumOrderCount) * Convert.ToDouble(Daily.QtyOK)) + Convert.ToInt32((Convert.ToDouble(temOrder.Count) / sumOrderCount) * Convert.ToDouble(Daily.QtyNG)) }; temDatily.Efficiency = Convert.ToDouble(((((temDatily.QtyNG + temDatily.QtyOK) * temDatily.StandardHours) / (temDatily.WorkHours * 60)) * 100).Value.ToString("F")); temDatily.TotalWorkHoursNotRelax = (temDatily.Qty * process.StandardHours) / 60; //未宽放 得到工时 temDatily.TotalWorkHoursStandard = (temDatily.Qty * temDatily.StandardHours) / 60; if (temOrder != null && temOrder.Product != null && temOrder.Product.ProcessList != null) { var temPt = temOrder.Product.ProcessList.FirstOrDefault(p => p.ProcessID == Process.ProcessID); temDatily.ProcessNum = temPt != null ? temPt.Num : 0; temDatily.ProcessSign = temPt != null ? temPt.ProcessSign : "未设置"; } //2015-12-10 添加 2016-1-12 8:11修改V0.0.1 张文明 if (fjOrderList[fjOrderList.Count - 1].Equals(temDatily)) //如果是最后一个 { //对附加工单进行分配后 计算分配前的总工时 和分配后的总工时 差值 并将差值赋值给第一个工单 temDatily.Qty = Daily.Qty - YetAllotWorkHoursOrderList.Sum(p => p.Qty); temDatily.WorkHours = Daily.WorkHours - YetAllotWorkHoursOrderList.Sum(p => p.WorkHours); } //添加 YetAllotWorkHoursOrderList.Add(temDatily); userDailyList.Add(temDatily); savaDailyList.Add(temDatily); Business.BpmHelper.Daily.Add(temDatily); } } }