Exemple #1
0
 public void SaveOrderWorkFlow(Sender sender, SaveOrderWorkFlowArgs args)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy(true))
         {
             OrderWorkFlow obj = new OrderWorkFlow();
             obj.WorkingID = args.OrderWorkFlow.WorkingID;
             if (op.LoadOrderWorkFlowByWorkingID(obj) == 0)
             {
                 op.InsertOrderWorkFlow(args.OrderWorkFlow);
             }
             else
             {
                 op.UpdateOrderWorkFlowByWorkingID(args.OrderWorkFlow);
             }
             op.CommitTransaction();
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
Exemple #2
0
        /// <summary>
        /// 统一处理传递的参数请求
        /// </summary>
        /// <param name="template"></param>
        /// <returns></returns>
        private string GetPrintHtml(string template)
        {
            string   PrintHtml  = string.Empty;
            template templateEn = (template)Enum.Parse(typeof(template), template);

            //包装和产品条码
            if (templateEn == Utility.Enum.template.package || templateEn == Utility.Enum.template.cabinet)
            {
                string Barcode   = Request["Barcode"];
                string WorkingID = Request["WorkingID"];

                string[] ArrayBarcode   = Barcode.TrimEnd(',').Split(',');
                string[] ArrayWorkingID = WorkingID.TrimEnd(',').Split(',');

                for (int i = 0; i < ArrayBarcode.Length; i++)
                {
                    PrintHtml += "<div class=\"qrcodetable\">";//解决连续打印
                    using (ProxyBE p = new ProxyBE())
                    {
                        OrderWorkFlow model = p.Client.GetOrderWorkFlow(null, new Guid(ArrayWorkingID[i]));
                        if (model.WorkFlowNo == 1)
                        {
                            PrintHtml += PrintCabinetData(ArrayBarcode[i], ArrayWorkingID[i], Utility.Enum.template.cabinet);
                        }
                        else
                        {
                            PrintHtml += PrintPackageData(ArrayBarcode[i], ArrayWorkingID[i], templateEn);
                        }
                    }
                    PrintHtml += "</div>";
                }
            }
            //订单条码
            else if (templateEn == Utility.Enum.template.order)
            {
                string OrderNo     = Request["OrderNo"];
                int    printnumber = !string.IsNullOrEmpty(Request["printnumber"]) ? int.Parse(Request["printnumber"]) : 1;//打印份数

                string[] ArrayBarcode = OrderNo.TrimEnd(',').Split(',');

                for (int j = 0; j < printnumber; j++)
                {
                    for (int i = 0; i < ArrayBarcode.Length; i++)
                    {
                        PrintHtml += "<div class=\"qrcodetable\">";
                        PrintHtml += PrintOrderData(ArrayBarcode[i], templateEn);
                        PrintHtml += "</div>";
                    }
                }
            }

            return(PrintHtml);
        }
Exemple #3
0
 public OrderWorkFlow GetOrderWorkFlow(Sender sender, Guid WorkingID)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy())
         {
             OrderWorkFlow obj = new OrderWorkFlow();
             obj.WorkingID = WorkingID;
             if (op.LoadOrderWorkFlowByWorkingID(obj) == 0)
             {
                 return(null);
             }
             return(obj);
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
Exemple #4
0
 public OrderWorkFlow GetOrderWorkFlowByItemID_WorkFlowNo(Sender sender, Guid ItemID, int WorkFlowNo)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy())
         {
             OrderWorkFlow obj = new OrderWorkFlow();
             obj.ItemID     = ItemID;
             obj.WorkFlowNo = WorkFlowNo;
             if (op.LoadOrderWorkFlowByItemID_WorkFlowNo(obj) == 0)
             {
                 return(null);
             }
             return(obj);
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
Exemple #5
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;
            }
        }
Exemple #6
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;
            }
        }
Exemple #7
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;
            }
        }
 public void Create(Order objOrder)
 {
   //  objOrder.Status = "Open";
    var _wfManager = new OrderWorkFlow(objOrder);
     _wfManager.Execute();
 }