Browse Source

SK接口u8数据job

Branch_PaiNaWeiSJob
shiqian.wang 4 weeks ago
parent
commit
7449a14191
  1. 13
      ICSSoft.FromERP/ICSSoft.FromERP.csproj
  2. 156
      ICSSoft.FromERP/RestOpHelper.cs
  3. 232
      ICSSoft.FromERP/SK/YERP_001.cs
  4. 213
      ICSSoft.FromERP/SK/YERP_005.cs
  5. 244
      ICSSoft.FromERP/SK/YERP_007.cs
  6. 169
      ICSSoft.FromERP/SK/YERP_008.cs
  7. 177
      ICSSoft.FromERP/SK/YERP_010_BOH.cs
  8. 178
      ICSSoft.FromERP/SK/YERP_010_EOH.cs
  9. 146
      ICSSoft.FromERP/SK/YERP_011.cs
  10. 178
      ICSSoft.FromERP/SK/YERP_012.cs
  11. 111
      ICSSoft.FromERP/XmlAPIHelper.cs

13
ICSSoft.FromERP/ICSSoft.FromERP.csproj

@ -152,10 +152,20 @@
<Compile Include="ICSReplenishapply.cs" />
<Compile Include="ICSAssemVouchs.cs" />
<Compile Include="ICSSO.cs" />
<Compile Include="RestOpHelper.cs" />
<Compile Include="SK\YERP_001.cs" />
<Compile Include="SK\YERP_005.cs" />
<Compile Include="SK\YERP_007.cs" />
<Compile Include="SK\YERP_008.cs" />
<Compile Include="SK\YERP_010_BOH.cs" />
<Compile Include="SK\YERP_010_EOH.cs" />
<Compile Include="SK\YERP_011.cs" />
<Compile Include="SK\YERP_012.cs" />
<Compile Include="SRMUser.cs" />
<Compile Include="SyncCustomer_WeiMas.cs" />
<Compile Include="SyncItem_WeiMas.cs" />
<Compile Include="SyncVendor_WeiMas.cs" />
<Compile Include="XmlAPIHelper.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config">
@ -163,6 +173,9 @@
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Connected Services\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

156
ICSSoft.FromERP/RestOpHelper.cs

@ -0,0 +1,156 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Security;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace ICSSoft.FromERP
{
public class RestOpHelper
{
private string url = "";
public string Url
{
get { return url; }
set { url = value; }
}
private string clientp12path = "";
public string Clientp12path
{
get { return clientp12path; }
set { clientp12path = value; }
}
private string clientp12PassWord = "";
public string Clientp12PassWord
{
get { return clientp12PassWord; }
set { clientp12PassWord = value; }
}
public RestOpHelper()
{
}
public string send(string s)
{
string retrunstr = "";
//类似浏览器确认证书合法方法的绑定
//如果觉得写一个委托方法麻烦,可以直接使用匿名委托
ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidate;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
Uri uri = new Uri(@url);
HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
byte[] bs = Encoding.UTF8.GetBytes(s);
//这2句代码表示如果要求客户端证书,将客户端证书加入request,不需要客户端证书的https请求则不需要此代码 //需导入xx.p12证书文件 clientp12path为文件所在路径clientp12password为证书密码 InstallCertificate(clientp12path, clientp12PassWord, StoreLocation.CurrentUser, StoreName.My);
X509Certificate cer = new X509Certificate(clientp12path, clientp12PassWord);
request.Credentials = new NetworkCredential("IF_YERP", "Xtxc355860");
request.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
//request.
request.Timeout = 10000;
request.ClientCertificates.Add(cer);
request.ContentType = "text/plain";
request.Method = "post";
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Proxy = null;
//request.UserAgent = DefaultUserAgent;
using (Stream reqStram = request.GetRequestStream())
{
reqStram.Write(bs, 0, bs.Length);
reqStram.Close();
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
retrunstr = reader.ReadToEnd();
}
return retrunstr;
}
private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
{
// trust any certificate!!!
//System.Console.WriteLine("Warning, trust any certificate");
//为了通过证书验证,总是返回true
return true;
}
//导入证书
public static bool InstallCertificate(string certFilePath, string password, StoreLocation location, StoreName storeName)
{
try
{
if (!File.Exists(certFilePath))
{
return false;
}
byte[] certData = File.ReadAllBytes(certFilePath);
X509Certificate2 cert = new X509Certificate2(certData, password, X509KeyStorageFlags.Exportable);
X509Store store = new X509Store(storeName, location);
store.Open(OpenFlags.MaxAllowed);
store.Remove(cert);
store.Add(cert);
store.Close();
return true;
}
catch (Exception ex)
{
return false;
}
}
public void RequestSAP(string url, int timeout, string xmlData, string userName, string password, out string statusCode, out string resultContent)
{
statusCode = "400";
resultContent = "";
try
{
byte[] bytes = Encoding.UTF8.GetBytes(xmlData);
//Basic Auth
byte[] byteUser = Encoding.Default.GetBytes(userName + ":" + password);
string Authorization = Convert.ToBase64String(byteUser);
HttpWebRequest request = HttpWebRequest.CreateHttp(url);
//这2句代码表示如果要求客户端证书,将客户端证书加入request,不需要客户端证书的https请求则不需要此代码 //需导入xx.p12证书文件 clientp12path为文件所在路径clientp12password为证书密码 InstallCertificate(clientp12path, clientp12PassWord, StoreLocation.CurrentUser, StoreName.My);
X509Certificate cer = new X509Certificate(clientp12path, clientp12PassWord);
request.ClientCertificates.Add(cer);
//避免远程连接证书无效问题
ServicePointManager.ServerCertificateValidationCallback = (s, certificate, chain, errs) => true;
request.Method = "POST";
request.Timeout = timeout;
request.ContentType = "text/xml;charset=UTF-8";
request.ContentLength = bytes.Length;
request.Headers.Add("Authorization", "Basic " + Authorization);
//根据soapui中的SOAPAction 进行赋值
request.Headers.Add("SOAPAction", "SOAPAction");
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
statusCode = response.StatusCode.ToString("d");
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);
resultContent = sr.ReadToEnd();
sr.Dispose();
requestStream.Close();
responseStream.Close();
response.Dispose();
}
catch (Exception ex)
{
statusCode = "400";
resultContent = ex.Message;
}
}
}
}

232
ICSSoft.FromERP/SK/YERP_001.cs

@ -0,0 +1,232 @@
using Quartz;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ICSSoft.FromERP
{
/// <summary>
/// 进销存统计表
/// </summary>
public class YERP_001 : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
try
{
lock (key)
{
log.Info("开始……………………………………………………………………");
Execute();
log.Info("结束……………………………………………………………………");
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public async void Execute()
{
try
{
Configuration config = GetConfig();
//string url = config.ConnectionStrings.ConnectionStrings["APIAddStdWorkHour"].ConnectionString.ToString();
var Dates = DateTime.Now;
//log.Info("获取创建定额工时接口 " + url);
//if (string.IsNullOrEmpty(url))
//{
// return;
//}
string conStr = ICSHelper.GetConnectString();
//<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yerp="http://skch.com/YERP_001_INVENTORY_DATA">
// <soapenv:Header/>
// <soapenv:Body>
// <yerp:YERP_001_OA1_MT>
// <!--1 or more repetitions:-->
// <INVT_DATA>
// <YYYY_MM_DD>2024-08-20</YYYY_MM_DD>
// <INVT_NM>BR8040</INVT_NM>
// <INVT_CD>103016</INVT_CD>
// <BSC_QTY>0.00</BSC_QTY>
// <BSC_AMT>0.00</BSC_AMT>
// <PCHS_QTY>15000.00</PCHS_QTY>
// <PCHS_AMT>245870.26</PCHS_AMT>
// <ESTM_QTY>0.00</ESTM_QTY>
// <ESTM_AMT>0.00</ESTM_AMT>
// <ETC_WHG_QTY>8305.00</ETC_WHG_QTY>
// <ETC_WHG_AMT>157592.50</ETC_WHG_AMT>
// <ETC_RLS_QTY>8388.00</ETC_RLS_QTY>
// <ETC_RLS_AMT>151226.81</ETC_RLS_AMT>
// <MOVE_QTY>0.00</MOVE_QTY>
// <MOVE_AMT>0.00</MOVE_AMT>
// <SL_QTY>6450.0000</SL_QTY>
// <SL_RVN>102513.2100</SL_RVN>
// <SL_AMT>115839.8800</SL_AMT>
// <FRTX_AVRG_PRC>0</FRTX_AVRG_PRC>
// <SMTX_AVRG_PRC>0</SMTX_AVRG_PRC>
// <RLS_QTY>6450.00</RLS_QTY>
// <SL_COST>108183.8000</SL_COST>
// <SLS_TOT_GAIN>-5670.59</SLS_TOT_GAIN>
// <SLS_TOT_PRTO>?</SLS_TOT_PRTO>
// <TE_QTY>8467.00</TE_QTY>
// <TE_AMT>144052.15</TE_AMT>
// </INVT_DATA>
// </yerp:YERP_001_OA1_MT>
// </soapenv:Body>
// </soapenv:Envelope>
// 202404
// 过滤时间为上个月
string Date = "2023";// Dates.ToString("yyyy");
string Muoth = Dates.AddMonths(-1).ToString("MM");
string Day = Dates.ToString("dd");
var beginPeriod = "2023-01-01";//Date + Muoth;
var endPeriod = "2023-12-31";//Date + Muoth;
string sqls = @"
begin transaction
exec Sa_MoveSRMDetail N'JXCASKALL',N' ',N'{0}',N'{1}',N'{2}',N' ',N' ',N' ',N' ',N''
select identity(int,0,1) as baseid,isnull([],'') as [],isnull([],'') as [],isnull([],'') as [],(Convert(Decimal(38,2),SUM([cInvDefine12]))) as [cInvDefine12],(Convert(Decimal(38,2),SUM([cInvDefine11]))) as
[cInvDefine11],Convert(Decimal(38,2),SUM(isnull([],0)+isnull([],0)+isnull([],0)-isnull([],0)-isnull([],0))) as [],Convert(Decimal(38,2),SUM(isnull([],0)+isnull([],0)+isnull([],0)-isnull([],0)-isnull([],0))) as [],(Convert(Decimal(38,4),SUM([]))) as [],(Convert(Decimal(38,4),SUM([]))) as [],Convert(Decimal(38,2),SUM(isnull([],0)-isnull([],0))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,4),SUM([]))) as [],(Convert(Decimal(38,4),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as [],(Convert(Decimal(38,2),SUM([]))) as []
into tempdb..JXCASKALL_1 from tempdb..JXCASKALL
where 1 = 1 group by isnull([],''),isnull([],''),isnull([],'')
having isnull(sum([]),0)<> 0 or isnull(sum([]),0)<> 0 or isnull(sum([]),0) <> 0 or isnull(sum([]),0) <> 0 or isnull(sum([] ),0)<> 0 or isnull(sum([]),0)<>0 or isnull(sum([] ),0)<> 0 or isnull(sum([]),0) <> 0 or isnull(sum([]),0) <> 0 or isnull(sum([]),0) <> 0 or isnull(sum([] ),0)<> 0 or isnull(sum([]),0) <> 0 or isnull(sum([] ),0)<> 0 or isnull(sum([]),0) <> 0 or isnull(sum([]),0) <> 0 or isnull(sum([]),0) <> 0 or isnull(sum([]),0) <> 0
select A.* into TEMPDB..JXCASKALLNEW from TEMPDB..JXCASKALL A
inner join TEMPDB..JXCASKALL_1 sum on isnull(A.[],'')=isnull(sum.[],'') and isnull(A.[],'')=isnull(sum.[],'') and isnull(A.[],'')=isnull(sum.[],'')
select sum.* into TEMPDB..JXCASKALLNEW_1 from TEMPDB..JXCASKALL_1 sum
select identity(int,0,1) as index__id,* into tempdb..JXCASKALLNEW_index from
( select baseid +0 as baseid, [],[],[] from tempdb..JXCASKALLNEW_1)A where 1=0
insert into TEMPDB..JXCASKALLNEW_index
select * from (select top 1000 baseid +0 as baseid, [],[],[]
from TEMPDB..JXCASKALLNEW_1 order by [] asc)a
select B.index__id,a. INVT_NM,a. INVT_CD,a. BSC_QTY,a. BSC_AMT,a. PCHS_QTY,a. PCHS_AMT,a. ESTM_QTY,a. ESTM_AMT,a. ETC_WHG_QTY,
a. ETC_WHG_AMT,a. ETC_RLS_QTY,a. ETC_RLS_AMT,a. MOVE_QTY,a. MOVE_AMT,a. SL_QTY,a. SL_RVN,a. SL_AMT,
'' FRTX_AVRG_PRC,
'' SMTX_AVRG_PRC,
a. RLS_QTY,a. SL_COST,a. SLS_TOT_GAIN,
'' SLS_TOT_PRTO,a. TE_QTY,a. TE_AMT
from TEMPDB..JXCASKALLNEW_1 A inner join
TEMPDB..JXCASKALLNEW_index B on A.baseid=B.baseid
drop table tempdb..JXCASKALL
drop table tempdb..JXCASKALL_1
drop table TEMPDB..JXCASKALLNEW
drop table TEMPDB..JXCASKALLNEW_1
drop table TEMPDB..JXCASKALLNEW_index
rollback transaction";
sqls = string.Format(sqls, Date, beginPeriod, endPeriod);
log.Info("YERP_001 sql:" + sqls);
DataTable vbsdt = ICSHelper.ExecuteTable(conStr, sqls);
log.Info("sql结果数量" + vbsdt.Rows.Count);
if (vbsdt.Rows.Count > 0)
{
StringBuilder soapRequestData = new StringBuilder();
soapRequestData.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:yerp=\"http://skch.com/YERP_001_INVENTORY_DATA\">");
soapRequestData.Append("<soapenv:Header/>");
soapRequestData.Append("<soapenv:Body>");
soapRequestData.Append("<yerp:YERP_001_OA1_MT>");
//循环数据
foreach (DataRow itemRow in vbsdt.Rows)
{
//原循环部分 begin
soapRequestData.Append("<INVT_DATA>");
soapRequestData.Append("<YYYY_MM_DD>" + Dates.ToString("yyyy-MM-dd") + "</YYYY_MM_DD>");
soapRequestData.Append(itemRow["INVT_NM"] != null ? "<INVT_NM>" + itemRow["INVT_NM"].ToString() + "</INVT_NM>" : "<INVT_NM>" + "</INVT_NM>");
soapRequestData.Append(itemRow["INVT_CD"] != null ? "<INVT_CD>" + itemRow["INVT_CD"].ToString() + "</INVT_CD>" : "<INVT_CD>" + "</INVT_CD>");
soapRequestData.Append(itemRow["BSC_QTY"] != null ? "<BSC_QTY>" + itemRow["BSC_QTY"].ToString() + "</BSC_QTY>" : "<BSC_QTY>" + "</BSC_QTY>");
soapRequestData.Append(itemRow["BSC_AMT"] != null ? "<BSC_AMT>" + itemRow["BSC_AMT"].ToString() + "</BSC_AMT>" : "<BSC_AMT>" + "</BSC_AMT>");
soapRequestData.Append(itemRow["PCHS_QTY"] != null ? "<PCHS_QTY>" + itemRow["PCHS_QTY"].ToString() + "</PCHS_QTY>" : "<PCHS_QTY>" + "</PCHS_QTY>");
soapRequestData.Append(itemRow["PCHS_AMT"] != null ? "<PCHS_AMT>" + itemRow["PCHS_AMT"].ToString() + "</PCHS_AMT>" : "<PCHS_AMT>" + "</PCHS_AMT>");
soapRequestData.Append(itemRow["ESTM_QTY"] != null ? "<ESTM_QTY>" + itemRow["ESTM_QTY"].ToString() + "</ESTM_QTY>" : "<ESTM_QTY>" + "</ESTM_QTY>");
soapRequestData.Append(itemRow["ESTM_AMT"] != null ? "<ESTM_AMT>" + itemRow["ESTM_AMT"].ToString() + "</ESTM_AMT>" : "<ESTM_AMT>" + "</ESTM_AMT>");
soapRequestData.Append(itemRow["ETC_WHG_QTY"] != null ? "<ETC_WHG_QTY>" + itemRow["ETC_WHG_QTY"].ToString() + "</ETC_WHG_QTY>" : "<ETC_WHG_QTY>" + "</ETC_WHG_QTY>");
soapRequestData.Append(itemRow["ETC_WHG_AMT"] != null ? "<ETC_WHG_AMT>" + itemRow["ETC_WHG_AMT"].ToString() + "</ETC_WHG_AMT>" : "<ETC_WHG_AMT>" + "</ETC_WHG_AMT>");
soapRequestData.Append(itemRow["ETC_RLS_QTY"] != null ? "<ETC_RLS_QTY>" + itemRow["ETC_RLS_QTY"].ToString() + "</ETC_RLS_QTY>" : "<ETC_RLS_QTY>" + "</ETC_RLS_QTY>");
soapRequestData.Append(itemRow["ETC_RLS_AMT"] != null ? "<ETC_RLS_AMT>" + itemRow["ETC_RLS_AMT"].ToString() + "</ETC_RLS_AMT>" : "<ETC_RLS_AMT>" + "</ETC_RLS_AMT>");
soapRequestData.Append(itemRow["MOVE_QTY"] != null ? "<MOVE_QTY>" + itemRow["MOVE_QTY"].ToString() + "</MOVE_QTY>" : "<MOVE_QTY>" + "</MOVE_QTY>");
soapRequestData.Append(itemRow["MOVE_AMT"] != null ? "<MOVE_AMT>" + itemRow["MOVE_AMT"].ToString() + "</MOVE_AMT>" : "<MOVE_AMT>" + "</MOVE_AMT>");
soapRequestData.Append(itemRow["SL_QTY"] != null ? "<SL_QTY>" + itemRow["SL_QTY"].ToString() + "</SL_QTY>" : "<SL_QTY>" + "</SL_QTY>");
soapRequestData.Append(itemRow["SL_RVN"] != null ? "<SL_RVN>" + itemRow["SL_RVN"].ToString() + "</SL_RVN>" : "<SL_RVN>" + "</SL_RVN>");
soapRequestData.Append(itemRow["SL_AMT"] != null ? "<SL_AMT>" + itemRow["SL_AMT"].ToString() + "</SL_AMT>" : "<SL_AMT>" + "</SL_AMT>");
soapRequestData.Append(itemRow["FRTX_AVRG_PRC"] != null ? "<FRTX_AVRG_PRC>" + itemRow["FRTX_AVRG_PRC"].ToString() + "</FRTX_AVRG_PRC>" : "<FRTX_AVRG_PRC>" + "</FRTX_AVRG_PRC>");
soapRequestData.Append(itemRow["SMTX_AVRG_PRC"] != null ? "<SMTX_AVRG_PRC>" + itemRow["SMTX_AVRG_PRC"].ToString() + "</SMTX_AVRG_PRC>" : "<SMTX_AVRG_PRC>" + "</SMTX_AVRG_PRC>");
soapRequestData.Append(itemRow["RLS_QTY"] != null ? "<RLS_QTY>" + itemRow["RLS_QTY"].ToString() + "</RLS_QTY>" : "<RLS_QTY>" + "</RLS_QTY>");
soapRequestData.Append(itemRow["SL_COST"] != null ? "<SL_COST>" + itemRow["SL_COST"].ToString() + "</SL_COST>" : "<SL_COST>" + "</SL_COST>");
soapRequestData.Append(itemRow["SLS_TOT_GAIN"] != null ? "<SLS_TOT_GAIN>" + itemRow["SLS_TOT_GAIN"].ToString() + "</SLS_TOT_GAIN>" : "<SLS_TOT_GAIN>" + "</SLS_TOT_GAIN>");
soapRequestData.Append(itemRow["SLS_TOT_PRTO"] != null ? "<SLS_TOT_PRTO>" + itemRow["SLS_TOT_PRTO"].ToString() + "</SLS_TOT_PRTO>" : "<SLS_TOT_PRTO>" + "</SLS_TOT_PRTO>");
soapRequestData.Append(itemRow["TE_QTY"] != null ? "<TE_QTY>" + itemRow["TE_QTY"].ToString() + "</TE_QTY>" : "<TE_QTY>" + "</TE_QTY>");
soapRequestData.Append(itemRow["TE_AMT"] != null ? "<TE_AMT>" + itemRow["TE_AMT"].ToString() + "</TE_AMT>" : "<TE_AMT>" + "</TE_AMT>");
soapRequestData.Append("</INVT_DATA>");
//原循环部分 end
}
soapRequestData.Append("</yerp:YERP_001_OA1_MT>");
soapRequestData.Append("</soapenv:Body>");
soapRequestData.Append("</soapenv:Envelope>");
string postData = soapRequestData.ToString();
log.Info("YERP_001 xmlRequest:" + postData);
string statusCode;
string resultContent;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
RestOpHelper rop = new RestOpHelper();
rop.Clientp12path = @"C:\Users\Administrator\Desktop\yonyou-cert\wildcard.pfx";
rop.Clientp12PassWord = "Yonyou2024!";
rop.Url = @"https://yerp-proxy-sap-dev.skchemicals.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=YERP_D&receiverParty=&receiverService=&interface=YERP_001_OA1_SI&interfaceNamespace=http://skch.com/YERP_001_INVENTORY_DATA";
rop.RequestSAP(rop.Url, 10000, postData, "IF_YERP", "Xtxc355860", out statusCode, out resultContent);
log.Info("YERP_001 statusCode:" + statusCode + "\r\n" + "resultContent:" + resultContent);
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public static Configuration GetConfig()
{
Assembly assembly = Assembly.GetCallingAssembly();
string path = string.Format("{0}.config", assembly.Location);
if (!File.Exists(path))
{
throw new FileNotFoundException(path + "路径下的文件未找到!");
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception)
{
throw;
}
}
}
}

213
ICSSoft.FromERP/SK/YERP_005.cs

@ -0,0 +1,213 @@
using Quartz;
using Quartz.Xml.JobSchedulingData20;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Linq.Mapping;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.UI;
using System.Xml.Linq;
using System.Xml.Serialization;
namespace ICSSoft.FromERP
{
/// <summary>
/// 营业务税金及附加明细账
/// </summary>
public class YERP_005 : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
try
{
lock (key)
{
log.Info("开始……………………………………………………………………");
Execute();
log.Info("结束……………………………………………………………………");
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public async void Execute()
{
try
{
Configuration config = GetConfig();
//string url = config.ConnectionStrings.ConnectionStrings["APIAddStdWorkHour"].ConnectionString.ToString();
var Dates = DateTime.Now;
//log.Info("获取创建定额工时接口 " + url);
//if (string.IsNullOrEmpty(url))
//{
// return;
//}
string conStr = ICSHelper.GetConnectString();
//PdfDocument doc = new PdfDocument();
//doc.LoadFromFile(@"C:\Users\andyxin\Desktop\日常文档\TS3400series_5200.pdf");//选择Microsoft XPS Document Writer打印机
//doc.PrintSettings.PrinterName = "Canon TS3400 series";//打印PDF文档到XPS格式
////doc.PrintSettings.PrintToFile(filename + ".pdf");
//doc.Print();
////log.Info("打印成功: " + path);
//Dictionary<string, string> dParam = new Dictionary<string, string>();
//dParam.Add("RCARD", "123456");
//dParam.Add("INVSTD", "654321");
//dParam.Add("DEFINE", "测试OK");
//BTPrint(@"D:\汇川27x7mm2排1.btw", "Microsoft Print to PDF", dParam);
//string aa = " < soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns: yerp = \"http://skch.com/YERP_005_TAX_VAT\" > " + @"
// < soapenv:Header />
// < soapenv:Body >
// < yerp:YERP_005_OA1_MT >
// < !--1 or more repetitions: -->
// < TAX_SURTAX >
// < SBJ_CD > 1 </ SBJ_CD >
// < SBJ_NM > 1 </ SBJ_NM >
// < YYYY >?</ YYYY >
// < MM >?</ MM >
// < DD >?</ DD >
// < SPTDOC >?</ SPTDOC >
// < SMR >?</ SMR >
// < ODR_ACC >?</ ODR_ACC >
// < !--Optional : -->
// < DBTO_AMT >?</ DBTO_AMT >
// < !--Optional : -->
// < CRDTO_AMT >?</ CRDTO_AMT >
// < !--Optional : -->
// < DBTO_CRDTO_DVSN ></ DBTO_CRDTO_DVSN >
// < !--Optional : -->
// < BLNC >?</ BLNC >
// </ TAX_SURTAX >
// </ yerp : YERP_005_OA1_MT >
// </ soapenv : Body >
// </ soapenv : Envelope >";
//< soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns: yerp = "http://skch.com/YERP_005_TAX_VAT" >
// < soapenv:Header />
// < soapenv:Body >
// < yerp:YERP_005_OA1_MT >
// < !--1 or more repetitions: -->
// < TAX_SURTAX >
// < SBJ_CD > 6403 </ SBJ_CD >
// < SBJ_NM > 营业税金及附加 </ SBJ_NM >
// < !--Optional : -->
// < YYYY > 2024 </ YYYY >
// < !--Optional : -->
// < MM > 7 </ MM >
// < !--Optional : -->
// < SMR > 期初余额 </ SMR >
// < !--Optional : -->
// < DBTO_CRDTO_DVSN > 平 </ DBTO_CRDTO_DVSN >
// < !--Optional : -->
// < BLNC > 0.00000000 </ BLNC >
// </ TAX_SURTAX >
// </ yerp : YERP_005_OA1_MT >
// </ soapenv : Body >
// </ soapenv : Envelope >
// 202404
// 过滤时间为上个月
string Date = Dates.ToString("yyyy");
string Muoth = Dates.AddMonths(-1).ToString("MM");
string Day = Dates.ToString("dd");
var beginPeriod = "200001";//Date + Muoth;
var endPeriod = "209001";//Date + Muoth;
string sqls = @"begin transaction
exec GL_Ledger @tblname=N'yysjmxz',@KmCode=N'6403',@beginPeriod={0},@endPeriod={1},@bVouch=0,@bequal=1,@sum=0,@bMJ=1,@swhere=N'',@sAuth=N'',@ReportID=N'GL13',@ReportType=0,@iUnite=0
select autoid,cCode SBJ_CD,ccode_name SBJ_NM,iyear YYYY,imonth MM,iday DD,csign_no SPTDOC,cDigest SMR,cDCode ODR_ACC,md DBTO_AMT,mc CRDTO_AMT,(case when ibook is null then '平' else (case when ibook ='1' then '贷' else '借' end) end) DBTO_CRDTO_DVSN,tmpme,
(Select Sum(tmpme) from tempdb..yysjmxz where autoid<=a.autoid) BLNC from tempdb..yysjmxz a
rollback transaction";
sqls = string.Format(sqls, beginPeriod, endPeriod);
log.Info("YERP_005 sql:" + sqls);
DataTable vbsdt = ICSHelper.ExecuteTable(conStr, sqls);
log.Info("sql结果数量"+vbsdt.Rows.Count);
if (vbsdt.Rows.Count > 0)
{
StringBuilder soapRequestData = new StringBuilder();
soapRequestData.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:yerp=\"http://skch.com/YERP_005_TAX_VAT\">");
soapRequestData.Append("<soapenv:Header/>");
soapRequestData.Append("<soapenv:Body>");
soapRequestData.Append("<yerp:YERP_005_OA1_MT>");
//循环数据
foreach (DataRow itemRow in vbsdt.Rows)
{
//原循环部分 begin
soapRequestData.Append("<TAX_SURTAX>");
soapRequestData.Append(itemRow["SBJ_CD"] != null ? "<SBJ_CD>" + itemRow["SBJ_CD"].ToString() + "</SBJ_CD>" : "<SBJ_CD>" + "</SBJ_CD>");
soapRequestData.Append(itemRow["SBJ_NM"] != null ? "<SBJ_NM>" + itemRow["SBJ_NM"].ToString() + "</SBJ_NM>" : "<SBJ_NM>" + "</SBJ_NM>");
soapRequestData.Append(itemRow["YYYY"] != null ? "<YYYY>" + itemRow["YYYY"].ToString() + "</YYYY>" : "<YYYY>" + "</YYYY>");
soapRequestData.Append(itemRow["MM"] != null ? "<MM>" + itemRow["MM"].ToString() + "</MM>" : "<MM>" + "</MM>");
soapRequestData.Append(itemRow["DD"] != null ? "<DD>" + itemRow["DD"].ToString() + "</DD>" : "<DD>" + "</DD>");
soapRequestData.Append(itemRow["SPTDOC"] != null ? "<SPTDOC>" + itemRow["SPTDOC"].ToString() + "</SPTDOC>" : "<SPTDOC>" + "</SPTDOC>");
soapRequestData.Append(itemRow["SMR"] != null ? "<SMR>" + itemRow["SMR"].ToString() + "</SMR>" : "<SMR>" + "</SMR>");
soapRequestData.Append(itemRow["ODR_ACC"] != null ? "<ODR_ACC>" + itemRow["ODR_ACC"].ToString() + "</ODR_ACC>" : "<ODR_ACC>" + "</ODR_ACC>");
soapRequestData.Append(itemRow["DBTO_AMT"] != null ? "<DBTO_AMT>" + itemRow["DBTO_AMT"].ToString() + "</DBTO_AMT>" : "<DBTO_AMT>" + "</DBTO_AMT>");
soapRequestData.Append(itemRow["CRDTO_AMT"] != null ? "<CRDTO_AMT>" + itemRow["CRDTO_AMT"].ToString() + "</CRDTO_AMT>" : "<CRDTO_AMT>" + "</CRDTO_AMT>");
soapRequestData.Append(itemRow["DBTO_CRDTO_DVSN"] != null ? "<DBTO_CRDTO_DVSN>" + itemRow["DBTO_CRDTO_DVSN"].ToString() + "</DBTO_CRDTO_DVSN>" : "<DBTO_CRDTO_DVSN>" + "</DBTO_CRDTO_DVSN>");
soapRequestData.Append(itemRow["BLNC"] != null ? "<BLNC>" + itemRow["BLNC"].ToString() + "</BLNC>" : "<BLNC>" + "</BLNC>");
soapRequestData.Append("</TAX_SURTAX>");
//原循环部分 end
}
soapRequestData.Append("</yerp:YERP_005_OA1_MT>");
soapRequestData.Append("</soapenv:Body>");
soapRequestData.Append("</soapenv:Envelope>");
string postData = soapRequestData.ToString();
log.Info("YERP_005 xmlRequest:" + postData);
string statusCode;
string resultContent;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
RestOpHelper rop = new RestOpHelper();
rop.Clientp12path = @"C:\Users\Administrator\Desktop\yonyou-cert\wildcard.pfx";
rop.Clientp12PassWord = "Yonyou2024!";
rop.Url = @"https://yerp-proxy-sap-dev.skchemicals.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=YERP_D&receiverParty=&receiverService=&interface=YERP_005_OA1_SI&interfaceNamespace=http://skch.com/YERP_005_TAX_VAT";
rop.RequestSAP(rop.Url, 10000, postData, "IF_YERP", "Xtxc355860", out statusCode, out resultContent);
log.Info("YERP_005 statusCode:" + statusCode + "\r\n" + "resultContent:" + resultContent);
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public static Configuration GetConfig()
{
Assembly assembly = Assembly.GetCallingAssembly();
string path = string.Format("{0}.config", assembly.Location);
if (!File.Exists(path))
{
throw new FileNotFoundException(path + "路径下的文件未找到!");
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception)
{
throw;
}
}
}
}

244
ICSSoft.FromERP/SK/YERP_007.cs

@ -0,0 +1,244 @@
using Quartz;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ICSSoft.FromERP
{
/// <summary>
/// 财务费用 明细账
/// </summary>
public class YERP_007 : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
try
{
lock (key)
{
log.Info("开始……………………………………………………………………");
Execute();
log.Info("结束……………………………………………………………………");
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public async void Execute()
{
try
{
Configuration config = GetConfig();
var Dates = DateTime.Now;
string conStr = ICSHelper.GetConnectString();
//<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yerp="http://skch.com/YERP_007_TAX_FOR_FIN_EXPENSE">
// <soapenv:Header/>
// <soapenv:Body>
// <yerp:YERP_007_OA1_MT>
// <!--1 or more repetitions:-->
// <FIN_CST_SPTDOC>
// <YYYY>?</YYYY>
// <MM>1</MM>
// <DD>?</DD>
// <SPTDOC>?</SPTDOC>
// <SMR>?</SMR>
// <DBTO>?</DBTO>
// <CRDTO>?</CRDTO>
// <DBTO_CRDTO_DVSN>?</DBTO_CRDTO_DVSN>
// <BLNC>?</BLNC>
// <!--Optional:-->
// <DBTO_CMSN>?</DBTO_CMSN>
// <!--Optional:-->
// <DBTO_IENS>?</DBTO_IENS>
// <!--Optional:-->
// <DBTO_XCH_PC>?</DBTO_XCH_PC>
// </FIN_CST_SPTDOC>
// </yerp:YERP_007_OA1_MT>
// </soapenv:Body>
//</soapenv:Envelope>
// 过滤时间为上个月
var beginPeriod = "2023-06-01";// Dates.AddMonths(-1).AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-06-01";
var endPeriod = "2023-07-01";// Dates.AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-07-01";
string sqls = @"
begin transaction
exec GL_Ledger @tblname=N'cwfymxz',@KmCode=N'6603',@beginPeriod=202404,@endPeriod=202406,@bVouch=0,@bequal=1,@sum=0,@bMJ=1,@swhere=N'',@sAuth=N'',@ReportID=N'GL13',@ReportType=0,@iUnite=0
--select * from tempdb..cwfymxz
select autoid,iyear YYYY,imonth MM,iday DD,csign_no SPTDOC,cDigest SMR,cDCode ODR_ACC,md DBTO_AMT,mc CRDTO_AMT,tmpme tmpme
into #test
from tempdb..cwfymxz a
select SPTDOC,YYYY,MM,DD,sum(DBTO_AMT) DBTO_AMT,sum(CRDTO_AMT) CRDTO_AMT,sum(isnull(tmpme,0)) tmpme
into #test2
from #test a
where SPTDOC is not null and DD IS NOT NULL
group by SPTDOC,YYYY,MM,DD
order by SPTDOC
update a set DBTO_AMT=b.DBTO_AMT,a.CRDTO_AMT=b.CRDTO_AMT,a.tmpme=b.tmpme from #test a
left join #test2 b on a.SPTDOC=b.SPTDOC and a.MM=b.MM and a.DD=b.DD
where a.sptdoc is not null
select autoid,sptdoc,YYYY,MM,DD into #test3 from #test where sptdoc is not null
select s.* into #test4 from (select *,ROW_NUMBER() over (partition by sptdoc+CAST(MM AS VARCHAR(255))+CAST(DD AS VARCHAR(255)) order by autoid) as group_idx from #test3)s where s.group_idx>1
delete a from #test a
left join #test4 b on a.autoid=b.autoid
where b.autoid is not null
select *,(case when (Select Sum(-tmpme) from #test where autoid<=a.autoid) =0 then '平' else (case when (Select Sum(-tmpme) from #test where autoid<=a.autoid) >0 then '贷' else '借' end) end) INVT,
(case when (Select Sum(-tmpme) from #test where autoid<=a.autoid)<0 then -(Select Sum(-tmpme) from #test where autoid<=a.autoid) else (Select Sum(-tmpme) from #test where autoid<=a.autoid) end) BLNC
into #test5
from #test a
select cCode SBJ_CD,ccode_name SBJ_NM,imonth,iday,csign_no SPTDOC,sum(md) DBTO_AMT
into #test6
from tempdb..cwfymxz a
where csign_no is not null
group by ccode_name,csign_no,cCode,imonth,iday
order by csign_no,imonth,iday
select DISTINCT sptdoc,imonth,iday into #test7 from #test6
select *,ROW_NUMBER() over (order by sptdoc,imonth,iday) rownumber into #test8 from #test7
declare @k int
set @k=1
while @k<=(select COUNT(*) from #test7)
begin
declare @i int
set @i=0
while @i<1
begin
insert into #test6 (SBJ_CD,SBJ_NM,imonth,iday,SPTDOC,DBTO_AMT)
select a.ccode,a.ccode_name,(select imonth from #test8 where rownumber=@k),(select iday from #test8 where rownumber=@k),(select SPTDOC from #test8 where rownumber=@k),0
from code a left join #test6 b on b.SPTDOC=(select SPTDOC from #test8 where rownumber=@k) and imonth=(select imonth from #test8 where rownumber=@k) and iday=(select iday from #test8 where rownumber=@k) and SBJ_NM=ccode_name
where a.iYear=2024 and ( bclose=0 and ( ccode like N'6603%' or ccode_name like N'6603%' or ccode_engl like N'6603%' or chelp like N'6603%' )) and ccode <>'6603' and len(ccode)=6
and b.SPTDOC is null
set @i=@i +1
end
set @k=@k +1
end
SELECT
SPTDOC,imonth,iday,
SUM(CASE WHEN SBJ_CD = '660301' THEN DBTO_AMT ELSE 0 END) DBTO_CMSN,
SUM(CASE WHEN SBJ_CD = '660302' THEN DBTO_AMT ELSE 0 END) DBTO_IENS,
SUM(CASE WHEN SBJ_CD = '660303' THEN DBTO_AMT ELSE 0 END) DBTO_XCH_PC
into #test9
FROM
#test6
GROUP BY
SPTDOC,imonth,iday
select YYYY,MM,DD,A.SPTDOC,SMR,DBTO_AMT DBTO,CRDTO_AMT CRDTO,INVT,BLNC,DBTO_CMSN,DBTO_IENS,DBTO_XCH_PC
from #test5 a left join #test9 b on a.SPTDOC=b.SPTDOC and a.MM=b.imonth and a.DD=b.iday order by MM
rollback transaction";//and dInvCreateDatetime > '{0}' and dInvCreateDatetime < '{1}'
sqls = string.Format(sqls, beginPeriod, endPeriod);
log.Info("YERP_007 sql:" + sqls);
DataTable vbsdt = ICSHelper.ExecuteTable(conStr, sqls);
log.Info("YERP_007 sql结果数量" + vbsdt.Rows.Count);
if (vbsdt.Rows.Count > 0)
{
StringBuilder soapRequestData = new StringBuilder();
soapRequestData.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:yerp=\"http://skch.com/YERP_007_TAX_FOR_FIN_EXPENSE\">");
soapRequestData.Append("<soapenv:Header/>");
soapRequestData.Append("<soapenv:Body>");
soapRequestData.Append("<yerp:YERP_007_OA1_MT>");
//循环数据 DBTO_CRDTO_DVSN
foreach (DataRow itemRow in vbsdt.Rows)
{
soapRequestData.Append("<!--Zero or more repetitions: -->");
soapRequestData.Append("<FIN_CST_SPTDOC>");
soapRequestData.Append(itemRow["YYYY"] != null ? "<YYYY>" + itemRow["YYYY"].ToString() + "</YYYY>" : "<YYYY>" + "</YYYY>");
soapRequestData.Append(itemRow["MM"] != null ? "<MM>" + itemRow["MM"].ToString() + "</MM>" : "<MM>" + "</MM>");
soapRequestData.Append(itemRow["DD"] != null ? "<DD>" + itemRow["DD"].ToString() + "</DD>" : "<DD>" + "</DD>");
soapRequestData.Append(itemRow["SPTDOC"] != null ? "<SPTDOC>" + itemRow["SPTDOC"].ToString() + "</SPTDOC>" : "<SPTDOC>" + "</SPTDOC>");
soapRequestData.Append(itemRow["SMR"] != null ? "<SMR>" + itemRow["SMR"].ToString() + "</SMR>" : "<SMR>" + "</SMR>");
soapRequestData.Append(itemRow["DBTO"] != null ? "<DBTO>" + itemRow["DBTO"].ToString() + "</DBTO>" : "<DBTO>" + "</DBTO>");
soapRequestData.Append(itemRow["CRDTO"] != null ? "<CRDTO>" + itemRow["CRDTO"].ToString() + "</CRDTO>" : "<CRDTO>" + "</CRDTO>");
soapRequestData.Append(itemRow["DBTO_CRDTO_DVSN"] != null ? "<DBTO_CRDTO_DVSN>" + itemRow["DBTO_CRDTO_DVSN"].ToString() + "</DBTO_CRDTO_DVSN>" : "<DBTO_CRDTO_DVSN>" + "</DBTO_CRDTO_DVSN>");
soapRequestData.Append(itemRow["BLNC"] != null ? "<BLNC>" + itemRow["BLNC"].ToString() + "</BLNC>" : "<BLNC>" + "</BLNC>");
soapRequestData.Append(itemRow["DBTO_CMSN"] != null ? "<DBTO_CMSN>" + itemRow["DBTO_CMSN"].ToString() + "</DBTO_CMSN>" : "<DBTO_CMSN>" + "</DBTO_CMSN>");
soapRequestData.Append(itemRow["DBTO_IENS"] != null ? "<DBTO_IENS>" + itemRow["DBTO_IENS"].ToString() + "</DBTO_IENS>" : "<DBTO_IENS>" + "</DBTO_IENS>");
soapRequestData.Append(itemRow["DBTO_XCH_PC"] != null ? "<DBTO_XCH_PC>" + itemRow["DBTO_XCH_PC"].ToString() + "</DBTO_XCH_PC>" : "<DBTO_XCH_PC>" + "</DBTO_XCH_PC>");
soapRequestData.Append("</FIN_CST_SPTDOC>");
}
soapRequestData.Append("</yerp:YERP_007_OA1_MT>");
soapRequestData.Append("</soapenv:Body>");
soapRequestData.Append("</soapenv:Envelope>");
string postData = soapRequestData.ToString();
log.Info("YERP_007 xmlRequest:" + postData);
string statusCode;
string resultContent;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
RestOpHelper rop = new RestOpHelper();
rop.Clientp12path = @"C:\Users\Administrator\Desktop\yonyou-cert\wildcard.pfx";
rop.Clientp12PassWord = "Yonyou2024!";
rop.Url = @"https://yerp-proxy-sap-dev.skchemicals.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=YERP_D&receiverParty=&receiverService=&interface=YERP_007_OA1_SI&interfaceNamespace=http://skch.com/YERP_007_TAX_FOR_FIN_EXPENSE";
rop.RequestSAP(rop.Url, 10000, postData, "IF_YERP", "Xtxc355860", out statusCode, out resultContent);
log.Info("YERP_007 statusCode:" + statusCode + "\r\n" + "resultContent:" + resultContent);
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public static Configuration GetConfig()
{
Assembly assembly = Assembly.GetCallingAssembly();
string path = string.Format("{0}.config", assembly.Location);
if (!File.Exists(path))
{
throw new FileNotFoundException(path + "路径下的文件未找到!");
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception)
{
throw;
}
}
}
}

169
ICSSoft.FromERP/SK/YERP_008.cs

@ -0,0 +1,169 @@
using Quartz;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ICSSoft.FromERP
{
/// <summary>
/// Item Master(物料主数据)
/// </summary>
public class YERP_008 : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
try
{
lock (key)
{
log.Info("开始……………………………………………………………………");
Execute();
log.Info("结束……………………………………………………………………");
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public async void Execute()
{
try
{
Configuration config = GetConfig();
var Dates = DateTime.Now;
string conStr = ICSHelper.GetConnectString();
//<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yerp="http://skch.com/YERP_008_ITEM_INFO">
// <soapenv:Header/>
// <soapenv:Body>
// <yerp:YERP_008_OA1_MT>
// <!--Zero or more repetitions: -->
// <IF_ITEM_MST>
// <IF_STD_DATE>20240814</IF_STD_DATE>
// <ITEM_CD>201010</ITEM_CD>
// <ITEM_NM>ECOTRION H1000</ITEM_NM>
// <!--Optional:-->
// <ITEM_PACK_UOM>kg</ITEM_PACK_UOM>
// <!--Optional:-->
// <CREATE_DTTM>20230713</CREATE_DTTM>
// <!--Optional:-->
// <CREATE_BY>21436</CREATE_BY>
// <!--Optional:-->
// <ROW_CNT>1</ROW_CNT>
// </IF_ITEM_MST>
// </yerp:YERP_008_OA1_MT>
// </soapenv:Body>
// </soapenv:Envelope>
// 过滤时间为上个月
var beginPeriod = "2023-06-01";// Dates.AddMonths(-1).AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-06-01";
var endPeriod = "2023-07-01";// Dates.AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-07-01";
string sqls = @"select convert(nvarchar(10),getdate(),112) IF_STD_DATE,
cInvCode ITEM_CD,
d.cInvCName+' '+cInvName ITEM_NM,
a.cInvCCode BRND_CD,
'' GRADE_CD,
d.cInvCName BRND_NM,
cInvName GRADE_NM,
cInvStd ITEM_PACK_UOM,
(case when cInvStd is null then '0' else (CASE WHEN ISNUMERIC(left(cinvstd,3)) = 1 THEN left(cinvstd,3) ELSE (CASE WHEN ISNUMERIC(left(cinvstd,2)) = 1
THEN left(cinvstd,2) ELSE (CASE WHEN ISNUMERIC(left(cinvstd,1)) = 1 THEN left(cinvstd,1) ELSE 0 END) END) END) end) PACK_MIN_QTY,
dInvCreateDatetime CREATE_DTTM,
cCreatePerson CREATE_BY,
dModifyDate MODIFY_DTTM,
cModifyPerson MODIFY_BY,
COUNT(*) OVER (PARTITION BY getdate()) ROW_CNT
from dbo.Inventory a
left join dbo.Inventory_Sub b on a.cInvCode=b.cInvSubCode
left join dbo.ComputationUnit c on a.cComUnitCode=c.cComunitCode
left join dbo.InventoryClass d on a.cInvCCode=d.cInvCCode
WHERE 1 = 1 ";//and dInvCreateDatetime > '{0}' and dInvCreateDatetime < '{1}'
sqls = string.Format(sqls, beginPeriod, endPeriod);
log.Info("YERP_008 sql:"+sqls);
DataTable vbsdt = ICSHelper.ExecuteTable(conStr, sqls);
log.Info("YERP_008 sql结果数量" + vbsdt.Rows.Count);
if (vbsdt.Rows.Count > 0)
{
StringBuilder soapRequestData = new StringBuilder();
soapRequestData.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:yerp=\"http://skch.com/YERP_008_ITEM_INFO\">");
soapRequestData.Append("<soapenv:Header/>");
soapRequestData.Append("<soapenv:Body>");
soapRequestData.Append("<yerp:YERP_008_OA1_MT>");
//循环数据
foreach (DataRow itemRow in vbsdt.Rows)
{
soapRequestData.Append("<!--Zero or more repetitions: -->");
soapRequestData.Append("<IF_ITEM_MST>");
soapRequestData.Append(itemRow["IF_STD_DATE"] != null ? "<IF_STD_DATE>" + itemRow["IF_STD_DATE"].ToString() + "</IF_STD_DATE>" : "<IF_STD_DATE>" + "</IF_STD_DATE>");
soapRequestData.Append(itemRow["ITEM_CD"] != null ? "<ITEM_CD>" + itemRow["ITEM_CD"].ToString() + "</ITEM_CD>" : "<ITEM_CD>" + "</ITEM_CD>");
soapRequestData.Append(itemRow["ITEM_NM"] != null ? "<ITEM_NM>" + itemRow["ITEM_NM"].ToString() + "</ITEM_NM>" : "<ITEM_NM>" + "</ITEM_NM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["ITEM_PACK_UOM"] != null ? "<ITEM_PACK_UOM>" + Regex.Replace(itemRow["ITEM_PACK_UOM"].ToString(), @"[^0-9]+", "") + "</ITEM_PACK_UOM>" : "<ITEM_PACK_UOM>" + "</ITEM_PACK_UOM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["CREATE_DTTM"] != null ? "<CREATE_DTTM>" + itemRow["CREATE_DTTM"].ToString() + "</CREATE_DTTM>" : "<CREATE_DTTM>" + "</CREATE_DTTM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["CREATE_BY"] != null ? "<CREATE_BY>" + itemRow["CREATE_BY"].ToString() + "</CREATE_BY>" : "<CREATE_BY>" + "</CREATE_BY>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["ROW_CNT"] != null ? "<ROW_CNT>" + itemRow["ROW_CNT"].ToString() + "</ROW_CNT>" : "<ROW_CNT>" + "</ROW_CNT>");
soapRequestData.Append("</IF_ITEM_MST>");
}
soapRequestData.Append("</yerp:YERP_008_OA1_MT>");
soapRequestData.Append("</soapenv:Body>");
soapRequestData.Append("</soapenv:Envelope>");
string postData = soapRequestData.ToString();
log.Info("YERP_008 xmlRequest:" + postData);
string statusCode;
string resultContent;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
RestOpHelper rop = new RestOpHelper();
rop.Clientp12path = @"C:\Users\Administrator\Desktop\yonyou-cert\wildcard.pfx";
rop.Clientp12PassWord = "Yonyou2024!";
rop.Url = @"https://yerp-proxy-sap-dev.skchemicals.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=YERP_D&receiverParty=&receiverService=&interface=YERP_008_OA1_SI&interfaceNamespace=http://skch.com/YERP_008_ITEM_INFO";
rop.RequestSAP(rop.Url, 10000, postData, "IF_YERP", "Xtxc355860", out statusCode, out resultContent);
log.Info("YERP_008 statusCode:" + statusCode + "\r\n" + "resultContent:" + resultContent);
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public static Configuration GetConfig()
{
Assembly assembly = Assembly.GetCallingAssembly();
string path = string.Format("{0}.config", assembly.Location);
if (!File.Exists(path))
{
throw new FileNotFoundException(path + "路径下的文件未找到!");
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception)
{
throw;
}
}
}
}

177
ICSSoft.FromERP/SK/YERP_010_BOH.cs

@ -0,0 +1,177 @@
using Quartz;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ICSSoft.FromERP
{
/// <summary>
/// Stock information 库存信息 日
/// </summary>
public class YERP_010_BOH : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
try
{
lock (key)
{
log.Info("开始……………………………………………………………………");
Execute();
log.Info("结束……………………………………………………………………");
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public async void Execute()
{
try
{
Configuration config = GetConfig();
var Dates = DateTime.Now;
string conStr = ICSHelper.GetConnectString();
//<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yerp="http://skch.com/YERP_010_IF_STCK_HST">
// <soapenv:Header/>
// <soapenv:Body>
// <yerp:YERP_010_OA1_MT>
// <!--Zero or more repetitions:-->
// <IF_STCK_HST>
// <IF_STD_DATE>2024-07-01</IF_STD_DATE>
// <!--Optional:-->
// <STCK_STD_DATE>2024-07-01</STCK_STD_DATE>
// <!--Optional:-->
// <WRHS_CD>?</WRHS_CD>
// <ITEM_CD>?</ITEM_CD>
// <!--Optional:-->
// <PRDT_BTCH_NO>?</PRDT_BTCH_NO>
// <STCK_TYPE_CD>?</STCK_TYPE_CD>
// <!--Optional:-->
// <STCK_QTY>?</STCK_QTY>
// <!--Optional:-->
// <STCK_VALUE_CNW>?</STCK_VALUE_CNW>
// <!--Optional:-->
// <STCK_UOM>?</STCK_UOM>
// <!--Optional:-->
// <PACK_MIN_QTY>?</PACK_MIN_QTY>
// <GEN_ROW_CNT>?</GEN_ROW_CNT>
// </IF_STCK_HST>
// </yerp:YERP_010_OA1_MT>
// </soapenv:Body>
//</soapenv:Envelope>
// 过滤按天数
var beginPeriod = "2023-06-01";// Dates.AddMonths(-1).AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-06-01";
var endPeriod = "2023-07-01";// Dates.AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-07-01";
string sqls = @"
select convert(nvarchar(10),getdate(),112) IF_STD_DATE,
convert(nvarchar(10),getdate(),112) STCK_STD_DATE,
cWhCode WRHS_CD,
a.cInvCode ITEM_CD,
cBatch PRDT_BTCH_NO,
'BOH' STCK_TYPE_CD,
iQuantity STCK_QTY,
0 STCK_VALUE_CNW,
'' STCK_VALUE_UOM,
(case when cInvStd is null then null else (CASE WHEN ISNUMERIC(left(cinvstd,3)) = 1 THEN REPLACE(SUBSTRING(cinvstd, 1, CHARINDEX('/', cinvstd) - 1),left(cinvstd,3),'') ELSE (CASE WHEN ISNUMERIC(left(cinvstd,2)) = 1
THEN REPLACE(SUBSTRING(cinvstd, 1, CHARINDEX('/', cinvstd) - 1),left(cinvstd,2),'') ELSE (CASE WHEN ISNUMERIC(left(cinvstd,1)) = 1
THEN REPLACE(SUBSTRING(cinvstd, 1, CHARINDEX('/', cinvstd) - 1),left(cinvstd,1),'') ELSE '' END) END) END) end) STCK_UOM,
cInvStd PACK_MIN_QTY,
COUNT(*) OVER (PARTITION BY getdate()) GEN_ROW_CNT
from CurrentStock a
left join dbo.Inventory c on a.cInvCode=c.cInvCode
where 1 = 1 and iQuantity > 0";//and dInvCreateDatetime > '{0}' and dInvCreateDatetime < '{1}'
sqls = string.Format(sqls, beginPeriod, endPeriod);
log.Info("YERP_010 sql:" + sqls);
DataTable vbsdt = ICSHelper.ExecuteTable(conStr, sqls);
log.Info("YERP_010 sql结果数量" + vbsdt.Rows.Count);
if (vbsdt.Rows.Count > 0)
{
StringBuilder soapRequestData = new StringBuilder();
soapRequestData.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:yerp=\"http://skch.com/YERP_010_IF_STCK_HST\">");
soapRequestData.Append("<soapenv:Header/>");
soapRequestData.Append("<soapenv:Body>");
soapRequestData.Append("<yerp:YERP_010_OA1_MT>");
//循环数据 STCK_STD_DATE STCK_TYPE_CD STCK_VALUE_CNW
foreach (DataRow itemRow in vbsdt.Rows)
{
soapRequestData.Append("<!--Zero or more repetitions: -->");
soapRequestData.Append("<IF_STCK_HST>");
soapRequestData.Append(itemRow["IF_STD_DATE"] != null ? "<IF_STD_DATE>" + itemRow["IF_STD_DATE"].ToString() + "</IF_STD_DATE>" : "<IF_STD_DATE>" + "</IF_STD_DATE>");
soapRequestData.Append(itemRow["STCK_STD_DATE"] != null ? "<STCK_STD_DATE>" + itemRow["STCK_STD_DATE"].ToString() + "</STCK_STD_DATE>" : "<STCK_STD_DATE>" + "</STCK_STD_DATE>");
soapRequestData.Append(itemRow["WRHS_CD"] != null ? "<WRHS_CD>" + itemRow["WRHS_CD"].ToString() + "</WRHS_CD>" : "<WRHS_CD>" + "</WRHS_CD>");
soapRequestData.Append(itemRow["ITEM_CD"] != null ? "<ITEM_CD>" + itemRow["ITEM_CD"].ToString() + "</ITEM_CD>" : "<ITEM_CD>" + "</ITEM_CD>");
soapRequestData.Append(itemRow["PRDT_BTCH_NO"] != null ? "<PRDT_BTCH_NO>" + itemRow["PRDT_BTCH_NO"].ToString() + "</PRDT_BTCH_NO>" : "<PRDT_BTCH_NO>" + "</PRDT_BTCH_NO>");
soapRequestData.Append(itemRow["STCK_TYPE_CD"] != null ? "<STCK_TYPE_CD>" + itemRow["STCK_TYPE_CD"].ToString() + "</STCK_TYPE_CD>" : "<STCK_TYPE_CD>" + "</STCK_TYPE_CD>");
soapRequestData.Append(itemRow["STCK_QTY"] != null ? "<STCK_QTY>" + itemRow["STCK_QTY"].ToString() + "</STCK_QTY>" : "<STCK_QTY>" + "</STCK_QTY>");
soapRequestData.Append(itemRow["STCK_VALUE_CNW"] != null ? "<STCK_VALUE_CNW>" + itemRow["STCK_VALUE_CNW"].ToString() + "</STCK_VALUE_CNW>" : "<STCK_VALUE_CNW>" + "</STCK_VALUE_CNW>");
soapRequestData.Append(itemRow["STCK_UOM"] != null ? "<STCK_UOM>" + itemRow["STCK_UOM"].ToString() + "</STCK_UOM>" : "<STCK_UOM>" + "</STCK_UOM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["PACK_MIN_QTY"] != null ? "<PACK_MIN_QTY>" + Regex.Replace(itemRow["PACK_MIN_QTY"].ToString(), @"[^0-9]+", "") + "</PACK_MIN_QTY>" : "<PACK_MIN_QTY>" + "</PACK_MIN_QTY>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["GEN_ROW_CNT"] != null ? "<GEN_ROW_CNT>" + itemRow["GEN_ROW_CNT"].ToString() + "</GEN_ROW_CNT>" : "<GEN_ROW_CNT>" + "</GEN_ROW_CNT>");
soapRequestData.Append("</IF_STCK_HST>");
}
soapRequestData.Append("</yerp:YERP_010_OA1_MT>");
soapRequestData.Append("</soapenv:Body>");
soapRequestData.Append("</soapenv:Envelope>");
string postData = soapRequestData.ToString();
log.Info("YERP_010 xmlRequest:" + postData);
string statusCode;
string resultContent;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
RestOpHelper rop = new RestOpHelper();
rop.Clientp12path = @"C:\Users\Administrator\Desktop\yonyou-cert\wildcard.pfx";
rop.Clientp12PassWord = "Yonyou2024!";
rop.Url = @"https://yerp-proxy-sap-dev.skchemicals.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=YERP_D&receiverParty=&receiverService=&interface=YERP_010_OA1_SI&interfaceNamespace=http://skch.com/YERP_010_IF_STCK_HST";
rop.RequestSAP(rop.Url, 10000, postData, "IF_YERP", "Xtxc355860", out statusCode, out resultContent);
log.Info("YERP_010 statusCode:" + statusCode + "\r\n" + "resultContent:" + resultContent);
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public static Configuration GetConfig()
{
Assembly assembly = Assembly.GetCallingAssembly();
string path = string.Format("{0}.config", assembly.Location);
if (!File.Exists(path))
{
throw new FileNotFoundException(path + "路径下的文件未找到!");
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception)
{
throw;
}
}
}
}

178
ICSSoft.FromERP/SK/YERP_010_EOH.cs

@ -0,0 +1,178 @@
using Quartz;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ICSSoft.FromERP
{
/// <summary>
/// Stock information 库存信息 月
/// </summary>
public class YERP_010_EOH : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
try
{
lock (key)
{
log.Info("开始……………………………………………………………………");
Execute();
log.Info("结束……………………………………………………………………");
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public async void Execute()
{
try
{
Configuration config = GetConfig();
var Dates = DateTime.Now;
string conStr = ICSHelper.GetConnectString();
//<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yerp="http://skch.com/YERP_010_IF_STCK_HST">
// <soapenv:Header/>
// <soapenv:Body>
// <yerp:YERP_010_OA1_MT>
// <!--Zero or more repetitions:-->
// <IF_STCK_HST>
// <IF_STD_DATE>2024-07-01</IF_STD_DATE>
// <!--Optional:-->
// <STCK_STD_DATE>2024-07-01</STCK_STD_DATE>
// <!--Optional:-->
// <WRHS_CD>?</WRHS_CD>
// <ITEM_CD>?</ITEM_CD>
// <!--Optional:-->
// <PRDT_BTCH_NO>?</PRDT_BTCH_NO>
// <STCK_TYPE_CD>?</STCK_TYPE_CD>
// <!--Optional:-->
// <STCK_QTY>?</STCK_QTY>
// <!--Optional:-->
// <STCK_VALUE_CNW>?</STCK_VALUE_CNW>
// <!--Optional:-->
// <STCK_UOM>?</STCK_UOM>
// <!--Optional:-->
// <PACK_MIN_QTY>?</PACK_MIN_QTY>
// <GEN_ROW_CNT>?</GEN_ROW_CNT>
// </IF_STCK_HST>
// </yerp:YERP_010_OA1_MT>
// </soapenv:Body>
//</soapenv:Envelope>
// 过滤时间为上个月
var beginPeriod = "2023-06-01";// Dates.AddMonths(-1).AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-06-01";
var endPeriod = "2023-07-01";// Dates.AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-07-01";
string sqls = @"
select convert(nvarchar(10),getdate(),112) IF_STD_DATE,
convert(nvarchar(10),getdate(),112) STCK_STD_DATE,
cWhCode WRHS_CD,
a.cInvCode ITEM_CD,
cBatch PRDT_BTCH_NO,
'EOH' STCK_TYPE_CD,
iQuantity STCK_QTY,
0 STCK_VALUE_CNW,
'' STCK_VALUE_UOM,
(case when cInvStd is null then null else (CASE WHEN ISNUMERIC(left(cinvstd,3)) = 1 THEN REPLACE(SUBSTRING(cinvstd, 1, CHARINDEX('/', cinvstd) - 1),left(cinvstd,3),'') ELSE (CASE WHEN ISNUMERIC(left(cinvstd,2)) = 1
THEN REPLACE(SUBSTRING(cinvstd, 1, CHARINDEX('/', cinvstd) - 1),left(cinvstd,2),'') ELSE (CASE WHEN ISNUMERIC(left(cinvstd,1)) = 1
THEN REPLACE(SUBSTRING(cinvstd, 1, CHARINDEX('/', cinvstd) - 1),left(cinvstd,1),'') ELSE '' END) END) END) end) STCK_UOM,
cInvStd PACK_MIN_QTY,
COUNT(*) OVER (PARTITION BY getdate()) GEN_ROW_CNT
from CurrentStock a
left join dbo.Inventory c on a.cInvCode=c.cInvCode
where 1 = 1 and iQuantity > 0";//and dInvCreateDatetime > '{0}' and dInvCreateDatetime < '{1}'
sqls = string.Format(sqls, beginPeriod, endPeriod);
log.Info("YERP_010 sql:" + sqls);
DataTable vbsdt = ICSHelper.ExecuteTable(conStr, sqls);
log.Info("YERP_010 sql结果数量" + vbsdt.Rows.Count);
if (vbsdt.Rows.Count > 0)
{
StringBuilder soapRequestData = new StringBuilder();
soapRequestData.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:yerp=\"http://skch.com/YERP_010_IF_STCK_HST\">");
soapRequestData.Append("<soapenv:Header/>");
soapRequestData.Append("<soapenv:Body>");
soapRequestData.Append("<yerp:YERP_010_OA1_MT>");
//循环数据 STCK_STD_DATE STCK_TYPE_CD STCK_VALUE_CNW
foreach (DataRow itemRow in vbsdt.Rows)
{
soapRequestData.Append("<!--Zero or more repetitions: -->");
soapRequestData.Append("<IF_STCK_HST>");
soapRequestData.Append(itemRow["IF_STD_DATE"] != null ? "<IF_STD_DATE>" + itemRow["IF_STD_DATE"].ToString() + "</IF_STD_DATE>" : "<IF_STD_DATE>" + "</IF_STD_DATE>");
soapRequestData.Append(itemRow["STCK_STD_DATE"] != null ? "<STCK_STD_DATE>" + itemRow["STCK_STD_DATE"].ToString() + "</STCK_STD_DATE>" : "<STCK_STD_DATE>" + "</STCK_STD_DATE>");
soapRequestData.Append(itemRow["WRHS_CD"] != null ? "<WRHS_CD>" + itemRow["WRHS_CD"].ToString() + "</WRHS_CD>" : "<WRHS_CD>" + "</WRHS_CD>");
soapRequestData.Append(itemRow["ITEM_CD"] != null ? "<ITEM_CD>" + itemRow["ITEM_CD"].ToString() + "</ITEM_CD>" : "<ITEM_CD>" + "</ITEM_CD>");
soapRequestData.Append(itemRow["PRDT_BTCH_NO"] != null ? "<PRDT_BTCH_NO>" + itemRow["PRDT_BTCH_NO"].ToString() + "</PRDT_BTCH_NO>" : "<PRDT_BTCH_NO>" + "</PRDT_BTCH_NO>");
soapRequestData.Append(itemRow["STCK_TYPE_CD"] != null ? "<STCK_TYPE_CD>" + itemRow["STCK_TYPE_CD"].ToString() + "</STCK_TYPE_CD>" : "<STCK_TYPE_CD>" + "</STCK_TYPE_CD>");
soapRequestData.Append(itemRow["STCK_QTY"] != null ? "<STCK_QTY>" + itemRow["STCK_QTY"].ToString() + "</STCK_QTY>" : "<STCK_QTY>" + "</STCK_QTY>");
soapRequestData.Append(itemRow["STCK_VALUE_CNW"] != null ? "<STCK_VALUE_CNW>" + itemRow["STCK_VALUE_CNW"].ToString() + "</STCK_VALUE_CNW>" : "<STCK_VALUE_CNW>" + "</STCK_VALUE_CNW>");
soapRequestData.Append(itemRow["STCK_UOM"] != null ? "<STCK_UOM>" + itemRow["STCK_UOM"].ToString() + "</STCK_UOM>" : "<STCK_UOM>" + "</STCK_UOM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["PACK_MIN_QTY"] != null ? "<PACK_MIN_QTY>" + Regex.Replace(itemRow["PACK_MIN_QTY"].ToString(), @"[^0-9]+", "") + "</PACK_MIN_QTY>" : "<PACK_MIN_QTY>" + "</PACK_MIN_QTY>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["GEN_ROW_CNT"] != null ? "<GEN_ROW_CNT>" + itemRow["GEN_ROW_CNT"].ToString() + "</GEN_ROW_CNT>" : "<GEN_ROW_CNT>" + "</GEN_ROW_CNT>");
soapRequestData.Append("</IF_STCK_HST>");
}
soapRequestData.Append("</yerp:YERP_010_OA1_MT>");
soapRequestData.Append("</soapenv:Body>");
soapRequestData.Append("</soapenv:Envelope>");
string postData = soapRequestData.ToString();
log.Info("YERP_010 xmlRequest:" + postData);
string statusCode;
string resultContent;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
RestOpHelper rop = new RestOpHelper();
rop.Clientp12path = @"C:\Users\Administrator\Desktop\yonyou-cert\wildcard.pfx";
rop.Clientp12PassWord = "Yonyou2024!";
rop.Url = @"https://yerp-proxy-sap-dev.skchemicals.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=YERP_D&receiverParty=&receiverService=&interface=YERP_010_OA1_SI&interfaceNamespace=http://skch.com/YERP_010_IF_STCK_HST";
rop.RequestSAP(rop.Url, 10000, postData, "IF_YERP", "Xtxc355860", out statusCode, out resultContent);
log.Info("YERP_010 statusCode:" + statusCode + "\r\n" + "resultContent:" + resultContent);
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public static Configuration GetConfig()
{
Assembly assembly = Assembly.GetCallingAssembly();
string path = string.Format("{0}.config", assembly.Location);
if (!File.Exists(path))
{
throw new FileNotFoundException(path + "路径下的文件未找到!");
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception)
{
throw;
}
}
}
}

146
ICSSoft.FromERP/SK/YERP_011.cs

@ -0,0 +1,146 @@
using Quartz;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace ICSSoft.FromERP
{
/// <summary>
/// Account master(交易商主数据)
/// </summary>
public class YERP_011 : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
try
{
lock (key)
{
log.Info("开始……………………………………………………………………");
Execute();
log.Info("结束……………………………………………………………………");
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public async void Execute()
{
try
{
Configuration config = GetConfig();
var Dates = DateTime.Now;
string conStr = ICSHelper.GetConnectString();
//<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yerp="http://skch.com/YERP_011_IF_ACNT_INFO">
// <soapenv:Header/>
// <soapenv:Body>
// <yerp:YERP_011_OA1_MT>
// <!--Zero or more repetitions:-->
// <IF_ACNT_MST>
// <IF_STD_DATE>2</IF_STD_DATE>
// <ACNT_CD>2</ACNT_CD>
// <ACNT_NM>2</ACNT_NM>
// <!--Optional:-->
// <MODIFY_DTTM>2</MODIFY_DTTM>
// <GEN_ROW_CNT>2</GEN_ROW_CNT>
// </IF_ACNT_MST>
// </yerp:YERP_011_OA1_MT>
// </soapenv:Body>
//</soapenv:Envelope>
// 过滤时间为上个月
var beginPeriod = "2000-06-01";// Dates.AddMonths(-1).AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-06-01";
var endPeriod = "2090-06-01";// Dates.AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-07-01";
string sqls = @"select convert(nvarchar(10),getdate(),112) IF_STD_DATE,
cCusCode ACNT_CD,
cCusName ACNT_NM,
(case when dEndDate is null then '否' else '是' end) DEL_YN,
dCusCreateDatetime CREATE_DTTM,
cCreatePerson CREATE_BY,
dModifyDate MODIFY_DTTM,
cModifyPerson MODIFY_BY,
COUNT(*) OVER (PARTITION BY getdate()) GEN_ROW_CNT
from dbo.Customer a WHERE 1 = 1 and dCusCreateDatetime >= '{0}' and dCusCreateDatetime < '{1}'";
sqls = string.Format(sqls, beginPeriod, endPeriod);
log.Info("YERP_011 sql:"+sqls);
DataTable vbsdt = ICSHelper.ExecuteTable(conStr, sqls);
log.Info("YERP_011 sql结果数量" + vbsdt.Rows.Count);
if (vbsdt.Rows.Count > 0)
{
StringBuilder soapRequestData = new StringBuilder();
soapRequestData.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:yerp=\"http://skch.com/YERP_011_IF_ACNT_INFO\">");
soapRequestData.Append("<soapenv:Header/>");
soapRequestData.Append("<soapenv:Body>");
soapRequestData.Append("<yerp:YERP_011_OA1_MT>");
//循环数据
foreach (DataRow itemRow in vbsdt.Rows)
{
soapRequestData.Append("<!--Zero or more repetitions: -->");
soapRequestData.Append("<IF_ACNT_MST>");
soapRequestData.Append(itemRow["IF_STD_DATE"] != null ? "<IF_STD_DATE>" + itemRow["IF_STD_DATE"].ToString() + "</IF_STD_DATE>" : "<IF_STD_DATE>" + "</IF_STD_DATE>");
soapRequestData.Append(itemRow["ACNT_CD"] != null ? "<ACNT_CD>" + itemRow["ACNT_CD"].ToString() + "</ACNT_CD>" : "<ACNT_CD>" + "</ACNT_CD>");
soapRequestData.Append(itemRow["ACNT_NM"] != null ? "<ACNT_NM>" + itemRow["ACNT_NM"].ToString() + "</ACNT_NM>" : "<ACNT_NM>" + "</ACNT_NM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["MODIFY_DTTM"] != null ? "<MODIFY_DTTM>" + itemRow["MODIFY_DTTM"].ToString() + "</MODIFY_DTTM>" : "<MODIFY_DTTM>" + "</MODIFY_DTTM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["GEN_ROW_CNT"] != null ? "<GEN_ROW_CNT>" + itemRow["GEN_ROW_CNT"].ToString() + "</GEN_ROW_CNT>" : "<GEN_ROW_CNT>" + "</GEN_ROW_CNT>");
soapRequestData.Append("</IF_ACNT_MST>");
}
soapRequestData.Append("</yerp:YERP_011_OA1_MT>");
soapRequestData.Append("</soapenv:Body>");
soapRequestData.Append("</soapenv:Envelope>");
string postData = soapRequestData.ToString();
log.Info("YERP_011 xmlRequest:" + postData);
string statusCode;
string resultContent;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
RestOpHelper rop = new RestOpHelper();
rop.Clientp12path = @"C:\Users\Administrator\Desktop\yonyou-cert\wildcard.pfx";
rop.Clientp12PassWord = "Yonyou2024!";
rop.Url = @"https://yerp-proxy-sap-dev.skchemicals.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=YERP_D&receiverParty=&receiverService=&interface=YERP_011_OA1_SI&interfaceNamespace=http://skch.com/YERP_011_IF_ACNT_INFO";
rop.RequestSAP(rop.Url, 10000, postData, "IF_YERP", "Xtxc355860", out statusCode, out resultContent);
log.Info("YERP_011 statusCode:" + statusCode + "\r\n" + "resultContent:" + resultContent);
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public static Configuration GetConfig()
{
Assembly assembly = Assembly.GetCallingAssembly();
string path = string.Format("{0}.config", assembly.Location);
if (!File.Exists(path))
{
throw new FileNotFoundException(path + "路径下的文件未找到!");
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception)
{
throw;
}
}
}
}

178
ICSSoft.FromERP/SK/YERP_012.cs

@ -0,0 +1,178 @@
using Quartz;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ICSSoft.FromERP
{
/// <summary>
/// Sales performance(销售业绩)
/// </summary>
public class YERP_012 : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
try
{
lock (key)
{
log.Info("开始……………………………………………………………………");
Execute();
log.Info("结束……………………………………………………………………");
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public async void Execute()
{
try
{
Configuration config = GetConfig();
var Dates = DateTime.Now;
string conStr = ICSHelper.GetConnectString();
//<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yerp="http://skch.com/YERP_012_IF_SALES_ACT">
// <soapenv:Header/>
// <soapenv:Body>
// <yerp:YERP_012_OA1_MT>
// <!--Zero or more repetitions:-->
// <IF_ACT_SALES>
// <IF_STD_DATE>?</IF_STD_DATE>
// <INVOICE_DATE>?</INVOICE_DATE>
// <ITEM_CD>2</ITEM_CD>
// <ITEM_NM>3</ITEM_NM>
// <SKU_PAYMT_QTY>3</SKU_PAYMT_QTY>
// <SKU_PAYMT_QTY_UOM>4</SKU_PAYMT_QTY_UOM>
// <PAYMT_PRICE>5</PAYMT_PRICE>
// <SALES_SITE_CD>5</SALES_SITE_CD>
// <SALES_SITE_NM>5</SALES_SITE_NM>
// <!--Optional:-->
// <CREATE_BY>?</CREATE_BY>
// <GEN_ROW_CNT>?</GEN_ROW_CNT>
// </IF_ACT_SALES>
// </yerp:YERP_012_OA1_MT>
// </soapenv:Body>
//</soapenv:Envelope>
// 过滤时间为上个月
var beginPeriod = "2023-06-01";// Dates.AddMonths(-1).AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-06-01";
var endPeriod = "2023-07-01";// Dates.AddDays(-Dates.Day + 1).ToString("yyyy-MM-dd");//"2023-07-01";
string sqls = @"select
convert(nvarchar(10),getdate(),112) IF_STD_DATE,
convert(nvarchar(10),a.dDate,111) INVOICE_DATE,
dDate ACNTNG_DATE,
b.cInvCode ITEM_CD,
c.cInvName ITEM_NM,
iQuantity SKU_PAYMT_QTY,
d.cComUnitName SKU_PAYMT_QTY_UOM,
a.cCusCode SALES_SITE_CD,
e.cCusName SALES_SITE_NM,
dcreatesystime CREATE_DTTM,
b.iNatSum PAYMT_PRICE,
cMaker CREATE_BY,
dmodifysystime MODIFY_DTTM,
cmodifier MODIFY_BY,
COUNT(*) OVER (PARTITION BY getdate()) GEN_ROW_CNT
from dbo.SO_SOMain a left join dbo.SO_SODetails b on a.ID=b.ID
left join dbo.Inventory c on b.cInvCode=c.cInvCode
left join dbo.ComputationUnit d on c.cComUnitCode=d.cComunitCode
left join dbo.Customer e on a.cCusCode=e.cCusCode
WHERE 1 = 1 and dcreatesystime > '{0}' and dcreatesystime < '{1}'";//
sqls = string.Format(sqls, beginPeriod, endPeriod);
log.Info("YERP_012 sql:" + sqls);
DataTable vbsdt = ICSHelper.ExecuteTable(conStr, sqls);
log.Info("YERP_012 sql结果数量" + vbsdt.Rows.Count);
if (vbsdt.Rows.Count > 0)
{
StringBuilder soapRequestData = new StringBuilder();
soapRequestData.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:yerp=\"http://skch.com/YERP_012_IF_SALES_ACT\">");
soapRequestData.Append("<soapenv:Header/>");
soapRequestData.Append("<soapenv:Body>");
soapRequestData.Append("<yerp:YERP_012_OA1_MT>");
//循环数据 PAYMT_PRICE INVOICE_DATE GEN_ROW_CNT
foreach (DataRow itemRow in vbsdt.Rows)
{
soapRequestData.Append("<!--Zero or more repetitions: -->");
soapRequestData.Append("<IF_ACT_SALES>");
soapRequestData.Append(itemRow["IF_STD_DATE"] != null ? "<IF_STD_DATE>" + itemRow["IF_STD_DATE"].ToString() + "</IF_STD_DATE>" : "<IF_STD_DATE>" + "</IF_STD_DATE>");
soapRequestData.Append(itemRow["INVOICE_DATE"] != null ? "<INVOICE_DATE>" + itemRow["INVOICE_DATE"].ToString() + "</INVOICE_DATE>" : "<INVOICE_DATE>" + "</INVOICE_DATE>");
soapRequestData.Append(itemRow["ITEM_CD"] != null ? "<ITEM_CD>" + itemRow["ITEM_CD"].ToString() + "</ITEM_CD>" : "<ITEM_CD>" + "</ITEM_CD>");
soapRequestData.Append(itemRow["ITEM_NM"] != null ? "<ITEM_NM>" + itemRow["ITEM_NM"].ToString() + "</ITEM_NM>" : "<ITEM_NM>" + "</ITEM_NM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["SKU_PAYMT_QTY"] != null ? "<SKU_PAYMT_QTY>" + itemRow["SKU_PAYMT_QTY"].ToString() + "</SKU_PAYMT_QTY>" : "<SKU_PAYMT_QTY>" + "</SKU_PAYMT_QTY>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["SKU_PAYMT_QTY_UOM"] != null ? "<SKU_PAYMT_QTY_UOM>" + itemRow["SKU_PAYMT_QTY_UOM"].ToString() + "</SKU_PAYMT_QTY_UOM>" : "<SKU_PAYMT_QTY_UOM>" + "</SKU_PAYMT_QTY_UOM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["SALES_SITE_CD"] != null ? "<SALES_SITE_CD>" + itemRow["SALES_SITE_CD"].ToString() + "</SALES_SITE_CD>" : "<SALES_SITE_CD>" + "</SALES_SITE_CD>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["SALES_SITE_NM"] != null ? "<SALES_SITE_NM>" + itemRow["SALES_SITE_NM"].ToString() + "</SALES_SITE_NM>" : "<SALES_SITE_NM>" + "</SALES_SITE_NM>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["PAYMT_PRICE"] != null ? "<PAYMT_PRICE>" + itemRow["PAYMT_PRICE"].ToString() + "</PAYMT_PRICE>" : "<PAYMT_PRICE>" + "</PAYMT_PRICE>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["CREATE_BY"] != null ? "<CREATE_BY>" + itemRow["CREATE_BY"].ToString() + "</CREATE_BY>" : "<CREATE_BY>" + "</CREATE_BY>");
soapRequestData.Append("<!--Optional:-->");
soapRequestData.Append(itemRow["GEN_ROW_CNT"] != null ? "<GEN_ROW_CNT>" + itemRow["GEN_ROW_CNT"].ToString() + "</GEN_ROW_CNT>" : "<GEN_ROW_CNT>" + "</GEN_ROW_CNT>");
soapRequestData.Append("</IF_ACT_SALES>");
}
soapRequestData.Append("</yerp:YERP_012_OA1_MT>");
soapRequestData.Append("</soapenv:Body>");
soapRequestData.Append("</soapenv:Envelope>");
string postData = soapRequestData.ToString();
log.Info("YERP_012 xmlRequest:" + postData);
string statusCode;
string resultContent;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
RestOpHelper rop = new RestOpHelper();
rop.Clientp12path = @"C:\Users\Administrator\Desktop\yonyou-cert\wildcard.pfx";
rop.Clientp12PassWord = "Yonyou2024!";
rop.Url = @"https://yerp-proxy-sap-dev.skchemicals.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=YERP_D&receiverParty=&receiverService=&interface=YERP_012_OA1_SI&interfaceNamespace=http://skch.com/YERP_012_IF_SALES_ACT";
rop.RequestSAP(rop.Url, 10000, postData, "IF_YERP", "Xtxc355860", out statusCode, out resultContent);
log.Info("YERP_012 statusCode:" + statusCode + "\r\n" + "resultContent:" + resultContent);
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
public static Configuration GetConfig()
{
Assembly assembly = Assembly.GetCallingAssembly();
string path = string.Format("{0}.config", assembly.Location);
if (!File.Exists(path))
{
throw new FileNotFoundException(path + "路径下的文件未找到!");
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception)
{
throw;
}
}
}
}

111
ICSSoft.FromERP/XmlAPIHelper.cs

@ -0,0 +1,111 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace ICSSoft.FromERP
{
public static class XmlAPIHelper
{
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static string GetERPUrl()
{
return System.Configuration.ConfigurationManager.AppSettings["ERPUrl"];
}
public static string RequestXML(string url, string xmlData)
{
log.Debug(url);
string statusCode = "400";
string resultContent = "";
try
{
log.Debug(xmlData);
byte[] bytes = Encoding.UTF8.GetBytes(xmlData);
////Basic Auth
//byte[] byteUser = Encoding.Default.GetBytes(userName + ":" + password);
//string Authorization = Convert.ToBase64String(byteUser);
WebRequest request = HttpWebRequest.Create(url);
//避免远程连接证书无效问题
ServicePointManager.ServerCertificateValidationCallback = (s, certificate, chain, errs) => true;
request.Method = "POST";
request.Timeout = 300000;
request.ContentType = "text/xml;charset=UTF-8";
request.ContentLength = bytes.Length;
//request.Headers.Add("Authorization", "Basic " + Authorization);
//根据soapui中的SOAPAction 进行赋值
request.Headers.Add("SOAPAction", "\"\"");
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
statusCode = response.StatusCode.ToString("d");
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);
resultContent = sr.ReadToEnd();
sr.Dispose();
responseStream.Close();
//response.Dispose();
log.Debug(resultContent);
}
catch (Exception ex)
{
log.Error(ex.ToString());
statusCode = "400";
resultContent = ex.Message;
//throw ex;
}
return resultContent;
}
public static string GetData(string Operation, XElement document)
{
string result = string.Empty;
try
{
XNamespace soapenvNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
XNamespace tipNamespace = "http://www.dsc.com.tw/tiptop/TIPTOPServiceGateWay";
XElement root = new XElement(soapenvNamespace + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", soapenvNamespace),
new XAttribute(XNamespace.Xmlns + "tip", tipNamespace),
new XElement(soapenvNamespace + "Header"),
new XElement(soapenvNamespace + "Body",
new XElement(tipNamespace + Operation + "Request",
new XElement(tipNamespace + "request",
new XElement("Request",
new XElement("Access",
new XElement("Authentication", new XAttribute("user", "kc"), new XAttribute("password", "kckckc258")),
new XElement("Connection", new XAttribute("application", "ERP"), new XAttribute("source", "10.0.0.196")),
new XElement("Organization", new XAttribute("name", "KC47")),
new XElement("Locale", new XAttribute("language", "zh_cn"))
),
new XElement("RequestContent",
new XElement("Parameter"),
document
)
)
)
)
)
);
result = root.ToString().Replace("<tip:request>\r\n <Request>", "<tip:request><![CDATA[<Request>")
.Replace("</Request>\r\n </tip:request>", "</Request>]]></tip:request>");
}
catch (Exception ex)
{
log.Error(ex.ToString());
throw ex;
}
return result;
}
}
}
Loading…
Cancel
Save