From 65b2cd7bf5fa8568eabaa8f445e186cde3f6eb50 Mon Sep 17 00:00:00 2001
From: chenhaozhe <cgz@hz-kingdee.com>
Date: 星期三, 15 十月 2025 15:18:38 +0800
Subject: [PATCH] Merge branch 'master' of http://101.37.171.70:10101/r/simoer_jiekou

---
 zymes/OperationService/zymes_RealessMatePriceSup.cs  |   12 +-
 zymes/OperationService/zymes_RealessStock.cs         |   65 +++++++++++++++
 zymes/OperationService/zymes_RealessORGANIZATIONS.cs |  119 +++++++++++++++++++++++++++++
 zymes/zymes_Project.csproj                           |    1 
 4 files changed, 189 insertions(+), 8 deletions(-)

diff --git a/zymes/OperationService/zymes_RealessMatePriceSup.cs b/zymes/OperationService/zymes_RealessMatePriceSup.cs
index 6ed07d8..3f1aa91 100644
--- a/zymes/OperationService/zymes_RealessMatePriceSup.cs
+++ b/zymes/OperationService/zymes_RealessMatePriceSup.cs
@@ -18,7 +18,7 @@
 
 namespace zymes_Project.OperationService
 {
-    [Description("[閲囪喘浠锋牸-瀹℃牳]鏈嶅姟鎻掍欢]")]
+    [Description("[閲囪喘浠风洰-瀹℃牳]鏈嶅姟鎻掍欢]")]
     [HotUpdate]
     public class zymes_RealessMatePriceSup : AbstractOperationServicePlugIn
     {
@@ -66,11 +66,11 @@
                 DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
                 if (dt.Rows.Count == 0)
                 {
-                    LogService.Write("閲囪喘浠锋牸鍚屾寮傚父锛�" + sql);
+                    LogService.Write("閲囪喘浠风洰鍚屾寮傚父锛�" + sql);
                     continue;
                 }
 
-                //鑾峰彇鍒涘缓閲囪喘浠锋牸鐨勪娇鐢ㄧ粍缁�
+                //鑾峰彇鍒涘缓閲囪喘浠风洰鐨勪娇鐢ㄧ粍缁�
                 DataTable dataTable = LogService.Get_DisPlayOrg(Context, dt.Rows[0]["HOrganNumber"].ToString());
                 if (dataTable.Rows.Count == 0)
                     continue;
@@ -98,9 +98,9 @@
                 var contentPost = responsePost.Content;
                 if (!contentPost.Contains("鎴愬姛"))
                 { 
-                    LogService.Write("閲囪喘浠锋牸鍚屾寮傚父,POST鏂瑰紡鑾峰彇缁撴灉," + billObj["Id"] + "," + responsePost.ErrorMessage);
-                    LogService.Write("閲囪喘浠锋牸鍚屾寮傚父,POST," +   "Gy_MatePriceSup/SaveGy_MatePriceSupListApi");
-                    LogService.Write("閲囪喘浠锋牸鍚屾寮傚父,JsonConvert.SerializeObject(_jsonRoot)," + JsonConvert.SerializeObject(_jsonRoot));
+                    LogService.Write("閲囪喘浠风洰鍚屾寮傚父,POST鏂瑰紡鑾峰彇缁撴灉," + billObj["Id"] + "," + responsePost.ErrorMessage);
+                    LogService.Write("閲囪喘浠风洰鍚屾寮傚父,POST," +   "Gy_MatePriceSup/SaveGy_MatePriceSupListApi");
+                    LogService.Write("閲囪喘浠风洰鍚屾寮傚父,JsonConvert.SerializeObject(_jsonRoot)," + JsonConvert.SerializeObject(_jsonRoot));
                 }
             };
 
diff --git a/zymes/OperationService/zymes_RealessORGANIZATIONS.cs b/zymes/OperationService/zymes_RealessORGANIZATIONS.cs
new file mode 100644
index 0000000..943b0d8
--- /dev/null
+++ b/zymes/OperationService/zymes_RealessORGANIZATIONS.cs
@@ -0,0 +1,119 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Kingdee.BOS.Util;
+using Kingdee.BOS.Core.Metadata.EntityElement;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Orm.DataEntity;
+using System.ComponentModel;
+using Kingdee.BOS.ServiceHelper;
+using System.Data;
+using Newtonsoft.Json.Linq;
+using ZD.Cloud.WebApi;
+using Newtonsoft.Json;
+using Kingdee.BOS.Core.DynamicForm;
+using System.Linq;
+using RestSharp;
+using zymes_Project.Utility;
+
+namespace zymes_Project.OperationService
+{
+    [Description("[缁勭粐鏈烘瀯-瀹℃牳]鏈嶅姟鎻掍欢]")]
+    [HotUpdate]
+    public class zymes_RealessORGANIZATIONS : AbstractOperationServicePlugIn
+    {
+        Dictionary<string, string> dictionary = new Dictionary<string, string>();
+        public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
+        {
+            base.OnPrepareOperationServiceOption(e);
+
+            //涓轰簡鍦˙eginOperationTransaction閲屾鏌ユ暟鎹姏鍑哄紓甯告椂
+            //鍙洖婊氬綋鍓嶅崟鎹殑浜嬪姟,杩欓噷璁剧疆涓轰笉鏀寔鎵归噺浜嬪姟,杩欐牱BOS浼�
+            //寰幆涓烘瘡涓�寮犲崟鎹垱寤轰簨鍔¤皟鐢ㄦ搷浣�
+            e.SupportTransaction = true;
+            //e.SurportBatchTransaction = false;
+        }
+        public override void OnPreparePropertys(PreparePropertysEventArgs e)
+        {
+            base.OnPreparePropertys(e);
+            e.FieldKeys.Add("FEntity");
+            e.FieldKeys.Add("FEntity_FEntryID");
+        }
+        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+        {
+            base.AfterExecuteOperationTransaction(e);
+            Entity entity = this.BusinessInfo.GetEntity("FEntity");//鑾峰彇鏄庣粏淇℃伅
+            foreach (var billObj in e.DataEntitys)
+            {
+                var id = billObj["Id"].ToString();
+                string sql = string.Empty;
+                sql = $@"
+            /*dialect*/
+            select a.FORGID HItemID,a.FNUMBER HNumber,l.FNAME Hname,a.FParentid HParentID,a.FNUMBER HOrganNumber
+            ,case when a.FFORBIDSTATUS='A' then 0 else 1 end HStopflag,'CLD瀵煎叆' HRemark,getdate() HMakeTime
+            from T_ORG_ORGANIZATIONS a with(nolock)
+            inner join T_ORG_ORGANIZATIONS_L l with(nolock) on a.FORGID=l.FORGID
+            Where l.FLOCALEID=2052 and isnull(l.FNAME,'') <> ''  and a.FORGID={id}
+            ";
+                DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+                if (dt.Rows.Count == 0)
+                {
+                    LogService.Write("缁勭粐鏈烘瀯鍚屾寮傚父锛�" + sql);
+                    continue;
+                }
+
+                //鑾峰彇缁勭粐鏈烘瀯鐨勪娇鐢ㄧ粍缁�
+                DataTable dataTable = LogService.Get_DisPlayOrg(Context, dt.Rows[0]["HOrganNumber"].ToString());
+                if (dataTable.Rows.Count == 0)
+                    continue;
+
+                if (dataTable.Rows[0]["FISNEEDPUSH"].ToString() == "0")
+                    continue;
+
+                string http = dataTable.Rows[0]["F_RCZU_MesIp"].ToString();
+
+                DataRow dr = dt.Rows[0];
+                JObject model = new JObject();
+                foreach (DataColumn column in dt.Columns)
+                {
+                    model.Add(column.ColumnName, dr[column.ColumnName].ToString());
+                }
+                JObject _jsonRoot = new JObject()
+                {
+                    ["model"] = model
+                };
+
+                var client = new RestSharp.RestClient(http);
+                var requestPost = new RestRequest("Xt_ORGANIZATIONS/SaveXt_ORGANIZATIONSAPI", Method.POST);
+                requestPost.AddParameter("application/json", JsonConvert.SerializeObject(_jsonRoot), ParameterType.RequestBody);
+                IRestResponse responsePost = client.Execute(requestPost);
+                var contentPost = responsePost.Content;
+                if (!contentPost.Contains("鎴愬姛"))
+                {
+                    LogService.Write("缁勭粐鏈烘瀯鍚屾寮傚父,POST鏂瑰紡鑾峰彇缁撴灉," + billObj["Id"] + "," + responsePost.ErrorMessage);
+                    LogService.Write("缁勭粐鏈烘瀯鍚屾寮傚父,POST," + "Xt_ORGANIZATIONS/SaveXt_ORGANIZATIONSAPI");
+                    LogService.Write("缁勭粐鏈烘瀯鍚屾寮傚父,JsonConvert.SerializeObject(_jsonRoot)," + JsonConvert.SerializeObject(_jsonRoot));
+                }
+            };
+
+            foreach (var item in dictionary)
+            {
+                ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, item.Value);
+            }
+        }
+        public static class ResultMessage
+        {/// <summary>
+         /// 淇敼鎻愮ず淇℃伅
+         /// </summary>
+         /// <param name="operateResult"></param>
+         /// <param name="billno"></param>
+            public static void dataError(OperateResultCollection operateResult, string billno, string message)
+            {
+                OperateResult operate = operateResult.Where(n => n.Number == billno).First();
+                operate.Message = message;
+                operate.SuccessStatus = false;
+                operate.MessageType = MessageType.FatalError;
+            }
+        }
+    }
+}
diff --git a/zymes/OperationService/zymes_RealessStock.cs b/zymes/OperationService/zymes_RealessStock.cs
index 70039c1..e58ef95 100644
--- a/zymes/OperationService/zymes_RealessStock.cs
+++ b/zymes/OperationService/zymes_RealessStock.cs
@@ -23,6 +23,9 @@
     public class zymes_RealessStock : AbstractOperationServicePlugIn
     {
         Dictionary<string, string> dictionary = new Dictionary<string, string>();
+        // 娣诲姞涓�涓瓧娈垫潵瀛樺偍瀛楁鍚�
+        private string _locationFieldName = "FF100001"; // 榛樿鍊�
+
         public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
         {
             base.OnPrepareOperationServiceOption(e);
@@ -46,6 +49,10 @@
             foreach (var billObj in e.DataEntitys)
             {                
                 var id = billObj["Id"].ToString();
+
+                // 绗竴姝ワ細鑾峰彇浠撲綅瀛楁鍚�
+                _locationFieldName = GetLocationFieldName(id);
+
                 string sql = string.Empty;
                 sql = string.Format(@"
                 /*dialect*/
@@ -65,10 +72,10 @@
                 join T_BD_STOCK st on t1.FSTOCKID = st.FSTOCKID 
                 join T_BD_STOCK_l stl on t1.FSTOCKID = stl.FSTOCKID  and stl.FLOCALEID = 2052
                 join T_BAS_FLEXVALUESDETAIL t2 on t1.FSTOCKLOCID = t2.FID             
-                join T_BAS_FLEXVALUESENTRY t3 on t2.FF100001 = t3.FENTRYID--浠撲綅鍊奸泦鍒楄〃鏄庣粏
+                join T_BAS_FLEXVALUESENTRY t3 on t2.{1} = t3.FENTRYID--浠撲綅鍊奸泦鍒楄〃鏄庣粏
                 join T_BAS_FLEXVALUESENTRY_L t4 on t3.FENTRYID=t4.FENTRYID
                 where t1.fstockid= {0}
-                ", id);
+                ", id,_locationFieldName);
 
                 //鏂帿灏斾粨浣嶉泦鐨勫�兼槸  t2.FF100006
                 //47娴嬭瘯鍙互鐢�  t2.FF100001
@@ -135,6 +142,60 @@
                 ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, item.Value);
             }
         }
+
+        // 鏂板鏂规硶锛氳幏鍙栦粨浣嶅瓧娈靛悕
+        private string GetLocationFieldName(string stockId)
+        {
+            try
+            {
+                // 棣栧厛鑾峰彇鎵�鏈夊彲鑳界殑瀛楁鍚�
+                string getColumnsSql = @"
+            /*dialect*/
+            SELECT COLUMN_NAME 
+            FROM INFORMATION_SCHEMA.COLUMNS 
+            WHERE TABLE_NAME = 'T_BAS_FLEXVALUESDETAIL' 
+            AND COLUMN_NAME LIKE 'FF1%'
+            ORDER BY COLUMN_NAME";
+
+                DataSet columnsDs = DBServiceHelper.ExecuteDataSet(Context, getColumnsSql);
+                DataTable columnsDt = columnsDs.Tables[0];
+
+                // 鍦ㄤ唬鐮佸眰闈㈤�愪釜妫�鏌ュ瓧娈�
+                foreach (DataRow row in columnsDt.Rows)
+                {
+                    string columnName = row["COLUMN_NAME"].ToString();
+
+                    string checkSql = $@"
+                /*dialect*/
+                SELECT COUNT(1) as HasData
+                FROM T_BD_FLEXVALUESCOM t1
+                JOIN T_BAS_FLEXVALUESDETAIL t2 ON t1.FSTOCKLOCID = t2.FID
+                JOIN T_BAS_FLEXVALUESENTRY t3 ON t2.{columnName} = t3.FENTRYID
+                JOIN T_BAS_FLEXVALUESENTRY_L t4 ON t3.FENTRYID = t4.FENTRYID
+                WHERE t1.fstockid = {stockId}
+                AND t4.FNAME IS NOT NULL";
+
+                    DataSet checkDs = DBServiceHelper.ExecuteDataSet(Context, checkSql);
+                    DataTable checkDt = checkDs.Tables[0];
+
+                    if (checkDt.Rows.Count > 0 && Convert.ToInt32(checkDt.Rows[0]["HasData"]) > 0)
+                    {
+                        LogService.Write($"鎴愬姛鑾峰彇鍒颁粨浣嶅瓧娈靛悕: {columnName} 鐢ㄤ簬浠撳簱ID: {stockId}");
+                        return columnName;
+                    }
+                }
+
+                LogService.Write($"鏈壘鍒颁粨搴� {stockId} 瀵瑰簲鐨勪粨浣嶅瓧娈碉紝浣跨敤榛樿鍊� FF100001");
+                return "FF100001";
+            }
+            catch (Exception ex)
+            {
+                LogService.Write($"鑾峰彇浠撲綅瀛楁鍚嶆椂鍙戠敓寮傚父: {ex.Message}锛屼娇鐢ㄩ粯璁ゅ�� FF100001");
+                return "FF100001";
+            }
+        }
+
+
         public static class ResultMessage
         {/// <summary>
          /// 淇敼鎻愮ず淇℃伅
diff --git a/zymes/zymes_Project.csproj b/zymes/zymes_Project.csproj
index 50026dc..162de49 100644
--- a/zymes/zymes_Project.csproj
+++ b/zymes/zymes_Project.csproj
@@ -152,6 +152,7 @@
     <Compile Include="OperationService\zymes_RealessSupplier.cs" />
     <Compile Include="OperationService\zymes_RealessStockStatus.cs" />
     <Compile Include="OperationService\zymes_RealessStaff.cs" />
+    <Compile Include="OperationService\zymes_RealessORGANIZATIONS.cs" />
     <Compile Include="OperationService\zymes_RealessWork.cs" />
     <Compile Include="OperationService\zymes_RealessUnit.cs" />
     <Compile Include="OperationService\zymes_RealessPrdMo.cs" />

--
Gitblit v1.9.1