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; } }
/// <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); }
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; } }
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; } }
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; } }
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; } }
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(); }