using log4net; using Microsoft.Extensions.Caching.Memory; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web.Http; using UFIDA.U8.Framework.Api.ControlObject.Common; using UFIDA.U8.Framework.Api.ControlObject.Entity; using UFIDA.U8.Framework.Api.ControlObject.Json; using UFIDA.U8.Framework.Api.ControlObject.U8M; using UFIDA.U8.Framework.Api.ControlObject.U8M.MO; using UFIDA.U8.Framework.Api.Unit; namespace UFIDA.U8.Framework.Api.Controllers.U8 { /// /// 生产订单 /// public class MOController : ApiController { /// /// 日志组件 /// private readonly ILog _logInfo = LogManager.GetLogger("logInfo"); private static readonly MemoryCache _cache = new MemoryCache(new MemoryCacheOptions { ExpirationScanFrequency = TimeSpan.FromMinutes(10) }); /// /// 查询特定单据部分 /// /// 系统号 /// 单据类型编码 /// 查询条件 /// 查询所属区域 H:表头,B:表体, L:列表 /// /// [HttpPost] [Route("api/U8/MO/{cCardNum}/Load")] [Route("api/U8/MO/{cCardNum}/Load/{cCardPostion}")] public async Task> Load(string cAccId, string cCardNum, [FromBody] Dictionary input, string cCardPostion = "H") { var workId = SnowFlakeSingle.Instance.NextId(); try { _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:查询,对接账套:{cAccId},条件:{input.ToJson()}"); if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin)) { _logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建"); baseLogin = new BaseLogin(); var param = await CommUnit.GetLoginParamter(cAccId); if (param == null) { throw new Exception("未能加载指定系统号的登录信息"); } baseLogin.Init(param, false); _cache.Clear(); _cache.Set($"U8_{cAccId}", baseLogin); } var vouchers = CommonHelper.GetVouchers(baseLogin.Connection, cCardNum); if (vouchers == null) { throw new Exception("未能获取到单据配置信息"); } var db = new SqlSugarClient(new ConnectionConfig() { DbType = DbType.SqlServer, ConfigId = cAccId, ConnectionString = baseLogin.UFDataConnstringForNet, IsAutoCloseConnection = true, MoreSettings = new ConnMoreSettings() { IsWithNoLockQuery = true } }); var cBTQName = vouchers.cBTTblName; var cBWQName = vouchers.cBWTblName; var cExtQName = "mom_morder"; var cBTTblExtName = $"{vouchers.cBTTblName}_extradefine"; var cBWTblExtName = $"{vouchers.cBWTblName}_extradefine"; var voucherIdFieldName = vouchers.voucherIdFieldName; var vouchersIdFieldName = ""; var bExtHead = false; var bExtBody = false; var colList = new Dictionary(); var colListHead = new Dictionary(); var colListBody = new Dictionary(); var cols = db.DbMaintenance.GetColumnInfosByTableName(cBTQName); if (cols != null && cols.Count > 0) { foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) { if (cCardPostion == "H" || cCardPostion == "L") colList.Add(col.DbColumnName.ToLower(), $"{cBTQName}.[{col.DbColumnName}]"); colListHead.Add(col.DbColumnName.ToLower(), $"{cBTQName}.[{col.DbColumnName}]"); } } if (db.DbMaintenance.IsAnyTable($"{cBTTblExtName}")) { bExtHead = true; var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblExtName}"); if (extcols != null && extcols.Count > 0) { foreach (var col in extcols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) { if (cCardPostion == "H" || cCardPostion == "L") colList.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); colListHead.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); } } } cols = db.DbMaintenance.GetColumnInfosByTableName(cBWQName); if (cols != null && cols.Count > 0) { foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) { if (cCardPostion == "B" || cCardPostion == "L") colList.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); colListBody.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); } } if (db.DbMaintenance.IsAnyTable(cBWTblExtName)) { bExtBody = true; var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblExtName}"); if (extcols != null && extcols.Count > 0) { foreach (var col in extcols) { if (colListBody.ContainsKey(col.DbColumnName.ToLower())) { vouchersIdFieldName = col.DbColumnName.ToLower(); } else { if ((cCardPostion == "B" || cCardPostion == "L") && !colList.ContainsKey(col.DbColumnName.ToLower()) && !string.IsNullOrWhiteSpace(col.DbColumnName)) colList.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); if (!colListBody.ContainsKey(col.DbColumnName.ToLower()) && !string.IsNullOrWhiteSpace(col.DbColumnName)) { colListBody.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); } } } } } if (cCardNum == "MO21") { cols = db.DbMaintenance.GetColumnInfosByTableName(cExtQName); if (cols != null && cols.Count > 0) { if (string.IsNullOrWhiteSpace(vouchersIdFieldName)) { vouchersIdFieldName = "modid"; } foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) { if (!colList.ContainsKey(col.DbColumnName.ToLower())) { if ((cCardPostion == "B" || cCardPostion == "L") && !string.IsNullOrWhiteSpace(col.DbColumnName)) colList.Add(col.DbColumnName.ToLower(), $"{cExtQName}.[{col.DbColumnName}]"); } if (!colListBody.ContainsKey(col.DbColumnName.ToLower()) && !string.IsNullOrWhiteSpace(col.DbColumnName)) { colListBody.Add(col.DbColumnName.ToLower(), $"{cExtQName}.[{col.DbColumnName}]"); } } } } var cDefWhere = vouchers.cDefWhere; var query = db.Queryable().AS(cBTQName, cBTQName); if (bExtHead) { query.AddJoinInfo(cBTTblExtName, cBTTblExtName, $"{cBTQName}.[{voucherIdFieldName}]={cBTTblExtName}.[{voucherIdFieldName}]"); } query.AddJoinInfo(cBWQName, cBWQName, $"{cBTQName}.[{voucherIdFieldName}]={cBWQName}.[{voucherIdFieldName}]"); if (cCardNum == "MO21") { query.AddJoinInfo(cExtQName, cExtQName, $"[{cBWQName}].[{vouchersIdFieldName}]=[{cExtQName}].[{vouchersIdFieldName}]"); } if (bExtBody) { query.AddJoinInfo(cBWTblExtName, cBWTblExtName, $"{cBWQName}.[{vouchersIdFieldName}]={cBWTblExtName}.[{vouchersIdFieldName}]"); } if (input != null) { var conModels = new List(); foreach (var o in input) { if (o.Key == "dModifyDate") { if (colListHead.Any(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase))) { var col = colListHead.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.GreaterThanOrEqual, FieldValue = $"{o.Value}" }); } if (colListBody.Any(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase))) { var col = colListBody.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.GreaterThanOrEqual, FieldValue = $"{o.Value}" }); } } else if (o.Key == "dModifyDate__2") { if (colListHead.Any(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase))) { var col = colListHead.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.LessThanOrEqual, FieldValue = $"{o.Value}" }); } if (colListBody.Any(a => string.Equals(a.Key, "dnveriRelsTimefytime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase))) { var col = colListBody.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.LessThanOrEqual, FieldValue = $"{o.Value}" }); } } else if ($"{o.Value}".EndsWith("%") || $"{o.Value}".StartsWith("%")) { if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.Like, FieldValue = $"{o.Value}" }); } if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.Like, FieldValue = $"{o.Value}" }); } } else if (o.Key.EndsWith("__2")) { if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { var col = colListHead.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.LessThanOrEqual, FieldValue = $"{o.Value}" }); } if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { var col = colListBody.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.LessThanOrEqual, FieldValue = $"{o.Value}" }); } } else if (input.ContainsKey($"{o.Key}__2")) { if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.GreaterThanOrEqual, FieldValue = $"{o.Value}" }); } if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = $"{col.Value}", ConditionalType = ConditionalType.GreaterThanOrEqual, FieldValue = $"{o.Value}" }); } } else if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = col.Value, ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); } else if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); conModels.Add(new ConditionalModel { FieldName = col.Value, ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); } } query.Where(conModels); } query.Where(cDefWhere); var selector = colList.Select(col => new SelectModel { FieldName = $"{col.Value}", AsName = col.Key }).ToList(); query.Select(selector).Distinct(); _logInfo.Debug(query.ToSqlString()); return new BaseResult() { bSuccess = true, message = "查询成功", result = await query.ToListAsync() }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } [HttpPost] [Route("api/U8/MO/Save/{cCardNum}")] public async Task> Save(string cAccId, string cCardNum, [FromBody] Dictionary input, bool bVerify = false) { var workId = SnowFlakeSingle.Instance.NextId(); try { if (cCardNum == "MO39") { return await MO39_Save(cAccId, input, bVerify); } throw new Exception($"当前接口未实现"); } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 保存补料申请单 /// /// /// /// /// [HttpPost] [Route("api/U8/MO/MO39/Save")] public async Task> MO39_Save(string cAccId, [FromBody] Dictionary input, bool bVerify = false) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { try { var userToken = Request.Headers.GetValues("userToken").First(); if (!string.IsNullOrWhiteSpace(userToken)) { return await MO39_SaveToekn(input, bVerify); } } catch (Exception ex) { _logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}"); } _logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/MO/{cCardNum}/Save,单据类型编码:{cCardNum},报文数据:{input.ToJson()}"); if (cCardNum != "MO39") throw new Exception("当前接口不支持此类型的单据"); var baseLogin = new BaseLogin(); var param = await CommUnit.GetLoginParamter(cAccId); if (param == null) { throw new Exception("未能加载指定系统号的登录信息"); } baseLogin.Init(param); var bo = new ReplenishApply(); BaseResult res; if (input.ContainsKey("bBatch") && Convert.ToBoolean(input["bBatch"])) { var inputs = input["inputs"] as List> ?? $"{input["inputs"]}".ToObject>>(); _logInfo.Debug($"作业Id:{workId}-----开始保存(批量)"); //res = bo.Save(baseLogin, cCardNum, inputs); res = new BaseResult() { bSuccess = false, message = "当前接口未实现当前方法" }; _logInfo.Debug($"作业Id:{workId}-----结束保存(批量)"); } else { _logInfo.Debug($"作业Id:{workId}-----开始保存"); res = bo.Save(baseLogin, cCardNum, input, bVerify); _logInfo.Debug($"作业Id:{workId}-----结束保存"); } baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 保存补料申请单 /// /// /// /// /// [HttpPost] [Route("api/U8/MO/MO39/Save/Token")] public async Task> MO39_SaveToekn([FromBody] Dictionary input, bool bVerify = false) { var cCardNum = "MO39"; try { var userToken = Request.Headers.GetValues("userToken").First(); _logInfo.Debug($"当前接口:api/U8/MO/{cCardNum}/Save/{userToken},参数:{input.ToJson()}"); var output = CommUnit.GetDecrypt(userToken).ToObject(); var token = CommUnit.GetDecrypt(output.userToken); var db = CommUnit.GetDbClient(); var workId = SnowFlakeSingle.Instance.NextId(); _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{output.cAccId},数据:{input.ToJson()}"); var baseLogin = new BaseLogin(); baseLogin.Init(output, false); _logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息"); var bo = new ReplenishApply(); BaseResult res; if (input.ContainsKey("bBatch") && Convert.ToBoolean(input["bBatch"])) { var inputs = input["inputs"] as List> ?? $"{input["inputs"]}".ToObject>>(); _logInfo.Debug($"作业Id:{workId}-----开始保存(批量)"); //res = bo.Save(baseLogin, cCardNum, inputs); res = new BaseResult() { bSuccess = false, message = "当前接口未实现当前方法" }; _logInfo.Debug($"作业Id:{workId}-----结束保存(批量)"); } else { _logInfo.Debug($"作业Id:{workId}-----开始保存"); res = bo.Save(baseLogin, cCardNum, input, bVerify); _logInfo.Debug($"作业Id:{workId}-----结束保存"); } baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 审核补料申请单(ID) /// /// /// /// [HttpGet] [Route("api/U8/MO/MO39/Verify/ID")] public async Task> MO39_Verify(string cAccId, int voucherId) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { try { var userToken = Request.Headers.GetValues("userToken").First(); if (!string.IsNullOrWhiteSpace(userToken)) { return await MO39_VerifyToekn(voucherId); } } catch (Exception ex) { _logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}"); } _logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/MO/{cCardNum}/Verify/ID,单据类型编码:{cCardNum},单据ID:{voucherId}"); if (cCardNum != "MO39") throw new Exception("当前接口不支持此类型的单据"); var baseLogin = new BaseLogin(); var param = await CommUnit.GetLoginParamter(cAccId); if (param == null) { throw new Exception("未能加载指定系统号的登录信息"); } baseLogin.Init(param); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始审核"); var res = bo.Verify(baseLogin, voucherId); _logInfo.Debug($"作业Id:{workId}-----结束审核"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 审核补料申请单(ID) /// /// /// [HttpGet] [Route("api/U8/MO/MO39/Verify/ID/Token")] public async Task> MO39_VerifyToekn(int voucherId) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { var userToken = Request.Headers.GetValues("userToken").First(); _logInfo.Debug($"当前接口:api/U8/MO/{cCardNum}/Verify/ID/{userToken},单据ID:{voucherId}"); var output = CommUnit.GetDecrypt(userToken).ToObject(); var token = CommUnit.GetDecrypt(output.userToken); var db = CommUnit.GetDbClient(); _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{output.cAccId},单据ID:{voucherId}"); var baseLogin = new BaseLogin(); baseLogin.Init(output, false); _logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息"); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始审核"); var res = bo.Verify(baseLogin, voucherId); _logInfo.Debug($"作业Id:{workId}-----结束审核"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 弃审补料申请单(ID) /// /// /// /// [HttpGet] [Route("api/U8/MO/MO39/UnVerify/ID")] public async Task> MO39_UnVerify(string cAccId, int voucherId) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { try { var userToken = Request.Headers.GetValues("userToken").First(); if (!string.IsNullOrWhiteSpace(userToken)) { return await MO39_UnVerifyToekn(voucherId); } } catch (Exception ex) { _logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}"); } _logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/MO/{cCardNum}/UnVerify/ID,单据类型编码:{cCardNum},单据ID:{voucherId}"); if (cCardNum != "MO39") throw new Exception("当前接口不支持此类型的单据"); var baseLogin = new BaseLogin(); var param = await CommUnit.GetLoginParamter(cAccId); if (param == null) { throw new Exception("未能加载指定系统号的登录信息"); } baseLogin.Init(param); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始弃审"); var res = bo.UnVerify(baseLogin, voucherId); _logInfo.Debug($"作业Id:{workId}-----结束弃审"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 弃审补料申请单(ID) /// /// /// [HttpGet] [Route("api/U8/MO/MO39/UnVerify/ID/Token")] public async Task> MO39_UnVerifyToekn(int voucherId) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { var userToken = Request.Headers.GetValues("userToken").First(); _logInfo.Debug($"当前接口:api/U8/MO/{cCardNum}/UnVerify/ID/{userToken},单据ID:{voucherId}"); var output = CommUnit.GetDecrypt(userToken).ToObject(); var token = CommUnit.GetDecrypt(output.userToken); var db = CommUnit.GetDbClient(); _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{output.cAccId},单据ID:{voucherId}"); var baseLogin = new BaseLogin(); baseLogin.Init(output, false); _logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息"); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始弃审"); var res = bo.UnVerify(baseLogin, voucherId); _logInfo.Debug($"作业Id:{workId}-----结束弃审"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 删除补料申请单(ID) /// /// /// /// [HttpGet] [Route("api/U8/MO/MO39/Delete/ID")] public async Task> MO39_Delete(string cAccId, long voucherId) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { try { var userToken = Request.Headers.GetValues("userToken").First(); if (!string.IsNullOrWhiteSpace(userToken)) { return await MO39_DeleteToekn(voucherId); } } catch (Exception ex) { _logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}"); } _logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/MO/{cCardNum}/Delete/ID,单据类型编码:{cCardNum},单据ID:{voucherId}"); if (cCardNum != "MO39") throw new Exception("当前接口不支持此类型的单据"); var baseLogin = new BaseLogin(); var param = await CommUnit.GetLoginParamter(cAccId); if (param == null) { throw new Exception("未能加载指定系统号的登录信息"); } baseLogin.Init(param); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始删除"); var res = bo.Delete(baseLogin, cCardNum, voucherId); _logInfo.Debug($"作业Id:{workId}-----结束删除"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 删除补料申请单(ID) /// /// /// [HttpGet] [Route("api/U8/MO/MO39/Delete/ID/Token")] public async Task> MO39_DeleteToekn(long voucherId) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { var userToken = Request.Headers.GetValues("userToken").First(); _logInfo.Debug($"当前接口:api/U8/MO/{cCardNum}/Delete/ID/{userToken},单据ID:{voucherId}"); var output = CommUnit.GetDecrypt(userToken).ToObject(); var token = CommUnit.GetDecrypt(output.userToken); var db = CommUnit.GetDbClient(); _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{output.cAccId},单据ID:{voucherId}"); var baseLogin = new BaseLogin(); baseLogin.Init(output, false); _logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息"); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始弃审"); var res = bo.Delete(baseLogin, cCardNum, voucherId); _logInfo.Debug($"作业Id:{workId}-----结束弃审"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 审核补料申请单(单号) /// /// /// /// [HttpGet] [Route("api/U8/MO/MO39/Verify/Code")] public async Task> MO39_Verify(string cAccId, string voucherCode) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { try { var userToken = Request.Headers.GetValues("userToken").First(); if (!string.IsNullOrWhiteSpace(userToken)) { return await MO39_VerifyToekn(voucherCode); } } catch (Exception ex) { _logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}"); } _logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/MO/{cCardNum}/Verify/Code,单据类型编码:{cCardNum},单据编号:{voucherCode}"); if (cCardNum != "MO39") throw new Exception("当前接口不支持此类型的单据"); var baseLogin = new BaseLogin(); var param = await CommUnit.GetLoginParamter(cAccId); if (param == null) { throw new Exception("未能加载指定系统号的登录信息"); } baseLogin.Init(param); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始审核"); var res = bo.Verify(baseLogin, voucherCode); _logInfo.Debug($"作业Id:{workId}-----结束审核"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 审核补料申请单(单号) /// /// /// [HttpGet] [Route("api/U8/MO/MO39/Verify/Code/Token")] public async Task> MO39_VerifyToekn(string voucherCode) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { var userToken = Request.Headers.GetValues("userToken").First(); _logInfo.Debug($"当前接口:api/U8/MO/{cCardNum}/Verify/Code/{userToken},单据编号:{voucherCode}"); var output = CommUnit.GetDecrypt(userToken).ToObject(); var token = CommUnit.GetDecrypt(output.userToken); var db = CommUnit.GetDbClient(); _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{output.cAccId},单据编号:{voucherCode}"); var baseLogin = new BaseLogin(); baseLogin.Init(output, false); _logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息"); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始审核"); var res = bo.Verify(baseLogin, voucherCode); _logInfo.Debug($"作业Id:{workId}-----结束审核"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 弃审补料申请单(单号) /// /// /// /// [HttpGet] [Route("api/U8/MO/MO39/UnVerify/Code")] public async Task> MO39_UnVerify(string cAccId, string voucherCode) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { try { var userToken = Request.Headers.GetValues("userToken").First(); if (!string.IsNullOrWhiteSpace(userToken)) { return await MO39_UnVerifyToekn(voucherCode); } } catch (Exception ex) { _logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}"); } _logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/MO/{cCardNum}/UnVerify/Code,单据类型编码:{cCardNum},单据编号:{voucherCode}"); if (cCardNum != "MO39") throw new Exception("当前接口不支持此类型的单据"); var baseLogin = new BaseLogin(); var param = await CommUnit.GetLoginParamter(cAccId); if (param == null) { throw new Exception("未能加载指定系统号的登录信息"); } baseLogin.Init(param); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始弃审"); var res = bo.UnVerify(baseLogin, voucherCode); _logInfo.Debug($"作业Id:{workId}-----结束弃审"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 弃审补料申请单(单号) /// /// /// [HttpGet] [Route("api/U8/MO/MO39/UnVerify/Code/Token")] public async Task> MO39_UnVerifyToekn(string voucherCode) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { var userToken = Request.Headers.GetValues("userToken").First(); _logInfo.Debug($"当前接口:api/U8/MO/{cCardNum}/UnVerify/Code/{userToken},单据编号:{voucherCode}"); var output = CommUnit.GetDecrypt(userToken).ToObject(); var token = CommUnit.GetDecrypt(output.userToken); var db = CommUnit.GetDbClient(); _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{output.cAccId},单据编号:{voucherCode}"); var baseLogin = new BaseLogin(); baseLogin.Init(output, false); _logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息"); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始弃审"); var res = bo.UnVerify(baseLogin, voucherCode); _logInfo.Debug($"作业Id:{workId}-----结束弃审"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 删除补料申请单(单号) /// /// /// /// [HttpGet] [Route("api/U8/MO/MO39/Delete/Code")] public async Task> MO39_Delete(string cAccId, string voucherCode) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { try { var userToken = Request.Headers.GetValues("userToken").First(); if (!string.IsNullOrWhiteSpace(userToken)) { return await MO39_DeleteToekn(voucherCode); } } catch (Exception ex) { _logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}"); } _logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/MO/{cCardNum}/Delete/Code,单据类型编码:{cCardNum},单据编号:{voucherCode}"); if (cCardNum != "MO39") throw new Exception("当前接口不支持此类型的单据"); var baseLogin = new BaseLogin(); var param = await CommUnit.GetLoginParamter(cAccId); if (param == null) { throw new Exception("未能加载指定系统号的登录信息"); } baseLogin.Init(param); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始删除"); var res = bo.Delete(baseLogin, cCardNum, voucherCode); _logInfo.Debug($"作业Id:{workId}-----结束删除"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } /// /// 删除补料申请单(单号) /// /// /// [HttpGet] [Route("api/U8/MO/MO39/Delete/Code/Token")] public async Task> MO39_DeleteToekn(string voucherCode) { var workId = SnowFlakeSingle.Instance.NextId(); var cCardNum = "MO39"; try { var userToken = Request.Headers.GetValues("userToken").First(); _logInfo.Debug($"当前接口:api/U8/MO/{cCardNum}/Delete/Code/{userToken},单据编号:{voucherCode}"); var output = CommUnit.GetDecrypt(userToken).ToObject(); var token = CommUnit.GetDecrypt(output.userToken); var db = CommUnit.GetDbClient(); _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{output.cAccId},单据编号:{voucherCode}"); var baseLogin = new BaseLogin(); baseLogin.Init(output, false); _logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息"); var bo = new ReplenishApply(); _logInfo.Debug($"作业Id:{workId}-----开始弃审"); var res = bo.Delete(baseLogin, cCardNum, voucherCode); _logInfo.Debug($"作业Id:{workId}-----结束弃审"); baseLogin.ShutDown(); return res; } catch (Exception ex) { _logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex); return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } } } }