|
|
@@ -1,168 +0,0 @@
|
|
|
-<%@ 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;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-}
|