Explorar o código

增加timerLoadFlag标识,是否启用定时器

fubin %!s(int64=2) %!d(string=hai) anos
pai
achega
6a24f5b2af

+ 7 - 2
wwwroot/Global.asax

@@ -16,8 +16,13 @@
         DataAccess.DefaultDataBaseType = Curtain.DataAccess.DataBaseType.Oracle;
         DataAccess.DefaultConnectionString = connStr;
 
-        // 设置定时器
-        tr_Load();
+        string timerLoadFlag = ConfigurationManager.AppSettings["TimerLoadFlag"].ToString();
+
+        if ("1".Equals(timerLoadFlag))
+        {
+            // 设置定时器
+            tr_Load();
+        }
     }
 
     /// <summary>

+ 2 - 1
wwwroot/Web.config

@@ -12,7 +12,8 @@
 	<appSettings>
 		<!--MES服务器地址-->
 		<add key="MesServer" value="http://172.18.32.32:5678"/>
-
+		
+		<add key="TimerLoadFlag" value="0"/>
 	</appSettings>
 	<system.web>
 		<webServices>

+ 2 - 2
wwwroot/api/ZhongTai/SyncZhongTai.ashx → wwwroot/api/ZhongTai/ashxSyncZhongTai.ashx

@@ -1,4 +1,4 @@
-<%@ WebHandler Language="C#" Class="SyncZhongTai" %>
+<%@ WebHandler Language="C#" Class="ashxSyncZhongTai" %>
 
 using System;
 using System.Web;
@@ -15,7 +15,7 @@ using Curtain.Extension.ExObjectConvert;
 /// apiid=31014
 /// SAP:物料bom同步接口
 /// </summary>
-public class SyncZhongTai : IHttpHandler, IReadOnlySessionState
+public class ashxSyncZhongTai : IHttpHandler, IReadOnlySessionState
 {
 
     public void ProcessRequest(HttpContext context)

+ 168 - 0
wwwroot/api/ZhongTai/testOrderMatnr.ashx

@@ -0,0 +1,168 @@
+<%@ WebHandler Language="C#" Class="testOrderMatnr" %>
+
+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>
+/// 同步生产订单上的物料编码
+/// </summary>
+public class testOrderMatnr : IHttpHandler, IReadOnlySessionState
+{
+
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.Write(syncMatnr(context));
+    }
+
+    /// <summary>
+    /// 同步生产订单上的物料编码
+    /// </summary>
+    /// <returns>json</returns>
+    private string syncMatnr(HttpContext context)
+    {
+        // 测试
+        string _connStr_ss = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.18.32.31)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=dkmes)));User Id=dkmes;Password=dongke";
+        string Url138 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZSDFM138";  // 测试
+        string userName = "hgsapdk:Sapdk#240";                                          // 测试
+
+        // 正式
+        //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";
+        //string Url138 = "http://hgs4podev.hegii.com:8000/RESTAdapter/DKMES/ZSDFM138";       
+        //string userName = "PODKMES:Sapdk#800";                                            
+
+        string msg = string.Empty;
+        using (IDataAccess conn = DataAccess.CreateByString(DataBaseType.Oracle, _connStr_ss))
+        {
+            // 查询当前订单
+            string sql = @"
+            SELECT O.ORDERID,
+                   O.VBELN,
+                   O.POSNR
+              FROM TP_PM_ORDER O
+             WHERE INSTR(O.ORDERNO, 'HEGII') = 0
+               AND O.VBELN IS NOT NULL
+             ORDER BY O.ORDERID ";
+
+            DataTable dtOrder = conn.ExecuteDatatable(sql);
+            if (dtOrder == null || dtOrder.Rows.Count == 0)
+            {
+                return new JsonResult(JsonStatus.error) { message = "数据不完整,请检查!" }.ToJson();
+            }
+
+            string VBELN = string.Empty;
+            string POSNR = string.Empty;
+            int orderID = 0;
+            int r = 0;
+
+            string postString = string.Empty;
+            string result = string.Empty;
+            string ZTYPE = string.Empty;
+            string ZMSG = string.Empty;
+            string EV_MATNR = string.Empty;
+            string EV_WERKS = string.Empty;
+            string EV_MAKTX = string.Empty;
+            decimal EV_KWMENG = 0;
+
+            foreach (DataRow row in dtOrder.Rows)
+            {
+                VBELN = row["VBELN"].ToString();
+                POSNR = row["POSNR"].ToString();
+                int.TryParse(row["ORDERID"].ToString(), out orderID);
+
+                #region 调用SAP接口
+                if (!string.IsNullOrEmpty(VBELN) && !string.IsNullOrEmpty(POSNR))
+                {
+                    // 调用SAP接口,获取工厂号和物料号
+                    postString = "{\"IV_VBELN\":\"" + VBELN + "\",\"IV_POSNR\":\"" + POSNR.PadLeft(6, '0') + "\"}";
+                    try
+                    {
+                        result = JsonClient.PostData2(Url138, postString, "POST", userName);
+                        ZTYPE = JObject.Parse(result)["ZTYPE"].ToString();
+                        EV_MATNR = JObject.Parse(result)["EV_MATNR"].ToString();
+                        EV_WERKS = JObject.Parse(result)["EV_WERKS"].ToString();
+                        EV_MAKTX = JObject.Parse(result)["EV_MAKTX"].ToString();
+                        decimal.TryParse(JObject.Parse(result)["EV_KWMENG"].ToString(), out EV_KWMENG);
+                    }
+                    catch (Exception ex)
+                    {
+                        return new JsonResult(JsonStatus.error) { message = "ZSDFM138接口获取失败" }.ToJson();
+                    }
+
+                    if ("E".Equals("ZTYPE"))
+                    {
+                        return new JsonResult(JsonStatus.error) { message = ZMSG }.ToJson();
+                    }
+
+                    if (!"5000".Equals(EV_WERKS))
+                    {
+                        msg += orderID + ":不属于当前工厂\n";
+                        continue;
+                    }
+
+                    if (string.IsNullOrEmpty(EV_MATNR))
+                    {
+                        msg += orderID + ":订单未匹配到物料编码\n";
+                        continue;
+                    }
+                    #endregion
+
+                    #region 保存订单明细
+                    // 删除明细
+                    sql = "DELETE FROM tp_pm_orderdetail od WHERE od.orderid = @orderid@";
+                    r = conn.ExecuteNonQuery(sql,
+                        new CDAParameter("orderid", orderID, DataType.Int32)
+                    );
+
+                    // 新建明细
+                    if (!string.IsNullOrEmpty(EV_MATNR))
+                    {
+                        sql = @"
+                        INSERT INTO TP_PM_ORDERDETAIL
+                            (ORDERID,
+                             MATERIALCODE,
+                             MAKTX,
+                             KWMENG,
+                             ACCOUNTID,
+                             CREATEUSERID)
+                        VALUES
+                            (@ORDERID@,
+                             @MATERIALCODE@,
+                             @MAKTX@,
+                             @KWMENG@,
+                             @ACCOUNTID@,
+                             @CREATEUSERID@) ";
+
+                        r = conn.ExecuteNonQuery(sql,
+                             new CDAParameter("ORDERID", orderID, DataType.Int32),
+                             new CDAParameter("MATERIALCODE", EV_MATNR, DataType.VarChar),
+                             new CDAParameter("MAKTX", EV_MAKTX, DataType.NVarChar),
+                             new CDAParameter("KWMENG", EV_KWMENG, DataType.Decimal),
+                             new CDAParameter("ACCOUNTID", 1, DataType.Int32),
+                             new CDAParameter("CREATEUSERID", 1, DataType.Int32)
+                         );
+                    }
+                    #endregion
+                }
+            }
+        }
+        return new JsonResult(JsonStatus.success) { message = msg }.ToJson();
+    }
+
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+
+}