1
llj
2025-10-20 f09704980de9048b84cdd3bd99c5b972df8d2aa5
1
13个文件已添加
13个文件已修改
1168 ■■■■■ 已修改文件
.vs/VSWorkspaceState.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/simoer_jiekou/v16/.suo 补丁 | 查看 | 原始文档 | blame | 历史
.vs/slnx.sqlite 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_MOCHANGE.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessCusMaterial.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessCustomer.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessMatePriceSup.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessORGANIZATIONS.cs 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessOperator.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPrdInStock.cs 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPrdMo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPrdReceive.cs 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPurInStock.cs 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPurPoorder.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPurPrice.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPurReceive.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessSalOrder.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessStock.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessUnit.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessUnitConvertRate.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessWork.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/obj/Release/zymes_Project.csproj.AssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
zymes/test/obj/Release/.NETFramework,Version=v4.5.2.AssemblyAttributes.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/test/obj/Release/test.csproj.AssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
zymes/zymes_Project.csproj 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/VSWorkspaceState.json
New file
@@ -0,0 +1,9 @@
{
  "ExpandedNodes": [
    "",
    "\\zymes",
    "\\zymes\\OperationService"
  ],
  "SelectedNode": "\\zymes\\OperationService\\zymes_RealessPurPoorder.cs",
  "PreviewInSolutionExplorer": false
}
.vs/simoer_jiekou/v16/.suo
Binary files differ
.vs/slnx.sqlite
Binary files differ
zymes/OperationService/zymes_MOCHANGE.cs
@@ -87,7 +87,7 @@
                    ,FPRDORGID HPRDORGID,FENTRUSTORGID HENTRUSTORGID,FOWNERID HOWNERID,FOWNERTYPEID HOWNERTYPEID
                    ,0 HCusID,isnull(a.FWORKSHOPID,0) HDeptID,'CLOUD导入' HRemark,a.FCREATORID HMaker,getdate() HMakeDate,a.FAPPROVERID HChecker,a.FAPPROVEDATE HCheckDate,'' HMTONo,a.FID HERPInterID,a.FBILLTYPE HERPBillType
                    ,case when a.FISREWORK=1 then '返工' else '普通' end HBillSubType
                    ,o.FNUMBER as HOrganNumber,a.FComboXSLX HComboXSLX
                    ,o.FNUMBER as HOrganNumber,'' HComboXSLX
                    from T_PRD_MO a with(nolock)
                    left join T_ORG_Organizations o with(nolock) on a.FPRDORGID=o.FORGID
                    Where a.FID={ids} 
zymes/OperationService/zymes_RealessCusMaterial.cs
@@ -88,18 +88,24 @@
                string http = dataTable.Rows[0]["F_RCZU_MesIp"].ToString();
                DataRow dr = dt.Rows[0];
                List<JObject> models = new List<JObject>();
                foreach (DataRow dr in dt.Rows)
                {
                JObject model = new JObject();
                foreach (DataColumn column in dt.Columns)
                {
                    model.Add(column.ColumnName, dr[column.ColumnName].ToString());
                }
                    models.Add(model);
                }
                // 如果需要将所有model放入一个JSON数组中
                JObject _jsonRoot = new JObject()
                {
                    ["model"] = model
                    ["model"] = new JArray(models)
                };
                LogService.Write("客户物料对应表同步插件,JSON拼接完成:" + model);
                LogService.Write("客户物料对应表同步插件,JSON拼接完成:" + models);
                var client = new RestSharp.RestClient(http);
zymes/OperationService/zymes_RealessCustomer.cs
@@ -57,7 +57,7 @@
                ,1 as HLevel,1 as HEndFlag,case when     a.FFORBIDSTATUS='A' then 0 else 1 end as HStopflag,'CLD-ERP导入' as HRemark
                ,'已使用' as HUseFlag,getdate() as HMakeTime,FCREATEORGID as HCREATEORGID,FUSEORGID as HUSEORGID,o.FNUMBER as HOrganNumber
                from T_BD_CUSTOMER a with(nolock)
                inner join T_BD_CUSTOMER_L l with(nolock) on a.FCUSTID=l.FCUSTID
                inner join T_BD_CUSTOMER_L l with(nolock) on a.FCUSTID=l.FCUSTID   and FLOCALEID=2052
                left join T_ORG_Organizations o with(nolock) on a.FUSEORGID=o.FORGID
                Where  a.FCUSTID = {id}
@@ -68,15 +68,19 @@
                --inner join T_BD_CUSTLOCATION_L l with(nolock) on a.FID=l.FID and FLOCALEID=2052
                Where a.FCUSTID= {id}
                select a.FCONTACTID as HItemID, a.FCUSTID as HCUSTID, a.FNUMBER as HNumber, l.FNAME as HName, a.FNUMBER as HShortNumber, 0 as HParentID,
                select a.FCONTACTID as HItemID, b.FCUSTID as HCUSTID, a.FNUMBER as HNumber, l.FNAME as HName, a.FNUMBER as HShortNumber, 0 as HParentID,
                1 as HLevel, 'true' as HEndFlag, case when a.FFORBIDSTATUS='A' then 'false' else 'true' end as HStopflag,
                'CLD-ERP导入' as HRemark, '' as HHelpCode, '未检测' as HUseFlag, a.FCREATEDATE as HMakeTime, a.FCREATORID as HMakeEmp,
                '' as HCheckEmp, getdate() as HCheckTime, a.FMODIFIERID as HModifyEmp, a.FMODIFYDATE as HModifyTime, '' as HStopEmp,
                getdate() as HStopTime, 0 as HUSEORGID, 0 as HCREATEORGID
                from T_BD_COMMONCONTACT a with(nolock)
                inner join T_BD_COMMONCONTACT_L l with(nolock) on a.FCONTACTID = l.FCONTACTID and l.FLOCALEID = 2052
                where a.FCUSTID = {id}
                inner join T_BD_CUSTOMER b on a.FCUSTID=b.FMASTERID
                where b.FCUSTID = {id}
                ";
                LogService.Write("客户同步sql:"  + sql);
                DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
                DataTable maindt = ds.Tables[0];//客户信息
                DataTable subdt = ds.Tables[1];//客户_交货地点
@@ -130,7 +134,7 @@
                {
                    ["model"] = model
                };
                LogService.Write("客户同步资料:" + model);
                var client = new RestSharp.RestClient(http);
                var requestPost = new RestRequest("Gy_Customer/SaveGy_CustomerListApi", Method.POST);
                requestPost.AddParameter("application/json", JsonConvert.SerializeObject(jsonRoot), ParameterType.RequestBody);
zymes/OperationService/zymes_RealessMatePriceSup.cs
@@ -45,24 +45,21 @@
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.DataEntitys)
            {
                var forgName = Context.CurrentOrganizationInfo.Name;
                //if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                //    continue;
                //var sql = $"exec zymes_RealessMatePriceSup {billObj["Id"]} ";
                var id = billObj["Id"].ToString();
                string sql = string.Empty;
                sql = $@"
                /*dialect*/
                select a.FID as HItemID,0 as HInterID,a.FNUMBER as HNumber,0 as HEntryID,0 as HMaterID,0 as HRelationID
                ,0 as HUnitID,0 as HBeginQty,0 as HEndQty,0 as HCurID,'' as HType,0 as HPrice,a.FEFFECTIVEDATE as HBeginDate
                ,a.FEXPIRYDATE as HEndDate,0 as HUsed,'' as HRemark,'' as HMaker,a.FCREATEDATE as HMakeDate
               select a.FID as HItemID,0 as HInterID,a.FNUMBER as HNumber,b.FENTRYID as HEntryID,b.FMATERIALID as HMaterID,a.FSUPPLIERMASTERID as HRelationID
                ,b.FUNITID as HUnitID,0 as HBeginQty,0 as HEndQty,a.FCURRENCYID as HCurID,a.FPRICEOBJECT as HType,b.FPRICE as HPrice,a.FEFFECTIVEDATE as HBeginDate
                ,a.FEXPIRYDATE as HEndDate,0 as HUsed,'CLD-ERP导入' as HRemark,'' as HMaker,a.FCREATEDATE as HMakeDate
                ,o.FNUMBER as HOrganNumber
                from T_PUR_PRICELIST a with(nolock)
                inner join T_PUR_PRICELIST_L l with(nolock) on a.FID=l.FID and FLOCALEID=2052
                inner join T_PUR_PRICELISTENTRY b with(nolock) on a.FID=b.FID
                left join T_ORG_Organizations o with(nolock) on a.FUSEORGID=o.FORGID
                Where a.FID={id}
                ";
                LogService.Write("采购价格:" + sql);
                DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
                if (dt.Rows.Count == 0)
                {
@@ -90,7 +87,7 @@
                {
                    ["model"] = model
                };
                LogService.Write("采购价格:" + model);
                var client = new RestSharp.RestClient(http);
                var requestPost = new RestRequest("Gy_MatePriceSup/SaveGy_MatePriceSupListApi", Method.POST);
                requestPost.AddParameter("application/json", JsonConvert.SerializeObject(_jsonRoot), ParameterType.RequestBody);
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_RealessOperator.cs
@@ -45,10 +45,6 @@
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.DataEntitys)
            {
                var forgName = Context.CurrentOrganizationInfo.Name;
                //if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                //    continue;
                //var sql = $"exec zymes_RealessOperator {billObj["Id"]} ";
                var id = billObj["Id"].ToString();
                string sql =string.Empty;
                sql = $@"
@@ -61,8 +57,9 @@
                inner join T_BD_OPERATORENTRY_L l with(nolock) on a.FENTRYID=l.FENTRYID and FLOCALEID=2052
                left join T_BD_STAFF st on a.FSTAFFID = st.FSTAFFID 
                left join T_ORG_Organizations o with(nolock) on a.FBIZORGID=o.FORGID
                Where a.FOPERATORID={id}
                Where a.FOPERATORID={id} and o.FNUMBER=3
                ";
                LogService.Write("业务员同步:" + sql);
                DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
                if (dt.Rows.Count == 0)
                {
@@ -97,7 +94,7 @@
                {
                    ["model"] = model
                };
                LogService.Write("业务员同步" + model);
                var client = new RestSharp.RestClient(http);
                var requestPost = new RestRequest("Gy_Operator/SaveGy_OperatorListApi", Method.POST);
                requestPost.AddParameter("application/json", JsonConvert.SerializeObject(_jsonRoot), ParameterType.RequestBody);
zymes/OperationService/zymes_RealessPrdInStock.cs
New file
@@ -0,0 +1,201 @@
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_RealessPrdInStock : 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 HInterID,a.FEntryID as HEntryID,isnull(a.FMTONO,'') as HMTONo,
                0 as HPlanMode,'CLD导入' as HRemark,'' as HExpressNumber,isnull(a.FMATERIALID,0) as HMaterID,
                isnull(a.FUNITID,0) as HUnitID,isnull(a.FLOT_TEXT,'') as HBatchNo,
                isnull(a.FAUXPROPID,0) as HPropertyID,isnull(a.FSTOCKID,0) as HWHID,
                isnull(a.FSTOCKLOCID,0) as HSPID,0 as HSCWHID,0 as HSCSPID,
                a.FMUSTQTY as HQtyMust,a.FREALQTY as HQty,isnull(c.FPRICE,0) as HPrice,
                isnull(a.FAMOUNT,0) as HMoney,0 as HTaxPrice,
                0 as HTaxRate,isnull(a.FAMOUNT,0) as HTaxMoney,
                0 as HRelationQty,0 as HRelationMoney,
                0 as HSourceInterID,0 as HSourceEntryID,isnull(a.FSRCBILLNO,'') as HSourceBillNo,
                '' as HSourceBillType,a.FID as HERPInterID,a.FEntryID as HERPEntryID,
                '' as HERPBillNo_Sub,0 as HPOOrderInterID,0 as HPOOrderEntryID,
                '' as HPOOrderBillNo,0 as HSeOrderInterID,
                0 as HSeOrderEntryID,'' as HSeOrderBillNo,0 as HICMOInterID,
                0 as HICMOEntryID,'' as HICMOBillNo,0 as HWWOrderInterID,
                0 as HWWOrderEntryID,'' as HWWOrderBillNo,isnull(a.FPRODUCEDATE, '') as HProduceDate,
                a.FEXPIRYDATE as HExpiryDate,isnull(a.FOWNERID,0) as HOWNERID,isnull(a.FOWNERTYPEID,'') as HOWNERTYPEID,
                isnull(a.FKEEPERID,0) as HKEEPERID,isnull(a.FKEEPERTYPEID,'') as HKEEPERTYPEID,
                '' as HSUPPLIERLOT,'' as HREQTRACENO,
                isnull(a.FPROJECTNO,'') as HPROJECTNO,'' as HGIVEAWAY,
                0 as HSYSPRICE,0 as HPRICECOEFFICIENT,
                0 as HDISCOUNTRATE,0 as HBASEUNITPRICE,
                0 as HTAXCOMBINATION,0 as HPRICELISTENTRY,
                0 as HCOSTPRICE,isnull(a.FSEQ,0) as HSEQ,
                '' as HROWTYPE,0 as HPARENTMATID,
                '' as HPRILSTENTRYID,0 as HPURBASENUM,0 as HSTOCKBASEDEN,
                isnull(a.FBFLOWID,'') as HBFLOWID,isnull(a.FSTOCKSTATUSID,0) as HSTOCKSTATUSID,
                0 as HPRICEUNITID,isnull(a.FBASEUNITID,0) as HBASEUNITID,
                isnull(a.FSNUNITID,0) as HSNUNITID, 0 as HREMAININSTOCKUNITID,
                0 as HEXTAUXUNITID,0 as HTAXRATEID,
                0 as HTAXRATE_TAX,0 as HTAXAMOUNT,
                0 as HCOSTPERCENT,0 as HCOSTAMOUNT,
                '' as HVAT,'' as HSELLERWITHHOLDING,
                '' as HBUYERWITHHOLDING
                from T_PRD_INSTOCKENTRY a with(nolock)
                left join T_PRD_INSTOCKENTRY_A b  with(nolock) on a.FENTRYID = b.FENTRYID and a.FID = b.FID
                left join T_PRD_INSTOCKENTRY_C c with(nolock) on a.FENTRYID = c.FENTRYID
                Where a.FID = {id};
                select
                a.FID as HInterID,year(a.FDATE) as HYear,month(a.FDATE) as HPeriod,
                isnull(a.FBILLNO,'') as HBillNo,'1202' as HBillType,'1202' as HBillSubType,
                '' as HMainSourceBillType,a.FDATE as HDate,0 as HSupID,
                0 as HWHID,0 as HSCWHID,0 as HEmpID,0 as HManagerID,0 as HSecManagerID,
                isnull(FSTOCKERID,0) as HKeeperID,0 as HDeptID,0 as HCurID,
                '' as HSeOrderBillNo,'CLD导入' as HExplanation,'' as HRemark,
                '' as HInnerBillNo,0 as HRedBlueFlag,case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end as HBillStatus,
                isnull(us1.FNAME,'') as HMaker,a.FCREATEDATE as HMakeDate,isnull(us2.FNAME,'') as HChecker,
                a.FAPPROVEDATE as HCheckDate,isnull(us3.FNAME,'') as HUpDater,a.FMODIFYDATE as HUpDateDate,
                isnull(us4.FNAME,'') as HDeleteMan,a.FCANCELDATE as HDeleteDate,isnull(a.FOWNERID,0) as HOWNERID,
                isnull(a.FOWNERTYPEID,'') as HOWNERTYPEID,a.FID as HERPInterID,'' as HERPBillType,
                isnull(a.FBILLNO,'') as HERPBillNo,0 as HPRDORGID,
                isnull(a.FSTOCKORGID,0) as HSTOCKORGID,0 as HSTOCKERGROUPID,
                0 as HPURCHASERGROUPID,0 as HDEMANDORGID,
                0 as HCORRESPONDORGID, 0 as HPROVIDERCONTACTID,
                0 as HSUPPLYID,0 as HSETTLEID,
                0 as HCHARGEID,0 as HPURCHASEDEPTID,
                '' as HBUSINESSTYPE,'' as HSUPPLYADDRESS,
                0 as HPAYORGID,0 as HSETTLEORGID,
                0 as HSETTLETYPEID,0 as HPAYCONDITIONID,
                0 as HSETTLECURRID,0 as HEXCHANGETYPEID,
                0 as HDISCOUNTLISTID,0 as HEXCHANGERATE,
                '' as HPRICETIMEPOINT,0 as HLOCALCURRID,
                '' as HISINCLUDEDTAX,'' as HISPRICEEXCLUDETAX
                ,o.FNUMBER as HOrganNumber
                from T_PRD_INSTOCK a with(nolock)
                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_SEC_user us4 with(nolock) on a.FCANCELER=us4.FUSERID
                left join T_ORG_Organizations o with(nolock) on a.FSTOCKORGID=o.FORGID
                Where a.FID = {id};
                ";
                DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
                DataTable maindt = ds.Tables[1];
                DataTable subdt = ds.Tables[0];
                if (maindt.Rows.Count == 0 || subdt.Rows.Count == 0)
                {
                    LogService.Write("生产入库单同步异常:" + sql);
                    continue;
                }
                //获取创建生产领料单的使用组织
                DataTable dataTable = LogService.Get_DisPlayOrg(Context, maindt.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 subdt.Rows)
                {
                    JObject fentrymodel = new JObject();
                    foreach (DataColumn column in subdt.Columns)
                    {
                        fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                    }
                    array.Add(fentrymodel);
                }
                JObject model = new JObject();//主表
                DataRow maindr = maindt.Rows[0];
                foreach (DataColumn column in maindt.Columns)
                {
                    model.Add(column.ColumnName, maindr[column.ColumnName].ToString());
                }
                model.Add("HENTRY", array);
                JObject jsonRoot = new JObject()
                {
                    ["model"] = model
                };
                var client = new RestSharp.RestClient(http);
                //新增
                var requestPost = new RestRequest("Kf_ProductInBill/Kf_ProductInBillSaveApi", 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," + "Kf_ProductInBill/Kf_ProductInBillSaveApi");
                    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_RealessPrdMo.cs
@@ -216,7 +216,7 @@
                ,FPRDORGID HPRDORGID,FENTRUSTORGID HENTRUSTORGID,FOWNERID HOWNERID,FOWNERTYPEID HOWNERTYPEID
                ,0 HCusID,isnull(a.FWORKSHOPID,0) HDeptID,'CLOUD导入' HRemark,a.FCREATORID HMaker,getdate() HMakeDate,a.FAPPROVERID HChecker,a.FAPPROVEDATE HCheckDate,'' HMTONo,a.FID HERPInterID,a.FBILLTYPE HERPBillType
                ,case when a.FISREWORK=1 then '返工' else '普通' end HBillSubType,o.FNUMBER as HOrganNumber
                ,a.FComboXSLX HComboXSLX
                ,'' HComboXSLX
                from T_PRD_MO a with(nolock)
                left join T_ORG_Organizations o with(nolock) on a.FPRDORGID=o.FORGID
                Where a.FID={id} 
zymes/OperationService/zymes_RealessPrdReceive.cs
New file
@@ -0,0 +1,201 @@
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_RealessPrdReceive : 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 HInterID,a.FEntryID as HEntryID,isnull(a.FMTONO,'') as HMTONo,
                0 as HPlanMode,'CLD导入' as HRemark,'' as HExpressNumber,isnull(a.FMATERIALID,0) as HMaterID,
                isnull(a.FUNITID,0) as HUnitID,isnull(a.FLOT_TEXT,'') as HBatchNo,
                isnull(a.FAUXPROPID,0) as HPropertyID,isnull(a.FSTOCKID,0) as HWHID,
                isnull(a.FSTOCKLOCID,0) as HcD,0 as HSCWHID,0 as HSCcD,
                0 as HQtyMust,0 as HQty,isnull(b.FPRICE,0) as HPrice,
                isnull(a.FAMOUNT,0) as HMoney,0 as HTaxPrice,
                0 as HTaxRate,a.FAMOUNT as HTaxMoney,
                0 as HRelationQty,0 as HRelationMoney,
                0 as HSourceInterID,0 as HSourceEntryID,isnull(a.FSRCBILLNO,'') as HSourceBillNo,
                '' as HSourceBillType,a.FID as HERPInterID,a.FEntryID as HERPEntryID,
                '' as HERPBillNo_Sub,0 as HPOOrderInterID,0 as HPOOrderEntryID,
                '' as HPOOrderBillNo,0 as HSeOrderInterID,
                0 as HSeOrderEntryID,'' as HSeOrderBillNo,0 as HICMOInterID,
                0 as HICMOEntryID,'' as HICMOBillNo,0 as HWWOrderInterID,
                0 as HWWOrderEntryID,'' as HWWOrderBillNo,isnull(a.FPRODUCEDATE, '') as HProduceDate,
                a.FEXPIRYDATE as HExpiryDate,isnull(c.FOWNERID,0) as HOWNERID,isnull(c.FOWNERTYPEID,'') as HOWNERTYPEID,
                0 as HKEEPERID,isnull(c.FKEEPERTYPEID,'') as HKEEPERTYPEID,
                '' as HSUPPLIERLOT,'' as HREQTRACENO,
                isnull(a.FPROJECTNO,'') as HPROJECTNO,'' as HGIVEAWAY,
                0 as HSYSPRICE,0 as HPRICECOEFFICIENT,
                0 as HDISCOUNTRATE,0 as HBASEUNITPRICE,
                0 as HTAXCOMBINATION,0 as HPRICELISTENTRY,
                0 as HCOSTPRICE,isnull(a.FSEQ,0) as HSEQ,
                '' as HROWTYPE,0 as HPARENTMATID,
                '' as HPRILSTENTRYID,0 as HPURBASENUM,0 as HSTOCKBASEDEN,
                isnull(a.FBFLOWID,'') as HBFLOWID,isnull(a.FSTOCKSTATUSID,0) as HSTOCKSTATUSID,
                0 as HPRICEUNITID,isnull(a.FBASEUNITID,0) as HBASEUNITID,
                isnull(c.FSNUNITID,0) as HSNUNITID,0 as HREMAININSTOCKUNITID,
                0 as HEXTAUXUNITID,0 as HTAXRATEID,
                0 as HTAXRATE_TAX,0 as HTAXAMOUNT,
                0 as HCOSTPERCENT,0 as HCOSTAMOUNT,
                '' as HVAT,'' as HSELLERWITHHOLDING,
                '' as HBUYERWITHHOLDING
                from T_PRD_PICKMTRLDATA a with(nolock)
                left join T_PRD_PICKMTRLDATA_C b with(nolock) on  a.FENTRYID=b.FENTRYID
                left join T_PRD_PICKMTRLDATA_A c with(nolock) on a.FID=c.FID and a.FENTRYID=c.FENTRYID
                Where a.FID={id}
                select
                a.FID as HInterID,year(a.FDATE) as HYear,month(a.FDATE) as HPeriod,
                isnull(a.FBILLNO,'') as HBillNo,'1204' as HBillType,'1204' as HBillSubType,
                '' as HMainSourceBillType,a.FDATE as HDate,0 as HSupID,
                0 as HWHID,0 as HSCWHID,0 as HEmpID,0 as HManagerID,0 as HSecManagerID,
                isnull(FSTOCKERID,0) as HKeeperID,0 as HDeptID,0 as HCurID,
                '' as HSeOrderBillNo,'CLD导入' as HExplanation,'' as HRemark,
                '' as HInnerBillNo,0 as HRedBlueFlag,case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end as HBillStatus,
                isnull(us1.FNAME,'') as HMaker,a.FCREATEDATE as HMakeDate,isnull(us2.FNAME,'') as HChecker,
                a.FAPPROVEDATE as HCheckDate,isnull(us3.FNAME,'') as HUpDater,a.FMODIFYDATE as HUpDateDate,
                isnull(us4.FNAME,'') as HDeleteMan,a.FCANCELDATE as HDeleteDate,isnull(a.FOWNERID,0) as HOWNERID,
                isnull(a.FOWNERTYPEID,'') as HOWNERTYPEID,a.FID as HERPInterID,isnull(a.FBILLTYPE,'') as HERPBillType,
                isnull(a.FBILLNO,'') as HERPBillNo,isnull(FPRDORGID,0) as HPRDORGID,
                isnull(a.FSTOCKORGID,0) as HSTOCKORGID, 0 as HSTOCKERGROUPID,
                0 as HPURCHASERGROUPID,0 as HDEMANDORGID,
                0 as HCORRESPONDORGI,0 as HPROVIDERCONTACTID,
                0 as HSUPPLYID,0 as HSETTLEID,
                0 as HCHARGEID,0 as HPURCHASEDEPTID,
                '' as HBUSINESSTYPE,'' as HSUPPLYADDRESS,
                0 as HPAYORGID,0 as HSETTLEORGID,
                0 as HSETTLETYPEID,0 as HPAYCONDITIONID,
                0 as HSETTLECURRID,0 as HEXCHANGETYPEID,
                0 as HDISCOUNTLISTID,0 as HEXCHANGERATE,
                '' as HPRICETIMEPOINT,0 as HLOCALCURRID,
                '' as HISINCLUDEDTAX,'' as HISPRICEEXCLUDETAX
                ,o.FNUMBER as HOrganNumber
                from T_PRD_PICKMTRL a with(nolock)
                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_SEC_user us4 with(nolock) on a.FCANCELER=us4.FUSERID
                left join T_ORG_Organizations o with(nolock) on a.FSTOCKORGID=o.FORGID
                Where a.FID={id}
";
                DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
                DataTable maindt = ds.Tables[1];
                DataTable subdt = ds.Tables[0];
                if (maindt.Rows.Count == 0 || subdt.Rows.Count == 0)
                {
                    LogService.Write("生产领料单同步异常:" + sql);
                    continue;
                }
                //获取创建生产领料单的使用组织
                DataTable dataTable = LogService.Get_DisPlayOrg(Context, maindt.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 subdt.Rows)
                {
                    JObject fentrymodel = new JObject();
                    foreach (DataColumn column in subdt.Columns)
                    {
                        fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                    }
                    array.Add(fentrymodel);
                }
                JObject model = new JObject();//主表
                DataRow maindr = maindt.Rows[0];
                foreach (DataColumn column in maindt.Columns)
                {
                    model.Add(column.ColumnName, maindr[column.ColumnName].ToString());
                }
                model.Add("HENTRY", array);
                JObject jsonRoot = new JObject()
                {
                    ["model"] = model
                };
                var client = new RestSharp.RestClient(http);
                //新增
                var requestPost = new RestRequest("Kf_MateOutBill/Kf_MateOutBillSaveApi", 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," + "Kf_MateOutBill/Kf_MateOutBillSaveApi");
                    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_RealessPurInStock.cs
New file
@@ -0,0 +1,202 @@
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_RealessPurInStock : 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 HInterID,a.FEntryID as HEntryID,isnull(a.FMTONO,'') as HMTONo,
                0 as HPlanMode,a.FNOTE as HRemark,'' as HExpressNumber,isnull(a.FMATERIALID,0) as HMaterID,
                isnull(a.FUNITID,0) as HUnitID,isnull(a.FLOT_TEXT,'') as HBatchNo,
                isnull(a.FAUXPROPID,0) as HPropertyID,isnull(a.FSTOCKID,0) as HWHID,
                isnull(a.FSTOCKLOCID,0) as HSPID,0 as HSCWHID,0 as HSCSPID,
                a.FMUSTQTY as HQtyMust,a.FREALQTY as HQty,isnull(b.FPRICE,0) as HPrice,
                isnull(b.FAMOUNT,0) as HMoney,isnull(b.FTAXPRICE,0) as HTaxPrice,
                isnull(b.FTAXRATE,0) as HTaxRate,isnull(b.FAMOUNT,0) as HTaxMoney,
                isnull(a.FRETURNJOINQTY,0) as HRelationQty,0 as HRelationMoney,
                0 as HSourceInterID,0 as HSourceEntryID,isnull(a.FSRCBILLNO,'') as HSourceBillNo,
                '' as HSourceBillType,a.FID as HERPInterID,a.FEntryID as HERPEntryID,
                '' as HERPBillNo_Sub,0 as HPOOrderInterID,isnull(a.FPOORDERENTRYID,0) as HPOOrderEntryID,
                isnull(a.FPOORDERNO,'') as HPOOrderBillNo,0 as HSeOrderInterID,
                0 as HSeOrderEntryID,'' as HSeOrderBillNo,0 as HICMOInterID,
                0 as HICMOEntryID,'' as HICMOBillNo,0 as HWWOrderInterID,
                0 as HWWOrderEntryID,'' as HWWOrderBillNo,isnull(a.FPRODUCEDATE, '') as HProduceDate,
                a.FEXPIRYDATE as HExpiryDate,isnull(a.FOWNERID,0) as HOWNERID,isnull(a.FOWNERTYPEID,'') as HOWNERTYPEID,
                isnull(a.FKEEPERID,0) as HKEEPERID,isnull(a.FKEEPERTYPEID,'') as HKEEPERTYPEID,
                isnull(a.FSUPPLIERLOT,'') as HSUPPLIERLOT,isnull(a.FREQTRACENO,'') as HREQTRACENO,
                isnull(a.FPROJECTNO,'') as HPROJECTNO,isnull(a.FGIVEAWAY,'') as HGIVEAWAY,
                isnull(b.FSYSPRICE,0) as HSYSPRICE,isnull(b.FPRICECOEFFICIENT,0) as HPRICECOEFFICIENT,
                isnull(b.FDISCOUNTRATE,0) as HDISCOUNTRATE,isnull(b.FBASEUNITPRICE,0) as HBASEUNITPRICE,
                isnull(b.FTAXCOMBINATION,0) as HTAXCOMBINATION,isnull(b.FPRICELISTENTRY,0) as HPRICELISTENTRY,
                isnull(b.FCOSTPRICE,0) as HCOSTPRICE,isnull(a.FSEQ,0) as HSEQ,
                isnull(spi.FROWTYPE,'') as HROWTYPE,isnull(spi.FPARENTMATID,0) as HPARENTMATID,
                isnull(spi.FPRILSTENTRYID,'') as HPRILSTENTRYID,isnull(spi.FPURBASENUM,0) as HPURBASENUM,isnull(spi.FSTOCKBASEDEN,0) as HSTOCKBASEDEN,
                isnull(a.FBFLOWID,'') as HBFLOWID,isnull(a.FSTOCKSTATUSID,0) as HSTOCKSTATUSID,
                isnull(b.FPRICEUNITID,0) as HPRICEUNITID,isnull(a.FBASEUNITID,0) as HBASEUNITID,
                isnull(spi.FSNUNITID,0) as HSNUNITID,isnull(b.FREMAININSTOCKUNITID,0) as HREMAININSTOCKUNITID,
                isnull(a.FEXTAUXUNITID,0) as HEXTAUXUNITID,isnull(px.FTAXRATEID,0) as HTAXRATEID,
                isnull(px.FTAXRATE,0) as HTAXRATE_TAX,isnull(px.FTAXAMOUNT,0) as HTAXAMOUNT,
                isnull(px.FCOSTPERCENT,0) as HCOSTPERCENT,isnull(px.FCOSTAMOUNT,0) as HCOSTAMOUNT,
                isnull(px.FVAT,'') as HVAT,isnull(px.FSELLERWITHHOLDING,'') as HSELLERWITHHOLDING,
                isnull(px.FBUYERWITHHOLDING,'') as HBUYERWITHHOLDING
                from T_STK_INSTOCKENTRY a with(nolock)
                left join T_STK_INSTOCKENTRY_F b with(nolock) on  a.FID=b.FID and a.FENTRYID=b.FENTRYID
                left join T_STK_INSTOCKENTRY_I spi with(nolock) on a.FID=spi.FID and a.FENTRYID=spi.FENTRYID
                left join T_STK_INSTOCKENTRY_TAX px with(nolock) on a.FENTRYID=px.FENTRYID
                Where a.FID={id}
                select
                a.FID as HInterID,year(a.FDATE) as HYear,month(a.FDATE) as HPeriod,
                isnull(a.FBILLNO,'') as HBillNo,'1201' as HBillType,'1201' as HBillSubType,
                '' as HMainSourceBillType,a.FDATE as HDate,a.FSUPPLIERID as HSupID,
                0 as HWHID,0 as HSCWHID,0 as HEmpID,0 as HManagerID,a.FPURCHASERID as HSecManagerID,
                isnull(FSTOCKERID,0) as HKeeperID,a.FSTOCKDEPTID as HDeptID,0 as HCurID,
                '' as HSeOrderBillNo,'CLD导入' as HExplanation,'' as HRemark,
                '' as HInnerBillNo,0 as HRedBlueFlag,case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end as HBillStatus,
                isnull(us1.FNAME,'') as HMaker,a.FCREATEDATE as HMakeDate,isnull(us2.FNAME,'') as HChecker,
                a.FAPPROVEDATE as HCheckDate,isnull(us3.FNAME,'') as HUpDater,a.FMODIFYDATE as HUpDateDate,
                isnull(us4.FNAME,'') as HDeleteMan,a.FCANCELDATE as HDeleteDate,isnull(a.FOWNERID,0) as HOWNERID,
                isnull(a.FOWNERTYPEID,'') as HOWNERTYPEID,a.FID as HERPInterID,isnull(a.FBILLTYPEID,'') as HERPBillType,
                isnull(a.FBILLNO,'') as HERPBillNo,isnull(FPURCHASEORGID,0) as HPRDORGID,
                isnull(a.FSTOCKORGID,0) as HSTOCKORGID,isnull(a.FSTOCKERGROUPID,0) as HSTOCKERGROUPID,
                isnull(a.FPURCHASERGROUPID,0) as HPURCHASERGROUPID,isnull(a.FDEMANDORGID,0) as HDEMANDORGID,
                isnull(a.FCORRESPONDORGID,0) as HCORRESPONDORGID,isnull(a.FPROVIDERCONTACTID,0) as HPROVIDERCONTACTID,
                isnull(a.FSUPPLYID,0) as HSUPPLYID,isnull(a.FSETTLEID,0) as HSETTLEID,
                isnull(a.FCHARGEID,0) as HCHARGEID,isnull(a.FPURCHASEDEPTID,0) as HPURCHASEDEPTID,
                isnull(a.FBUSINESSTYPE,'') as HBUSINESSTYPE,isnull(a.FSUPPLYADDRESS,'') as HSUPPLYADDRESS,
                isnull(fin.FPAYORGID,0) as HPAYORGID,isnull(fin.FSETTLEORGID,0) as HSETTLEORGID,
                isnull(fin.FSETTLETYPEID,0) as HSETTLETYPEID,isnull(fin.FPAYCONDITIONID,0) as HPAYCONDITIONID,
                isnull(fin.FSETTLECURRID,0) as HSETTLECURRID,isnull(fin.FEXCHANGETYPEID,0) as HEXCHANGETYPEID,
                isnull(fin.FDISCOUNTLISTID,0) as HDISCOUNTLISTID,isnull(fin.FEXCHANGERATE,0) as HEXCHANGERATE,
                isnull(fin.FPRICETIMEPOINT,'') as HPRICETIMEPOINT,isnull(fin.FLOCALCURRID,0) as HLOCALCURRID,
                isnull(fin.FISINCLUDEDTAX,'') as HISINCLUDEDTAX,isnull(fin.FISPRICEEXCLUDETAX,'') as HISPRICEEXCLUDETAX
                ,o.FNUMBER as HOrganNumber
                from T_STK_INSTOCK a with(nolock)
                left join T_STK_INSTOCKFIN fin with(nolock) on a.FID=fin.FID
                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_SEC_user us4 with(nolock) on a.FCANCELLERID=us4.FUSERID
                left join T_ORG_Organizations o with(nolock) on a.FPURCHASEORGID=o.FORGID
                Where a.FID={id}
                ";
                DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
                DataTable maindt = ds.Tables[1];
                DataTable subdt = ds.Tables[0];
                if (maindt.Rows.Count == 0 || subdt.Rows.Count == 0)
                {
                    LogService.Write("采购入库单同步异常:" + sql);
                    continue;
                }
                //获取创建采购订单的使用组织
                DataTable dataTable = LogService.Get_DisPlayOrg(Context, maindt.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 subdt.Rows)
                {
                    JObject fentrymodel = new JObject();
                    foreach (DataColumn column in subdt.Columns)
                    {
                        fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                    }
                    array.Add(fentrymodel);
                }
                JObject model = new JObject();//主表
                DataRow maindr = maindt.Rows[0];
                foreach (DataColumn column in maindt.Columns)
                {
                    model.Add(column.ColumnName, maindr[column.ColumnName].ToString());
                }
                model.Add("HENTRY", array);
                JObject jsonRoot = new JObject()
                {
                    ["model"] = model
                };
                var client = new RestSharp.RestClient(http);
                //新增
                var requestPost = new RestRequest("Kf_POStockInBill/Kf_POStockInBillSaveApi", 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," + "Kf_POStockInBill/Kf_POStockInBillSaveApi");
                    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_RealessPurPoorder.cs
@@ -215,7 +215,7 @@
                Where a.FID={id}
                select a.FID as HInterID,year(a.FDATE) as HYear,month(a.FDATE) as HPeriod,'1102' as HBillType,'1102' as HBillSubType,a.FDate as HDate
                ,a.FBillNo as HBillNo,case when a.FAPPROVERID=0 then 1 else 2 end HBillStatus,'' as HAddress,0 as HSSID,a.FDATE as HSSDate,0 as HPSStyleID
                ,a.FSUPPLIERID as HSupID,a.F_RCZU_JXS HSupDealerID,0 as HCurID,0 as HExRate,a.FPURCHASERID as HEmpID,0 as HManagerID,a.FPURCHASEDEPTID as HDeptID
                ,a.FSUPPLIERID as HSupID,0 HSupDealerID,0 as HCurID,0 as HExRate,a.FPURCHASERID as HEmpID,0 as HManagerID,a.FPURCHASEDEPTID as HDeptID
                ,'CLOUD导入' as HExplanation,'CLOUD导入' as HRemark,a.FBillNo as HInnerBillNo
                ,a.FAPPROVERID as HChecker,a.FAPPROVEDATE as HCheckDate,a.FCREATORID as HMaker,a.FCREATEDATE as  HMakeDate
                ,a.FID as HERPInterID,a.FBILLTYPEID as HERPBillType,a.FPURCHASEORGID as HPURCHASEORGID,a.FPURCHASERGROUPID as HPURCHASERGROUPID,a.FPROVIDERID as HPROVIDERID,a.FSETTLEID as HSETTLEID
zymes/OperationService/zymes_RealessPurPrice.cs
New file
@@ -0,0 +1,125 @@
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_RealessPurPrice : 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,
                 'true'  as HEndFlag,case when a.FFORBIDSTATUS='A' then 'false' else 'true' end as HStopflag,'CLD-ERP 导入 ' as HRemark,' 已使用 ' as HUseFlag,
                a.FCREATEORGID as HCREATEORGID,a.FUSEORGID as HUSEORGID,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.FPURCHASEORGID as HPURCHASEORGID,a.FSUPPLIERID as HSupID,a.FCURRENCYID as HCurID,a.FPRICER as HPRICER,a.FPRICETYPE as HPRICETYPE,
                a.FPRICEOBJECT as HPRICEOBJECT,a.FISINCLUDEDTAX as HISINCLUDEDTAX,a.FDEFPRICELISTID as HDEFPRICELISTID,a.FSUPPLIERMASTERID as HSUPPLIERMASTERID
                ,o.FNUMBER as HOrganNumber
                from T_PUR_PRICELIST a with (nolock)
                left join T_ORG_Organizations o with(nolock) on a.FUSEORGID=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();
                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
                };
                LogService.Write("采购价目:" + model);
                var client = new RestSharp.RestClient(http);
                var requestPost = new RestRequest("Gy_MatePriceSup/SaveGy_PurPriceApi", 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_MatePriceSup/SaveGy_PurPriceApi");
                    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_RealessPurReceive.cs
@@ -215,12 +215,12 @@
                where a.FID={id}
                select a.FID as HInterID,year(isnull(a.FDATE,GETDATE())) as HYear,month(isnull(a.FDATE,GETDATE())) as HPeriod,'1103' as HBillType,case when a.FBUSINESSTYPE='WW' then '12511' else '12510' end as HBillSubType,isnull(a.FDATE,GETDATE()) as HDate
                ,a.FBillNo as HBillNo,case when a.FAPPROVERID=0 then 1 else 2 end HBillStatus,a.FSUPPLIERID as HSupID,a.F_RCZU_JXS HSupDealerID,a.FPURCHASERID as HManagerID,a.FRECEIVERID as HEmpID,a.FRECEIVEDEPTID as HDeptID,a.FNOTE as HRemark
                ,a.FBillNo as HBillNo,case when a.FAPPROVERID=0 then 1 else 2 end HBillStatus,a.FSUPPLIERID as HSupID,0 HSupDealerID,a.FPURCHASERID as HManagerID,a.FRECEIVERID as HEmpID,a.FRECEIVEDEPTID as HDeptID,a.FNOTE as HRemark
                ,a.FCREATORID as HMaker,a.FCREATEDATE as HMakeDate,a.FAPPROVERID as HChecker ,a.FAPPROVEDATE as HCheckDate,a.FOWNERTYPEID as HOWNERTYPEID,a.FOWNERID as HOWNERID
                ,a.FID as HERPInterID,a.FBillTypeID as HERPBillType,a.FPURORGID as HPURCHASEORGID,a.FSTOCKORGID as HSTOCKORGID,a.FDEMANDORGID as HREQUIREORGID
                ,a.FSTOCKGROUPID as HSTOCKGROUPID,isnull(a.FSENDBILLNO,'') as HSENDBILLNO,isnull(a.FLADBILLNO,'') as HLADBILLNO,a.FPURDEPTID as HPURDEPTID,a.FPURGROUPID as HPURGROUPID,a.FSUPPLYID as HSUPPLYID
                ,a.FSETTLEID as HSETTLEID,a.FCHARGEID as HCHARGEID,a.FBUSINESSTYPE as HBUSINESSTYPE,a.FSUPPLYADDRESS as HSUPPLYADDRESS,isnull(a.FCORRESPONDORGID,0) as HCORRESPONDORGID,a.FPROVIDERCONTACTID as HPROVIDERCONTACTID
                ,a.F_RCZU_NBDDH as HInnerBillNo,o.FNUMBER as HOrganNumber
                ,0 as HInnerBillNo,o.FNUMBER as HOrganNumber
                from T_PUR_RECEIVE a  with(nolock)
                left join T_ORG_Organizations o with(nolock) on a.FSTOCKORGID=o.FORGID
                Where a.FID={id}
zymes/OperationService/zymes_RealessSalOrder.cs
@@ -46,10 +46,8 @@
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.DataEntitys)
            {
                var forgName = Context.CurrentOrganizationInfo.Name;
                //if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                //    continue;
                var id = billObj["Id"].ToString();
                LogService.Write("销售订单同步id:" + id);
                string sql = string.Empty;
                sql = $@"
                /*dialect*/
@@ -81,18 +79,27 @@
                left join T_SAL_ORDERFIN fin with(nolock) on a.FID=fin.FID
                left join T_SAL_ORDERENTRY_LK LK with(nolock) on a.FENTRYID=LK.FENTRYID 
                Where a.FID={id}
                select a.FID as HInterID, year(a.FDate) as HYear, month(a.FDate) as HPeriod, '1401' as HBillType, '1401' as HBillSubType,
                a.FDate as HDate, a.FbillNo as HBillNo, case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end HBillStatus,
                a.FRECEIVEADDRESS as HAddress, 0 as HSSID,a.FDATE as HSSDate, a.FCUSTID as HCusID, 0 as HCurID, 0 as HExRate,
                a.FSALERID as HEmpID, 0 as HManagerID, isnull(a.FSALEDEPTID,0) as HDeptID, 'CLOUD导入' as HExplanation, a.FNOTE as HRemark,
                ''as HInnerBillNo, a.FAPPROVERID as HChecker, a.FAPPROVEDATE as HCheckDate, a.FCREATORID as HMaker, a.FCREATEDATE as HMakeDate,
                a.FCLOSERID as HCloseMan, a.FCLOSEDATE as HCloseDate, a.FID as HERPInterID, a.FBILLTYPEID as HERPBillType, a.FSALEORGID as HSALEORGID,
                a.FSALEGROUPID as HSALEGROUPID, a.FRECEIVEID as HRECEIVEID, a.FSETTLEID as HSETTLEID, a.FCHARGEID as HCHARGEID, a.FHEADLOCID as HHEADLOCID,
                a.FRECCONTACTID as HRECCONTACTID, isnull(a.FCORRESPONDORGID, 0) as HCORRESPONDORGID, a.FBUSINESSTYPE as HBUSINESSTYPE
                ,o.FNUMBER as HOrganNumber
               select
                a.FID as HInterID,year(a.FDate) as HYear,month(a.FDate) as HPeriod,'1401' as HBillType,'1401' as HBillSubType,a.FDate as HDate,
                a.FbillNo as HBillNo,
                case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end as HBillStatus,a.FRECEIVEADDRESS as HAddress,0 as HSSID,
                a.FDATE as HSSDate,a.FCUSTID as HCusID,0 as HCurID,0 as HExRate,a.FSALERID as HEmpID,0 as HManagerID,
                isnull(a.FSALEDEPTID,0) as HDeptID,'CLOUD导入' as HExplanation,a.FNOTE as HRemark,'' as HInnerBillNo
                ,isnull(us1.FNAME,'') as HMaker,a.FCREATEDATE as HMakeDate,isnull(us2.FNAME,'') as HChecker,a.FAPPROVEDATE as HCheckDate,
                isnull(us5.FNAME,'') as HCloseMan,a.FCLOSEDATE as HCloseDate,
                case when a.FCLOSESTATUS='A' then 'false' else 'true' end as HCloseType,
                a.FID as HERPInterID,a.FBILLTYPEID as HERPBillType,a.FSALEORGID as HSALEORGID,a.FSALEGROUPID as HSALEGROUPID,
                a.FRECEIVEID as HRECEIVEID,a.FSETTLEID as HSETTLEID,a.FCHARGEID as HCHARGEID,
                a.FHEADLOCID as HHEADLOCID,a.FRECCONTACTID as HRECCONTACTID,
                isnull(a.FCORRESPONDORGID,0) as HCORRESPONDORGID,a.FBUSINESSTYPE as HBUSINESSTYPE,o.FNUMBER HOrganNumber
                from T_SAL_ORDER a with(nolock)
                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_SEC_user us4 with(nolock) on a.FCANCELLERID=us4.FUSERID
                left join T_SEC_user us5 with(nolock) on a.FCLOSERID=us5.FUSERID
                left join T_ORG_Organizations o with(nolock) on a.FSALEORGID=o.FORGID
                Where FID={id}
                where FID={id}
                ";
                DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
                DataTable maindt = ds.Tables[1];
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/OperationService/zymes_RealessUnit.cs
@@ -51,10 +51,11 @@
                /*dialect*/
                select a.FUNITID as HItemID,a.FUNITID as HERPItemID,a.FNumber as HNumber,l.FName as HName,a.FNumber as HShortNumber,0 as HParentID
                ,1 as HLevel,'true' as HEndFlag,case when     a.FFORBIDSTATUS='A' then 'false' else 'true' end as HStopflag,'CLD-ERP导入' as HRemark,getdate() as HMakeTime
                ,'true' as HStandard,a.FCREATEORGID as HCREATEORGID,a.FUSEORGID as HUSEORGID
                ,'true' as HStandard,a.FCREATEORGID as HCREATEORGID,a.FUSEORGID as HUSEORGID,o.FNUMBER as HOrganNumber
                from T_BD_UNIT a with(nolock)
                inner join T_BD_UNIT_L l with(nolock) on a.FUNITID=l.FUNITID
                Where a.FUNITID={id}
                inner join T_BD_UNIT_L l with(nolock) on a.FUNITID=l.FUNITID  and l.FLOCALEID = 2052
                INNER JOIN T_ORG_Organizations o on a.FUSEORGID=o.FORGID
                Where l.FLOCALEID=2052  and  a.FUNITID={id}
                ";
                DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
                if (dt.Rows.Count == 0)
@@ -64,7 +65,7 @@
                }
                //获取单位的使用组织
                DataTable dataTable = LogService.Get_DisPlayOrg(Context, dt.Rows[0]["HUSEORGID"].ToString());
                DataTable dataTable = LogService.Get_DisPlayOrg(Context, dt.Rows[0]["HOrganNumber"].ToString());
                if (dataTable.Rows.Count == 0)
                    continue;
zymes/OperationService/zymes_RealessUnitConvertRate.cs
New file
@@ -0,0 +1,126 @@
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_RealessUnitConvertRate : 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.FUNITCONVERTRATEID AS HItemID,'' AS HNumber,'' AS HName,'' AS HShortNumber,
            0 AS HParentID,1 AS HLevel,'true' AS HEndFlag,CASE WHEN a.FFORBIDSTATUS = 'A' THEN 'false' ELSE 'true' END AS HStopflag,'CLD-ERP导入' AS HRemark,
            '已使用' AS HUseFlag,a.FUSEORGID AS HUSEORGID,a.FCREATEORGID AS HCREATEORGID,a.FBILLNO AS HBILLNO,a.FMATERIALID AS HMATERID,
            a.FCURRENTUNITID AS HCURRENTUNITID,a.FDESTUNITID AS HDESTUNITID,a.FCONVERTTYPE AS HCONVERTTYPE,a.FCONVERTNUMERATOR AS HCONVERTNUMERATOR,a.FCONVERTDENOMINATOR AS HCONVERTDENOMINATOR,
            a.FFORBIDSTATUS AS HFORBIDSTATUS,a.FUNITID AS HUnitID,ISNULL(m.FNUMBER, '') AS HMaterNumber,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.FFORBIDDERID AS HStopEmp,a.FFORBIDDATE AS HStopTime, o.FNUMBER as HOrganNumber
            FROM T_BD_UNITCONVERTRATE a WITH(NOLOCK)
            LEFT JOIN T_BD_MATERIAL m WITH(NOLOCK) ON a.FMATERIALID = m.FMATERIALID
            INNER JOIN T_ORG_Organizations o on a.FUSEORGID=o.FORGID
            where a.FUNITCONVERTRATEID={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("Gy_UnitConvertRateController/SaveGy_UnitConvertRateAPI", 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_UnitConvertRateController/SaveGy_UnitConvertRateAPI");
                    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_RealessWork.cs
@@ -45,10 +45,6 @@
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.DataEntitys)
            {
                var forgName = Context.CurrentOrganizationInfo.Name;
                //if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                //    continue;
                //var sql = $"exec zymes_RealessWork  {billObj["Id"]} ";
                var id = billObj["Id"].ToString();
                string sql =string.Empty;
                sql = $@"
@@ -88,7 +84,7 @@
                {
                    ["model"] = model
                };
                LogService.Write("作业同步:" + model);
                var client = new RestSharp.RestClient(http);
                var requestPost = new RestRequest("Gy_Work/SaveGy_WorkListApi", Method.POST);
                requestPost.AddParameter("application/json", JsonConvert.SerializeObject(_jsonRoot), ParameterType.RequestBody);
zymes/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs
New file
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
zymes/obj/Release/zymes_Project.csproj.AssemblyReference.cache
Binary files differ
zymes/test/obj/Release/.NETFramework,Version=v4.5.2.AssemblyAttributes.cs
New file
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5.2", FrameworkDisplayName = ".NET Framework 4.5.2")]
zymes/test/obj/Release/test.csproj.AssemblyReference.cache
Binary files differ
zymes/zymes_Project.csproj
@@ -128,8 +128,11 @@
    <Compile Include="LogService.cs" />
    <Compile Include="OperationService\zymes_MOCHANGE.cs" />
    <Compile Include="OperationService\zymes_RealessCurrency.cs" />
    <Compile Include="OperationService\zymes_RealessWW_PPBomBill.cs" />
    <Compile Include="OperationService\zymes_RealessOperator.cs" />
    <Compile Include="OperationService\zymes_RealessUnitConvertRate.cs" />
    <Compile Include="OperationService\zymes_RealessPrdInStock.cs" />
    <Compile Include="OperationService\zymes_RealessPrdReceive.cs" />
    <Compile Include="OperationService\zymes_RealessPurInStock.cs" />
    <Compile Include="OperationService\zymes_RealessEntrustOrderBill.cs" />
    <Compile Include="OperationService\zymes_RealessRateType.cs" />
    <Compile Include="OperationService\zymes_RealessDepartment.cs" />
@@ -154,6 +157,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" />