From e163a27328c805ffec7c894259430f76f0881d00 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期四, 03 四月 2025 23:12:23 +0800
Subject: [PATCH] 更新收货单提交按行提交已完成清点的行,上架增加IQC审核的判断

---
 Tiger.Business.WMS/ERP/U9C_WMS.cs                         |    8 +-
 Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs   |    2 
 Tiger.Api/Language.db                                     |    0 
 Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransferIn.cs      |   24 ++++----
 Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs   |   31 +++++++---
 Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs  |   12 +++
 Tiger.Model.Net/Entitys/WMS/BIZ_U9_RECEIPT_DTL.cs         |   28 ++++++---
 Tiger.Model.Net/Entitys/MES/YadaU9/mes_ReturnedDocInfo.cs |    8 ++
 Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransInLine.cs     |   40 ++++++------
 9 files changed, 98 insertions(+), 55 deletions(-)

diff --git a/Tiger.Api/Language.db b/Tiger.Api/Language.db
index be164f4..9a024a6 100644
--- a/Tiger.Api/Language.db
+++ b/Tiger.Api/Language.db
Binary files differ
diff --git a/Tiger.Business.WMS/ERP/U9C_WMS.cs b/Tiger.Business.WMS/ERP/U9C_WMS.cs
index 9563e70..28f4a1d 100644
--- a/Tiger.Business.WMS/ERP/U9C_WMS.cs
+++ b/Tiger.Business.WMS/ERP/U9C_WMS.cs
@@ -340,8 +340,10 @@
                         AUTH_ORG = orgs.FirstOrDefault(q => q.ID == item.Org.ToString())?.ORG_CODE,  //鐢熶骇鍗曞厓鎺堟潈鏍囪瘑瀛楃
                         CREATE_TIME = item.ModifiedOn,//--鏃堕棿涓嶆洿鏂�
                         CREATE_USER = UserCode,
-                       UPDATE_TIME = item.ModifiedOn,
-                        UPDATE_USER = UserCode
+                        UPDATE_TIME = item.ModifiedOn,
+                        UPDATE_USER = UserCode,
+                        ERP_STATUS_CODE = item.Status.ToString(),
+                        ERP_STATUS_NAME = item.StatusName,
                     };
                     resultDt.Add(info);
                 }
@@ -367,7 +369,7 @@
                                .WhereColumns(t => new { t.ORDER_NO, t.LINE_NO, t.GHOST_ROW })
                                .ToStorage();
                         y.AsInsertable.ExecuteCommand();
-                        y.AsUpdateable.UpdateColumns(q => new { q.STATUS, q.ORDER_NO, q.LINE_NO, q.ITEM_CODE, q.QTY, q.AUTH_ORG, q.CREATE_USER, q.UPDATE_USER, q.UPDATE_TIME }).ExecuteCommand();
+                        y.AsUpdateable.UpdateColumns(q => new { q.STATUS, q.ORDER_NO, q.LINE_NO, q.ITEM_CODE, q.QTY, q.AUTH_ORG, q.ERP_STATUS_CODE, q.ERP_STATUS_NAME, q.CREATE_USER, q.CREATE_TIME, q.UPDATE_USER, q.UPDATE_TIME }).ExecuteCommand();
                     });
                 }
                 Logger.Scheduler.Info($"鏀惰揣鍗曡〃澶翠俊鎭瓨鍏ユ暟鎹簱锛屾�绘暟锛歔{resultDt.Count}]");
diff --git a/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs b/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs
index 8fbcc2c..912f92e 100644
--- a/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs
@@ -402,12 +402,13 @@
                     return action;
                 }
 
-                //鏌ヨ鏄惁娓呯偣瀹屾垚
+                //鏌ヨ鏄惁瀛樺湪娓呯偣瀹屾垚鐨勮鏄庣粏锛屽鏋滄湁鍒欏厛鎻愪氦瀹屾垚鐨勮锛屽鏋滄病鏈夊垯鎶ラ敊
+                var finishNotSubmit = order.Details.Where(q => SqlFunc.IsNullOrEmpty(q.RECEIVER_NO) && q.QTY == order.SnList.Where(s => s.LINE_NO == q.LINE_NO && (s.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).Sum(s => s.QTY)).ToList();
                 var noFinish = order.Details.Where(q => q.QTY != order.SnList.Where(s => s.LINE_NO == q.LINE_NO && (s.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).Sum(s => s.QTY));
-                if (noFinish.Any())
+                if (!finishNotSubmit.Any())
                 {
                     action.IsSuccessed = false;
-                    //action.LocaleMsg = Biz.L("閫佽揣鍗昜{0}]鏈竻鐐瑰畬鎴愶紝璇峰厛娓呯偣瀹屾垚锛屾湭瀹屾垚娓呯偣鐨勮鍙峰涓嬶細{1}");
+                    //action.LocaleMsg = Biz.L("閫佽揣鍗昜{0}]娌℃湁娓呯偣瀹屾垚鍙互鎻愪氦鐨勮锛屾湭瀹屾垚娓呯偣鐨勮鍙峰涓嬶細{1}");
                     action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.NoFinishCounting", orderNo, string.Join("锛�", noFinish.Select(q => q.LINE_NO)));
                     return action;
                 }
@@ -418,7 +419,7 @@
                     IsLogin = true,
                     CreateRcvBySrcASNParam = new()
                     {
-                        aSNToRcvTransDTOs = order.Details.Select(q => new ASNToRcvTransDTO
+                        aSNToRcvTransDTOs = finishNotSubmit.Select(q => new ASNToRcvTransDTO
                         {
                             ASNLineKey = q.ID,
                             TransQty = new() { m_amount1 = q.QTY },
@@ -459,7 +460,7 @@
 
                     foreach (var item in list)
                     {
-                        var asnDtl = order.Details.First(q => q.ID == item.SrcASNDocLineId.ToString());
+                        var asnDtl = finishNotSubmit.First(q => q.ID == item.SrcASNDocLineId.ToString());
                         BIZ_U9_RECEIPT_DTL receiptDt = new()
                         {
                             ID = item.RcvLineId.ToString(),
@@ -475,8 +476,16 @@
                             ASN_LINE_ID = item.SrcASNDocLineId.ToString(),
                             ASN_LINE = asnDtl.LINE_NO,
                             ERP_CODE = item.ItemCode1,
+                            ERP_STATUS_CODE = item.Status.ToString(),
+                            ERP_STATUS_NAME = item.StatusName,
                         };
                         receipt.Details.Add(receiptDt);
+                        asnDtl.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue();
+                        asnDtl.RECEIVER_ID = item.RcvId.ToString();
+                        asnDtl.RECEIVER_NO = item.DocNo;
+                        asnDtl.RECEIVER_LINE = item.DocLineNo.ToString();
+                        asnDtl.RECEIVER = UserCode;
+                        asnDtl.RECEIVE_DATE = DateTime.Now;
                     }
 
                     foreach (var sn in order.SnList)
@@ -529,11 +538,12 @@
                     item.TRANS_NO = receipt.ORDER_NO;
                     item.TRANS_LINE = receipt.SnList.First(q => q.SN == item.SN).LINE_NO;
                 }
-                order.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue();
-                order.RECEIVER_ID = receipt.ID;
-                order.RECEIVER_NO = receipt.ORDER_NO;
-                order.RECEIVER = UserCode;
-                order.RECEIVE_DATE = DateTime.Now;
+                if (!noFinish.Any())
+                {
+                    order.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue();
+                    order.RECEIVER = UserCode;
+                    order.RECEIVE_DATE = DateTime.Now;
+                }
 
                 //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
                 var db = GetCommitDB();
@@ -543,6 +553,7 @@
                     db.Updateable(pkgs, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.AUTH_ORG, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SOURCE_CODE, q.SOURCE_ORDER, q.SOURCE_LINE }).ExecuteCommand();
                     db.Insertable(historys, UserCode).ExecuteCommand();
                     db.Updateable(order, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.RECEIVER, q.RECEIVE_DATE, q.RECEIVER_ID, q.RECEIVER_NO }).ExecuteCommand();
+                    db.Updateable(finishNotSubmit, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.RECEIVER, q.RECEIVE_DATE, q.RECEIVER_ID, q.RECEIVER_NO }).ExecuteCommand();
                     db.Insertable(receipt, UserCode).ExecuteCommand();
                     db.Insertable(receipt.Details, UserCode).ExecuteCommand();
                     db.Insertable(receipt.SnList, UserCode).ExecuteCommand();
diff --git a/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs b/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
index 609996a..12720db 100644
--- a/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
@@ -135,11 +135,21 @@
                 }
                 //浠嶶9鑾峰彇鏀惰揣鍗曡淇℃伅
                 var u9Dtl = Biz.DataSource["YadaU9C"].Client.Queryable<mes_ReturnedDocInfo>().Where(x => x.RcvId == receipt.ID.ToDouble() && x.DocLineNo == receiptDtl.LINE_NO.ToDouble() && x.SplitFlag != 1).First();
+                //鏀惰揣鍗曠殑鐘舵�佸垽鏂槸鍚﹀凡鎻愪氦IQC瀹℃牳锛屾湭閫氳繃IQC涓嶈兘涓婃灦
+                if (!u9Dtl.IsNullOrEmpty() && u9Dtl.Status != 3)
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = Biz.L("鏀惰揣鍗曡鐘舵�乕{0}]寮傚父锛岃鍏堟彁浜QC妫�楠岀粨鏋�");
+                    action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanItem.U9StatusException", u9Dtl.StatusName);
+                    return SetOutPutMqttMsg(action, input.Locale);
+                }
                 if (!u9Dtl.IsNullOrEmpty() && u9Dtl.RcvQtyTU != receiptDtl.QTY_OK)
                 {
                     receiptDtl.ID = u9Dtl.RcvLineId.ToString();
                     receiptDtl.QTY_OK = u9Dtl.RcvQtyTU;
                     receiptDtl.QTY_NG = receiptDtl.QTY - receiptDtl.QTY_OK;
+                    receiptDtl.ERP_STATUS_CODE = u9Dtl.Status.ToString();
+                    receiptDtl.ERP_STATUS_NAME = u9Dtl.StatusName;
                 }
 
                 var nLocation = new WMS_LOCATION();
@@ -289,7 +299,7 @@
                     var db = GetCommitDB();
                     //鏁版嵁淇濆瓨閫昏緫
                     db.Updateable(receipt, UserCode).UpdateColumns(q => new { q.STATUS, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
-                    db.Updateable(receiptDtl, UserCode).UpdateColumns(q => new { q.ID, q.STATUS, q.QTY_IN, q.QTY_OK, q.QTY_NG, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
+                    db.Updateable(receiptDtl, UserCode).UpdateColumns(q => new { q.ID, q.STATUS, q.QTY_IN, q.QTY_OK, q.QTY_NG, q.ERP_STATUS_CODE, q.ERP_STATUS_NAME, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
                     db.Updateable(receiptSn, UserCode).UpdateColumns(q => new { q.STATUS, q.IS_IN, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
                 });
 
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 5c963a7..9ba2272 100644
--- a/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs
@@ -377,6 +377,8 @@
                             ASN_LINE_ID = item.SrcASNDocLineId.ToString(),
                             ASN_LINE = asnDtl.LINE_NO,
                             ERP_CODE = item.ItemCode1,
+                            ERP_STATUS_CODE = item.Status.ToString(),
+                            ERP_STATUS_NAME = item.StatusName,
                         };
                         receipt.Details.Add(receiptDt);
                     }
diff --git a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_ReturnedDocInfo.cs b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_ReturnedDocInfo.cs
index 67e8b52..290a58c 100644
--- a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_ReturnedDocInfo.cs
+++ b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_ReturnedDocInfo.cs
@@ -55,6 +55,14 @@
 		/// </summary>
 		public int DocLineNo { get; set; }
 		/// <summary>
+		/// 单据状态
+		/// </summary>
+		public int Status { get; set; }
+		/// <summary>
+		/// 单据状态名称
+		/// </summary>
+		public string StatusName { get; set; }
+		/// <summary>
 		/// 料号
 		/// </summary>
 		public string ItemCode { get; set; }
diff --git a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransInLine.cs b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransInLine.cs
index be60208..034e01a 100644
--- a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransInLine.cs
+++ b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransInLine.cs
@@ -23,83 +23,83 @@
 
 		#region 公共属性
 		/// <summary>
-		/// 
+		/// 行ID
 		/// </summary>
 		public long TransferInLineId { get; set; }
 		/// <summary>
-		/// 
+		/// 单头ID
 		/// </summary>
 		public long TransferInId { get; set; }
 		/// <summary>
-		/// 
+		/// 行号
 		/// </summary>
 		public int DocLineNo { get; set; }
 		/// <summary>
-		/// 
+		/// 料号
 		/// </summary>
 		public string ItemCode { get; set; }
 		/// <summary>
-		/// 
+		/// 品名
 		/// </summary>
 		public string ItemName { get; set; }
 		/// <summary>
-		/// 
+		/// 调出数量
 		/// </summary>
 		public double StoreUOMQty { get; set; }
 		/// <summary>
-		/// 
+		/// 调出单位
 		/// </summary>
 		public string StoreUOM { get; set; }
 		/// <summary>
-		/// 
+		/// 成本数量
 		/// </summary>
 		public double CostUOMQty { get; set; }
 		/// <summary>
-		/// 
+		/// 成本单位
 		/// </summary>
 		public string CostUOM { get; set; }
 		/// <summary>
-		/// 
+		/// 调入仓库
 		/// </summary>
 		public string TransInWhCode { get; set; }
 		/// <summary>
-		/// 
+		/// 调入仓库名称
 		/// </summary>
 		public string TransInWhName { get; set; }
 		/// <summary>
-		/// 
+		/// 调出仓库
 		/// </summary>
 		public string TransOutWhCode { get; set; }
 		/// <summary>
-		/// 
+		/// 调出仓库名称
 		/// </summary>
 		public string TransOutWhName { get; set; }
 		/// <summary>
-		/// 
+		/// 调入库位
 		/// </summary>
 		public string TransInBin { get; set; }
 		/// <summary>
-		/// 
+		/// 调出库位
 		/// </summary>
 		public string TransOutBin { get; set; }
 		/// <summary>
-		/// 
+		/// 批次号
 		/// </summary>
 		public string LotCode { get; set; }
 		/// <summary>
-		/// 
+		/// 创建人
 		/// </summary>
 		public string CreatedBy { get; set; }
 		/// <summary>
-		/// 
+		/// 创建时间
 		/// </summary>
 		public DateTime CreatedOn { get; set; } = DateTime.MinValue;
 		/// <summary>
-		/// 
+		/// 更新人
 		/// </summary>
 		public string ModifiedBy { get; set; }
 		/// <summary>
-		/// 
+		/// 更新时间
 		/// </summary>
 		public DateTime ModifiedOn { get; set; } = DateTime.MinValue;
 		#endregion
diff --git a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransferIn.cs b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransferIn.cs
index d7f6ff4..980ddeb 100644
--- a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransferIn.cs
+++ b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_TransferIn.cs
@@ -23,51 +23,51 @@
 
 		#region 公共属性
 		/// <summary>
-		/// 
+		/// 调入单号
 		/// </summary>
 		public long TransferInId { get; set; }
 		/// <summary>
-		/// 
+		/// 调入组织
 		/// </summary>
 		public long Org { get; set; }
 		/// <summary>
-		/// 
+		/// 业务日期
 		/// </summary>
 		public DateTime BusinessDate { get; set; } = DateTime.MinValue;
 		/// <summary>
-		/// 
+		/// 单号
 		/// </summary>
 		public string DocNo { get; set; }
 		/// <summary>
-		/// 
+		/// 单据类型
 		/// </summary>
 		public string TransferInDocType { get; set; }
 		/// <summary>
-		/// 
+		/// 单据类型名称
 		/// </summary>
 		public string TransferInDocTypeName { get; set; }
 		/// <summary>
-		/// 
+		/// 单据状态
 		/// </summary>
 		public int Status { get; set; }
 		/// <summary>
-		/// 
+		/// 单据状态名称
 		/// </summary>
 		public string StatusName { get; set; }
 		/// <summary>
-		/// 
+		/// 创建人
 		/// </summary>
 		public string CreatedBy { get; set; }
 		/// <summary>
-		/// 
+		/// 创建时间
 		/// </summary>
 		public DateTime CreatedOn { get; set; } = DateTime.MinValue;
 		/// <summary>
-		/// 
+		/// 更新人
 		/// </summary>
 		public string ModifiedBy { get; set; }
 		/// <summary>
-		/// 
+		/// 更新时间
 		/// </summary>
 		public DateTime ModifiedOn { get; set; } = DateTime.MinValue;
 		#endregion
diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_RECEIPT_DTL.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_RECEIPT_DTL.cs
index 99b76a7..c94f193 100644
--- a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_RECEIPT_DTL.cs
+++ b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_RECEIPT_DTL.cs
@@ -78,17 +78,27 @@
 		/// </summary>
 		[DisplayName("鎶ュ簾鏁伴噺")]
 		public double QTY_SCRAP { get; set; }
-        /// <summary>
-        /// 璧犲搧鏁伴噺
-        /// </summary>
-        [DisplayName("璧犲搧鏁伴噺")]
-        public double QTY_GIFT { get; set; }
-        /// <summary>
-        /// 鎵规鍙�
-        /// </summary>
-        [DisplayName("鎵规鍙�")]
+		/// <summary>
+		/// 璧犲搧鏁伴噺
+		/// </summary>
+		[DisplayName("璧犲搧鏁伴噺")]
+		public double QTY_GIFT { get; set; }
+		/// <summary>
+		/// 鎵规鍙�
+		/// </summary>
+		[DisplayName("鎵规鍙�")]
 		public string LOTNO { get; set; }
 		/// <summary>
+		/// ERP鍗曟嵁鐘舵��
+		/// </summary>
+		[DisplayName("ERP鍗曟嵁鐘舵��")]
+		public string ERP_STATUS_CODE { get; set; }
+		/// <summary>
+		/// ERP鍗曟嵁鐘舵�佸悕绉�
+		/// </summary>
+		[DisplayName("ERP鍗曟嵁鐘舵�佸悕绉�")]
+		public string ERP_STATUS_NAME { get; set; }
+		/// <summary>
 		/// 閫佽揣鍗旾D
 		/// </summary>
 		[DisplayName("閫佽揣鍗旾D")]

--
Gitblit v1.9.3