Пример #1
0
 public void SaveOrderScheduling(Sender sender, SaveOrderSchedulingArgs args)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy(true))
         {
             OrderScheduling obj = new OrderScheduling();
             obj.MadeID = args.OrderScheduling.MadeID;
             if (op.LoadOrderSchedulingByMadeID(obj) == 0)
             {
                 args.OrderScheduling.Created    = DateTime.Now;
                 args.OrderScheduling.CreatedBy  = string.Format("{0}.{1}", sender.UserCode, sender.UserName);
                 args.OrderScheduling.Modified   = DateTime.Now;
                 args.OrderScheduling.ModifiedBy = string.Format("{0}.{1}", sender.UserCode, sender.UserName);
                 op.InsertOrderScheduling(args.OrderScheduling);
             }
             else
             {
                 args.OrderScheduling.Modified   = DateTime.Now;
                 args.OrderScheduling.ModifiedBy = string.Format("{0}.{1}", sender.UserCode, sender.UserName);
                 op.UpdateOrderSchedulingByMadeID(args.OrderScheduling);
             }
             op.CommitTransaction();
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
Пример #2
0
 public OrderScheduling GetOrderScheduling(Sender sender, Guid MadeID)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy())
         {
             OrderScheduling obj = new OrderScheduling();
             obj.MadeID = MadeID;
             if (op.LoadOrderSchedulingByMadeID(obj) == 0)
             {
                 return(null);
             }
             return(obj);
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
Пример #3
0
        public void DeletePackageItem(Sender sender, string Barcode, Guid WorkFlowID, bool IsRemovePackage)
        {
            try
            {
                using (ObjectProxy op = new ObjectProxy(true))
                {
                    //包装数据
                    OrderDetail subOrder = new OrderDetail();
                    subOrder.BarcodeNo = Barcode;
                    if (op.LoadOrderDetailByBarcodeNo(subOrder) == 0)
                    {
                        throw new PException("【{0}】条码数据不存在。", Barcode);
                    }

                    Guid PackageID = Guid.Empty;
                    List <PackageDetail> PackageDetails = op.LoadPackageDetailsByItemID(subOrder.ItemID);
                    PackageDetail        packageDetail  = PackageDetails.Find(p => p.IsPackaged = true);
                    if (packageDetail != null)
                    {
                        PackageID = packageDetail.PakageID;
                        packageDetail.IsPackaged = false;
                        packageDetail.PakageID   = Guid.Empty;
                        packageDetail.LayerNum   = 0;
                        op.UpdatePackageDetailByDetailID(packageDetail);
                    }
                    else
                    {
                        throw new PException("【{0}】没有打包数据。", Barcode);
                    }

                    if (IsRemovePackage)
                    {
                        op.DeletePackageByPackageID(PackageID);
                    }
                    else
                    {
                        Package package = new Package();
                        package.PackageID = PackageID;
                        if (op.LoadPackageByPackageID(package) == 0)
                        {
                            throw new PException("【{0}】没有打包数据。", Barcode);
                        }
                        else
                        {
                            package.ItemsQty -= 1;
                            package.Weight   -= subOrder.MadeLength * subOrder.MadeWidth * subOrder.MadeHeight * 0.000008M;
                            op.UpdatePackageByPackageID(package);
                        }
                    }

                    //生产流程
                    List <OrderMadeState> lists_oms = op.LoadOrderMadeStatesByItemID_WorkFlowID(subOrder.ItemID, WorkFlowID);
                    if (lists_oms.Count > 0)
                    {
                        op.DeleteOrderMadeStateByDetailID(lists_oms[0].DetailID);
                    }

                    //生产状态:数量减少
                    OrderWorkFlow owf = new OrderWorkFlow();
                    owf.ItemID           = subOrder.ItemID;
                    owf.SourceWorkFlowID = WorkFlowID;
                    if (op.LoadOrderWorkFlowByItemID_SourceWorkFlowID(owf) != 0)
                    {
                        owf.MadeQty -= 1;
                        op.UpdateOrderWorkFlowByItemID_SourceWorkFlowID(owf);
                    }

                    //生产进度
                    OrderScheduling os = new OrderScheduling();
                    os.CabinetID  = subOrder.CabinetID;
                    os.WorkFlowID = WorkFlowID;
                    if (op.LoadOrderSchedulingByCabinetID_WorkFlowID(os) != 0)
                    {
                        os.MadeTotalQty    -= 1;
                        os.MadeTotalAreal  -= subOrder.MadeLength * subOrder.MadeWidth * 0.000001M;
                        os.MadeTotalLength -= (subOrder.MadeLength + subOrder.MadeWidth) * 2 * 0.001M;
                        op.UpdateOrderSchedulingByMadeID(os);
                    }

                    op.CommitTransaction();
                }
            }
            catch (Exception ex)
            {
                PLogger.LogError(ex);
                throw ex;
            }
        }
Пример #4
0
        public void CreatedScheduling(Sender sender, SaveCreatedSchedulingArgs args)
        {
            try
            {
                using (ObjectProxy op = new ObjectProxy(true))
                {
                    #region 部件工序
                    if (args.OrderWorkFlows != null)
                    {
                        foreach (OrderWorkFlow workflow in args.OrderWorkFlows)
                        {
                            OrderWorkFlow ow = new OrderWorkFlow();
                            ow.WorkingID = workflow.WorkingID;
                            if (op.LoadOrderWorkFlowByWorkingID(ow) == 0)
                            {
                                op.InsertOrderWorkFlow(workflow);
                            }
                            else
                            {
                                op.UpdateOrderWorkFlowByWorkingID(workflow);
                            }
                        }
                    }
                    #endregion

                    #region 排产计划
                    if (args.OrderSchedulings != null)
                    {
                        foreach (OrderScheduling item in args.OrderSchedulings)
                        {
                            OrderScheduling subobj = new OrderScheduling();
                            subobj.MadeID = item.MadeID;
                            if (op.LoadOrderSchedulingByMadeID(subobj) == 0)
                            {
                                item.Created    = DateTime.Now;
                                item.CreatedBy  = sender.UserCode + "." + sender.UserName;
                                item.Modified   = DateTime.Now;
                                item.ModifiedBy = sender.UserCode + "." + sender.UserName;
                                op.InsertOrderScheduling(item);
                            }
                            else
                            {
                                item.Modified   = DateTime.Now;
                                item.ModifiedBy = sender.UserCode + "." + sender.UserName;
                                op.UpdateOrderSchedulingByMadeID(item);
                            }
                        }
                    }
                    //工作车间生产计划
                    if (args.WorkCenterSchedulings != null)
                    {
                        foreach (WorkCenterScheduling item in args.WorkCenterSchedulings)
                        {
                            WorkCenterScheduling wcs = new WorkCenterScheduling();
                            wcs.WorkID = item.WorkID;
                            if (op.LoadWorkCenterSchedulingByWorkID(wcs) == 0)
                            {
                                item.Created    = DateTime.Now;
                                item.CreatedBy  = sender.UserCode + "." + sender.UserName;
                                item.Modified   = DateTime.Now;
                                item.ModifiedBy = sender.UserCode + "." + sender.UserName;
                                op.InsertWorkCenterScheduling(item);
                            }
                            else
                            {
                                item.Modified   = DateTime.Now;
                                item.ModifiedBy = sender.UserCode + "." + sender.UserName;
                                op.UpdateWorkCenterSchedulingByWorkID(item);
                            }
                        }
                    }
                    #endregion

                    #region 包装数据
                    if (args.PackageDetails != null)
                    {
                        foreach (PackageDetail item in args.PackageDetails)
                        {
                            PackageDetail subobj = new PackageDetail();
                            subobj.DetailID = item.DetailID;
                            if (op.LoadPackageDetailByDetailID(subobj) == 0)
                            {
                                item.Created    = DateTime.Now;
                                item.CreatedBy  = string.Format("{0}.{1}", sender.UserCode, sender.UserName);
                                item.Modified   = DateTime.Now;
                                item.ModifiedBy = string.Format("{0}.{1}", sender.UserCode, sender.UserName);
                                op.InsertPackageDetail(item);
                            }
                            else
                            {
                                item.Modified   = DateTime.Now;
                                item.ModifiedBy = string.Format("{0}.{1}", sender.UserCode, sender.UserName);
                                op.UpdatePackageDetailByDetailID(item);
                            }
                        }
                    }
                    #endregion

                    #region 修改柜体状态
                    List <Guid> OrderIDs = new List <Guid>();
                    if (args.CabinetIDs != null)
                    {
                        foreach (Guid CabinetID in args.CabinetIDs)
                        {
                            Order2Cabinet cabinet = new Order2Cabinet();
                            cabinet.CabinetID = CabinetID;
                            if (op.LoadOrder2CabinetByCabinetID(cabinet) != 0)
                            {
                                if (!OrderIDs.Contains(cabinet.OrderID))
                                {
                                    OrderIDs.Add(cabinet.OrderID);
                                }
                                Order order = new Order();
                                order.OrderID = cabinet.OrderID;
                                if (op.LoadOrder(order) != 0)
                                {
                                    //订单日志
                                    OrderLog log = new OrderLog();
                                    log.LogID     = Guid.NewGuid();
                                    log.OrderID   = order.OrderID;
                                    log.LogType   = "订单排产";
                                    log.Remark    = "完成排产";
                                    log.Created   = DateTime.Now;
                                    log.CreatedBy = sender.UserCode + "." + sender.UserName;
                                    op.InsertOrderLog(log);

                                    //流程步骤
                                    //OrderTask ot = new OrderTask();
                                    //ot.Action = "排产完成,待订单优化";
                                    //ot.CurrentStep = "订单排产";
                                    //ot.ActionRemarksType = "订单系统操作";
                                    //ot.ActionRemarks = "排产完成,待订单优化";
                                    //ot.Resource = "订单排产组";
                                    //ot.NextResources = "订单优化组";
                                    //ot.NextStep = "待生产优化";

                                    cabinet.BattchCode    = args.BattchCode;
                                    cabinet.CabinetStatus = "M";//待生产
                                    op.UpdateOrder2CabinetByCabinetID(cabinet);

                                    SaveOrderArgs orderargs = new SaveOrderArgs();
                                    orderargs.Order = order;
                                    //orderargs.OrderTask = ot;
                                    //orderargs.Order2Cabinets = new List<Order2Cabinet>() { cabinet };
                                    //this.SubmitTask(op, sender, orderargs);
                                }
                            }
                        }

                        foreach (Guid orderID in OrderIDs)
                        {
                            //op.UpdateMadeOrderStatus(orderID);
                        }
                    }
                    #endregion

                    op.CommitTransaction();
                }
            }
            catch (Exception ex)
            {
                PLogger.LogError(ex);
                throw ex;
            }
        }
Пример #5
0
        public void ScanBarcode(Sender sender, string Barcode, Guid WorkShiftID, Guid WorkFlowID)
        {
            try
            {
                using (ObjectProxy op = new ObjectProxy(true))
                {
                    WorkFlow wf = new WorkFlow();
                    wf.WorkFlowID = WorkFlowID;
                    //if (op.LoadWorkFlowByWorkFlowID(wf) == 0)
                    //{
                    //    throw new PException("工序代码【{0}】无效或不存在", WorkFlowID);
                    //}

                    OrderDetail orderDetail = new OrderDetail();
                    orderDetail.BarcodeNo = Barcode;
                    if (op.LoadOrderDetailByBarcodeNo(orderDetail) == 0)
                    {
                        throw new PException("板件条码【{0}】无效", Barcode);
                    }

                    Order order = new Order();
                    order.OrderID = orderDetail.OrderID;
                    if (op.LoadOrder(order) == 0)
                    {
                        throw new PException("板件条码【{0}】无效", Barcode);
                    }

                    //if (order.ManufactureDate == DateTime.MinValue)
                    //{
                    //    order.ManufactureDate = DateTime.Now;
                    //    order.Status = "P";
                    //    op.UpdateOrderByOrderID(order); //订单开始生产日期
                    //}

                    //判断当前板件是否需要经过当前工序
                    OrderWorkFlow ow = new OrderWorkFlow();
                    ow.ItemID           = orderDetail.ItemID;
                    ow.SourceWorkFlowID = WorkFlowID;
                    if (op.LoadOrderWorkFlowByItemID_SourceWorkFlowID(ow) == 0)
                    {
                        throw new PException("板件条码【{0}】不需要经过此生产工序", Barcode);
                    }
                    //判断是否已经全部扫描
                    int Qty = op.CountOrderMadeStatesByBarcode_WorkFlowID(Barcode, WorkFlowID);
                    if (Qty >= ow.TotalQty)
                    {
                        throw new PException("板件条码【{0}】在此工序中已经全部扫描,请检查是否重复扫描。", Barcode);
                    }

                    OrderMadeState orderMS = new OrderMadeState();
                    orderMS.DetailID   = Guid.NewGuid();
                    orderMS.OrderID    = orderDetail.OrderID;
                    orderMS.ItemID     = orderDetail.ItemID;
                    orderMS.Barcode    = orderDetail.BarcodeNo;
                    orderMS.CabinetID  = orderDetail.CabinetID;
                    orderMS.MadeHeight = orderDetail.MadeHeight;
                    orderMS.MadeLength = orderDetail.MadeLength;
                    orderMS.MadeWidth  = orderDetail.MadeHeight;
                    //orderMS.PaymentType = wf.PaymentType;
                    //orderMS.Price = wf.Price;
                    orderMS.Qty         = 1;
                    orderMS.WorkFlowID  = wf.WorkFlowID;
                    orderMS.WorkShiftID = WorkShiftID;
                    orderMS.Processed   = DateTime.Now;
                    orderMS.ProcessedBy = sender.UserCode;
                    op.InsertOrderMadeState(orderMS);

                    OrderWorkFlow owf = new OrderWorkFlow();
                    owf.ItemID           = orderDetail.ItemID;
                    owf.SourceWorkFlowID = WorkFlowID;

                    if (op.LoadOrderWorkFlowByItemID_SourceWorkFlowID(owf) != 0)
                    {
                        owf.MadeQty += 1;
                        op.UpdateOrderWorkFlowByItemID_SourceWorkFlowID(owf);
                    }

                    OrderScheduling os = new OrderScheduling();
                    os.CabinetID  = orderDetail.CabinetID;
                    os.WorkFlowID = WorkFlowID;
                    if (op.LoadOrderSchedulingByCabinetID_WorkFlowID(os) != 0)
                    {
                        if (os.MadeStarted == DateTime.MinValue)
                        {
                            //生产开始时间
                            os.MadeStarted = DateTime.Now;
                        }
                        os.MadeTotalQty    += 1;
                        os.MadeTotalAreal  += orderDetail.MadeLength * orderDetail.MadeWidth * 0.000001M;
                        os.MadeTotalLength += (orderDetail.MadeLength + orderDetail.MadeWidth) * 2 * 0.001M;

                        if (os.MadeTotalQty == os.TotalQty)
                        {
                            //生产结束时间
                            os.MadeEnded = DateTime.Now;
                        }
                        op.UpdateOrderSchedulingByMadeID(os);
                    }
                    op.CommitTransaction();
                }
            }
            catch (Exception ex)
            {
                PLogger.LogError(ex);
                throw ex;
            }
        }