using Tiger.Model; using SqlSugar; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Rhea.Common; using System.Net; using System.Linq; using Newtonsoft.Json; using Tiger.IBusiness; using Microsoft.AspNetCore.Http; using Tiger.Model.Minsun; using Org.BouncyCastle.Asn1.Tsp; using Tiger.Model.Entitys.MES.Position; using Apache.NMS.ActiveMQ.Commands; using System.Security.Cryptography; using System.Diagnostics; using Tiger.Model.Entitys.MES.U9C; using Newtonsoft.Json.Linq; using System.Security.Policy; using NetTaste; namespace Tiger.Business.MES { public partial class MES_U9C : IMES_U9C { public static string U9CAuthLoginUrl { get; set; } = Cache.SysParam["U9CAuthLoginUrl_Test", "U9CUrl"].PARAM_VALUE; // "http://172.16.80.20/U9C/webapi/OAuth2/AuthLogin?"; 测试 //public static string U9CAuthLoginUrl { get; set; } = Cache.SysParam["U9CAuthLoginUrl", "U9CUrl"].PARAM_VALUE; //正式 public static string secret = "&entcode=02&orgcode=101&clientid=mes&clientsecret=12c8ee7e9bb74ad2a6a0fb3315c8af20"; public static string RcvRptDocCreateUrl { get; set; } = Cache.SysParam["RcvRptDocCreateUrl_Test", "U9CUrl"].PARAM_VALUE; //"http://172.16.80.20/u9C/webapi/RcvRptDoc/Create"; 测试 //public static string RcvRptDocCreateUrl //{ get; set; } = Cache.SysParam["RcvRptDocCreateUrl", "U9CUrl"].PARAM_VALUE; //正式 /// /// 入库单接口 /// /// /// public async Task> RcvRptDocCreate(RcvRptDocCreateInput input) { Logger.Interface.Info($"/**\r\n *进入入库单接口....\r\n */\r\n"); //固定写法 var action = new ApiAction(); try { //先保存数据 bool IsSuccessed = true; //保存成功,调用U9C接口-测试用 //int i = 1; //List ErpProdInBths = new List(); //foreach (var item in input.RcvRptDocBases.Where(q => q.Status != "Y")) //{ // var ErpProdInBth = Biz.Db.Queryable().Where(q => q.WORK_ORDER == item.WorkOrder).First(); // item.Status = "Y"; // if (!ErpProdInBth.IsNullOrEmpty()) // { // ErpProdInBth.ORDER_NO = $"YDRKD241200006"; // ErpProdInBth.IS_HANDLED = "Y"; // ErpProdInBth.HANDLED_DATE = DateTime.Now; // ErpProdInBths.Add(ErpProdInBth); // } // foreach (var p in input.PrintJsons) // { // var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault(); // if (!d.IsNullOrEmpty()) // { // d.ORDER_NO = $"YDRKD241200006"; // d.STATUS = "Y"; // } // } // i++; //} //var _db = Biz.Db; //var _dbTran = _db.UseTran(() => //{ // _db.Updateable(ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE }).ExecuteCommand(); //}); //if (!_dbTran.IsSuccess) //{ // action.CatchExceptionWithLog(_dbTran.ErrorException, $"数据处理失败"); // Logger.Interface.Error(action.Message); // IsSuccessed = false; //} //input.ErpProdInBths = ErpProdInBths; //保存成功,调用U9C接口 if (IsSuccessed) { var u9CLoginResult = await HttpHelper.GetAsync($"{U9CAuthLoginUrl}userCode={input.userId}{secret}"); if (u9CLoginResult.Success) { var token = u9CLoginResult.Data; Logger.Interface.Info($"U9C登录token: {token}"); List ErpProdInBths = new List(); foreach (var item in input.RcvRptDocBases.Where(q => q.Status != "Y")) { List param = new() { new() { CompleteList = new(){ new CompleteList { MOKey = new MOKey { DocNo = item.WorkOrder }, Wh = new Wh { Code = item.WhCode }, DescFlexField = new DescFlexField { PrivateDescSeg1 = item.PkgQty.ToString() }, Item = new Item { Code = item.ItemCode }, CompleteQty = item.CompleteQty, OutputType = item.OutputType, StorageType = item.StorageType, DocState = item.DocState, } }, Remark = "接口生成", BusinessDate = DateTime.Now, } }; var response = await HttpHelper.PostAsync(RcvRptDocCreateUrl, JsonConvert.SerializeObject(param), new Dictionary() { { "token", token } }); var result = JsonConvert.DeserializeObject(response.Message); var ErpProdInBth = Biz.Db.Queryable().Where(q => q.WORK_ORDER == item.WorkOrder).First(); if (result != null) { if (result.Success && result.Data[0].m_isSucess) { Logger.Interface.Info($"生成入库单接口提交Json: {JsonConvert.SerializeObject(param)},返回Json: {response.Message}"); item.Status = "Y"; if (!ErpProdInBth.IsNullOrEmpty()) { ErpProdInBth.ORDER_NO = result.Data[0].m_code; ErpProdInBth.IS_HANDLED = "Y"; ErpProdInBth.HANDLED_DATE = DateTime.Now; ErpProdInBths.Add(ErpProdInBth); } foreach (var p in input.PrintJsons) { var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault(); if (!d.IsNullOrEmpty()) { d.ORDER_NO = result.Data[0].m_code; d.IS_HANDLED = "Y"; } } Logger.Interface.Info($"生成入库单成功"); } else { action.IsSuccessed = false; action.LocaleMsg = new($"{action.Message}; {result.Data[0].m_errorMsg}"); item.Status = "F"; if (!ErpProdInBth.IsNullOrEmpty()) { ErpProdInBth.REMARK = result.Data[0].m_errorMsg; ErpProdInBth.IS_HANDLED = "F"; ErpProdInBth.HANDLED_DATE = DateTime.Now; ErpProdInBths.Add(ErpProdInBth); } foreach (var p in input.PrintJsons) { var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault(); if (!d.IsNullOrEmpty()) { d.ORDER_NO = result.Data[0].m_code; d.IS_HANDLED = "F"; } } Logger.Interface.Info($"生成入库单失败:{result.Data[0].m_errorMsg}"); } } } var _db = Biz.Db; var _dbTran = _db.UseTran(() => { _db.Updateable(ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE, x.UPDATE_USER, x.UPDATE_TIME }).ExecuteCommand(); }); if (!_dbTran.IsSuccess) { action.CatchExceptionWithLog(_dbTran.ErrorException, $"数据处理失败"); Logger.Interface.Error(action.Message); IsSuccessed = false; } input.ErpProdInBths = ErpProdInBths; } } input.labels = GetLabels(input.PrintJsons); action.Data = input; } catch (System.Exception ex) { action.CatchExceptionWithLog(ex, "生成入库单异常"); } Logger.Interface.Info($"/* 入库单接口结束 */\r\n"); //固定写法 return action; } private List GetLabels(List printJsons) { List labels = new List(); int i = 1; int j = 1; foreach (var p in printJsons) { BAS_LABEL_TEMP label = Biz.Db.Queryable().Where(q => q.LABEL_CODE == "InstoreTemplate").IncludesAllFirstLayer().First(); foreach (var v in p.Items.Where(q => q.IS_HANDLED != "F" && q.IS_HANDLED != "P")) { foreach (var item in label.Variables) { if (item.VAR_NAME == "PageNum") { item.Value = $"第{i}页"; } if (item.VAR_NAME == "PageSize") { item.Value = $"共{printJsons.Count}页"; } if (item.VAR_NAME == "BusinessDate") { item.Value = DateTime.Now.ToString("yyyy.MM.dd"); } if (item.VAR_NAME == $"RcvDoc{j}") { item.Value = v.ORDER_NO; } if (item.VAR_NAME == $"SoDoc{j}") { item.Value = v.SALES_ORDER; } if (item.VAR_NAME == $"MoDoc{j}") { item.Value = v.WORK_ORDER; } if (item.VAR_NAME == $"ItemCode{j}") { item.Value = v.ITEM_CODE; } if (item.VAR_NAME == $"Description{j}") { item.Value = v.ITEM_NAME; } if (item.VAR_NAME == $"BoxQty{j}") { item.Value = v.CartonQty.ToString(); } if (item.VAR_NAME == $"InQty{j}") { item.Value = v.SCAN_QTY.ToString(); } if (item.VAR_NAME == $"RcvQrCode{j}") { item.Value = v.ORDER_NO.ToString(); } if (item.VAR_NAME == $"SapCode{j}") { item.Value = v.SapCode; } if (item.VAR_NAME == $"Seq{j}") { item.Value = j.ToString(); } } j++; } i++; labels.Add(label); } return labels; } } }