From 232dfd1b940e69b5c264e0c9386e66a291218173 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期五, 09 五月 2025 10:45:34 +0800 Subject: [PATCH] Merge branch 'master' of http://47.115.28.255:8110/r/TigerClouds-Tech/Server/TigerApi6_2024 --- Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs | 125 ++++++++++++++++++++++++++++++++--------- 1 files changed, 98 insertions(+), 27 deletions(-) diff --git a/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs b/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs index 4e2370d..064f487 100644 --- a/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs +++ b/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs @@ -44,7 +44,7 @@ private List<BIZ_U9_ASN_SN> CurSn = new(); List<string> SnList = new(); private string rcvDocType = "RCV03"; //榛樿鏃犲崟 - private string CurReqType = "0"; + private string CurReqType = "0"; #endregion #region Functions @@ -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.STATUS != BIZ_U9_ASN.STATUSs.Finished.GetValue()).Any(); + } + } + return action; + } + /// <summary> /// 鎵弿鍏ュ彛 /// </summary> @@ -180,13 +205,16 @@ action.Data.Data = CurOrder; return action; } - if (CurSn.Any(q=> q.ORDER_NO == AsnSn.ORDER_NO && q.LINE_NO == AsnSn.LINE_NO)) + if (CurSn.Any(q => q.ORDER_NO == AsnSn.ORDER_NO && q.LINE_NO == AsnSn.LINE_NO)) { action.IsSuccessed = false; 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")}"; @@ -217,27 +245,44 @@ { var reqType = input.Options["reqType"].ToString(); //濡傛灉绫诲瀷涓嶄竴鏍凤紝鍒欐竻闄urOrder - if (CurReqType != reqType) { + if (CurReqType != reqType) + { CurOrder = null; CurReqType = reqType; } var dtl = input.Options["record"].ToString().JsonToObject<BIZ_U9_ASN_DTL>(); - CurOrder = CurOrder??new() { - ORDER_NO= $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}", + 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, DELIVERY_DATE = DateTime.Now, 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 +305,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 +313,26 @@ //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄 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); } @@ -300,11 +361,11 @@ action.LocaleMsg = Biz.L($"鎴愬姛鎻愪氦ASN鍗昜{dtl.ORDER_NO}]琛屾暟鎹紝璇风偣鍑绘墦鍗版寜閽墦鍗版爣绛�"); var asnSn = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO && (q.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).ToList(); - if (asnSn.Count>0 && asnSn.Sum(q => q.QTY) == dtl.QTY) + if (asnSn.Count > 0 && asnSn.Sum(q => q.QTY) == dtl.QTY) { action.IsSuccessed = false; action.LocaleMsg = dtl.ORDER_NO.IsNullOrEmpty() ? Biz.L($"鏁版嵁涓嶅瓨鍦紒") : Biz.L($"ASN鍗昜{dtl.ORDER_NO}]琛孾{dtl.LINE_NO}]鏁版嵁宸插叏閮ㄦ彁浜ゅ畬鎴愶紝濡傛灉鏈墦鍗版爣绛捐鐐瑰嚮鎵撳嵃鎸夐挳鎵撳嵃鏍囩"); - SnList.AddRange(asnSn.Select(q=>q.SN)); + SnList.AddRange(asnSn.Select(q => q.SN)); return action; } List<BIZ_U9_ASN_SN> sns = new(); @@ -316,7 +377,7 @@ foreach (var sn in snlist) { var strs = sn.SN.Split('/'); - var metaSn = reqType == "2" ? $"{DI.Resolve<ICodeRuleCache>()["SampleBarcode"]?.Generate(strs[0],"/", strs[1], "/").Data.ToString() ?? ""}" : DI.Resolve<ICodeRuleCache>()["NoSourceBarcode"]?.Generate($"{sn.SN}").Data.ToString() ?? ""; + var metaSn = reqType == "2" ? $"{DI.Resolve<ICodeRuleCache>()["SampleBarcode"]?.Generate(strs[0], "/", strs[1], "/").Data.ToString() ?? ""}" : DI.Resolve<ICodeRuleCache>()["NoSourceBarcode"]?.Generate($"{sn.SN}").Data.ToString() ?? ""; SnList.Add(metaSn); var barcode = new Barcode(metaSn); BIZ_U9_ASN_SN info = new() @@ -335,7 +396,7 @@ QTY = sn.QTY, LOTNO = barcode.LotNo, CARTON_NO = barcode.SN, - RECEIVER = UserCode, + RECEIVER = $"{UserCode}_NoSource", RECEIVE_DATE = DateTime.Now, }; sns.Add(info); @@ -391,8 +452,16 @@ //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄 var db = GetCommitDB(); //鏁版嵁淇濆瓨閫昏緫 - 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.Updateable<BIZ_U9_ASN>(UserCode).SetColumns(q => new BIZ_U9_ASN() { STATUS = BIZ_U9_ASN.STATUSs.Counting.GetValue(), COMMIT_JSON = $"{reqType}" }).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(); @@ -425,11 +494,11 @@ public async Task<ApiAction> GenerateReceipt(BaseInput input) { var action = new ApiAction(); - var orderNo = CurOrder.ORDER_NO; + var orderNo = input.Data.ToString(); //CurOrder.ORDER_NO; try { var reqType = input.Options["reqType"].ToString(); - var order = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == orderNo).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); + var order = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == orderNo).Includes(q => q.Details, d => d._ItemInfos, e => e.ExtInfo).IncludesAllFirstLayer().FirstAsync(); if (order.IsNullOrEmpty()) { action.IsSuccessed = false; @@ -460,6 +529,7 @@ //濡傛灉鏄殢鍗曡禒鍝佹垨鑰呮牱鍝� if (reqType.ToInt32() > 0) { + rcvDocType = reqType == "2" ? "RCV03" : "RCV01"; var iInput = new CreateReceivementInput { userId = UserCode, @@ -469,14 +539,15 @@ rcvDTO = new() { Supplier = new() { m_code = order.SUPP_CODE }, + BusinessDate = DateTime.Now, RcvDocType = new() { m_code = rcvDocType }, - RcvLines = finishNotSubmit.Select(q=> new RcvLine + RcvLines = finishNotSubmit.Select(q => new RcvLine { - ItemInfo = new() { m_itemCode = q.ITEM_CODE}, + ItemInfo = new() { m_itemCode = q.ITEM_CODE }, Wh = new() { m_code = "10101" }, RcvLineLocations = new(){ new(){ - Location = new(){ m_code= q.ItemInfo.DEFAULT_LOCATION}, + Location = new(){ m_code= q.ItemInfo.DEFAULT_LOCATION??""}, LocationQtyTU = q.QTY, } }, @@ -485,9 +556,9 @@ RcvQtyTU = 0, RcvQtyPU = 0, EyeballingQtyTU = q.QTY, - RcvProcedure = 0, + RcvProcedure = q.ItemInfo.ExtInfo.ReceiptMode, RcvLotCode = q.SUPP_LOTNO, - InvLotCode = q.LOTNO, + InvLotCode = q.LOTNO, }).ToList(), } }, @@ -513,7 +584,7 @@ { ASNLineKey = q.ID, TransQty = new() { m_amount1 = q.QTY }, - BinInfoList = new() { new() { Bin = new() { m_code = q.ItemInfo.DEFAULT_LOCATION }, LocationQtySU = q.QTY, LocationQtyTU = q.QTY } }, + BinInfoList = new() { new() { Bin = new() { m_code = q.ItemInfo?.DEFAULT_LOCATION ?? "" }, LocationQtySU = q.QTY, LocationQtyTU = q.QTY } }, }).ToList(), } }; @@ -551,7 +622,7 @@ foreach (var item in list) { - var asnDtl = finishNotSubmit.First(q => q.ID == item.SrcASNDocLineId.ToString()); + var asnDtl = finishNotSubmit.First(q => q.ID == item.SrcASNDocLineId.ToString() || (item.SrcASNDocLineId.ToString()=="0" && q.ITEM_CODE == item.ItemCode && q.QTY==item.RcvQtyTU)); BIZ_U9_RECEIPT_DTL receiptDt = new() { ID = item.RcvLineId.ToString(), -- Gitblit v1.9.3