Browse Source

增加昆船WMS定时同步

fubin 2 years ago
parent
commit
585df1e275

+ 12 - 5
wwwroot/App_Code/ReworkHttp.cs

@@ -1,4 +1,5 @@
-using System.Net;
+using System;
+using System.Net;
 using System.Threading;
 
 /// <summary>
@@ -14,9 +15,15 @@ public class ReworkHttp
         //iis会回收这个定时任务,这边在回收的时候触发一个请求,10秒后来再次唤醒该服务
         Thread.Sleep(10000);
 
-        WebRequest myWebRequest = WebRequest.Create("http://localhost:9600/");
-        WebResponse myWebResponse = myWebRequest.GetResponse();
-        myWebResponse.GetResponseStream();
-        myWebResponse.Close();
+        try
+        {
+            WebRequest myWebRequest = WebRequest.Create("http://localhost:9600/");
+            WebResponse myWebResponse = myWebRequest.GetResponse();
+            myWebResponse.GetResponseStream();
+            myWebResponse.Close();
+        }
+        catch (Exception)
+        {
+        }
     }
 }

+ 645 - 0
wwwroot/App_Code/SyncKunChuan.cs

@@ -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
+}

+ 29 - 6
wwwroot/Global.asax

@@ -46,19 +46,20 @@
     /// <param name="e"></param>
     void tr_Timer(object sender, EventArgs e)
     {
+        DateTime now = System.DateTime.Now;
+
         // 中台任务
-        zhongtai_task();
+        zhongtai_task(now);
+
+        // 昆船WMS任务
+        kunchuan_task(now);
     }
 
     /// <summary>
     /// 中台任务
     /// </summary>
-    void zhongtai_task()
+    void zhongtai_task(DateTime now)
     {
-        DateTime now = System.DateTime.Now;
-        string currTime = now.ToString("HH:mm");
-        //Logger.Debug("当前时间:" + currTime + ",分钟:" + now.Minute);
-
         if (now.Minute == 5 || now.Minute == 15 || now.Minute == 25 || now.Minute == 35 || now.Minute == 45 || now.Minute == 55)
         {
             Logger.Debug("自动同步中台:定时触发开始");
@@ -67,6 +68,7 @@
         }
 
         // 如果现在是00点10分,把昨天剩余的全都同步过去
+        string currTime = now.ToString("HH:mm");
         if ("00:10".Equals(currTime))
         {
             Logger.Debug("自动同步中台_剩余条码:定时触发开始");
@@ -75,6 +77,27 @@
         }
     }
 
+    /// <summary>
+    /// 昆船WMS任务
+    /// </summary>
+    void kunchuan_task(DateTime now)
+    {
+        if (now.Minute == 8 || now.Minute == 18 || now.Minute == 28 || now.Minute == 38 || now.Minute == 48 || now.Minute == 58)
+        {
+            Logger.Debug("自动同步昆船WMS:定时触发开始");
+            string msg = SyncKunChuan.SyncFinishedProduct(now.Date, false);
+            Logger.Debug("自动同步昆船WMS:定时触发结束,结果:\n" + msg);
+        }
+
+        // 如果现在是00点10分,把昨天剩余的全都同步过去
+        string currTime = now.ToString("HH:mm");
+        if ("00:12".Equals(currTime))
+        {
+            Logger.Debug("自动同步昆船WMS_剩余条码:定时触发开始");
+            string msg = SyncKunChuan.SyncFinishedProduct(now.Date.AddDays(-1), true);
+            Logger.Debug("自动同步昆船WMS_剩余条码:定时触发结束,结果:\n" + msg);
+        }
+    }
 
     void Application_End(object sender, EventArgs e)
     {

+ 1 - 0
wwwroot/Web.config

@@ -13,6 +13,7 @@
 		<!--MES服务器地址-->
 		<add key="MesServer" value="http://172.18.32.32:5678"/>
 		
+		<!--定时器启动标识-->
 		<add key="TimerLoadFlag" value="0"/>
 	</appSettings>
 	<system.web>

+ 50 - 0
wwwroot/api/KunChuan/ashxSyncKunChuan.ashx

@@ -0,0 +1,50 @@
+<%@ WebHandler Language="C#" Class="ashxSyncKunChuan" %>
+
+using System;
+using System.Web;
+using System.IO;
+using System.Text;
+using System.Data;
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+using Newtonsoft.Json.Linq;
+using System.Web.SessionState;
+using Curtain.Extension.ExObjectConvert;
+
+/// <summary>
+/// 昆船WMS接口同步
+/// </summary>
+public class ashxSyncKunChuan : IHttpHandler, IReadOnlySessionState
+{
+
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        DateTime syncDate = new DateTime(2023, 3, 2);
+
+        string jsonPara = JsonPost.Parameter();
+
+        if (!string.IsNullOrEmpty(jsonPara))
+        {
+            JObject json = JObject.Parse(jsonPara);
+            DateTime.TryParse(json["SyncDate"].ToStringEx(), out syncDate);
+        }
+
+        string msg = string.Empty;
+        //context.Response.Write(DateTime.Now + ":调用开始\n");
+        msg = SyncKunChuan.SyncFinishedProduct(syncDate, false);
+        //context.Response.Write(DateTime.Now + ":调用结束\n");
+
+        context.Response.Write(new JsonResult() { success = true, status = JsonStatus.success, message = msg }.ToJson());
+    }
+
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+
+}

+ 0 - 0
wwwroot/api/ZhongTai/ashxOrderMatnr.ashx → wwwroot/api/OrderMatnr/ashxOrderMatnr.ashx


+ 1 - 2
wwwroot/api/ZhongTai/ashxSyncZhongTai.ashx

@@ -12,8 +12,7 @@ using System.Web.SessionState;
 using Curtain.Extension.ExObjectConvert;
 
 /// <summary>
-/// apiid=31014
-/// SAP:物料bom同步接口
+/// 中台接口同步
 /// </summary>
 public class ashxSyncZhongTai : IHttpHandler, IReadOnlySessionState
 {