123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using JLHHJSvr.BLL;
- using JLHHJSvr.Com.Model;
- using JLHHJSvr.LJException;
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Generic;
- using LJLib.DAL.SQL;
- namespace JLHHJSvr.Helper
- {
- internal class ERPHelper : HelperBase
- {
- private JObject BuildLoginRequest()
- {
- return new JObject
- {
- { "token", GlobalVar.ERP_TOKEN },
- { "account", GlobalVar.ERP_ACCOUNT_NAME },
- { "userid", GlobalVar.ERP_ACCOUNT_USERNAME },
- { "password", GlobalVar.ERP_ACCOUNT_PASSWORD },
- { "clientType", 30 }
- };
- }
- private static readonly Dictionary<string, string> _apiResultMap = new Dictionary<string, string>()
- {
- {"GetL1Mtrldef", "mtrldefList"},
- {"GetSCWorkgroupList", "scworkgroupList"},
- {"GetL1Mtrltype", "mtrltypeList"},
- {"GetL1ConfigureCode", "resultList"},
- {"CommonDynamicSelect", "datatable"},
- };
- protected void Login()
- {
- var request = BuildLoginRequest();
- try
- {
- var result = DoExecute("Login", request);
- var token = result.GetValue("token").ToObject<string>();
- if (!string.IsNullOrEmpty(token))
- {
- GlobalVar.ERP_TOKEN = token;
- }
- }
- catch (Exception ex)
- {
- throw new LJCommonException($"ERP登录失败: {ex.Message}");
- }
- }
- public void CheckLogin()
- {
- if(string.IsNullOrEmpty(GlobalVar.ERP_TOKEN))
- {
- Login();
- }
- }
- public List<T> GetERPList<T>(string apiMethod, JObject parameters = null, int tryCnt = 0)
- {
- CheckLogin();
- try
- {
- var request = BuildRequest(parameters);
- var result = DoExecute(apiMethod, request);
- if (!_apiResultMap.TryGetValue(apiMethod, out var listKey)) throw new ArgumentException($"Unsupported API Method: {apiMethod}");
- return result[listKey]?.ToObject<List<T>>() ?? new List<T>();
- }
- catch (Exception ex) when (IsTokenExpired(ex))
- {
- if (tryCnt >= 3) throw new LJCommonException("超过最大重连次数,请检查连接!");
- Login();
- return GetERPList<T>(apiMethod, parameters, tryCnt + 1);
- }
- catch
- {
- throw;
- }
- }
- public List<T> GetERPList<T>(string apiMethod, ref int total, JObject parameters = null, int tryCnt = 0)
- {
- CheckLogin();
- try
- {
- var request = BuildRequest(parameters);
- var result = DoExecute(apiMethod, request);
- if (!_apiResultMap.TryGetValue(apiMethod, out var listKey)) throw new ArgumentException($"Unsupported API Method: {apiMethod}");
- total = ((int)result["totalcnt"]);
- return result[listKey]?.ToObject<List<T>>() ?? new List<T>();
- }
- catch (Exception ex) when (IsTokenExpired(ex))
- {
- if (tryCnt >= 3) throw new LJCommonException("超过最大重连次数,请检查连接!");
- Login();
- return GetERPList<T>(apiMethod, ref total, parameters, tryCnt + 1);
- }
- catch
- {
- throw;
- }
- }
- // 提取请求构建逻辑
- private JObject BuildRequest(JObject parameters)
- {
- var request = new JObject { ["token"] = GlobalVar.ERP_TOKEN };
- parameters = parameters ?? new JObject();
- foreach (var param in parameters)
- {
- request.Add(param.Key, param.Value);
- }
- return request;
- }
- private bool IsTokenExpired(Exception ex)
- {
- const string expiredFlag = "已与服务器失联";
- return ex.Message.Contains(expiredFlag);
- }
- /// <summary>
- /// 保存物料资料,成功后保存erp_mtrlid
- /// </summary>
- /// <param name="mtrl">核价物料资料</param>
- /// <returns>错误信息</returns>
- public string SaveMtrldef(u_mattress mtrl)
- {
- var errMsg = string.Empty;
- var l1Req = new JObject()
- {
- ["token"] = GlobalVar.ERP_TOKEN,
- ["mtrls"] = new JArray
- {
- new JObject()
- {
- ["mtrlcode"] = mtrl.erp_mtrlcode,
- ["mtrlname"] = mtrl.erp_mtrlname,
- ["mtrlmode"] = mtrl.erp_mtrlmode,
- ["mtrltypeid"] = mtrl.erp_mtrltypeid,
- ["mtrltype"] = mtrl.erp_mtrltype,
- ["unit"] = mtrl.erp_mtrlunit,
- ["mtrlengname"] = mtrl.erp_mtrlengname
- }
- },
- ["updateFields"] = "mtrlname,mtrlmode,mtrltypeid,mtrltype,unit,mtrlengname"
- };
- var l1Rslt = DoExecute("SaveMtrldef", JObject.FromObject(l1Req));
- errMsg = $"{l1Rslt.GetValue("ErrMsg")}";
- if (string.IsNullOrEmpty(errMsg))
- {
- mtrl.erp_mtrlid = (l1Rslt.GetValue("mtrlids") as JArray)[0].Value<int>();
- DbSqlHelper.Update(cmd, mtrl, "erp_mtrlid");
- }
- return errMsg;
- }
- }
- }
|