Tiger.Api/Language.db | 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Common/Preparation.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/ERP/WMS_U9C.ApproveMiscShip.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/ERP/WMS_U9C.CreateOutProdMaterialReq.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/ERP/WMS_U9C.CreateProdMaterialReq.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/ERP/WMS_U9C.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Extensions/Yada/OutExtension.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Tiger.Api/Language.dbBinary files differ
Tiger.Business.WMS/Common/Preparation.cs
@@ -33,6 +33,7 @@ public string UserCode { get; set; } public string OrgCode { get; set; } public BIZ_WMS_PREP Order { get; set; } public BIZ_WMS_PREP.BIZ_TYPEs BizType => Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(); #endregion Propertys & Variables #region Functions Tiger.Business.WMS/ERP/WMS_U9C.ApproveMiscShip.cs
@@ -10,17 +10,7 @@ using System.Linq; using Newtonsoft.Json; using Tiger.IBusiness; using Microsoft.AspNetCore.Http; using Tiger.Model.Minsun; using Org.BouncyCastle.Asn1.Tsp; using Tiger.Model.Entitys.MES.Position; using Apache.NMS.ActiveMQ.Commands; using System.Security.Cryptography; using System.Diagnostics; using Tiger.Model.Entitys.MES.U9C; using Newtonsoft.Json.Linq; using System.Security.Policy; using NetTaste; namespace Tiger.Business.WMS { Tiger.Business.WMS/ERP/WMS_U9C.CreateOutProdMaterialReq.cs
@@ -10,23 +10,20 @@ using System.Linq; using Newtonsoft.Json; using Tiger.IBusiness; using Microsoft.AspNetCore.Http; using Tiger.Model.Minsun; using Org.BouncyCastle.Asn1.Tsp; using Tiger.Model.Entitys.MES.Position; using Apache.NMS.ActiveMQ.Commands; using System.Security.Cryptography; using System.Diagnostics; using Tiger.Model.Entitys.MES.U9C; using Newtonsoft.Json.Linq; using System.Security.Policy; using NetTaste; namespace Tiger.Business.WMS { public partial class WMS_U9C { /// <summary> /// 创建委外生产领料单 /// </summary> public static string CreateOutProdMaterialReqUrl { get; set; } = "http://172.16.80.20/u9c/webapi/PMIssueDoc/Create"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateOutProdMaterialReqUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateOutProdMaterialReqUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/PMIssueDoc/Create /// <summary> /// 创建委外生产领料单接口 /// </summary> /// <param name="input"></param> Tiger.Business.WMS/ERP/WMS_U9C.CreateProdMaterialReq.cs
@@ -10,23 +10,20 @@ using System.Linq; using Newtonsoft.Json; using Tiger.IBusiness; using Microsoft.AspNetCore.Http; using Tiger.Model.Minsun; using Org.BouncyCastle.Asn1.Tsp; using Tiger.Model.Entitys.MES.Position; using Apache.NMS.ActiveMQ.Commands; using System.Security.Cryptography; using System.Diagnostics; using Tiger.Model.Entitys.MES.U9C; using Newtonsoft.Json.Linq; using System.Security.Policy; using NetTaste; namespace Tiger.Business.WMS { public partial class WMS_U9C { /// <summary> /// 创建生产领料单 /// </summary> public static string CreateProdMaterialReqUrl { get; set; } = "http://172.16.80.20/u9c/webapi/IssueDoc/Create"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateProdMaterialReqUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateProdMaterialReqUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/IssueDoc/Create /// <summary> /// 创建生产领料单接口 /// </summary> /// <param name="input"></param> Tiger.Business.WMS/ERP/WMS_U9C.cs
@@ -31,20 +31,10 @@ public static string ApproveLineUrl { get; set; } = "http://172.16.80.20/u9c/webapi/Receivement/ApproveLine"; // ApiConfig.IsTestServer ? Cache.SysParam["ApproveLineUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["ApproveLineUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/Receivement/ApproveLine; 测试 /// <summary> /// 创建生产领料单 /// </summary> public static string CreateProdMaterialReqUrl { get; set; } = "http://172.16.80.20/u9c/webapi/IssueDoc/Create"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateProdMaterialReqUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateProdMaterialReqUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/IssueDoc/Create /// <summary> /// 创建生产退料单-按行退料 /// </summary> public static string CreateProdReturnOrderNewUrl { get; set; } = "http://172.16.80.20/u9c/webapi/IssueDoc/CreateRecedeIssueDocNew"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateProdReturnOrderUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateProdReturnOrderUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/IssueDoc/CreateRecedeIssueDocNew /// <summary> /// 创建委外生产领料单 /// </summary> public static string CreateOutProdMaterialReqUrl { get; set; } = "http://172.16.80.20/u9c/webapi/PMIssueDoc/Create"; // ApiConfig.IsTestServer ? Cache.SysParam["CreateOutProdMaterialReqUrl_Test", "U9CUrl"].PARAM_VALUE : Cache.SysParam["CreateOutProdMaterialReqUrl", "U9CUrl"].PARAM_VALUE; //http://172.16.80.20/u9c/webapi/PMIssueDoc/Create /// <summary> /// 创建委外生产退料单 /// </summary> Tiger.Business.WMS/Extensions/Yada/OutExtension.cs
@@ -1,12 +1,18 @@ using MailKit.Search; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using Org.BouncyCastle.Asn1.X509; using Rhea.Common; using SqlSugar; using System; using System.IO; using Tiger.Business.WMS.Transaction; using Tiger.IBusiness; using Tiger.Model; using Tiger.Model.Base; using Tiger.Model.Entitys.MES.U9C; using Tiger.Model.MES.Yada; using static Microsoft.Scripting.Hosting.Shell.ConsoleHostOptions; namespace Tiger.Business.WMS.Extensions { @@ -74,41 +80,244 @@ } /// <summary> /// 根据发料类型,调用相应发料单据的ERP接口 /// 实际需求数量计算方法 /// </summary> /// <param name="type"></param> /// <param name="orderNo"></param> /// <param name="commitInput"></param> /// <param name="dtl"></param> /// <returns></returns> public static List<BIZ_WMS_PREP_SRC_DTL> CommitToERP(this BIZ_WMS_PREP.BIZ_TYPEs type, string orderNo, object commitInput) public static double GetActReqQty(this BIZ_WMS_PREP.BIZ_TYPEs type, BIZ_WMS_PREP_DTL dtl) { // 查询单据明细 var pickList = new List<BIZ_WMS_PREP_SRC_DTL>(); switch (type) { case BIZ_WMS_PREP.BIZ_TYPEs.Others: { var dtls = Biz.Db.Queryable<BIZ_U9_MISC_OUT_DTL>().Where(q => q.ORDER_NO == orderNo).ToList(); pickList = dtls.Select(q => q.GetPickItem()).ToList(); } break; case BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder: { var dtls = Biz.DataSource["YadaU9C"].Client.Queryable<mes_MOPickList>().Where(q => q.MoDocNo == orderNo).ToList(); pickList = dtls.Select(q => q.GetPickItem()).ToList(); } break; case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing: { var dtls = Biz.DataSource["YadaU9C"].Client.Queryable<mes_SCMPickList>().Where(q => q.PoDocNo == orderNo).ToList(); pickList = dtls.Select(q => q.GetPickItem()).ToList(); } break; case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: break; } return pickList; return dtl.QTY_REQ; } } /// <summary> /// 根据发料类型,调用相应发料单据的ERP接口 /// </summary> /// <param name="type"></param> /// <param name="trans"></param> /// <param name="input"></param> /// <returns></returns> public static async Task<ApiAction> CommitToERP(this BIZ_WMS_PREP.BIZ_TYPEs type, Out_BIZ_WMS_PREP trans, BaseInput input) { switch (type) { case BIZ_WMS_PREP.BIZ_TYPEs.Others: return await MiscShipApprove(trans, input); case BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder: return await CreateIssueDoc(trans, input); case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing: return await CreatePMIssueDoc(trans, input); case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: throw new NotImplementedException($"发料单据类型[{type.GetDesc()}]未实现ERP接口调用"); } } /// <summary> /// U9杂发单审核 /// </summary> /// <param name="trans"></param> /// <param name="input"></param> /// <returns></returns> private static async Task<ApiAction> MiscShipApprove(Out_BIZ_WMS_PREP trans, BaseInput input) { var action = new ApiAction(); var dtls = trans.MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ORDER_NO == trans.CurPREP.Order.ORDER_NO).ToList(); var noFinish = dtls.Where(q => q.QTY_PREP < BIZ_WMS_PREP.BIZ_TYPEs.Others.GetActReqQty(q)); if (noFinish.Any()) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("备料任务[{0}]未能提交审核,未备料完成的行如下:{1}"); action.LocaleMsg = Biz.L("WMS.BIZ_WMS_PREP.MiscShipApprove.NoFinish", trans.CurPREP.Order.ORDER_NO, string.Join(",", noFinish.Select(q => q.ORDER_LINE))); return action; } var iInput = new MiscShipApproveInput { MiscShipApproveParam = trans.CurPREP.Order.SourceOrders.Select(q => new MiscShipApproveParam() { Code = q.ORDER_NO }).ToList() }; var result = await DI.Resolve<IWMS_U9C>().MiscShipApprove(iInput); if (!result.IsSuccessed) { action.IsSuccessed = false; action.LocaleMsg = result.LocaleMsg; return action; } trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue(); trans.CurPREP.Order.CurBatch.STATUS = BIZ_WMS_PREP_BTH.STATUSs.Sended.GetValue(); trans.CurPREP.Order.CurBatch.PREP_PERSON = trans.UserCode; trans.CurPREP.Order.CurBatch.FINISH_TIME = DateTime.Now; trans.CurPREP.Order.CurBatch.REQ_PERSON = trans.UserCode; trans.CurPREP.Order.CurBatch.DLVY_TIME = DateTime.Now; var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList(); foreach (var item in orders) { item.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue(); item.PREP_PERSON = trans.UserCode; item.FINISH_TIME = DateTime.Now; item.REQ_PERSON = trans.UserCode; item.DLVY_TIME = DateTime.Now; } //使用统一的事务DB对象 var db = trans.GetCommitDB(); var dbTran = db.UseTran(() => { db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Updateable(trans.CurPREP.Order.CurBatch, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand(); db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand(); }); if (dbTran.IsSuccess) { //action.LocaleMsg = Biz.L($"杂发单审核成功,单号如下:{0}"); action.LocaleMsg = Biz.L("WMS.BIZ_WMS_PREP.MiscShipApprove.Success", string.Join(",", trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER))); } else { Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception"); //抛出异常 throw dbTran.ErrorException; } return action; } /// <summary> /// U9创建委外生产领料单 /// </summary> /// <param name="trans"></param> /// <param name="input"></param> /// <returns></returns> private static async Task<ApiAction> CreatePMIssueDoc(Out_BIZ_WMS_PREP trans, BaseInput input) { var action = new ApiAction(); var dtls = trans.MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ORDER_NO == trans.CurPREP.Order.ORDER_NO).ToList(); var noFinish = dtls.Where(q => q.QTY_PREP < BIZ_WMS_PREP.BIZ_TYPEs.Others.GetActReqQty(q)); if (noFinish.Any()) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("备料任务[{0}]未能提交审核,未备料完成的行如下:{1}"); action.LocaleMsg = Biz.L("WMS.BIZ_WMS_PREP.MiscShipApprove.NoFinish", trans.CurPREP.Order.ORDER_NO, string.Join(",", noFinish.Select(q => q.ORDER_LINE))); return action; } var iInput = new MiscShipApproveInput { MiscShipApproveParam = trans.CurPREP.Order.SourceOrders.Select(q => new MiscShipApproveParam() { Code = q.ORDER_NO }).ToList() }; var result = await DI.Resolve<IWMS_U9C>().MiscShipApprove(iInput); if (!result.IsSuccessed) { action.IsSuccessed = false; action.LocaleMsg = result.LocaleMsg; return action; } trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue(); trans.CurPREP.Order.CurBatch.STATUS = BIZ_WMS_PREP_BTH.STATUSs.Sended.GetValue(); trans.CurPREP.Order.CurBatch.PREP_PERSON = trans.UserCode; trans.CurPREP.Order.CurBatch.FINISH_TIME = DateTime.Now; trans.CurPREP.Order.CurBatch.REQ_PERSON = trans.UserCode; trans.CurPREP.Order.CurBatch.DLVY_TIME = DateTime.Now; var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList(); foreach (var item in orders) { item.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue(); item.PREP_PERSON = trans.UserCode; item.FINISH_TIME = DateTime.Now; item.REQ_PERSON = trans.UserCode; item.DLVY_TIME = DateTime.Now; } //使用统一的事务DB对象 var db = trans.GetCommitDB(); var dbTran = db.UseTran(() => { db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Updateable(trans.CurPREP.Order.CurBatch, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand(); db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand(); }); if (dbTran.IsSuccess) { //action.LocaleMsg = Biz.L($"杂发单审核成功,单号如下:{0}"); action.LocaleMsg = Biz.L("WMS.BIZ_WMS_PREP.MiscShipApprove.Success", string.Join(",", trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER))); } else { Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception"); //抛出异常 throw dbTran.ErrorException; } return action; } /// <summary> /// U9创建生产领料单 /// </summary> /// <param name="trans"></param> /// <param name="input"></param> /// <returns></returns> private static async Task<ApiAction> CreateIssueDoc(Out_BIZ_WMS_PREP trans, BaseInput input) { var action = new ApiAction(); var dtls = trans.MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ORDER_NO == trans.CurPREP.Order.ORDER_NO).ToList(); var noFinish = dtls.Where(q => q.QTY_PREP < BIZ_WMS_PREP.BIZ_TYPEs.Others.GetActReqQty(q)); if (noFinish.Any()) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("备料任务[{0}]未能提交审核,未备料完成的行如下:{1}"); action.LocaleMsg = Biz.L("WMS.BIZ_WMS_PREP.MiscShipApprove.NoFinish", trans.CurPREP.Order.ORDER_NO, string.Join(",", noFinish.Select(q => q.ORDER_LINE))); return action; } var iInput = new MiscShipApproveInput { MiscShipApproveParam = trans.CurPREP.Order.SourceOrders.Select(q => new MiscShipApproveParam() { Code = q.ORDER_NO }).ToList() }; var result = await DI.Resolve<IWMS_U9C>().MiscShipApprove(iInput); if (!result.IsSuccessed) { action.IsSuccessed = false; action.LocaleMsg = result.LocaleMsg; return action; } trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue(); trans.CurPREP.Order.CurBatch.STATUS = BIZ_WMS_PREP_BTH.STATUSs.Sended.GetValue(); trans.CurPREP.Order.CurBatch.PREP_PERSON = trans.UserCode; trans.CurPREP.Order.CurBatch.FINISH_TIME = DateTime.Now; trans.CurPREP.Order.CurBatch.REQ_PERSON = trans.UserCode; trans.CurPREP.Order.CurBatch.DLVY_TIME = DateTime.Now; var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList(); foreach (var item in orders) { item.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue(); item.PREP_PERSON = trans.UserCode; item.FINISH_TIME = DateTime.Now; item.REQ_PERSON = trans.UserCode; item.DLVY_TIME = DateTime.Now; } //使用统一的事务DB对象 var db = trans.GetCommitDB(); var dbTran = db.UseTran(() => { db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Updateable(trans.CurPREP.Order.CurBatch, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand(); db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand(); }); if (dbTran.IsSuccess) { //action.LocaleMsg = Biz.L($"杂发单审核成功,单号如下:{0}"); action.LocaleMsg = Biz.L("WMS.BIZ_WMS_PREP.MiscShipApprove.Success", string.Join(",", trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER))); } else { Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception"); //抛出异常 throw dbTran.ErrorException; } return action; } }//endClass } Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
@@ -12,6 +12,8 @@ using Tiger.Business.WMS.Common; using Org.BouncyCastle.Ocsp; using Tiger.Model.Sharetronic.Shelf; using MailKit.Search; using Tiger.Business.WMS.Extensions; namespace Tiger.Business.WMS.Transaction { @@ -29,7 +31,7 @@ } #region Propertys & Variables private Preparation CurPREP; public Preparation CurPREP { get; set; } private List<BIZ_WMS_PREP_SN> CurSn = new(); private BIZ_WMS_PREP_DTL CurPrepDtl = new(); public List<SuggestItem> Suggests { get; set; } = new(); @@ -156,6 +158,7 @@ { var action = new ApiAction<BIZ_WMS_PREP>(); CurPREP.Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ID == CurPREP.Order.ID).IncludesAllFirstLayer().First(); action.Data = CurPREP.Order; return action; } @@ -177,11 +180,11 @@ action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NotSelectItem"); return action; } if (prepDtl.QTY_PREP > GetActReqQty(prepDtl)) if (prepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(prepDtl)) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("当前选择物料行[{0}]已备料数量[{1}],以满足实际需求数量[{2}],无需继续备料"); action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.SelectItem.PrepFinish", prepDtl.ITEM_CODE, prepDtl.QTY_PREP, GetActReqQty(prepDtl)); action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.SelectItem.PrepFinish", prepDtl.ITEM_CODE, prepDtl.QTY_PREP, CurPREP.BizType.GetActReqQty(prepDtl)); return action; } //删除物料池中上一次分配的物料 @@ -215,7 +218,7 @@ if (Suggests.Count > 0) { var inv = Suggests.First(); var actQty = CurPrepDtl.QTY_PREP > GetActReqQty(CurPrepDtl) ? 0 : (GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); var actQty = CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl) ? 0 : (CurPREP.BizType.GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); if (inv != null && actQty > 0) { inv.poolItem = inv.Item.GetPoolItem(OrgCode, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, actQty, true); @@ -232,7 +235,7 @@ if (CurPREP.Order.CurBatch.DLVY_MODE == BIZ_WMS_PREP_BTH.DLVY_MODEs.Supply.GetValue()) { //推荐物料 var actQty = CurPrepDtl.QTY_PREP > GetActReqQty(CurPrepDtl) ? 0 : (GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); var actQty = CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl) ? 0 : (CurPREP.BizType.GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); Result<List<SuggestItem>> result = Suggest(CurPrepDtl.ORDER_NO, CurPrepDtl.ITEM_CODE, null, inputDtl.WH_ID, inputDtl.REGION_ID, inputDtl.SHELF_ID, input.AuthOption, actQty); action.LocaleMsg = result.LocaleMsg; if (result.IsException) @@ -475,7 +478,7 @@ //判断是否超发 isExceed = false; //计算剩余需求数量和条码中的发出数量 var actQty = CurPrepDtl.QTY_PREP > GetActReqQty(CurPrepDtl) ? 0 : (GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); var actQty = CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl) ? 0 : (CurPREP.BizType.GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); if (actQty < CurInvItem.CurPkg.QTY) { isExceed = true; @@ -496,7 +499,7 @@ { //action.LocaleMsg = Biz.L($"条码[{0}]扫描成功,备料物料[{1}]需求[{2}]还需备料[{3}],条码需要截料,发出数量[{4}]"); //action.LocaleMsg = Biz.L($"条码[{0}]扫描成功,备料物料[{1}]需求[{2}]还需备料[{3}],请选择要超发还是截料?"); action.LocaleMsg = Biz.L($"WMS.Out_BIZ_WMS_PREP.ScanItem.Success{(isNeedCut ? "" : "Confirm")}", CurInvItem.SN, CurInvItem.ItemInfo.ITEM_CODE, GetActReqQty(CurPrepDtl), actQty); action.LocaleMsg = Biz.L($"WMS.Out_BIZ_WMS_PREP.ScanItem.Success{(isNeedCut ? "" : "Confirm")}", CurInvItem.SN, CurInvItem.ItemInfo.ITEM_CODE, CurPREP.BizType.GetActReqQty(CurPrepDtl), actQty); action.Data.Command = "ConfirmExceed"; action.Data.Data = new { @@ -531,11 +534,11 @@ var sns = (input.Data ?? "").JsonToObject<List<BIZ_WMS_PREP_SN>>() ?? new List<BIZ_WMS_PREP_SN>(); if (!sns.Any()) { var actQty = CurPrepDtl.QTY_PREP > GetActReqQty(CurPrepDtl) ? 0 : (GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); var actQty = CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl) ? 0 : (CurPREP.BizType.GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); action.IsSuccessed = false; //action.LocaleMsg = Biz.L($"条码[{0}]扫描成功,备料物料[{1}]需求[{2}]还需备料[{3}],条码需要截料,发出数量[{4}]"); //action.LocaleMsg = Biz.L($"条码[{0}]扫描成功,备料物料[{1}]需求[{2}]还需备料[{3}],请选择要超发还是截料?"); action.LocaleMsg = Biz.L($"WMS.Out_BIZ_WMS_PREP.ScanItem.Success{(isNeedCut ? "" : "Confirm")}", CurInvItem.SN, CurInvItem.ItemInfo.ITEM_CODE, GetActReqQty(CurPrepDtl), actQty); action.LocaleMsg = Biz.L($"WMS.Out_BIZ_WMS_PREP.ScanItem.Success{(isNeedCut ? "" : "Confirm")}", CurInvItem.SN, CurInvItem.ItemInfo.ITEM_CODE, CurPREP.BizType.GetActReqQty(CurPrepDtl), actQty); action.Data.Command = "ConfirmExceed"; action.Data.Data = new { @@ -600,7 +603,7 @@ CurPrepDtl.QTY_PREP += CurSn.Sum(q => q.QTY_DLVY); CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Picking.GetValue(); CurPREP.Order.CurBatch.STATUS = BIZ_WMS_PREP_BTH.STATUSs.Picking.GetValue(); CurPREP.Order.CurBatch.PICK_TIME = DateTime.Now; CurPREP.Order.CurBatch.PICK_TIME = CurPREP.Order.CurBatch.PICK_TIME < new DateTime(2000, 1, 1) ? DateTime.Now : CurPREP.Order.CurBatch.PICK_TIME; //创建变量克隆对象用于传入DBSubmitAction中保存当前需要暂存的数据值 var _CurSn = CurSn.Clone(); @@ -637,16 +640,6 @@ action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.ScanItem.ScanException", input.SN)); } return SetOutPutMqttMsg(action, input.Locale); } /// <summary> /// 实际需求数量计算方法 /// </summary> /// <param name="dtl"></param> /// <returns></returns> private double GetActReqQty(BIZ_WMS_PREP_DTL dtl) { return dtl.QTY_REQ; } /// <summary> @@ -777,6 +770,17 @@ return SetOutPutMqttMsg(action, locale); } /// <summary> /// 调用发料单据的ERP接口 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<ApiAction> CommitToERP(BaseInput input) { var action = await CurPREP.Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>() .CommitToERP(this, input); return action; } #endregion /// <summary> Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs
@@ -62,7 +62,7 @@ public string FieldName { get; set; } */ [SugarColumn(IsIgnore = true)] public BIZ_WMS_PREP_BTH CurBatch => Batchs?.OrderBy(q => q.CALL_TIME).FirstOrDefault(q => q.STATUS < STATUSs.Close.GetValue()); public BIZ_WMS_PREP_BTH CurBatch => Batchs?.OrderBy(q => q.CALL_TIME).FirstOrDefault(q => q.STATUS < STATUSs.Sended.GetValue()); #endregion #region 外键属性