yusijie
2023-03-09 002dbe140bd557542fd3c840a91c045959b901ec
发货通知单,收货方联系人 审核同步插件
1个文件已添加
2个文件已修改
181 ■■■■■ 已修改文件
zymes/OperationService/zymes_RealessCustomer.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessSalSeOutStock.cs 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/zymes_Project.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessCustomer.cs
@@ -65,16 +65,27 @@
from T_BD_CUSTLOCATION a with(nolock)
--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.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}
";
                DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
                DataTable maindt = ds.Tables[0];//客户信息
                DataTable subdt = ds.Tables[1];//客户_交货地点
                DataTable subcontact = ds.Tables[2];//客户_收货方联系人
                if (maindt.Rows.Count == 0)
                {
                    LogService.Write("客户同步异常:" + sql);
                    continue;
                }
                JArray array = new JArray();//明细表
                JArray array = new JArray();//明细表_交货地点
                foreach (DataRow dr in subdt.Rows)
                {
                    JObject fentrymodel = new JObject();
@@ -84,6 +95,16 @@
                    }
                    array.Add(fentrymodel);
                }
                JArray arrcontact = new JArray();//明细表_收货方联系人
                foreach (DataRow dr in subcontact.Rows)
                {
                    JObject fentrycontact = new JObject();
                    foreach (DataColumn column in subcontact.Columns)
                    {
                        fentrycontact.Add(column.ColumnName, dr[column.ColumnName].ToString());
                    }
                    array.Add(fentrycontact);
                }
                JObject model = new JObject();//主表
                DataRow maindr = maindt.Rows[0];
                foreach (DataColumn column in maindt.Columns)
@@ -91,6 +112,7 @@
                    model.Add(column.ColumnName, maindr[column.ColumnName].ToString());
                }
                model.Add("HCustLocationEntry", array);
                model.Add("HCustContactEntry", arrcontact);
                JObject jsonRoot = new JObject()
                {
                    ["model"] = model
zymes/OperationService/zymes_RealessSalSeOutStock.cs
New file
@@ -0,0 +1,156 @@
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_RealessSalSeOutStock : 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 forgName = Context.CurrentOrganizationInfo.Name;
                //if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                //    continue;
                //var sql = $"exec zymes_RealessPurPoorder {billObj["Id"]} ";
                var id = billObj["Id"].ToString();
                string sql = string.Empty;
                sql = $@"
/*dialect*/
select a.FID HInterID, a.FENTRYID HEntryID, a.FMATERIALID HMaterID, a.FUNITID HUnitID,
a.FQTY HQty, isnull(f.FPRICE,0) HPrice, isnull(f.FAMOUNT,0) HMoney, 0 HWHID, 0 HSPID,
a.FNOTE HRemark, 0 HSourceInterID, 0 HSourceEntryID, '' HSourceBillNo, '' HSourceBillType,
0 HSeOrderInterID, 0 HSeOrderEntryID, '' HSeOrderBillNo, e.FOWNERID HOWNERID, e.FOWNERTYPEID HOWNERTYPEID,
fin.FSETTLEORGID HSETTLEORGID, a.FSUMOUTQTY HMoveStockQty, a.FJOINOUTQTY HRelationQty, a.FAUXPROPID HAuxPropID,
'' HBatchNO, a.FMTONO HMTONo, a.FID HERPInterID, a.FEntryID HERPEntryID, a.FCUSTMATID HCUSTMATID,
a.FBASEUNITID HBASEUNITID, a.FBFLOWID HBFLOWID, a.FOUTCONTROL HOUTCONTROL, 0 HSTOCKUNITID,
e.FROWID HROWTYPE, e.FROWID HROWID, e.FPARENTROWID HPARENTROWID, isnull(e.FPARENTMATID,0) HPARENTMATID,
isnull(f.FTAXCOMBINATION,0) HTAXCOMBINATION, isnull(f.FPRICECOEFFICIENT,0) HPRICECOEFFICIENT, isnull(f.FSYSPRICE,0) HSYSPRICE,
isnull(f.FLIMITDOWNPRICE,0) HLIMITDOWNPRICE, isnull(f.FPRICEUNITID,0) HPRICEUNITID, isnull(f.FTAXPRICE,0) HTAXPRICE,
isnull(f.FTAXRATE,0) HTAXRATE, isnull(f.FTAXNETPRICE,0) HTAXNETPRICE, isnull(f.FDISCOUNTRATE,0) HDISCOUNTRATE,
isnull(f.FISFREE,0) HISFREE, isnull(fin.FLOCALCURRID,0) HLOCALCURRID, isnull(fin.FSETTLECURRID,0) HSETTLECURRID,
isnull(fin.FEXCHANGETYPEID,0) HEXCHANGETYPEID, isnull(fin.FSETTLETYPEID,0) HSETTLETYPEID, isnull(fin.FRECEIPTCONDITIONID,0) HRECEIPTCONDITIONID,
isnull(fin.FEXCHANGERATE,0) HEXCHANGERATE, isnull(fin.FISINCLUDEDTAX,0) HISINCLUDEDTAX, isnull(fin.FISPRICEEXCLUDETAX,0) HISPRICEEXCLUDETAX,
isnull(tax.FTAXRATEID,0) HTAXRATEID, 0 HTaxRate_TAX, isnull(tax.FCOSTPERCENT,0) HCOSTPERCENT, isnull(tax.FVAT,0) HVAT,
isnull(tax.FSELLERWITHHOLDING,0) HSELLERWITHHOLDING, isnull(tax.FBUYERWITHHOLDING,0) HBUYERWITHHOLDING
from T_SAL_DELIVERYNOTICEENTRY a with(nolock)
left join T_SAL_DELIVERYNOTICEENTRY_F f with(nolock) on a.FENTRYID = f.FENTRYID
left join T_SAL_DELIVERYNOTICEENTRY_E e with(nolock) on a.FENTRYID = e.FENTRYID
left join T_SAL_DELIVERYNOTICEFIN fin with(nolock) on a.FENTRYID = fin.FENTRYID
left join T_SAL_DELIVERYNOTICEENTRYTAX tax with(nolock) on a.FENTRYID = tax.FENTRYID
Where a.FID={id}
select FID as HInterID, YEAR(FDATE) as HYear, MONTH(FDATE) as HPeriod, '1402' HBillType, '1402' HBillSubType,
FDATE as HDate, FBILLNO as HBillNo, case when FAPPROVERID=0 then 1 else 2 end HBillStatus, FCUSTOMERID as HCusID,
0 HManagerID, FSALEDEPTID as HDeptID, 'CLOUD导入' as HRemark, FRECEIVEADDRESS as HAddress, 0 HSSID, 0 HCurID,
0 HWHID, 0 HExRate, 0 HEmpID, 'CLOUD导入' as HExplanation, FBILLNO as HInnerBillNo, FSALEORGID as HSALEORGID,
FDELIVERYORGID as HDELIVERYORGID, FOWNERID as HOWNERID, FOWNERTYPEID as HOWNERTYPEID, FID as HERPInterID,
FBILLTYPEID as HERPBillType, FCREATORID as HMaker, FCREATEDATE as HMakeDate, FAPPROVERID as HChecker,
FAPPROVEDATE as HCheckDate, FCLOSERID as HCloseMan, FCLOSEDATE as HCloseDate, FSTOCKERGROUPID as HSTOCKERGROUPID,
FSALEGROUPID as HSALEGROUPID, FSALEDEPTID as HSALEDEPTID, FBUSINESSTYPE as HBUSINESSTYPE, FCARRIERID as HCARRIERID,
FRECEIVERID as HRECEIVERID, FSETTLEID as HSETTLEID, FPAYERID as HPAYERID,FHEADLOCID as HHEADLOCID, FRECCONTACTID as HRECCONTACTID,
FRECEIPTCONDITIONID as HRECEIPTCONDITIONID, FCORRESPONDORGID as HCORRESPONDORGID, FCARRIAGENO as HCARRIAGENO
from T_SAL_DELIVERYNOTICE with(nolock)
Where 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;
                }
                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
                };
                LogService.Write("发货通知单同步示例" + JsonConvert.SerializeObject(jsonRoot));
                string clientUrl = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "ClientUrl");//K/3 Cloud 业务站点地址
                var client = new RestSharp.RestClient(clientUrl);
                //新增
                var requestPost = new RestRequest("Xs_SeOutStockBill/Xs_SeOutStockBillSaveApi", 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"] + "," + contentPost);
                    LogService.Write("发货通知单同步异常,POST," + clientUrl + "Xs_SeOutStockBill/Xs_SeOutStockBillSaveApi");
                    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
@@ -137,6 +137,7 @@
    <Compile Include="OperationService\zymes_RealessPrdPpbom.cs" />
    <Compile Include="OperationService\zymes_RealessBillType.cs" />
    <Compile Include="OperationService\zymes_RealessMatePriceSup.cs" />
    <Compile Include="OperationService\zymes_RealessSalSeOutStock.cs" />
    <Compile Include="OperationService\zymes_RealessSettleStyle.cs" />
    <Compile Include="OperationService\zymes_RealessRecCondition.cs" />
    <Compile Include="OperationService\zymes_RealessStock.cs" />