Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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);
                }
            }
        }