昨天 | Ben Lin | ![]() |
昨天 | YangYuGang | ![]() |
昨天 | YangYuGang | ![]() |
昨天 | YangYuGang | ![]() |
Tiger.Business.WMS/Common/WmsTask.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/ERP/WMS_U9C.CreateRcvLineLocation.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Controllers.WMS/Controllers/WMSController.Print_BIZ_U9_ASN.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.IBusiness.WMS/Transaction/IPrint_BIZ_U9_ASN.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.IBusiness.WMS/iERP/IWMS_U9C.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Tiger.Business.WMS/Common/WmsTask.cs
@@ -769,22 +769,27 @@ /// <summary> /// 设置当前物料的默认储位 /// </summary> public ApiAction<ScanOutput> SetDefaultLocation(DbClient db, BAS_ITEM Item, WMS_LOCATION location) public ApiAction<ScanOutput> SetDefaultLocation(DbClient db, BAS_ITEM Item, WMS_LOCATION location, long RcvLineId) { var action = new ApiAction<ScanOutput>(new ScanOutput()); //调用设置默认储位接口 //var iInput = new CreateRcvLineLocationInput //{ //}; //var result = await DI.Resolve<IWMS_U9C>().CreateRcvLineLocation(iInput); //if (!result.IsSuccessed) //{ // action.IsSuccessed = false; // action.LocaleMsg = result.LocaleMsg; //} //else var iInput = new CreateRcvLineLocationInput { IsLogin = true, RcvLineLocationParam = new() { RcvLineId = RcvLineId, BinCode = location.LOCATION_CODE, } }; var result = DI.Resolve<IWMS_U9C>().CreateRcvLineLocation(iInput).Result; if (!result.IsSuccessed) { action.IsSuccessed = false; action.LocaleMsg = result.LocaleMsg; } else { Item.DEFAULT_LOCATION = location.LOCATION_CODE; db.Updateable(Item, UserCode).UpdateColumns(q => new { q.DEFAULT_LOCATION, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); Tiger.Business.WMS/ERP/WMS_U9C.CreateRcvLineLocation.cs
@@ -30,22 +30,21 @@ public static string CreateRcvLineLocationUrl { get; set; } = "http://172.16.80.20/u9c/webapi/CustReceivement/CreateRcvLineLocation"; /// <summary> /// 创建收货单新增行库位 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<ApiAction<List<U9CReturnData>>> CreateRcvLineLocation(CreateRcvLineLocationInput input) public async Task<ApiAction<List<U9CReturnData2>>> CreateRcvLineLocation(CreateRcvLineLocationInput input) { Logger.Interface.Info($"/**\r\n *进入创建收货单新增行库位接口....\r\n */\r\n"); //固定写法 var action = new ApiAction<List<U9CReturnData>>(); var action = new ApiAction<List<U9CReturnData2>>(); try { //如果已经登录则不需要再次登录,直接使用传入的token if (input.IsLogin) { var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={input.userId}{secret}"); var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={Reviewer}{secret}"); if (u9CLoginResult.Success) { input.token = u9CLoginResult.Data; @@ -53,25 +52,25 @@ } } var response = await HttpHelper.PostAsync(CreateRcvLineLocationUrl, JsonConvert.SerializeObject(input.RcvLineLocationParam), new Dictionary<string, string>() { { "token", input.token } }); var result = JsonConvert.DeserializeObject<U9CResult>(response.Message); var result = JsonConvert.DeserializeObject<U9CResult2>(response.Message); if (result != null) { if (result.Success && result.Data[0].m_isSucess) if (result.Success && result.Data[0].IsSucess) { action.Data = result.Data; Logger.Interface.Info($"创建收货单新增行库位接口提交Json: {JsonConvert.SerializeObject(input.RcvLineLocationParam)},返回Json: {response.Message}"); Logger.Interface.Info($"收货单新增行库位接口提交Json: {JsonConvert.SerializeObject(input.RcvLineLocationParam)},返回Json: {response.Message}"); } else { action.IsSuccessed = false; action.LocaleMsg = new($"{action.Message}; {result.Data[0].m_errorMsg}"); Logger.Interface.Info($"创建收货单新增行库位接口失败:{result.Data[0].m_errorMsg}"); action.LocaleMsg = new($"{action.Message}; {result.Data[0].ErrorMsg}"); Logger.Interface.Info($"收货单新增行库位接口失败:{result.Data[0].ErrorMsg}"); } } } catch (System.Exception ex) { action.CatchExceptionWithLog(ex, "创建收货单新增行库位异常"); action.CatchExceptionWithLog(ex, "收货单新增行库位异常"); } Logger.Interface.Info($"/* 创建收货单新增行库位结束 */\r\n"); //固定写法 return action; Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
@@ -374,7 +374,7 @@ //设置当前物料的默认储位 if (CurInvItem.ItemInfo.DEFAULT_LOCATION.IsNullOrEmpty()) { SetDefaultLocation(MainDB, CurInvItem.ItemInfo, nLocation); SetDefaultLocation(MainDB, CurInvItem.ItemInfo, nLocation, receiptDtl.ID.ToInt64()); } }); //if (!action.Data.Data.IsNullOrEmpty() && action.Data.Data is DefaultInStoreOutput) Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs
@@ -55,7 +55,32 @@ { var _Sns = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.ORDER_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(s => SqlFunc.StartsWith(s.UPDATE_USER, $"GenerateASN_{UserCode}")).Select(s => s.ORDER_NO)).ToList(); CurSn.AddRange(_Sns); OrderList = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.RECEIVER == $"{UserCode}_NoSource" && SqlFunc.Subqueryable<BIZ_U9_ASN>().Where(s => s.ORDER_NO == q.ORDER_NO && s.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()).Any()).Select(q => q.ORDER_NO).ToList(); } /// <summary> /// 获取当前所有单据信息 /// </summary> /// <returns></returns> public async Task<ApiAction<List<BIZ_U9_ASN>>> GetOrderList() { var action = new ApiAction<List<BIZ_U9_ASN>>(); action.Data = await Biz.Db.Queryable<BIZ_U9_ASN>().Where(q => OrderList.Contains(q.ORDER_NO)).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().ToListAsync(); if (!action.Data.IsNullOrEmpty()) { foreach (var order in action.Data) { foreach (var dtl in order.Details) { dtl.SnList = order.SnList.Where(q => q.LINE_NO == dtl.LINE_NO).OrderByDescending(q => q.STATUS).ToList(); dtl.QTY_COUNTED = dtl.SnList.Where(q => q.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue()).Sum(q => q.QTY); } order.IsFinished = !order.Details.Where(q => q.QTY != q.QTY_COUNTED).Any(); } } return action; } /// <summary> /// 扫描入口 /// </summary> @@ -186,7 +211,10 @@ action.LocaleMsg = Biz.L($"扫描的条码的ASN单[{AsnSn.ORDER_NO}]的行号[{AsnSn.LINE_NO}]已经存在,请先完成未完成的操作"); return action; } CurSn.Add(AsnSn); if (!CurSn.Any(q=>q.SN == AsnSn.SN)) { CurSn.Add(AsnSn); } if (!CurOrder.ORDER_NO.StartsWith("WASN")) { CurOrder.ORDER_NO = $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}"; @@ -222,6 +250,10 @@ CurReqType = reqType; } var dtl = input.Options["record"].ToString().JsonToObject<BIZ_U9_ASN_DTL>(); if (CurReqType == "2") { CurOrder = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(s => SqlFunc.StartsWith(s.UPDATE_USER, $"GenerateASN_{UserCode}_Sample")).Select(s => s.ORDER_NO)).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); } CurOrder = CurOrder??new() { ORDER_NO= $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}", SUPP_CODE = dtl.SUPP_CODE, @@ -229,15 +261,25 @@ PLANARRIVED_DATE = DateTime.Now, AUTH_ORG = OrgCode, }; if (!CurOrder.ORDER_NO.IsNullOrEmpty() && CurOrder.ORDER_NO.StartsWith("WASN") && CurOrder.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()) if (MainDB.Queryable<BIZ_U9_ASN_DTL>().Any(q => q.ORDER_NO == CurOrder.ORDER_NO && q.ITEM_CODE == dtl.ITEM_CODE)) { action.IsSuccessed = false; action.LocaleMsg = Biz.L($"已经生成ASN单[{CurOrder.ORDER_NO}],请继续下一步操作"); action.LocaleMsg = Biz.L($"扫当前生成的单号[{CurOrder.ORDER_NO}]及物料编码[{dtl.ITEM_CODE}]已经存在,请先完成未完成的操作"); return action; } //如果没有供应商名称,则从供应商表中获取 if (CurOrder.SUPP_NAME.IsNullOrEmpty()) { CurOrder.SUPP_NAME = MainDB.Queryable<BAS_SUPPLIER>().Where(q => q.SUPP_CODE == CurOrder.SUPP_CODE).First()?.SUPP_NAME_CN; } //if (!CurOrder.ORDER_NO.IsNullOrEmpty() && CurOrder.ORDER_NO.StartsWith("WASN") && CurOrder.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()) //{ // action.IsSuccessed = false; // action.LocaleMsg = Biz.L($"已经生成ASN单[{CurOrder.ORDER_NO}],请继续下一步操作"); // return action; //} dtl.UPDATE_USER = $"GenerateASN_{UserCode}"; dtl.REMARK = CurSn.Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO).FirstOrDefault()?.SN; dtl.UPDATE_USER = CurReqType == "2" ? $"GenerateASN_{UserCode}_Sample": $"GenerateASN_{UserCode}"; dtl.REMARK = CurReqType == "1"? CurSn.Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO).FirstOrDefault()?.SN: dtl.REMARK; dtl.ORDER_NO = CurOrder.ORDER_NO; BIZ_U9_ASN Asn = new() { @@ -260,7 +302,7 @@ _dtl.ID = Guid.NewGuid().ToString("N"); _dtl.IS_GIFT = reqType == "1" ? "Y" : "N"; _dtl.AUTH_ORG = CurOrder.AUTH_ORG; _dtl.LINE_NO = _dtl.LINE_NO ?? "10"; _dtl.LINE_NO = _dtl.LINE_NO ?? "0"; input.Options["record"] = _dtl.ToJson(); var _Asn = Asn.Clone(); AddCommitAction("GenerateASN", () => @@ -268,10 +310,26 @@ //使用统一的事务DB对象 var db = GetCommitDB(); //数据保存逻辑 db.Insertable(_Asn, UserCode).ExecuteCommand(); var x = db.Storageable(_Asn).WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }).ToStorage(); x.AsInsertable.ExecuteCommand(); x.AsUpdateable .IgnoreColumns(x => x.ID) .UpdateColumns(q => new { q.ORDER_NO, q.AUTH_ORG, q.DELIVERY_DATE, q.STATUS, q.SUPP_CODE, q.SUPP_NAME, q.PLANARRIVED_DATE, q.ORDER_DATE, q.UPDATE_TIME, q.UPDATE_USER }) .ExecuteCommand(); var y = db.Storageable(_dtl).WhereColumns(t => new { t.ORDER_NO, t.LINE_NO, t.GHOST_ROW }).ToStorage(); y.AsInsertable.ExecuteCommand(); y.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ITEM_CODE, q.AUTH_ORG, q.QTY, q.STATUS, q.SUPP_CODE, q.SUPP_LOTNO, q.QTY_PACKING, q.QTY_GIFT, q.IS_GIFT, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); y.AsUpdateable .IgnoreColumns(x => x.ID) .UpdateColumns(q => new { q.ITEM_CODE, q.AUTH_ORG, q.QTY, q.STATUS, q.SUPP_CODE, q.SUPP_LOTNO, q.QTY_PACKING, q.QTY_GIFT, q.IS_GIFT, q.UPDATE_TIME, q.UPDATE_USER }) .ExecuteCommand(); if (reqType == "2") { db.Updateable<BIZ_U9_ASN_DTL>() .SetColumns( it => it.LINE_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(q=>q.ORDER_NO == _dtl.ORDER_NO).Select(q => (SqlFunc.AggregateMax(SqlFunc.ToInt32(q.LINE_NO)) + 10).ToString())) .Where(q=>q.ORDER_NO == _dtl.ORDER_NO && q.LINE_NO == _dtl.LINE_NO) .ExecuteCommand(); } }); action = await Submit(input); } @@ -335,7 +393,7 @@ QTY = sn.QTY, LOTNO = barcode.LotNo, CARTON_NO = barcode.SN, RECEIVER = UserCode, RECEIVER = $"{UserCode}_NoSource", RECEIVE_DATE = DateTime.Now, }; sns.Add(info); @@ -393,6 +451,14 @@ //数据保存逻辑 db.Updateable<BIZ_U9_ASN>(UserCode).SetColumns(q => q.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()).Where(q => q.ORDER_NO == dtl.ORDER_NO).ExecuteCommand(); db.Storageable(sns, UserCode).ExecuteCommand(); if (reqType == "2") { db.Updateable<BIZ_U9_ASN_SN>() .SetColumns(q => q.LINE_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(t1 => t1.ID == dtl.ID).Select(t1 => t1.LINE_NO)) .Where(q=>sns.Select(s=>s.ID).Contains(q.ID)) .ExecuteCommand(); } var s = db.Storageable(items, UserCode).WhereColumns(t => new { t.SN, t.GHOST_ROW }).ToStorage(); s.AsInsertable.ExecuteCommand(); s.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ITEM_CODE, q.AUTH_ORG, q.STATUS, q.QTY, q.PROD_DATE, q.UNIT, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SUPP_CODE, q.SUPP_LOTNO, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); Tiger.Controllers.WMS/Controllers/WMSController.Print_BIZ_U9_ASN.cs
@@ -137,6 +137,45 @@ return Ok(response); } [HttpPost] [Route("api/[controller]/Print_U9Asn/GetOrderList")] public async Task<IActionResult> Print_BIZ_U9_ASN_GetOrderListAsync([FromBody] ApiAction<BaseInput> action) { ApiAction response; IPrint_BIZ_U9_ASN trans = null; try { if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) { trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IPrint_BIZ_U9_ASN; if (!trans.IsFinished) { if (action.IsAsync) { response = action.GetResponse(await trans.Scan(action.Data)); } else { lock (trans.TransLock) { response = action.GetResponse(trans.GetOrderList().Result); } } } else { response = action.GetResponse($"Transaction Error: (U9)来料打印清点事务[ID:{action.ID}]已经关闭,请重新打开(U9)来料打印清点功能", false); } } else { response = action.GetResponse($"Transaction Error: (U9)来料打印清点事务[ID:{action.ID}]数据丢失,请重新打开(U9)来料打印清点功能", false); } } catch (System.Exception ex) { response = action.GetResponse().CatchExceptionWithLog(ex); } trans?.AddHistory(Request, action); return Ok(response); } /// <summary> /// GenerateReceipt(ApiAction(BaseInput(Data:OrderNo))) Tiger.IBusiness.WMS/Transaction/IPrint_BIZ_U9_ASN.cs
@@ -19,6 +19,7 @@ /// 扫描入口 /// </summary> public Task<ApiAction<ScanOutput>> Scan(BaseInput input); public Task<ApiAction<List<BIZ_U9_ASN>>> GetOrderList(); public Task<ApiAction> GenerateReceipt(BaseInput input); Tiger.IBusiness.WMS/iERP/IWMS_U9C.cs
@@ -27,5 +27,7 @@ public Task<ApiAction<List<U9CReturnData2>>> TransferInApprove(TransferInSubmitInput input); public Task<ApiAction<List<U9CReturnData2>>> MiscShipApprove(MiscShipApproveInput input); public Task<ApiAction<List<U9CReturnData2>>> MiscRcvTransApprove(MiscRcvTransApproveInput input); public Task<ApiAction<List<U9CReturnData2>>> CreateRcvLineLocation(CreateRcvLineLocationInput input); } } Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
@@ -965,7 +965,7 @@ /// <summary> /// 收货行ID /// </summary> public string RcvLineId { get; set; } public long RcvLineId { get; set; } /// <summary> /// 储位 /// </summary>