/// <summary> /// 添加单据信息 /// </summary> /// <param name="bill"></param> /// <param name="body"></param> /// <returns></returns> public string SaveOutputBill(WbsOrder bill, WbsOrderLine[] body) { var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>(); var outLineService = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>(); var transaction = TransactionServiceFatory.CreateInstance <ITransactionService>(); #region 单据验证 if (!VerifyAddBillData(bill, body)) { throw new VerifyException("单据验证失败!"); } #endregion transaction.BeginTransaction(); try { outHeaderService.Insert(bill); foreach (var line in body) { outLineService.Insert(line); } transaction.CompleteTransaction(); return(null); } catch (Exception ex) { transaction.RollbackTransaction(); return(ex.ToString()); } }
/// <summary> /// 更新出库行项目 /// </summary> /// <param name="bill"></param> /// <param name="body"></param> /// <returns></returns> public WbsOrder UpdateOutputBill(WbsOrder bill, WbsOrderLine[] body) { var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>(); var outLineService = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>(); try { foreach (var line in body) { if (string.IsNullOrWhiteSpace(line.OrderLineGuid)) { line.OrderNo = bill.OrderNo; InsertOutputBillLine(bill, line); } else { UpdateOutputBillLine(bill, line); } } } catch (Exception ex) { throw ex; } return(outHeaderService.GetEntityList(new WbsOrder() { OrderNo = bill.OrderNo }).FirstOrDefault()); }
/// <summary> /// 添加单据信息 /// </summary> /// <param name="bill"></param> /// <param name="body"></param> /// <returns></returns> public WbsOrder SaveOutputBill(WbsOrder bill, WbsOrderLine[] body) { var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>(); var outLineService = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>(); var transaction = TransactionServiceFatory.CreateInstance <ITransactionService>(); #region 单据验证 if (!VerifyAddBillData(bill, body)) { throw new VerifyException("单据验证失败!"); } #endregion transaction.BeginTransaction(); try { outHeaderService.Insert(bill); foreach (var line in body) { outLineService.Insert(line); } transaction.CompleteTransaction(); } catch (Exception ex) { transaction.RollbackTransaction(); throw ex; } return(outHeaderService.GetEntityList(new WbsOrder() { OrderNo = bill.OrderNo }).FirstOrDefault()); }
private WbsOrderLine[] JsonToWbsOrderLine(WbsOrder header, McJsonObject headJson, McJsonObject[] bodyJson) { var result = new List <WbsOrderLine>(); #region 数据处理 foreach (var lineJson in bodyJson) { var line = new WbsOrderLine(); //单号 line.OrderNo = header.OrderNo; line.OrderLineGuid = Guid.NewGuid().ToString(); //单LINE line.LineId = lineJson.IntValue("LINE_ID"); //单据行状态 line.LineStatus = lineJson.IntValue("LINE_STATUS"); //物料信息 line.MaterialNo = lineJson.StringValue("MATER_NO"); //等级 line.ProductGrade = lineJson.StringValue("PRODUCT_GRADE"); //单据数量 line.RequireQty = lineJson.IntValue("REQUIRE_QTY"); //实际数量 line.ActQty = lineJson.IntValue("ACT_QTY"); //发货数量 line.ShipQty = lineJson.IntValue("SHIP_QTY"); //工装编号 line.LimitPalletId = lineJson.StringValue("LIMIT_PALLET_ID"); //开始站台 line.LimitBinNo = lineJson.StringValue("LIMIT_BIN_NO"); //目的站台 line.ElocNo = lineJson.StringValue("ELOC_NO"); //产品GUID line.LimitProductGuid = lineJson.StringValue("LIMIT_PRODUCT_GUID"); //行任务分解 line.LineTaskFlag = lineJson.IntValue("LINE_TASK_FLAG"); //行项目唯一标示 line.OrderLineGuid = lineJson.StringValue("ORDER_LINE_GUID"); line.OrderLineGuid = Guid.NewGuid().ToString().ToUpper(); //是否已删除 line.DeleteFlag = "N"; //此单发货顺序 line.SortId = 1; //优先级 line.LinePriority = 50; //目标锁定 line.LockEndLoc = 1; result.Add(line); } #endregion return(result.ToArray()); }
private void UpdateOutputBillLine(WbsOrder bill, WbsOrderLine line) { var outLineService = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>(); var update = new WbsOrderLine(); update.MaterialNo = line.MaterialNo; update.ProductGrade = line.ProductGrade; update.ElocNo = line.ElocNo; update.LimitBinNo = line.LimitBinNo; update.DeleteFlag = line.DeleteFlag; update.LimitBinNo = line.LimitBinNo; update.LimitProductGuid = line.LimitProductGuid; update.LimitPalletId = line.LimitPalletId; var where = new WbsOrderLine(); where.OrderLineGuid = line.OrderLineGuid; where.OrderNo = line.OrderNo; where.LineId = line.LineId; outLineService.Update(update, where); }
private WbsOrder JsonToWbsOrder(McJsonObject headJson) { var result = new WbsOrder(); #region 数据处理 //单号 result.OrderNo = headJson.StringValue("ORDER_NO"); //单据状态(0:未执行,1:出库中,2:已完成,3:已取消 result.OrderStatus = headJson.IntValue("ORDER_STATUS"); //优先级 数字越小优先级越高 result.OrderPriority = headJson.IntValue("ORDER_PRIORITY"); //生成方式 result.SourceType = headJson.IntValue("SOURCE_TYPE"); //单据类型 result.OrderTypeNo = headJson.StringValue("ORDER_TYPE_NO"); //单据类型模式 result.OrderTypeModule = headJson.StringValue("ORDER_TYPE_MODULE"); #endregion return(result); }
private bool VerifyAddBillData(WbsOrder bill, WbsOrderLine[] body) { if (!VerifyBillData(bill, body)) { return(false); } var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>(); #region 验证 出库单号 var count = outHeaderService.GetRowCount(new WbsOrder() { OrderNo = bill.OrderNo }); if (count > 0) { throw new VerifyException("出库单号已存在!"); } #endregion return(true); }
private void InsertOutputBillLine(WbsOrder bill, WbsOrderLine line) { var outLineService = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>(); var insert = new WbsOrderLine(); insert.OrderNo = line.OrderNo; insert.LineId = line.LineId; insert.LineStatus = line.LineStatus; insert.MaterialNo = line.MaterialNo; insert.ProductGrade = line.ProductGrade; insert.ElocNo = line.ElocNo; insert.RequireQty = line.RequireQty; insert.ActQty = line.ActQty; insert.ShipQty = line.ShipQty; insert.LimitBinNo = line.LimitBinNo; insert.OrderLineGuid = Guid.NewGuid().ToString(); insert.DeleteFlag = "N"; insert.SortId = 1; insert.LinePriority = 50; insert.LockEndLoc = 1; outLineService.Insert(insert); }
private WbsOrder JsonToWbsOrder(McJsonObject headJson) { var result = new WbsOrder(); ///缺4个:OrderTypeNo、OrderTypeModule #region 数据处理 //单号 result.OrderNo = headJson.StringValue("ORDER_NO"); //单据状态(0:未执行,1:出库中,2:已完成,3:已取消 result.OrderStatus = headJson.IntValue("ORDER_STATUS"); //优先级 数字越小优先级越高 result.OrderPriority = headJson.IntValue("ORDER_PRIORITY"); //生成方式 result.SourceType = headJson.IntValue("SOURCE_TYPE"); //单据类型 result.OrderTypeNo = headJson.StringValue("ORDER_TYPE_NO"); //单据类型模式 result.OrderTypeModule = headJson.StringValue("ORDER_TYPE_MODULE"); //创建日期 result.CreationDate = DateTime.Now; //创建者 result.CreatedBy = this.Data.User.UserId.ToString(); #endregion return(result); }
private bool VerifyBillData(WbsOrder bill, WbsOrderLine[] body) { var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>(); #region 验证 主表数据 #region 验证 单据类型 var kind = bill.OrderTypeNo; if (kind == null) { throw new VerifyException("请选择单据类型,如果没有订单类型,请维护订单类型!"); } #endregion #region 验证 异常出库 var kindInt = bill.OrderTypeNo; if (kindInt == "100891" && body.Length > 1) { throw new VerifyException("异常出库每次建单据只允许一种物料!"); } #endregion #endregion #region 验证 表体 foreach (var line in body) { if (!string.IsNullOrWhiteSpace(line.LimitPalletId)) { line.LinePriority = line.LinePriority - 1; if (line.LinePriority == 0) { line.LinePriority = 1; } } if (bill.OrderTypeNo == "100058") {//空笼出库 line.MaterialNo = "BPALLET"; } else { if (!string.IsNullOrWhiteSpace(line.LimitPalletId)) { #region 验证 出库物料 if (string.IsNullOrWhiteSpace(line.MaterialNo)) { throw new VerifyException("行号[" + line.LineId?.ToString("0") + "],请选择出库物料!"); } #endregion #region 验证 物料等级 if (string.IsNullOrWhiteSpace(line.ProductGrade)) { throw new VerifyException("行号[" + line.LineId?.ToString("0") + "],请选择物料等级!"); } #endregion } } #region 验证 单号行号 if (line.LineId == null) { throw new VerifyException("行号[" + line.LineId?.ToString("0") + "],请输入单号行号!"); } #endregion #region 验证 库位编码是否存在 var data = TableViewServiceFactory.CreateInstance <IPsbBinStatusService>(); var eloc = TableViewServiceFactory.CreateInstance <IPsbLocService>(); if (!string.IsNullOrWhiteSpace(line.LimitBinNo)) { PsbBinStatus ba = new PsbBinStatus(); ba.BinNo = line.LimitBinNo; var listbabin = data.GetEntityTable(ba); if (listbabin.Rows.Count == 0) { throw new VerifyException("开始库位[" + line.LimitBinNo + "],的库位编码不存在!"); } } if (!string.IsNullOrWhiteSpace(line.ElocNo)) { PsbLoc bat = new PsbLoc(); bat.LocNo = line.ElocNo; var listbabint = eloc.GetEntityTable(bat); if (listbabint.Rows.Count == 0) { throw new VerifyException("目的站台[" + line.ElocNo + "],的库位编码不存在!"); } } #endregion #region 验证 工装编码 if (!string.IsNullOrWhiteSpace(line.LimitPalletId)) { var Padata = TableViewServiceFactory.CreateInstance <IPsbPalletService>(); var pallet = new PsbPallet(); pallet.PalletNo = line.LimitPalletId; if (Padata.GetRowCount(pallet) == 0) { throw new VerifyException("工装编码[" + line.LimitPalletId + "],不存在或者无效!"); } } #endregion #region 验证 单据数量 if (line.RequireQty == null || line.RequireQty <= 0) { throw new VerifyException("行号[" + line.LineId?.ToString("0") + "],请输入单据数量且为非零正整数!"); } #endregion } #endregion return(true); }