From a592da60f0db0d4eb950a81a8530e965444be7b1 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期三, 16 十月 2024 09:14:02 +0800
Subject: [PATCH] 工艺路线默认优化

---
 Tiger.Business/MES/Biz.Route.cs                                  |   54 ++++++++++++++++++++++----
 Tiger.Controllers.MES/Controllers/MESController.Route.cs         |    4 +-
 Tiger.IBusiness/MES/IRoute.cs                                    |    1 
 Tiger.Model.Net/Entitys/MES/ParameterEntity/RouteInput.cs        |    1 
 Tiger.Model.Net/Entitys/MES/V_MES_ROUTE_PTREE.cs                 |    2 +
 Tiger.Business.MES/Transaction/Position.cs                       |   10 ++++-
 Tiger.Business.MES/WorkAction/PackingAction.cs                   |    6 ++-
 Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs |    1 
 8 files changed, 64 insertions(+), 15 deletions(-)

diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs
index 5a149c2..ffd085e 100644
--- a/Tiger.Business.MES/Transaction/Position.cs
+++ b/Tiger.Business.MES/Transaction/Position.cs
@@ -553,6 +553,8 @@
                                     return CurSN;
                                 case "GetBAS_ITEM":
                                     return WorkBatch.Product.CUST_PROD_CODE;
+                                case "GetItemName":
+                                    return WorkBatch.Product.ITEM_NAME;
                                 case "GetCustomer":
                                     return WorkBatch.Batch.Customer.ToJson();
                                 case "GetBoxQR":
@@ -574,7 +576,7 @@
                                 case "GetPAndO":
                                     return WorkBatch.WO.SALES_CONTRACT;
                                 case "GetLTD":
-                                    return WorkBatch.Batch.Customer.SHORT_NAME;
+                                    return WorkBatch.Batch.Customer.CUST_NAME_CN;
                                 case "GetHWDate":
                                     List<string> list = new List<string>();
                                     var _action = action is PackingAction ? action as PackingAction : null;
@@ -603,6 +605,10 @@
                                     return GetLabelVarWo(lv, WorkBatch.Product.ExtInfo?.Accuracy);
                                 case "GetVarByWo":
                                     return GetLabelVarWo(lv, "");
+                                case "GetLOTNO":
+                                    return "";
+                                case "GetNOTES":
+                                    return WorkBatch.Product.ExtInfo?.Remark;
                                 default:
                                     return "";
                             }
@@ -724,7 +730,7 @@
             var wo = WorkBatch.Batch.ORDER_NO;
             var snList = string.Join("\r\n", minPkgList);
             if (snList.IsNullOrEmpty()) { snList = $"{CurSN}"; }
-            var itemCode = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == CurWipSNs.First().FLOW_SN).First()?.ITEM_CODE;
+            var itemCode = action.CurPkg.ITEM_CODE;
             var weight = action.CurPkg.WeightInfo.Weight;
             var unit = action.CurPkg.WeightInfo.Unit.ToUpper();
             var model = WorkBatch.Product.ExtInfo.Model;
diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index 22a62cc..ae3603a 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -74,7 +74,8 @@
                     WorkBatch = CurPosition.WorkBatch.Batch.BATCH_NO,
                     RULE_CODE = PkgRule.RULE_CODE,
                     RULE_NAME = PkgRule.RULE_NAME,
-                    ITEM_CODE = CurPosition.WorkBatch.WO.ITEM_CODE,
+                    PROD_CODE = CurPosition.WorkBatch.WO.ITEM_CODE,
+                    ITEM_CODE = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == CurPosition.CurWipSNs.First().FLOW_SN).First()?.ITEM_CODE,
                     Item = new WipPkgItem()
                     {
                         PKG_CODE = max.PKG_CODE,
@@ -154,7 +155,8 @@
             LabelDic = CurPosition.Context["CurLabelDic"] as Dictionary<int, BAS_LABEL_TEMP>;
             LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList();
             //鑾峰彇鍖呰瑙勫垯鐨勭О閲嶈寖鍥�
-            PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPkg.ITEM_CODE).First();
+            PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPkg.PROD_CODE).First();
+            //鎶�
 
             CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("璁板綍鍖呰鏁版嵁"));
         }
diff --git a/Tiger.Business/MES/Biz.Route.cs b/Tiger.Business/MES/Biz.Route.cs
index 8243cd7..2e6c16b 100644
--- a/Tiger.Business/MES/Biz.Route.cs
+++ b/Tiger.Business/MES/Biz.Route.cs
@@ -521,11 +521,10 @@
                             expableOper.And(x => x.ROT_ID == item.ID);
                         }
                     }
-                    if (!string.IsNullOrEmpty(input.prodCode))
-                    {
-                        expable.And(x => x.PROD_CODE == input.prodCode);
-                        expableOper.And(x => x.PROD_CODE == input.prodCode);
-                    }
+
+                    expable.And(x => x.PROD_CODE == input.prodCode && x.CUST_CODE == input.custCode);
+                    expableOper.And(x => x.PROD_CODE == input.prodCode && x.CUST_CODE == input.custCode);
+
                     var exp = expable.ToExpression();
                     var expOper = expableOper.ToExpression();
                     var db = Db;
@@ -645,18 +644,18 @@
                 var result = new ApiAction();
                 try
                 {
-                    var item = await Biz.Db.Queryable<BAS_ITEM>().ByAuth(input.options).Where(x=>x.ITEM_CODE == input.prodCode).FirstAsync();
+                    var item = await Biz.Db.Queryable<BAS_ITEM>().ByAuth(input.options).Where(x => x.ITEM_CODE == input.prodCode).FirstAsync();
                     if (item == null)
                     {
                         result.IsSuccessed = false;
                         result.LocaleMsg = new($"浜у搧[{input.prodCode}]涓嶅瓨鍦紒");
                         return result;
                     }
-                    item.DEFAULT_ROUTE = input.isDefault? input.rotCode: "";
+                    item.DEFAULT_ROUTE = input.isDefault ? input.rotCode : "";
                     var db = Db;
                     var dbTran = db.UseTran(() =>
                     {
-                        db.Updateable(item).UpdateColumns(q=> new { q.DEFAULT_ROUTE}).ExecuteCommand();
+                        db.Updateable(item).UpdateColumns(q => new { q.DEFAULT_ROUTE }).ExecuteCommand();
                     });
                     if (!dbTran.IsSuccess)
                     {
@@ -901,7 +900,7 @@
                         {
                             db.Insertable(routeData.acts).ExecuteCommand();
                         }
-                        if (operList.Count>0)
+                        if (operList.Count > 0)
                         {
                             db.Insertable(operList).ExecuteCommand();
                         }
@@ -954,6 +953,43 @@
                 return await Task.FromResult(result);
             }
             #endregion
+            /// <summary>
+            /// 鑾峰彇宸ヨ壓璺嚎鏍戝舰缁撴瀯
+            /// </summary>
+            /// <param name="prodCode"></param>
+            /// <param name="orgCode"></param>
+            /// <returns></returns>
+            public async Task<List<V_MES_ROUTE_PTREE>> GetRoutePTree(string prodCode, string orgCode)
+            {
+                var result = new List<V_MES_ROUTE_PTREE>();
+                try
+                {
+
+                    SugarParameter[] pars = Biz.Db.Ado.GetParameters(new { PROD_CODE = prodCode, ORG_CODE = orgCode });
+                    result = Biz.Db.Ado.UseStoredProcedure().SqlQuery<V_MES_ROUTE_PTREE>("SP_MES_GET_ROUTE_PTREE", pars);//杩斿洖List
+                    var item = await Db.Queryable<BAS_ITEM>().Where(q => q.ITEM_CODE == prodCode).FirstAsync();
+                    if (item != null && !item.DEFAULT_ROUTE.IsNullOrEmpty())
+                    {
+                        var pid = result.Where(q => q.code == $"DefaultRoute_{orgCode}_{prodCode}").Select(q => q.tid).FirstOrDefault();
+                        result.ForEach(d =>
+                        {
+                            if (d.pid == pid && d.code == item.DEFAULT_ROUTE)
+                            {
+                                d.isDefault = true;
+                            }
+                            else
+                            {
+                                d.isDefault = false;
+                            }
+                        });
+                    }
+                }
+                catch (Exception ex)
+                {
+                    Logger.Default.Error(ex, "淇濆瓨榛樿宸ヨ壓璺嚎鍒颁骇鍝佸紓甯�");
+                }
+                return result;
+            }
         } //endClass Route
     } //endClass Biz
 }
diff --git a/Tiger.Controllers.MES/Controllers/MESController.Route.cs b/Tiger.Controllers.MES/Controllers/MESController.Route.cs
index a3450e4..e274299 100644
--- a/Tiger.Controllers.MES/Controllers/MESController.Route.cs
+++ b/Tiger.Controllers.MES/Controllers/MESController.Route.cs
@@ -1,6 +1,7 @@
 锘縰sing Microsoft.AspNetCore.Mvc;
 using Rhea.Common;
 using SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 using System.Xml.Linq;
@@ -273,8 +274,7 @@
         [HttpGet]
         [Route("api/[controller]/[action]")]
         public async Task<IActionResult> GetRoutePTreeAsync(string? prodCode, string? orgCode) {
-            SugarParameter[] pars = Biz.Db.Ado.GetParameters(new { PROD_CODE = prodCode,ORG_CODE = orgCode });
-            var data = Biz.Db.Ado.UseStoredProcedure().SqlQuery<V_MES_ROUTE_PTREE>("SP_MES_GET_ROUTE_PTREE", pars);//杩斿洖List
+            var data = await DI.Resolve<IRoute>().GetRoutePTree(prodCode, orgCode);
             return Ok(data);
         }
 
diff --git a/Tiger.IBusiness/MES/IRoute.cs b/Tiger.IBusiness/MES/IRoute.cs
index 61c3a5b..e3388dc 100644
--- a/Tiger.IBusiness/MES/IRoute.cs
+++ b/Tiger.IBusiness/MES/IRoute.cs
@@ -26,5 +26,6 @@
         public Task<ApiAction> SaveWoRouteNodePost(List<MES_WO_NODE_POST> nodePost);
         public Task<ApiAction> SaveWoRouteData(WoRouteData routeData);
         public Task<ApiAction> SetDefaultRoute(ProdRotInput input);
+        public Task<List<V_MES_ROUTE_PTREE>> GetRoutePTree(string? prodCode, string? orgCode);
     }
 }
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs
index 7871de1..fe5a467 100644
--- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs
+++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs
@@ -162,6 +162,7 @@
         public string WorkBatch { get; set; }
         public string RULE_CODE { get; set; }
         public string RULE_NAME { get; set; }
+        public string PROD_CODE { get; set; }
         public string ITEM_CODE { get; set; }
         public WipPkgItem Item { get; set; }
         public bool NeedWeighing { get; set; } = false;
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/RouteInput.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/RouteInput.cs
index c243f26..f7616b0 100644
--- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/RouteInput.cs
+++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/RouteInput.cs
@@ -20,6 +20,7 @@
     public class ProdRotInput : RouteInput
     {
         public string prodCode { get; set; }
+        public string custCode { get; set; }
         public bool isDefault { get; set; }
     }
 
diff --git a/Tiger.Model.Net/Entitys/MES/V_MES_ROUTE_PTREE.cs b/Tiger.Model.Net/Entitys/MES/V_MES_ROUTE_PTREE.cs
index b4acc06..5314d59 100644
--- a/Tiger.Model.Net/Entitys/MES/V_MES_ROUTE_PTREE.cs
+++ b/Tiger.Model.Net/Entitys/MES/V_MES_ROUTE_PTREE.cs
@@ -61,6 +61,8 @@
         public string tid { get; set; }
         [SugarColumn(IsIgnore = true)]
         public string cust { get; set; }
+        [SugarColumn(IsIgnore = true)]
+        public bool isDefault { get; set; }
         #endregion
 
         #region 鏋氫妇鍙橀噺

--
Gitblit v1.9.3