using DocumentFormat.OpenXml.Presentation; using Elastic.Clients.Elasticsearch; using Furion.Logging; using Newtonsoft.Json; using System; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using WCS.Application.Entity; namespace WCS.Application; /// <summary> /// ç¤ºä¾‹å¼€æ”¾æŽ¥å£ /// </summary> [ApiDescriptionSettings("开放接å£", Name = "Demo", Order = 100)] //[Authorize(AuthenticationSchemes = SignatureAuthenticationDefaults.AuthenticationScheme)] [AllowAnonymous] public class DemoOpenApi : IDynamicApiController { private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId); private readonly UserManager _userManager; public DemoOpenApi(UserManager userManager) { _userManager = userManager; } //[HttpGet("helloWord")] //public Task<string> HelloWord() //{ // return Task.FromResult($"Hello word. {_userManager.Account}"); //} // <summary> /// WCS接å—WMS下å‘的任务(啿¡ä»»åŠ¡) /// </summary> /// <param name="models">任务信æ¯</param> /// <returns>å馈信æ¯</returns> [AllowAnonymous] public ResponseModel AddWcsTasks(List<ResponseTasksModel> modelList) { ResponseModel result = new ResponseModel(); result.StatusCode = 0; try { foreach (var models in modelList) { var res = AddWcsTask(models); if (res.StatusCode == -1) { result.StatusCode = -1; result.Msg = res.Msg; } else if (res.StatusCode == 0) { result.StatusCode = 0; result.Msg = models.TaskNo + "任务" + res.Msg; } } } catch (Exception ex) { return new ResponseModel() { StatusCode = -1, Msg = ex.Message }; } return result; } /// <summary> /// WCS接å—WMS下å‘的任务(啿¡ä»»åŠ¡) /// </summary> /// <param name="models">任务信æ¯</param> /// <returns>å馈信æ¯</returns> [AllowAnonymous] public ResponseModel AddWcsTask(ResponseTasksModel models) { ResponseModel result = new ResponseModel(); try { // 验è¯ä»»åŠ¡æ˜¯å¦å·²å˜åœ¨ var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == models.TaskNo); if (taskInfo != null) { result.StatusCode = -1; result.Msg = "任务:" + models.TaskNo + ";å·²å˜åœ¨!"; return result; } if (models.TaskType == "0" && models.TaskType == "0") { models.Order = 1; } else { models.Order = 2; } Enum type; var bale = "0"; if (models.TaskType == "0" ) { type = TaskTypeEnum.In; } else if (models.TaskType == "1") { type = TaskTypeEnum.Out; } else if (models.TaskType == "3") { type = TaskTypeEnum.In; bale = "1";//裹包 } else { type = TaskTypeEnum.Move; } //新增任务 var taskAdd = new WcsTask() { TaskNo = models.TaskNo, TaskType = (TaskTypeEnum?)type, Status = TaskStatusEnum.Wait, //IsSuccess =TaskSuccessEnum.Success, Levels = 999, Origin = "WMS", StartRoadway= models.StartRoadway, StartLocate = models.StartLocate, EndLocate = models.EndLocate, EndRoadway= models.EndRoadway, PalletNo = models.PalletNo, IsBale = bale, //LotNo =models.LotNo, //SkuNo=models.SkuNo, //SkuName=models.SkuName, //Qty=models.Qty }; _db.Insertable(taskAdd).ExecuteCommand(); return new ResponseModel() { StatusCode = 0, Msg = "æ’å…¥æˆåŠŸ" }; } catch (Exception ex) { return new ResponseModel() { StatusCode = -1, Msg = ex.Message }; } } /// <summary> /// WCS接收WMS下å‘的出入库å•任务 /// </summary> /// <param name="models"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] public ResponseModel AddOrderTask(List<ResponseOrderTaskModel> models) { ResponseModel result = new ResponseModel(); try { foreach (var item in models) { string str = JsonConvert.SerializeObject(models); Log.Information("接收WMS推é€çš„ç®±ç ä¿¡æ¯ï¼š" + str); // 验è¯ä»»åŠ¡æ˜¯å¦å·²å˜åœ¨ //var taskInfo = _db.Queryable<WcsOderTask>().First(w => w.OrderNo == item.OrderNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo); //if (taskInfo == null) //{ //var taskid = _db.Queryable<WcsOderTask>().OrderByDescending(w=>w.CreateTime).First(); //int newid = (int)taskid.Id + 1; var orderAdd = new WcsOderTask() { OrderNo = item.OrderNo, TaskNo = "", LotNo = item.LotNo, SkuNo = item.SkuNo, SkuName = item.SkuName, BoxType = item.BoxType, Qty = item.Qty, TaskType = (TaskTypeEnum)item.TaskType, CreateTime = DateTime.Now, }; _db.Insertable(orderAdd).ExecuteCommand(); //} } return new ResponseModel() { StatusCode = 0, Msg = "æ’å…¥æˆåŠŸ" }; } catch (Exception ex) { return new ResponseModel() { StatusCode = -1, Msg = ex.Message }; } } /// <summary> /// WCS接å—赋ç 系统推é€çš„ç®±ç ä¿¡æ¯ /// </summary> /// <param name="models">ç®±ç ä¿¡æ¯</param> /// <returns>å馈信æ¯</returns> [HttpPost] [AllowAnonymous] public ResponseFuMaModel AddHttpBoxInfo(FumaBoxInfoInput models) { try { string str = JsonConvert.SerializeObject(models); Log.Information("æŽ¥æ”¶èµ‹ç æŽ¨é€çš„ç®±ç ä¿¡æ¯ï¼š"+str); if (models.Origin != "赋ç ") { throw new Exception("æ¥æºæœªè¯†åˆ«"); } var num = _db.Queryable<WcsBoxInfo>().Where(m=>m.BoxNo == models.BoxNo && m.IsDelete == false).ToList(); var type = "add"; if (num.Count>0) { //WCSå˜åœ¨ç®±ç ä¿¡æ¯ï¼Œæ›´æ–°ç®±ç ä¿¡æ¯(需判æ–ç®±ç æ˜¯å¦å·²ç»„盘入库) var num2 = num.Count(m => m.Status != "0" || !string.IsNullOrWhiteSpace(m.PalletNo)); if (num2 > 0) { throw new Exception("该箱已入盘入库,ä¸å¯æ›´æ–°ä¿¡æ¯"); } type = "edit"; } if (models.DelistList.Count == 0) { throw new Exception("ç›’ç 集åˆä¸èƒ½ä¸ºç©º"); } var listBox = new List<WcsBoxInfo>(); foreach (var item in models.DelistList) { var level = "3"; if (string.IsNullOrWhiteSpace(item.BoxNo2)) { level = "2"; } if (item.DelistList2.Count == 0) { throw new Exception("支ç 集åˆä¸èƒ½ä¸ºç©º"); } //二级ç foreach (var item2 in item.DelistList2) { if (string.IsNullOrWhiteSpace(models.ProductionTime) || string.IsNullOrWhiteSpace(models.ExpirationTime)) { throw new Exception("生产日期或失效日期ä¸èƒ½ä¸ºç©º"); } DateTime proTime; DateTime expTime; var isValid = DateTime.TryParse(models.ProductionTime, out proTime); var isValid2 = DateTime.TryParse(models.ExpirationTime, out expTime); if (!isValid || !isValid2) { throw new Exception("ç”Ÿäº§æ—¥æœŸæˆ–å¤±æ•ˆæ—¥æœŸæ ¼å¼é”™è¯¯"); }; DateTime? stortime = null; if (!string.IsNullOrWhiteSpace(models.StoreTime)) { stortime = DateTime.Parse(models.StoreTime); } var boxAdd = new WcsBoxInfo() { BoxNo = models.BoxNo, //OrderNo = models.OrderNo, SkuNo = models.SkuNo, SkuName = models.SkuName, Standard = models.Standard, LotNo = models.LotNo, Qty = item2.Qty, FullQty = models.FullQty, //SupplierLot = models.SupplierLot, InsPectMark = models.InsPectMark, BitBoxMark = models.BitBoxMark, //InspectStatus = models.InspectStatus, ProductionTime = proTime, ExpirationTime = expTime, StoreTime = stortime, EndLotFlag = string.IsNullOrWhiteSpace(models.EndBatchMark) ? "0" : models.EndBatchMark, BoxNo2 = item.BoxNo2, BoxNo3 = item2.BoxNo3, QtyCount = item2.QtyCount, QtyOrd = item2.QtyOrd, Status = "0", Level = level, IsDelete = false }; listBox.Add(boxAdd); } } _db.Insertable(listBox).ExecuteCommand(); if (type == "edit") { //gen _db.Deleteable(num).ExecuteCommand(); return new ResponseFuMaModel() { Success = "0", Message = "æ›´æ–°æˆåŠŸ" }; } return new ResponseFuMaModel() { Success = "0", Message = "æ’å…¥æˆåŠŸ" }; } catch (Exception ex) { return new ResponseFuMaModel() { Success = "-1", Message = ex.Message }; } } /// <summary> /// WCS接å—赋ç 系统推é€çš„ç®±ç 移除 /// </summary> /// <param name="models">ç®±ç ä¿¡æ¯</param> /// <returns>å馈信æ¯</returns> [HttpPost] [AllowAnonymous] public ResponseFuMaModel DelgatesHttpBoxInfo(FumaBoxInfoInput models) { try { string str = JsonConvert.SerializeObject(models); Log.Information("æŽ¥æ”¶èµ‹ç æŽ¨é€çš„ç®±ç 移除:" + str); var num = _db.Queryable<WcsBoxInfo>().Where(m => m.BoxNo == models.BoxNo && m.IsDelete == false).ToList(); if (num.Count > 0) { //WCSå˜åœ¨ç®±ç ä¿¡æ¯ï¼Œæ›´æ–°ç®±ç ä¿¡æ¯(需判æ–ç®±ç æ˜¯å¦å·²ç»„盘入库) var num2 = num.Count(m => m.Status != "0" || !string.IsNullOrWhiteSpace(m.PalletNo)); if (num2 > 0) { throw new Exception("该箱已盘入库,ä¸å¯æ›´æ–°ä¿¡æ¯"); } } if (num.Count == 0) { throw new Exception("未找到该箱ç ,箱ç 移除失败ï¼"); } _db.Deleteable(num).ExecuteCommand(); return new ResponseFuMaModel() { Success = "0", Message = "ç§»é™¤ç®±ç æˆåŠŸ" }; } catch (Exception ex) { return new ResponseFuMaModel() { Success = "-1", Message = ex.Message }; } } /// <summary> /// WCS接å—赋ç 系统推é€çš„ç»“æ‰¹æ€»æ•°é‡ /// </summary> /// <param name="models">ç®±ç ä¿¡æ¯</param> /// <returns>å馈信æ¯</returns> [HttpPost] [AllowAnonymous] public ResponseFuMaModel HttpTotalNum(FumaBoxInfoInput models) { try { string str = JsonConvert.SerializeObject(models); Log.Information("æŽ¥æ”¶èµ‹ç æŽ¨é€çš„结批总数é‡ï¼š" + str); var num = _db.Queryable<WcsBoxInfo>().Where(m => m.BoxNo == models.BoxNo && m.IsDelete == false).ToList(); if (num.Count > 0) { //WCSå˜åœ¨ç®±ç ä¿¡æ¯ï¼Œæ›´æ–°ç®±ç ä¿¡æ¯(需判æ–ç®±ç æ˜¯å¦å·²ç»„盘入库) var num2 = num.Count(m => m.Status != "0" || !string.IsNullOrWhiteSpace(m.PalletNo)); if (num2 > 0) { throw new Exception("该箱已盘入库,ä¸å¯æ›´æ–°ä¿¡æ¯"); } } if (num.Count == 0) { throw new Exception("未找到该箱ç ,箱ç 移除失败ï¼"); } _db.Deleteable(num).ExecuteCommand(); return new ResponseFuMaModel() { Success = "0", Message = "ç§»é™¤ç®±ç æˆåŠŸ" }; } catch (Exception ex) { return new ResponseFuMaModel() { Success = "-1", Message = ex.Message }; } } }