| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <%@ 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;
- }
- }
- }
|