using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using WIDESEA_Core.Enums; using WIDESEA_Core; using WIDESEA_Model.Models; using WIDESEA_Core.Helper; using Microsoft.Extensions.Logging; using MailKit.Search; using System.Reflection.Metadata; using static WIDESEA_ITaskInfoService.ITaskService; using WIDESEA_Common; using WIDESEA_Core.LogHelper; using WIDESEA_DTO.Task; using WIDESEA_Common.TaskEnum; using WIDESEA_Common.StockEnum; using WIDESEA_Common.LocationEnum; namespace WIDESEA_TaskInfoService { public partial class TaskService { /// /// 仅申请任务,让WCS根据路由确定下一地址 /// /// /// /// public WebResponseContent DeviceRequestInboundTaskSimple(string stationCode, string palletCode) { try { Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode); if (task != null) { PushTasksToWCS(new List { task }); return WebResponseContent.Instance.OK($"该托盘已生成任务", _mapper.Map(task)); } if (Repository.QueryFirst(x => x.SourceAddress == stationCode && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null) { return WebResponseContent.Instance.Error($"该站点已有未执行的任务"); } //Dt_StockInfo stockInfo = _stockRepository.Db.Queryable().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First(); //if (stockInfo == null) //{ // return WebResponseContent.Instance.Error($"未找到组盘信息"); //} //var details = stockInfo.Details.FirstOrDefault(); //if (!string.IsNullOrEmpty(stockInfo.LocationCode)) //{ // return WebResponseContent.Instance.Error($"该托盘已绑定货位"); //} Dt_RoadwayInfo roadwayInfo = _roadwayInforepository.QueryFirst(x => x.InStationCode == stationCode); if (roadwayInfo == null) { return WebResponseContent.Instance.Error($"未找到刚入库站台地址"); } Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseCode == roadwayInfo.RoadwayNo); if (warehouse == null) { return WebResponseContent.Instance.Error("未找到改仓库"); } Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayInfo.RoadwayNo, warehouse.WarehouseId, "");// if (locationInfo == null) { return WebResponseContent.Instance.Error($"货位分配失败,未找到可分配货位"); } var dt_Stock = new Dt_StockInfo { PalletCode = palletCode, PalletType = 1, LocationCode = locationInfo.LocationCode, StockStatus = (int)StockStatusEmun.组盘暂存, Creater = "WMS", CreateDate = DateTime.Now, WarehouseId = warehouse.WarehouseId, }; Dt_Task newTask = new Dt_Task() { CurrentAddress = stationCode, Grade = 0, NextAddress = stationCode,//堆垛机 PalletCode = palletCode, OrderNo = "1", Roadway = "1", SourceAddress = "", TargetAddress = locationInfo.LocationCode, TaskType = TaskTypeEnum.Inbound.ObjToInt(), TaskStatus = TaskStatusEnum.New.ObjToInt(), WarehouseId = 1, //PalletType = GetPalletType(warehouse, palletCode),//GetPalletType(warehouse, palletCode) Creater = "WCS", CreateDate = DateTime.Now }; _unitOfWorkManage.BeginTran(); locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); int taskId = BaseDal.AddData(newTask); newTask.TaskId = taskId; _stockRepository.AddData(dt_Stock); //_stockRepository.UpdateData(stockInfo); _locationInfoRepository.UpdateData(locationInfo); _unitOfWorkManage.CommitTran(); WMSTaskDTO wMSTaskDTO = _mapper.Map(newTask); PushTasksToWCS(new List { newTask }); return WebResponseContent.Instance.OK(data: wMSTaskDTO); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } } } }