using MailKit.Search; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Reflection.Metadata; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.LocationEnum; using WIDESEA_Common.OtherEnum; using WIDESEA_Common.StockEnum; using WIDESEA_Common.TaskEnum; using WIDESEA_Core; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_DTO.Inbound; using WIDESEA_DTO.Task; using WIDESEA_Model.Models; using static WIDESEA_ITaskInfoService.ITaskService; namespace WIDESEA_TaskInfoService { public partial class TaskService { /// /// 手动生成出库任务 /// /// /// public WebResponseContent ManualInterface(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try { List dtstockt = new List(); List locations = new List(); List taskdt = new List(); List dtstocktdetail = new List(); for (int i = 0; i < saveModel.DelKeys.Count; i++) { int stockid = int.Parse(saveModel.DelKeys[i].ToString()); Dt_StockInfo stockt = _stockInfoService.Repository.QueryFirst(x => x.Id == stockid); if (stockt.StockStatus != (int)StockStatusEmun.已入库) return content.Error($"出库失败,原因:当前库存状态不在库,不可进行出库"); //Dt_StockInfoDetail stocktdetail = _stockDetailService.Repository.QueryFirst(x => x.StockId == stockt.Id); stockt.StockStatus = (int)StockStatusEmun.出库锁定; Dt_LocationInfo locationinfo = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == stockt.LocationCode); if (locationinfo == null) return content.Error($"未找到托盘条码:{stockt.PalletCode},的货位编号,库存货位编号:{stockt.LocationCode}"); locationinfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); Dt_Task dt_Task = new() { PalletCode = stockt.PalletCode, TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), Roadway = locationinfo.RoadwayNo, TaskType = TaskTypeEnum.Outbound.ObjToInt(), TaskStatus = TaskOutStatusEnum.OutNew.ObjToInt(), SourceAddress = locationinfo.LocationCode, TargetAddress = "1001", CurrentAddress = locationinfo.LocationCode, NextAddress = "1001", Grade = 1, Creater = "WMS", Depth = locationinfo.Depth, CreateDate = DateTime.Now, WarehouseId = locationinfo.WarehouseId, }; dtstockt.Add(stockt); locations.Add(locationinfo); taskdt.Add(dt_Task); } WebResponseContent responses = HttpHelper.Post(ReceiveWCSTask, taskdt, "下发任务入库"); if (responses.Status) { _unitOfWorkManage.BeginTran(); if (dtstockt.Count > 0) { _stockInfoService.Repository.UpdateData(dtstockt); _locationInfoService.Repository.UpdateData(locations); BaseDal.AddData(taskdt); } _unitOfWorkManage.CommitTran(); content.OK("下发成功!!!"); return content; } else { return content.Error($"下发失败,原因:{responses.Message}"); } } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return content.Error($"出库失败,报错信息:{ex.Message}"); } } } }