| zymes/OperationService/zymes_RealessMatePriceSup.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| zymes/OperationService/zymes_RealessORGANIZATIONS.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| zymes/OperationService/zymes_RealessStock.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| zymes/zymes_Project.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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)); } }; zymes/OperationService/zymes_RealessORGANIZATIONS.cs
New file @@ -0,0 +1,119 @@ using 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); //为了在BeginOperationTransaction里检查数据抛出异常时 //只回滚当前单据的事务,这里设置为不支持批量事务,这样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; } } } } 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> /// 修改提示信息 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" />