|
|
@@ -0,0 +1,645 @@
|
|
|
+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;
|
|
|
+
|
|
|
+/// <summary>
|
|
|
+/// 同步到昆船WMS
|
|
|
+/// </summary>
|
|
|
+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 推送方法
|
|
|
+ /// <summary>
|
|
|
+ /// 同步产成品交接数据到恒洁中台
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="syncDate">同步日期</param>
|
|
|
+ /// <param name="isPushTodayAllData">是否推送当天剩余所有数据</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 同步产成品交接数据到恒洁中台_三水
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="syncDate">同步日期</param>
|
|
|
+ /// <param name="isPushTodayAllData">是否推送当天剩余所有数据</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ 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,
|
|
|
+ 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,
|
|
|
+ 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 ";
|
|
|
+ }
|
|
|
+
|
|
|
+ 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", ""));
|
|
|
+ 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<JObject>(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<decimal>("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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 同步产成品交接数据到恒洁中台_凤塘
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="syncDate">同步日期</param>
|
|
|
+ /// <param name="isPushTodayAllData">是否推送当天剩余所有数据</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ 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,
|
|
|
+ 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,
|
|
|
+ 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 ";
|
|
|
+ }
|
|
|
+
|
|
|
+ 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", ""));
|
|
|
+ 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<JObject>(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<decimal>("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;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 同步产成品交接数据到恒洁中台_官塘
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="syncDate">同步日期</param>
|
|
|
+ /// <param name="isPushTodayAllData">是否推送当天剩余所有数据</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ 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,
|
|
|
+ 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,
|
|
|
+ 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 ";
|
|
|
+ }
|
|
|
+
|
|
|
+ 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", ""));
|
|
|
+ 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<JObject>(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<decimal>("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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 推送数据
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="url"></param>
|
|
|
+ /// <param name="data"></param>
|
|
|
+ /// <param name="token"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ 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
|
|
|
+}
|