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