chenhaozhe
2025-10-20 4578ac29563e8a8bd43d0a5a64d54e5428f08b92
折扣表 业务组 销售退货原因/退货类型 同步插件优化
3个文件已添加
1个文件已修改
442 ■■■■■ 已修改文件
zymes/OperationService/zymes_RealessAssistantDataEntry.cs 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessDiscount.cs 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessOperatorGroup.cs 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/zymes_Project.csproj 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessAssistantDataEntry.cs
New file
@@ -0,0 +1,160 @@
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_RealessAssistantDataEntry : 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.FID HID,a.FENTRYID HEntryID,a.FNUMBER HNumber,l.FDATAVALUE HName,
                case when a.FFORBIDSTATUS='A' then 0 else 1 end as HStopflag,
                l.FDESCRIPTION HRemark,a.FCREATEDATE HMakeTime, us1.FName HMakeEmp,
                a.FAPPROVEDATE HCheckTime,us2.FNAME HCheckEmp,a.FMODIFYDATE HModifyTime,
                us3.FNAME HModifyEmp,l.FLOCALEID HLOCALEID,a.FUSEORGID HUSEORGID,
                a.FCREATEORGID HCREATEORGID,o.FNUMBER as HOrganNumber
                from T_BAS_ASSISTANTDATAENTRY a with(nolock)
                inner join T_BAS_ASSISTANTDATAENTRY_L l with(nolock) on a.FENTRYID=l.FENTRYID
                left join T_SEC_user us1 with(nolock) on a.FCREATORID=us1.FUSERID
                left join T_SEC_user us2 with(nolock) on a.FAPPROVERID=us2.FUSERID
                left join T_SEC_user us3 with(nolock) on a.FMODIFIERID=us3.FUSERID
                left join T_ORG_Organizations o with(nolock) on 1=o.FORGID
                Where l.FLOCALEID=2052 and a.FFORBIDSTATUS='A' and a.FENTRYID='{id}'
                select a.FID HID,a.FNUMBER HNumber,l.FName HName,l.FDESCRIPTION HRemark,l.FLOCALEID HLOCALEID
                from T_BAS_ASSISTANTDATA a with(nolock)
                inner join T_BAS_ASSISTANTDATA_L l with(nolock) on a.FID=l.FID
                Where l.FLOCALEID=2052 and a.FID=
                (select top 1 FID from T_BAS_ASSISTANTDATAENTRY  with(nolock) where FENTRYID = '{id}' )
                ";
                LogService.Write("退货类型/销售退货原因:" + sql);
                // 主表
                DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[1];
                // 子表
                DataTable dtSub = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
                if (dt.Rows.Count == 0)
                {
                    LogService.Write("退货类型/销售退货原因同步异常:" + sql);
                    continue;
                }
                //获取创建退货类型/销售退货原因的使用组织 主表没有组织字段,从子表获取
                DataTable dataTable = LogService.Get_DisPlayOrg(Context, dtSub.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();
                // JArray array = new JArray();
                // foreach(DataRow dr in dt.Rows)
                // {
                //     JObject fentrymodel = new JObject();
                //     foreach (DataColumn column in dt.Columns)
                //     {
                //         fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                //     }
                //     array.Add(fentrymodel);
                // }
                JArray array = new JArray();//明细表
                foreach (DataRow dr in dtSub.Rows)
                {
                    JObject fentrymodel = new JObject();
                    foreach (DataColumn column in dtSub.Columns)
                    {
                        fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                    }
                    array.Add(fentrymodel);
                }
                // 主表
                JObject model = new JObject();
                DataRow maindr = dt.Rows[0];
                foreach (DataColumn column in dt.Columns)
                {
                    model.Add(column.ColumnName, maindr[column.ColumnName].ToString());
                }
                model.Add("FENTRY", array);
                JObject _jsonRoot = new JObject()
                {
                    ["model"] = model
                };
                LogService.Write("退货类型/销售退货原因同步" + model);
                var client = new RestSharp.RestClient(http);
                var requestPost = new RestRequest("Gy_AssistantDataEntry/SaveGy_AssistantDataEntryApi", 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," + "Gy_AssistantDataEntry/SaveGy_AssistantDataEntryApi");
                    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_RealessDiscount.cs
New file
@@ -0,0 +1,143 @@
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_RealessDiscount : 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.FID as HItemID,a.FNUMBER as HNumber,'' as HName,a.FNUMBER as HShortNumber,
                0 as HParentID, 1 as HLevel, 1 as HEndFlag,
                case when a.FFORBIDSTATUS='A' then 0 else 1 end as HStopflag,
                'CLD-ERP导入' as HRemark,  '已使用' as HUseFlag,  a.FCREATORID as HMakeEmp,
                a.FCREATEDATE as HMakeTime,a.FAPPROVERID as HCheckEmp,a.FAPPROVEDATE as HCheckTime,
                a.FMODIFIERID as HModifyEmp,a.FMODIFYDATE as HModifyTime,a.FFORBIDERID as HStopEmp,
                a.FFORBIDDATE as HStopTime,a.FCREATEORGID as HCREATEORGID,a.FUSEORGID as HUSEORGID,
                a.FPURCHASEORGID as HPURCHASEORGID,a.FSUPPLIERID as HSupID,a.FCURRENCYID as HCurID,
                a.FPRICELISTID as HPRICELISTID,a.FPRICETYPE as HPRICETYPE,a.FDISCOUNTOBJECT as HDISCOUNTOBJECT,
                a.FDISCOUNTREASON as HDISCOUNTREASON,a.FDEFDISCOUNTLISTID as HDEFDISCOUNTLISTID,
                o.FNUMBER as HOrganNumber
                from T_PUR_DISCOUNTLIST a with(nolock)
                left join T_ORG_Organizations o with(nolock) on a.FCREATEORGID=o.FORGID
                Where a.FID={id}
                ";
                LogService.Write("折扣表:" + sql);
                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();
                // JArray array = new JArray();
                // foreach(DataRow dr in dt.Rows)
                // {
                //     JObject fentrymodel = new JObject();
                //     foreach (DataColumn column in dt.Columns)
                //     {
                //         fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                //     }
                //     array.Add(fentrymodel);
                // }
                // 主表
                JObject model = new JObject();
                DataRow maindr = dt.Rows[0];
                foreach (DataColumn column in dt.Columns)
                {
                    model.Add(column.ColumnName, maindr[column.ColumnName].ToString());
                }
                // model.Add("FENTRY", array);
                JObject _jsonRoot = new JObject()
                {
                    ["model"] = model
                };
                LogService.Write("折扣表同步" + model);
                var client = new RestSharp.RestClient(http);
                var requestPost = new RestRequest("Gy_DiscountList/SaveGy_DiscountListApi", 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," + "Gy_DiscountList/SaveGy_DiscountListApi");
                    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_RealessOperatorGroup.cs
New file
@@ -0,0 +1,136 @@
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_RealessOperatorGroup : 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)
            {
                LogService.Write(billObj.ToString());
                var id = billObj["Id"].ToString();
                string sql =string.Empty;
                sql = $@"
                /*dialect*/
                select
                b.FENTRYID HItemID, b.FNumber HNumber, c.FName Hname, b.FNumber HShortNumber,
                0 HParentID, 1 HLevel, 1 HEndFlag,0 HStopFlag, 'CLD导入' HRemark,
                '' HHelpCode,
                '已使用' HUseFlag,
                b.FBIZORGID HUSEORGID, a.FOPERATORGROUPID HOperatorGroupID,
                a.FOPERATORGROUPTYPE HOperatorGroupType, b.FISUSE HIsUse,
                o.FNUMBER as HOrganNumber
                from T_BD_OPERATORGROUP a
                inner join T_BD_OPERATORGROUPENTRY b on a.FOPERATORGROUPID = b.FOPERATORGROUPID
                inner join T_BD_OPERATORGROUPENTRY_L c on b.FENTRYID = c.FEntryID
                left join T_ORG_Organizations o with(nolock) on b.FBIZORGID =o.FORGID
                Where a.FOPERATORGROUPID={id}
                ";
                LogService.Write("业务组:" + sql);
                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();
                JArray array = new JArray();
                foreach(DataRow dr in dt.Rows)
                {
                    JObject fentrymodel = new JObject();
                    foreach (DataColumn column in dt.Columns)
                    {
                        fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                    }
                    array.Add(fentrymodel);
                }
                JObject model = new JObject();
                model.Add("FENTRY", array);
                JObject _jsonRoot = new JObject()
                {
                    ["model"] = model
                };
                LogService.Write("业务组同步" + model);
                var client = new RestSharp.RestClient(http);
                var requestPost = new RestRequest("Gy_OperatorGroup/SaveGy_OperatorGroupListApi", 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," + "Gy_OperatorGroup/SaveGy_OperatorGroupListApi");
                    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/zymes_Project.csproj
@@ -128,6 +128,9 @@
    <Compile Include="LogService.cs" />
    <Compile Include="OperationService\zymes_MOCHANGE.cs" />
    <Compile Include="OperationService\zymes_RealessCurrency.cs" />
    <Compile Include="OperationService\zymes_RealessAssistantDataEntry.cs" />
    <Compile Include="OperationService\zymes_RealessDiscount.cs" />
    <Compile Include="OperationService\zymes_RealessOperatorGroup.cs" />
    <Compile Include="OperationService\zymes_RealessPurPrice.cs" />
    <Compile Include="OperationService\zymes_RealessOperator.cs" />
    <Compile Include="OperationService\zymes_RealessUnitConvertRate.cs" />