From 48d7d2be65597d31274461daadfd2360424e28b5 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期二, 12 十一月 2024 21:36:14 +0800
Subject: [PATCH] Merge branch 'master' of http://47.115.28.255:8110/r/TigerClouds-Tech/Server/TigerApi6_2024

---
 Tiger.Business/MES/Biz.Route.cs                    |   29 +++++++++++---
 Tiger.Model.Net/Entitys/SYS/V_USER_MENU.cs         |    9 ++--
 Tiger.Business.MES/BIZ/BIZ_MES_WO.cs               |   21 ++++++++--
 Tiger.Business.MES/Transaction/Position.cs         |    4 +-
 Tiger.Business.MES/WorkAction/PrintInStoreLabel.cs |    2 
 Tiger.Business.MES/Common/WorkBatch.cs             |   19 +++++----
 Tiger.Business.MES/WorkAction/PackingAction.cs     |    2 
 Tiger.Business/SYS/Biz.Sys_Params.cs               |    2 
 Tiger.Business.MES/LabelTemplate/BAS_LABEL_TEMP.cs |   16 +++++++
 9 files changed, 73 insertions(+), 31 deletions(-)

diff --git a/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs b/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
index 43b2b5c..9052669 100644
--- a/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
+++ b/Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
@@ -501,7 +501,7 @@
                     }
                 }
                 //鍏ュ簱鏍囩
-                var wipActInStore = Biz.Db.Queryable<MES_WIP_ACT>().Where(q => q.SN == woSn.SN && q.NODE_ID == pkgList[0].NODE_ID && !SqlFunc.IsNullOrEmpty(q.ACT_VALUE_3) && q.ACT_VALUE_4 == "InStroe").First();
+                var wipActInStore = Biz.Db.Queryable<MES_WIP_ACT>().Where(q => q.SN == woSn.SN && q.NODE_ID == pkgList[0].NODE_ID && !SqlFunc.IsNullOrEmpty(q.ACT_VALUE_3) && q.ACT_VALUE_4 == "InStore").First();
                 if (!wipActInStore.IsNullOrEmpty())
                 {
                     var label = JsonConvert.DeserializeObject<BAS_LABEL_TEMP>(wipActInStore.ACT_VALUE_3);
@@ -518,7 +518,7 @@
                     string ACT_VALUE_3 = JsonConvert.SerializeObject(label);
                     foreach (var pkg in pkgList)
                     {
-                        var actSn = Biz.Db.Queryable<MES_WIP_ACT>().Where(q => q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_VALUE_4 == "InStroe").First();
+                        var actSn = Biz.Db.Queryable<MES_WIP_ACT>().Where(q => q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_VALUE_4 == "InStore").First();
                         if (!actSn.IsNullOrEmpty())
                         {
                             actSn.ACT_VALUE_3 = ACT_VALUE_3;
@@ -579,11 +579,15 @@
                 //濡傛灉鏌ヤ笉鍒板氨鍘昏涓烘棩蹇楁煡
                 if (labelPrint.IsNullOrEmpty() && input.ReqType == 1)
                 {
-                    printParam = Biz.Db.Queryable<MES_WIP_ACT>().Where(q => (q.SN.Equals(input.Code) || q.FLOW_SN.Equals(input.Code)) && q.ACT_VALUE_4 == "Customer").First()?.ACT_VALUE_3 ?? "";
+                    printParam = Biz.Db.Queryable<MES_WIP_ACT>().Where(q => q.CARTON_SN.Equals(woSn.OUTER_SN) && q.ACT_VALUE_4 == "Customer").First()?.ACT_VALUE_3 ?? "";
+                }
+                else if (labelPrint.IsNullOrEmpty() && input.ReqType == 2)
+                {
+                    printParam = Biz.Db.Queryable<MES_WIP_ACT>().Where(q => q.SN.Equals(woSn.SN) && q.ACT_VALUE_4 == "InStore").First()?.ACT_VALUE_3 ?? "";
                 }
                 else
                 {
-                    printParam = labelPrint.PRINT_PARAM;
+                    printParam = labelPrint?.PRINT_PARAM ?? "";
                 }
                 result.Data = printParam;
                 result.LocaleMsg = new($"閲嶆墦鏉$爜[{input.Code}]鐨勬爣绛炬垚鍔�");
@@ -636,14 +640,21 @@
             var result = new ApiAction();
             try
             {
-                var wipList = await Biz.Db.Queryable<MES_WIP_DATA>().Where(q => q.SN.Equals(input.SN) || q.FLOW_SN.Equals(input.SN) || q.CARTON_SN == input.SN).ToListAsync();
+                var cartonSn = input.SN.Split('|')[0];
+                var wipList = await Biz.Db.Queryable<MES_WIP_DATA>().Where(q => q.SN.Equals(input.SN) || q.FLOW_SN.Equals(input.SN) || q.CARTON_SN == cartonSn).ToListAsync();
                 if (wipList.Count == 0)
                 {
                     result.IsSuccessed = false;
                     result.LocaleMsg = new($"瑙g粦鐨勬潯鐮佷笉瀛樺湪褰撳墠鎿嶄綔琛ㄤ腑锛�");
+                    return result;
                 }
                 var wo = await Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == wipList[0].WORK_ORDER).FirstAsync();
                 result = WorkBatch.UnbindWipSnFromWO(wo, wipList, input.user);
+                if (result.IsSuccessed)
+                {
+                    var newList = await Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.WORK_ORDER == wo.ORDER_NO && q.BATCH_NO == wipList[0].BATCH_NO && SqlFunc.IsNullOrEmpty(q.PARENT_SN) && q.QTY > 0).ToListAsync();
+                    result.Data = newList;
+                }
             }
             catch (Exception ex)
             {
diff --git a/Tiger.Business.MES/Common/WorkBatch.cs b/Tiger.Business.MES/Common/WorkBatch.cs
index 50e3fe1..d230d1c 100644
--- a/Tiger.Business.MES/Common/WorkBatch.cs
+++ b/Tiger.Business.MES/Common/WorkBatch.cs
@@ -610,17 +610,18 @@
                 wo.INPUT_QTY -= wipList.Count;
                 wo.OUTPUT_QTY -= wipList.Count(q => q.STATUS == MES_WIP_DATA.STATUSs.Finished.GetValue());
                 wo.SCRAP_QTY += wipList.Count;
-                db.Updateable(wo, user).UpdateColumns(q => new { q.INPUT_QTY, q.OUTPUT_QTY, q.SCRAP_QTY, q.UPDATE_USER, q.UPDATE_TIME }).ExecuteCommand();
+                wo.STATUS = wo.STATUS.GetEnum<BIZ_MES_WO.STATUSs>() == BIZ_MES_WO.STATUSs.Closed ? BIZ_MES_WO.STATUSs.Working.GetValue() : wo.STATUS;
+                db.Updateable(wo, user).UpdateColumns(q => new { q.INPUT_QTY, q.OUTPUT_QTY, q.SCRAP_QTY, q.UPDATE_USER, q.UPDATE_TIME, q.STATUS }).ExecuteCommand();
                 //BIZ_MES_WO_BATCH
-                foreach (var batch in batchs)
+                var wobatchs = Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(q => batchs.Select(x => x.BATCH_NO).Contains(q.BATCH_NO)).ToList();
+                foreach (var batch in wobatchs)
                 {
-                    db.Updateable<BIZ_MES_WO_BATCH>(user)
-                         .SetColumns(q => q.INPUT_QTY == q.INPUT_QTY - batch.Qty)
-                         .SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY - batch.FinishQty)
-                         .SetColumns(q => q.SCRAP_QTY == q.SCRAP_QTY + batch.Qty)
-                         .Where(q => q.BATCH_NO == q.BATCH_NO)
-                         .ExecuteCommand();
+                    batch.INPUT_QTY -= batchs.Where(q=>q.BATCH_NO == batch.BATCH_NO).First().Qty;
+                    batch.OUTPUT_QTY -= batchs.Where(q => q.BATCH_NO == batch.BATCH_NO).First().FinishQty;
+                    batch.SCRAP_QTY += batchs.Where(q => q.BATCH_NO == batch.BATCH_NO).First().Qty;
+                    batch.STATUS = batch.STATUS.GetEnum<BIZ_MES_WO_BATCH.STATUSs>() == BIZ_MES_WO_BATCH.STATUSs.Closed ? BIZ_MES_WO_BATCH.STATUSs.Working.GetValue() : batch.STATUS;
                 }
+                db.Updateable(wobatchs, user).UpdateColumns(q => new { q.INPUT_QTY, q.OUTPUT_QTY, q.SCRAP_QTY, q.UPDATE_USER, q.UPDATE_TIME, q.STATUS }).ExecuteCommand();
                 //BIZ_MES_WO_SN
                 db.Updateable<BIZ_MES_WO_SN>(user)
                             .SetColumns(q => q.STATUS == BIZ_MES_WO_SN.STATUSs.Offline.GetValue())
@@ -659,7 +660,7 @@
                     }
                 }
                 while (curpkg.Any());
-                db.Updateable(curpkg, user).ExecuteCommand();
+                db.Updateable(pkgs, user).ExecuteCommand();
                 //MES_WIP_DFT锛屽湪涓婁粨搴撹閰嶅拰缁翠慨涔嬪墠锛屽厛鎶婁笉鑹褰曟爣璁颁负宸插鐞�
                 db.Updateable<MES_WIP_DFT>(user)
                            .SetColumns(q => q.STATUS == MES_WIP_DFT.STATUSs.Resolved.GetValue())
diff --git a/Tiger.Business.MES/LabelTemplate/BAS_LABEL_TEMP.cs b/Tiger.Business.MES/LabelTemplate/BAS_LABEL_TEMP.cs
index 919c5bc..836c647 100644
--- a/Tiger.Business.MES/LabelTemplate/BAS_LABEL_TEMP.cs
+++ b/Tiger.Business.MES/LabelTemplate/BAS_LABEL_TEMP.cs
@@ -103,11 +103,16 @@
                 {
                     //濡傛灉瀹㈡埛缂栫爜涓虹┖
                     prodTemp = input.Label;
-                    if (ltemp != null && (ltemp.PROD_CODE.IsNullOrEmpty() || ltemp.PROD_CODE != input.Label.PROD_CODE))
+                    if (ltemp != null && ltemp.PROD_CODE.IsNullOrEmpty() && ltemp.PROD_CODE != input.Label.PROD_CODE)
                     {
                         prodTemp.LABEL_CODE = GenerateCodeName(input.Label.LABEL_CODE, "_L");
                     }
                 }
+                var labelVarIds = input.LabelVars.Select(x => x.VAR_NAME).ToList();
+                var labelVars = Biz.Db.Queryable<BAS_LABEL_VAR>()
+                    .Where(q=> q.LABEL_ID == ltemp.ID)
+                    .WhereIF(labelVarIds.Count>0, q=> !labelVarIds.Contains(q.VAR_NAME))
+                    .ToList();
                 var db = Biz.Db;
                 var dbTran = db.UseTran(() =>
                 {
@@ -131,6 +136,11 @@
                     x.LABEL_CODE == input.Label.LABEL_CODE &&
                     x.PROD_CODE == input.Label.PROD_CODE &&
                     x.CUST_CODE == input.Label.CUST_CODE).First();
+                    //鍒犻櫎涓嶅湪浼犲叆鍒楄〃涓殑
+                    if (labelVars.Count>0)
+                    {
+                        db.Deleteable(labelVars).ExecuteCommand();
+                    }
                     if (input.LabelVars != null && input.LabelVars.Count > 0)
                     {
                         if (temp != null && temp.ID != input.LabelVars[0].LABEL_ID)
@@ -146,6 +156,10 @@
                         z.AsInsertable.ExecuteCommand();
                         z.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                     }
+                    if (!input.LabelVars.Any())
+                    {
+                        db.Deleteable(labelVars).ExecuteCommand();
+                    }
                     if (input.LabelVarWos != null && input.LabelVarWos.Count > 0)
                     {
                         if (temp != null && temp.ID != input.LabelVarWos[0].LABEL_ID)
diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs
index fa372a2..8c6fae8 100644
--- a/Tiger.Business.MES/Transaction/Position.cs
+++ b/Tiger.Business.MES/Transaction/Position.cs
@@ -608,7 +608,7 @@
                                     {
                                         qtylist = (curAction as PrintInStoreLabel).CurPkg.Item.GetMinPackageList().Select(q => q.SN).ToList();
                                     }
-                                    return $"{qtylist.Count}PCS";
+                                    return $"{qtylist.Count}";
                                 case "GetModel":
                                     return GetLabelVarWo(lv, WorkBatch.Product.ExtInfo?.Model);
                                 case "GetInput":
@@ -629,7 +629,7 @@
                                         var snList = _orderAction.CurPkg.Item.GetMinPackageList().Select(q => q.FLOW_SN).ToList();
                                         if (!snList.Any())
                                         {
-                                            snList.Add(_orderAction.CurPkg.CustSN.FLOW_SN);
+                                            snList.Add(_orderAction.CurPkg.CustSN?.FLOW_SN);
                                         }
                                         _lotnos = string.Join(",", Biz.Db.Queryable<MES_CUST_SN>()
                                             .Where((q) => snList.Contains(q.FLOW_SN))
diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index ee6f046..45d96aa 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -978,7 +978,7 @@
                                 .SetColumns(q => q.ACT_VALUE_1 == (CurPkg.IsFinished ? "Y" : "N"))
                                 .SetColumns(q => q.ACT_VALUE_2 == CurPkg.ToJson())
                                 .SetColumns(q => q.ACT_VALUE_3 == InStoreLabel)
-                                .SetColumns(q => q.ACT_VALUE_4 == "InStroe")
+                                .SetColumns(q => q.ACT_VALUE_4 == "InStore")
                                 .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == CurPkg.InStoreActID && q.WIP_ID == _lastWipID)
                                 .ExecuteCommand();
                             //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃
diff --git a/Tiger.Business.MES/WorkAction/PrintInStoreLabel.cs b/Tiger.Business.MES/WorkAction/PrintInStoreLabel.cs
index 42c1fbe..2eb4b6d 100644
--- a/Tiger.Business.MES/WorkAction/PrintInStoreLabel.cs
+++ b/Tiger.Business.MES/WorkAction/PrintInStoreLabel.cs
@@ -182,7 +182,7 @@
                     ACT_VALUE_1 = CurPkg?.IsFinished == true ? "Y" : "N",
                     ACT_VALUE_2 = CurPkg?.ToJson(),
                     ACT_VALUE_3 = Label?.ToJson(),
-                    ACT_VALUE_4 = "InStroe",
+                    ACT_VALUE_4 = "InStore",
                     ACT_RESULT = "Y",
                     ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                     TRACE_INFO = NoNeedInStorePrint ? $"鏃犻渶鎵撳嵃鍏ュ簱鏍囩" : $"鏍囩{Label?.LABEL_NAME}[{Label?.LABEL_CODE}]鎵撳嵃鎴愬姛",
diff --git a/Tiger.Business/MES/Biz.Route.cs b/Tiger.Business/MES/Biz.Route.cs
index f1f4a08..6aa4079 100644
--- a/Tiger.Business/MES/Biz.Route.cs
+++ b/Tiger.Business/MES/Biz.Route.cs
@@ -508,12 +508,12 @@
                 {
                     var expable = Expressionable.Create<MES_PROD_ACTION>();
                     var expableOper = Expressionable.Create<MES_PROD_OPER>();
-                    if (!string.IsNullOrEmpty(input.rotId))
+                    if (!input.rotId.IsNullOrEmpty())
                     {
                         expable.And(x => x.ROT_ID == input.rotId);
                         expableOper.And(x => x.ROT_ID == input.rotId);
                     }
-                    else if (!string.IsNullOrEmpty(input.rotCode))
+                    else if (!input.rotCode.IsNullOrEmpty())
                     {
                         var item = await Db.Queryable<MES_ROUTE>().Where(x => x.ROT_CODE == input.rotCode).FirstAsync();
                         if (item != null)
@@ -522,17 +522,32 @@
                             expableOper.And(x => x.ROT_ID == item.ID);
                         }
                     }
-                    string _custCode = input.custCode ?? "";
-                    expable.And(x => x.PROD_CODE == input.prodCode && (x.CUST_CODE == _custCode));
-                    expableOper.And(x => x.PROD_CODE == input.prodCode && x.CUST_CODE == _custCode);
+                    if (!input.prodCode.IsNullOrEmpty())
+                    {
+                        expable.And(x => x.PROD_CODE == input.prodCode );
+                        expableOper.And(x => x.PROD_CODE == input.prodCode);
+                    }
+                    if (!input.custCode.IsNullOrEmpty())
+                    {
+                        expable.And(x => x.CUST_CODE == input.custCode);
+                        expableOper.And(x => x.CUST_CODE == input.custCode);
+                    }
 
                     var exp = expable.ToExpression();
                     var expOper = expableOper.ToExpression();
                     var db = Db;
                     var dbTran = db.UseTran(() =>
                     {
-                        db.Deleteable<MES_PROD_ACTION>().Where(exp).ExecuteCommand();
-                        db.Deleteable<MES_PROD_OPER>().Where(expOper).ExecuteCommand();
+                        if (!input.prodCode.IsNullOrEmpty())
+                        {
+                            db.Deleteable<MES_PROD_ACTION>().Where(exp).ExecuteCommand();
+                            db.Deleteable<MES_PROD_OPER>().Where(expOper).ExecuteCommand();
+                        }
+                        if (input.prodCode.IsNullOrEmpty() && !input.custCode.IsNullOrEmpty())
+                        {
+                            db.Updateable<MES_PROD_ACTION>().SetColumns(x => x.CUST_CODE == "").Where(exp).ExecuteCommand();
+                            db.Updateable<MES_PROD_OPER>().SetColumns(x => x.CUST_CODE == "").Where(expOper).ExecuteCommand();
+                        }
                     });
                     if (!dbTran.IsSuccess)
                     {
diff --git a/Tiger.Business/SYS/Biz.Sys_Params.cs b/Tiger.Business/SYS/Biz.Sys_Params.cs
index 24c46ad..329e782 100644
--- a/Tiger.Business/SYS/Biz.Sys_Params.cs
+++ b/Tiger.Business/SYS/Biz.Sys_Params.cs
@@ -24,7 +24,7 @@
             var action = new ApiAction<List<SYS_PARAM>>();
             try
             {
-                action.Data = code.IsNullOrEmpty()? Biz.SysParam.Params.Where(x=>x.PRMG_CODE == group).ToList(): new List<SYS_PARAM>() { Biz.SysParam[group, code] } ;
+                action.Data = code.IsNullOrEmpty()? Biz.SysParam.Params.Where(x=>x.PRMG_CODE == group).ToList(): new List<SYS_PARAM>() { Biz.SysParam[code, group] } ;
                 action.Message = $"鑾峰彇鍙傛暟鎴愬姛銆�";
             }
             catch (Exception ex)
diff --git a/Tiger.Model.Net/Entitys/SYS/V_USER_MENU.cs b/Tiger.Model.Net/Entitys/SYS/V_USER_MENU.cs
index 81161c0..04400c8 100644
--- a/Tiger.Model.Net/Entitys/SYS/V_USER_MENU.cs
+++ b/Tiger.Model.Net/Entitys/SYS/V_USER_MENU.cs
@@ -66,10 +66,11 @@
 		/// 鑿滃崟鍚嶇О
 		/// </summary>
 		public string MENU_NAME { get; set; }
-		/// <summary>
-		/// 
-		/// </summary>
-		public string HALF_CHECK { get; set; }
+        public string PATH { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string HALF_CHECK { get; set; }
 		#endregion
 
 		#region 铏氭嫙灞炴��

--
Gitblit v1.9.3