using System;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using Curtain.DataAccess;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
///
/// 同步到昆船WMS
///
public class SyncKunChuan
{
#region 固定常量
// 数据库连接字符串
public static string _connStr_ss = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.18.32.116)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=dkmes)));User Id=hgiboss;Password=dongke";
public static string _connStr_cz2 = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.22.61)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=hgcz2)));User Id=hgcz2;Password=dongke";
public static string _connStr_cz3 = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.22.61)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=hgcz3)));User Id=hgcz3;Password=dongke";
// 测试环境
//public static string _urlPush = "http://172.17.193.169:8080/com.ksec.l1101.erpif/jbaprpc/interface/unique";
// 正式环境
public static string _urlPush = "http://172.19.252.5:8080/com.ksec.l1101.erpif/jbaprpc/interface/unique";
#endregion
#region 推送方法
///
/// 同步产成品交接数据到恒洁中台
///
/// 同步日期
/// 是否推送当天剩余所有数据
///
public static string SyncFinishedProduct(DateTime syncDate, bool isPushTodayAllData)
{
string msg = string.Empty;
msg += "ss:" + SyncFinishedProduct_ss(syncDate, isPushTodayAllData);
msg += ",cz2:" + SyncFinishedProduct_cz2(syncDate, isPushTodayAllData);
msg += ",cz3:" + SyncFinishedProduct_cz3(syncDate, isPushTodayAllData);
return msg;
}
///
/// 同步产成品交接数据到恒洁中台_三水
///
/// 同步日期
/// 是否推送当天剩余所有数据
///
public static string SyncFinishedProduct_ss(DateTime syncDate, bool isPushTodayAllData)
{
int returnRows = 0;
string sql = string.Empty;
string sqlUpdate = string.Empty;
// 本次推送的数据
DataTable dtSyncFinishProduct = null;
// 返回json
JObject returnObj;
// 推送结果
string message = string.Empty;
using (IDataAccess connSS = DataAccess.CreateByString(DataBaseType.Oracle, _connStr_ss))
{
try
{
#region 获取产成品交接数据
// 是否推送当天剩余的所有数据
if (isPushTodayAllData)
{
sql = @"
SELECT FP.OUTCODE AS CODE,
FP.SAPCODE AS SKU,
NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
FP.WORKCODE AS FACTORY,
FP.ORDERCODE AS SALENUM,
LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
1 AS QTY,
FP.OUTCODE AS SUSR1,
SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
FP.YYYYMMDD AS SUSR4,
FP.BARCODE AS SUSR5,
FP.SECURITYCODE AS SUSR9,
TO_CHAR(FP.LOGID) AS SUSR20,
FP.ID
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.CREATETIME >= @DATEBEGIN@
AND FP.CREATETIME < @DATEEND@
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE ";
}
else
{
// 获取本次推送的数据(每次推送数据不超过200条)
//sql = @"
//SELECT T.*,
// ROWNUM
// FROM (SELECT FP.OUTCODE AS CODE,
// FP.SAPCODE AS SKU,
// NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
// FP.WORKCODE AS FACTORY,
// FP.ORDERCODE AS SALENUM,
// LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
// 1 AS QTY,
// FP.OUTCODE AS SUSR1,
// SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
// FP.YYYYMMDD AS SUSR4,
// FP.BARCODE AS SUSR5,
// FP.SECURITYCODE AS SUSR9,
// TO_CHAR(FP.LOGID) AS SUSR20,
// FP.ID
// FROM TSAP_HEGII_FINISHEDPRODUCT FP
// WHERE FP.ZTYPE = 'S'
// AND FP.TOKUNCHUANFLAG = '0'
// AND FP.CREATETIME >= @DATEBEGIN@
// AND FP.CREATETIME < @DATEEND@
// ORDER BY FP.SAPFLBATCHNO,
// FP.OUTCODE ) T
// WHERE ROWNUM <= 200 ";
//按照成板去推送 edit 2023-09-20 qq
sql = @"
SELECT FP.OUTCODE AS CODE,
FP.SAPCODE AS SKU,
NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
FP.WORKCODE AS FACTORY,
FP.ORDERCODE AS SALENUM,
LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
1 AS QTY,
FP.OUTCODE AS SUSR1,
SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
FP.YYYYMMDD AS SUSR4,
FP.BARCODE AS SUSR5,
FP.SECURITYCODE AS SUSR9,
TO_CHAR(FP.LOGID) AS SUSR20,
FP.ID,
ROWNUM
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.SAPFLBATCHNO IN (
SELECT DISTINCT T.SAPFLBATCHNO
FROM (SELECT FP.SAPFLBATCHNO
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.CREATETIME >= @DATEBEGIN@
AND FP.CREATETIME <= @DATEEND@
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE) T
WHERE ROWNUM <= 180
)
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE ";
}
dtSyncFinishProduct = connSS.ExecuteDatatable(sql,
new CDAParameter("DATEBEGIN", syncDate, DataType.Date),
new CDAParameter("DATEEND", syncDate.AddDays(1), DataType.Date)
);
if (dtSyncFinishProduct.Rows.Count == 0)
{
return "本时段没有要推送的数据";
}
#endregion
#region 向接口推送数据
JObject jObject = null;
JArray jArray = new JArray();
foreach (DataRow row in dtSyncFinishProduct.Rows)
{
jObject = new JObject();
jObject.Add(new JProperty("code", row["CODE"]));
jObject.Add(new JProperty("sku", row["SKU"]));
jObject.Add(new JProperty("lpnnum", row["LPNNUM"]));
jObject.Add(new JProperty("factory", row["FACTORY"]));
jObject.Add(new JProperty("saleNum", row["SALENUM"]));
jObject.Add(new JProperty("saleLine", row["SALELINE"]));
jObject.Add(new JProperty("qty", row["QTY"]));
jObject.Add(new JProperty("susr1", row["SUSR1"]));
jObject.Add(new JProperty("susr2", ""));
jObject.Add(new JProperty("susr3", row["SUSR3"]));
jObject.Add(new JProperty("susr4", row["SUSR4"]));
jObject.Add(new JProperty("susr5", row["SUSR5"]));
jObject.Add(new JProperty("susr6", ""));
jObject.Add(new JProperty("susr7", ""));
jObject.Add(new JProperty("susr8", ""));
jObject.Add(new JProperty("susr9", row["SUSR9"]));
jObject.Add(new JProperty("susr10", ""));
jObject.Add(new JProperty("susr11", ""));
jObject.Add(new JProperty("susr12", ""));
jObject.Add(new JProperty("susr13", ""));
jObject.Add(new JProperty("susr14", ""));
jObject.Add(new JProperty("susr15", ""));
jObject.Add(new JProperty("susr16", ""));
jObject.Add(new JProperty("susr17", ""));
jObject.Add(new JProperty("susr18", ""));
jObject.Add(new JProperty("susr19", ""));
jObject.Add(new JProperty("susr20", row["SUSR20"]));
jArray.Add(jObject);
}
JObject data = new JObject();
data.Add(new JProperty("data", jArray));
string jsonPara = JsonConvert.SerializeObject(data);
Curtain.Log.Logger.Info("三水_昆船同步开始:" + dtSyncFinishProduct.Rows.Count + "\n" + jsonPara);
string returnJsonStr = PostToZhongTai(_urlPush, jsonPara);
Curtain.Log.Logger.Info("三水_昆船同步结束:\n" + returnJsonStr);
try
{
returnObj = JsonConvert.DeserializeObject(returnJsonStr);
if (returnObj.ContainsKey("message"))
{
message = returnObj["message"] + "";
}
}
catch (Exception ex)
{
if (string.IsNullOrEmpty(returnJsonStr))
{
message = ex.Message;
}
else
{
message = returnJsonStr;
}
}
#endregion
#region 结果处理
char tokunchuanftime = message.Equals("请求成功") ? '1' : '0';
// 更新推送结果
string barcodes = "(" + string.Join(",", dtSyncFinishProduct.AsEnumerable().Select(d => d.Field("ID")).ToArray()) + ")";
sqlUpdate = @"
UPDATE TSAP_HEGII_FINISHEDPRODUCT
SET TOKUNCHUANFLAG = @TOKUNCHUANFLAG@,
KUNCHUANMSG = @KUNCHUANFMSG@,
TOKUNCHUANTIME = SYSDATE
WHERE ZTYPE = 'S'
AND TOKUNCHUANFLAG = '0'
AND ID IN " + barcodes;
returnRows += connSS.ExecuteNonQuery(sqlUpdate,
new CDAParameter("TOKUNCHUANFLAG", tokunchuanftime, DataType.Char),
new CDAParameter("KUNCHUANFMSG", message, DataType.NVarChar)
);
#endregion
}
catch (Exception ex)
{
message = ex.Message;
}
}
return message;
}
///
/// 同步产成品交接数据到恒洁中台_凤塘
///
/// 同步日期
/// 是否推送当天剩余所有数据
///
public static string SyncFinishedProduct_cz2(DateTime syncDate, bool isPushTodayAllData)
{
int returnRows = 0;
string sql = string.Empty;
string sqlUpdate = string.Empty;
// 本次推送的数据
DataTable dtSyncFinishProduct = null;
// 返回json
JObject returnObj;
// 推送结果
string message = string.Empty;
using (IDataAccess connCZ2 = DataAccess.CreateByString(DataBaseType.Oracle, _connStr_cz2))
{
try
{
#region 获取产成品交接数据
// 是否推送当天剩余的所有数据
if (isPushTodayAllData)
{
sql = @"
SELECT FP.OUTCODE AS CODE,
FP.SAPCODE AS SKU,
NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
FP.WORKCODE AS FACTORY,
FP.ORDERCODE AS SALENUM,
LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
1 AS QTY,
FP.OUTCODE AS SUSR1,
SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
FP.YYYYMMDD AS SUSR4,
FP.BARCODE AS SUSR5,
FP.SECURITYCODE AS SUSR9,
TO_CHAR(FP.LOGID) AS SUSR20,
FP.ID
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.CREATETIME >= @DATEBEGIN@
AND FP.CREATETIME < @DATEEND@
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE ";
}
else
{
// 获取本次推送的数据(每次推送数据不超过200条)
//sql = @"
//SELECT T.*,
// ROWNUM
// FROM (SELECT FP.OUTCODE AS CODE,
// FP.SAPCODE AS SKU,
// NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
// FP.WORKCODE AS FACTORY,
// FP.ORDERCODE AS SALENUM,
// LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
// 1 AS QTY,
// FP.OUTCODE AS SUSR1,
// SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
// FP.YYYYMMDD AS SUSR4,
// FP.BARCODE AS SUSR5,
// FP.SECURITYCODE AS SUSR9,
// TO_CHAR(FP.LOGID) AS SUSR20,
// FP.ID
// FROM TSAP_HEGII_FINISHEDPRODUCT FP
// WHERE FP.ZTYPE = 'S'
// AND FP.TOKUNCHUANFLAG = '0'
// AND FP.CREATETIME >= @DATEBEGIN@
// AND FP.CREATETIME < @DATEEND@
// ORDER BY FP.SAPFLBATCHNO,
// FP.OUTCODE ) T
// WHERE ROWNUM <= 200 ";
//按照成板去推送 edit 2023-09-20 qq
sql = @"
SELECT FP.OUTCODE AS CODE,
FP.SAPCODE AS SKU,
NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
FP.WORKCODE AS FACTORY,
FP.ORDERCODE AS SALENUM,
LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
1 AS QTY,
FP.OUTCODE AS SUSR1,
SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
FP.YYYYMMDD AS SUSR4,
FP.BARCODE AS SUSR5,
FP.SECURITYCODE AS SUSR9,
TO_CHAR(FP.LOGID) AS SUSR20,
FP.ID,
ROWNUM
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.SAPFLBATCHNO IN (
SELECT DISTINCT T.SAPFLBATCHNO
FROM (SELECT FP.SAPFLBATCHNO
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.CREATETIME >= @DATEBEGIN@
AND FP.CREATETIME <= @DATEEND@
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE) T
WHERE ROWNUM <= 180
)
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE ";
}
dtSyncFinishProduct = connCZ2.ExecuteDatatable(sql,
new CDAParameter("DATEBEGIN", syncDate, DataType.Date),
new CDAParameter("DATEEND", syncDate.AddDays(1), DataType.Date)
);
if (dtSyncFinishProduct.Rows.Count == 0)
{
return "本时段没有要推送的数据";
}
#endregion
#region 向接口推送数据
JObject jObject = null;
JArray jArray = new JArray();
foreach (DataRow row in dtSyncFinishProduct.Rows)
{
jObject = new JObject();
jObject.Add(new JProperty("code", row["CODE"]));
jObject.Add(new JProperty("sku", row["SKU"]));
jObject.Add(new JProperty("lpnnum", row["LPNNUM"]));
jObject.Add(new JProperty("factory", row["FACTORY"]));
jObject.Add(new JProperty("saleNum", row["SALENUM"]));
jObject.Add(new JProperty("saleLine", row["SALELINE"]));
jObject.Add(new JProperty("qty", row["QTY"]));
jObject.Add(new JProperty("susr1", row["SUSR1"]));
jObject.Add(new JProperty("susr2", ""));
jObject.Add(new JProperty("susr3", row["SUSR3"]));
jObject.Add(new JProperty("susr4", row["SUSR4"]));
jObject.Add(new JProperty("susr5", row["SUSR5"]));
jObject.Add(new JProperty("susr6", ""));
jObject.Add(new JProperty("susr7", ""));
jObject.Add(new JProperty("susr8", ""));
jObject.Add(new JProperty("susr9", row["SUSR9"]));
jObject.Add(new JProperty("susr10", ""));
jObject.Add(new JProperty("susr11", ""));
jObject.Add(new JProperty("susr12", ""));
jObject.Add(new JProperty("susr13", ""));
jObject.Add(new JProperty("susr14", ""));
jObject.Add(new JProperty("susr15", ""));
jObject.Add(new JProperty("susr16", ""));
jObject.Add(new JProperty("susr17", ""));
jObject.Add(new JProperty("susr18", ""));
jObject.Add(new JProperty("susr19", ""));
jObject.Add(new JProperty("susr20", row["SUSR20"]));
jArray.Add(jObject);
}
JObject data = new JObject();
data.Add(new JProperty("data", jArray));
string jsonPara = JsonConvert.SerializeObject(data);
Curtain.Log.Logger.Info("凤塘_昆船同步开始:" + dtSyncFinishProduct.Rows.Count + "\n" + jsonPara);
string returnJsonStr = PostToZhongTai(_urlPush, jsonPara);
Curtain.Log.Logger.Info("凤塘_昆船同步结束:\n" + returnJsonStr);
try
{
returnObj = JsonConvert.DeserializeObject(returnJsonStr);
if (returnObj.ContainsKey("message"))
{
message = returnObj["message"] + "";
}
}
catch (Exception ex)
{
if (string.IsNullOrEmpty(returnJsonStr))
{
message = ex.Message;
}
else
{
message = returnJsonStr;
}
}
#endregion
#region 结果处理
char tokunchuanftime = message.Equals("请求成功") ? '1' : '0';
// 更新推送结果
string barcodes = "(" + string.Join(",", dtSyncFinishProduct.AsEnumerable().Select(d => d.Field("ID")).ToArray()) + ")";
sqlUpdate = @"
UPDATE TSAP_HEGII_FINISHEDPRODUCT
SET TOKUNCHUANFLAG = @TOKUNCHUANFLAG@,
KUNCHUANMSG = @KUNCHUANFMSG@,
TOKUNCHUANTIME = SYSDATE
WHERE ZTYPE = 'S'
AND TOKUNCHUANFLAG = '0'
AND ID IN " + barcodes;
returnRows += connCZ2.ExecuteNonQuery(sqlUpdate,
new CDAParameter("TOKUNCHUANFLAG", tokunchuanftime, DataType.Char),
new CDAParameter("KUNCHUANFMSG", message, DataType.NVarChar)
);
#endregion
}
catch (Exception ex)
{
message = ex.Message;
}
}
return message;
}
///
/// 同步产成品交接数据到恒洁中台_官塘
///
/// 同步日期
/// 是否推送当天剩余所有数据
///
public static string SyncFinishedProduct_cz3(DateTime syncDate, bool isPushTodayAllData)
{
int returnRows = 0;
string sql = string.Empty;
string sqlUpdate = string.Empty;
// 本次推送的数据
DataTable dtSyncFinishProduct = null;
// 返回json
JObject returnObj;
// 推送结果
string message = string.Empty;
using (IDataAccess connCZ3 = DataAccess.CreateByString(DataBaseType.Oracle, _connStr_cz3))
{
try
{
#region 获取产成品交接数据
// 是否推送当天剩余的所有数据
if (isPushTodayAllData)
{
sql = @"
SELECT FP.OUTCODE AS CODE,
FP.SAPCODE AS SKU,
NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
FP.WORKCODE AS FACTORY,
FP.ORDERCODE AS SALENUM,
LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
1 AS QTY,
FP.OUTCODE AS SUSR1,
SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
FP.YYYYMMDD AS SUSR4,
FP.BARCODE AS SUSR5,
FP.SECURITYCODE AS SUSR9,
TO_CHAR(FP.LOGID) AS SUSR20,
FP.ID
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.CREATETIME >= @DATEBEGIN@
AND FP.CREATETIME < @DATEEND@
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE ";
}
else
{
// 获取本次推送的数据(每次推送数据不超过200条)
//sql = @"
//SELECT T.*,
// ROWNUM
// FROM (SELECT FP.OUTCODE AS CODE,
// FP.SAPCODE AS SKU,
// NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
// FP.WORKCODE AS FACTORY,
// FP.ORDERCODE AS SALENUM,
// LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
// 1 AS QTY,
// FP.OUTCODE AS SUSR1,
// SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
// FP.YYYYMMDD AS SUSR4,
// FP.BARCODE AS SUSR5,
// FP.SECURITYCODE AS SUSR9,
// TO_CHAR(FP.LOGID) AS SUSR20,
// FP.ID
// FROM TSAP_HEGII_FINISHEDPRODUCT FP
// WHERE FP.ZTYPE = 'S'
// AND FP.TOKUNCHUANFLAG = '0'
// AND FP.CREATETIME >= @DATEBEGIN@
// AND FP.CREATETIME < @DATEEND@
// ORDER BY FP.SAPFLBATCHNO,
// FP.OUTCODE ) T
// WHERE ROWNUM <= 200 ";
//按照成板去推送 edit 2023-09-20 qq
sql = @"
SELECT FP.OUTCODE AS CODE,
FP.SAPCODE AS SKU,
NVL(FP.BANMA, FP.SAPFLBATCHNO) AS LPNNUM,
FP.WORKCODE AS FACTORY,
FP.ORDERCODE AS SALENUM,
LPAD(FP.ORDERITEM, 6, '0') AS SALELINE,
1 AS QTY,
FP.OUTCODE AS SUSR1,
SUBSTR(FP.OUTCODE, -10, 10) AS SUSR3,
FP.YYYYMMDD AS SUSR4,
FP.BARCODE AS SUSR5,
FP.SECURITYCODE AS SUSR9,
TO_CHAR(FP.LOGID) AS SUSR20,
FP.ID,
ROWNUM
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.SAPFLBATCHNO IN (
SELECT DISTINCT T.SAPFLBATCHNO
FROM (SELECT FP.SAPFLBATCHNO
FROM TSAP_HEGII_FINISHEDPRODUCT FP
WHERE FP.ZTYPE = 'S'
AND FP.TOKUNCHUANFLAG = '0'
AND FP.CREATETIME >= @DATEBEGIN@
AND FP.CREATETIME <= @DATEEND@
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE) T
WHERE ROWNUM <= 180
)
ORDER BY FP.SAPFLBATCHNO,
FP.OUTCODE ";
}
dtSyncFinishProduct = connCZ3.ExecuteDatatable(sql,
new CDAParameter("DATEBEGIN", syncDate, DataType.Date),
new CDAParameter("DATEEND", syncDate.AddDays(1), DataType.Date)
);
if (dtSyncFinishProduct.Rows.Count == 0)
{
return "本时段没有要推送的数据";
}
#endregion
#region 向接口推送数据
JObject jObject = null;
JArray jArray = new JArray();
foreach (DataRow row in dtSyncFinishProduct.Rows)
{
jObject = new JObject();
jObject.Add(new JProperty("code", row["CODE"]));
jObject.Add(new JProperty("sku", row["SKU"]));
jObject.Add(new JProperty("lpnnum", row["LPNNUM"]));
jObject.Add(new JProperty("factory", row["FACTORY"]));
jObject.Add(new JProperty("saleNum", row["SALENUM"]));
jObject.Add(new JProperty("saleLine", row["SALELINE"]));
jObject.Add(new JProperty("qty", row["QTY"]));
jObject.Add(new JProperty("susr1", row["SUSR1"]));
jObject.Add(new JProperty("susr2", ""));
jObject.Add(new JProperty("susr3", row["SUSR3"]));
jObject.Add(new JProperty("susr4", row["SUSR4"]));
jObject.Add(new JProperty("susr5", row["SUSR5"]));
jObject.Add(new JProperty("susr6", ""));
jObject.Add(new JProperty("susr7", ""));
jObject.Add(new JProperty("susr8", ""));
jObject.Add(new JProperty("susr9", row["SUSR9"]));
jObject.Add(new JProperty("susr10", ""));
jObject.Add(new JProperty("susr11", ""));
jObject.Add(new JProperty("susr12", ""));
jObject.Add(new JProperty("susr13", ""));
jObject.Add(new JProperty("susr14", ""));
jObject.Add(new JProperty("susr15", ""));
jObject.Add(new JProperty("susr16", ""));
jObject.Add(new JProperty("susr17", ""));
jObject.Add(new JProperty("susr18", ""));
jObject.Add(new JProperty("susr19", ""));
jObject.Add(new JProperty("susr20", row["SUSR20"]));
jArray.Add(jObject);
}
JObject data = new JObject();
data.Add(new JProperty("data", jArray));
string jsonPara = JsonConvert.SerializeObject(data);
Curtain.Log.Logger.Info("官塘_昆船同步开始:" + dtSyncFinishProduct.Rows.Count + "\n" + jsonPara);
string returnJsonStr = PostToZhongTai(_urlPush, jsonPara);
Curtain.Log.Logger.Info("官塘_昆船同步结束:\n" + returnJsonStr);
try
{
returnObj = JsonConvert.DeserializeObject(returnJsonStr);
if (returnObj.ContainsKey("message"))
{
message = returnObj["message"] + "";
}
}
catch (Exception ex)
{
if (string.IsNullOrEmpty(returnJsonStr))
{
message = ex.Message;
}
else
{
message = returnJsonStr;
}
}
#endregion
#region 结果处理
char tokunchuanftime = message.Equals("请求成功") ? '1' : '0';
// 更新推送结果
string barcodes = "(" + string.Join(",", dtSyncFinishProduct.AsEnumerable().Select(d => d.Field("ID")).ToArray()) + ")";
sqlUpdate = @"
UPDATE TSAP_HEGII_FINISHEDPRODUCT
SET TOKUNCHUANFLAG = @TOKUNCHUANFLAG@,
KUNCHUANMSG = @KUNCHUANFMSG@,
TOKUNCHUANTIME = SYSDATE
WHERE ZTYPE = 'S'
AND TOKUNCHUANFLAG = '0'
AND ID IN " + barcodes;
returnRows += connCZ3.ExecuteNonQuery(sqlUpdate,
new CDAParameter("TOKUNCHUANFLAG", tokunchuanftime, DataType.Char),
new CDAParameter("KUNCHUANFMSG", message, DataType.NVarChar)
);
#endregion
}
catch (Exception ex)
{
message = ex.Message;
}
}
return message;
}
///
/// 推送数据
///
///
///
///
///
private static string PostToZhongTai(string url, string data)
{
try
{
//将单引号转义成双引号
data = data.Replace("'", "\"");
//创建Web访问对象
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
// 接口慢,设置30分钟超时等待
myRequest.Timeout = 1800000;
//把用户传过来的数据转成“UTF-8”的字节流
byte[] buf = Encoding.GetEncoding("UTF-8").GetBytes(data);
myRequest.Method = "POST";
myRequest.ContentLength = buf.Length;
myRequest.ContentType = "application/json;charset=UTF-8";
//myRequest.MaximumAutomaticRedirections = 1;
myRequest.AllowAutoRedirect = true;
//string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(token));
//发送请求
Stream stream = myRequest.GetRequestStream();
stream.Write(buf, 0, buf.Length);
stream.Close();
//获取接口返回值
//通过Web访问对象获取响应内容
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
reader.Close();
myResponse.Close();
return returnXml;
}
catch (Exception ex)
{
return ex.Message;
}
}
#endregion
}