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; } }
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; } }
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 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 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; } }