//using Furion; //using Furion.DatabaseAccessor; //using Furion.DependencyInjection; //using Furion.DynamicApiController; //using Furion.FriendlyException; //using Mapster; //using Microsoft.AspNetCore.Authorization; //using Microsoft.AspNetCore.Mvc; //using Microsoft.EntityFrameworkCore; //using Admin.NET.Core; //using Yitter.IdGenerator; //using StackExchange.Redis; //namespace Admin.NET.Application //{ // /// // /// WCS调用服务 // /// // [ApiDescriptionSettings("WCS调用服务", Name = "WareWcsToWmsService", Order = 100)] // [Route("api/[Controller]")] // public class WareWcsToWmsService : IDynamicApiController, ITransient // { // private readonly IRepository _wmsOrderRep; // private readonly IRepository _wmsOrderDetailsRep; // private readonly IRepository _wmsTaskRep; // private readonly IRepository _wmsMaterialContainerRep; // private readonly IRepository _wmsPlaceRep; // private readonly IRepository _wmsContainerPlaceRep; // private readonly IRepository _wmsMaterialStockRep; // private readonly IRepository _wmsContainerRep; // private readonly IRepository _lesPackWarehouseRep; // private readonly IRepository _lesDeviceWaringRep; // /// // /// 构造函数 // /// // public WareWcsToWmsService( // IRepository wmsOrderRep, // IRepository wmsOrderDetailsRep, // IRepository wmsTaskRep, // IRepository wmsMaterialContainerRep, // IRepository wmsPlaceRep, // IRepository wmsContainerPlaceRep, // IRepository wmsMaterialStockRep, // IRepository wmsContainerRep, // IRepository lesPackWarehouseRep, // IRepository lesDeviceWaringRep // ) // { // _wmsOrderRep = wmsOrderRep; // _wmsOrderDetailsRep = wmsOrderDetailsRep; // _wmsTaskRep = wmsTaskRep; // _wmsMaterialContainerRep = wmsMaterialContainerRep; // _wmsPlaceRep = wmsPlaceRep; // _wmsContainerPlaceRep = wmsContainerPlaceRep; // _wmsMaterialStockRep = wmsMaterialStockRep; // _wmsContainerRep = wmsContainerRep; // _lesPackWarehouseRep = lesPackWarehouseRep; // _lesDeviceWaringRep = lesDeviceWaringRep; // } // /// // /// 定时查询WCS可以下发的出入库任务(10条) // /// // /// // [HttpGet("GetSendTask")] // [AllowAnonymous] // public async Task> GetSendTask() // { // var outputList = new List(); // var alllist = await _wmsTaskRep.DetachedEntities // .Where(z => z.IsRead == true) // .Take(10) // .OrderByDescending(n => n.TaskLevel) // .OrderBy(p => p.CreatedTime).ToListAsync(); // foreach (var item in alllist) // { // var sendTaskDetail = new SendTaskDetailOutput(); //任务详情 // sendTaskDetail.TaskNo = item.TaskNo; // if (item.TaskType == TaskType.RUKU) sendTaskDetail.SourcePlace = item.ToPlace; // else sendTaskDetail.SourcePlace = item.SourcePlace; // sendTaskDetail.Aisle = item.Aisle; // sendTaskDetail.TaskType = item.TaskType; // sendTaskDetail.TaskLevel = item.TaskLevel; // sendTaskDetail.ContainerCode = item.ContainerCode; // sendTaskDetail.TaskStatus = item.TaskStatus; // outputList.Add(sendTaskDetail); // //item.IsRead=false; // //item.TaskStatus = TaskStatusEnum.DAIZHIXING; // //await _wmsTaskRep.UpdateAsync(item); // } // return outputList; // } // /// // /// 更新任务信息 // /// // /// // [HttpPost("UpdateTask")] // [UnitOfWork] // [AllowAnonymous] // public async Task UpdateTask([FromBody] UpdateTaskInput input) // { // //根据任务号查询任务信息 // var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(z => z.TaskNo == input.TaskNo); // if (wmsTask == null) throw Oops.Oh(errorMessage: "任务不存在!"); // wmsTask.TaskDodeviceStatus = input.TaskDodeviceStatus; // wmsTask.TaskStatus = TaskStatusEnum.ZHIXINGZHONG; // wmsTask.IsRead = false; // WmsPlace wmsPlace = new WmsPlace(); // //判断入库还是出库 // if (wmsTask.TaskType == TaskType.RUKU) // { // //库位信息 // wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(z => z.PlaceCode == wmsTask.ToPlace); // } // else if (wmsTask.TaskType == TaskType.CHUKU) // { // //库位信息 // wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(z => z.PlaceCode == wmsTask.SourcePlace); // } // if (wmsPlace == null) throw Oops.Oh(errorMessage: "库位不存在!"); // // 查询托盘信息 // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode); // if (wmsContainer == null) throw Oops.Oh("托盘不存在!"); // //入库称重 // //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RKCZ) // //{ // //} // //入库输送线开始 // //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RSSX) // //{ // //} // //入库输送线结束 // //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_RSSX) // //{ // //} // //入库RGV开始 // //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RGV) // //{ // //} // //入库RGV结束 // //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_RGV) // //{ // //} // //入库开始 // if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_DDJ) // { // // 更新库位状态 // wmsPlace.PlaceStatus = PlaceStatus.DAIRU; // await _wmsPlaceRep.UpdateAsync(wmsPlace); // } // //入库完成 // if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ) // { // //首先更新任务状态完成 // wmsTask.TaskStatus = TaskStatusEnum.WANCHENG; // //更新设备状态 // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W; // // 更新托盘状态为“库位” // wmsContainer.ContainerStatus = ContainerStatus.KUWEI; // await _wmsContainerRep.UpdateAsync(wmsContainer); // //库位信息 // if (wmsPlace == null) throw Oops.Oh("库位不存在!"); // if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("库位被锁定!"); // // 更新库位状态为“存货” // wmsPlace.PlaceStatus = PlaceStatus.CUNHUO; // if (wmsTask.Description == "空托") wmsPlace.EmptyContainer = YesOrNot.Y; // else wmsPlace.EmptyContainer = YesOrNot.N; // await _wmsPlaceRep.UpdateAsync(wmsPlace); // // 创建托盘号库位关系表 // var wmsContainerPlaceModel = new WmsContainerPlace() // { // PlaceId = wmsPlace.Id, // PlaceCode = wmsPlace.PlaceCode, // ContainerId = wmsContainer.Id, // ContainerCode = wmsContainer.ContainerCode, // ContainerPlaceStatus = CommonStatus.ENABLE // }; // await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel); // // 更新库存 // var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities // .Where(p => p.OrderNo == wmsTask.OrderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType().ToListAsync(); // foreach (var item in wmsMaterialContainerList) // { // var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode // && p.MaterialBatch == item.MaterialBatch); // if (wmsMaterialStock != null) // { // wmsMaterialStock.Source = RuKuSourceEnum.WULIAO; // wmsMaterialStock.AreaId = wmsPlace.AreaId; // wmsMaterialStock.PlaceCode = wmsPlace.PlaceCode; // wmsMaterialStock.StockNumber = item.BindQuantity; // await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock); // } // else // { // wmsMaterialStock = new WmsMaterialStock() // { // InspectionMethod = MaterialInspection.MIANJIAN, // UnitType = UnitType.ZHONGLIANG, // UnitNo = UnitNoType.T, // MaterialNo = item.MaterialNo, // MaterialType = MaterialType.CHENGPING, // MaterialName = item.MaterialName, // MaterialSpec = item.MaterialSpec, // MaterialBatch = item.MaterialBatch, // MaterialDensity = item.MaterialDensity, // StockNumber = item.BindQuantity, // PlaceCode = wmsPlace.PlaceCode, // ContainerId = wmsContainer.Id, // ContainerCode = wmsContainer.ContainerCode, // AreaId = wmsPlace.AreaId, // Source = RuKuSourceEnum.WULIAO // }; // await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock); // } // } // // 空料箱入库 // if (wmsTask.Description == "空托") // { // var wmsMaterialStock = new WmsMaterialStock() // { // InspectionMethod = MaterialInspection.MIANJIAN, // UnitType = UnitType.ZHONGLIANG, // UnitNo = UnitNoType.T, // MaterialNo = "N/A", // MaterialType = MaterialType.KONGTUO, // MaterialName = "N/A", // MaterialSpec = "N/A", // MaterialBatch = "N/A", // MaterialDensity = "N/A", // StockNumber = 0, // PlaceCode = wmsPlace.PlaceCode, // ContainerId = wmsContainer.Id, // ContainerCode = wmsContainer.ContainerCode, // AreaId = wmsPlace.AreaId, // Source = RuKuSourceEnum.KONGTUO // }; // await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock); // } // } // //出库堆垛机完成,执行库存,库位,托盘对应关系进行更新 // else if (wmsTask.TaskType == TaskType.CHUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ) // { // if (wmsPlace == null) throw Oops.Oh("库位不存在!"); // if (wmsPlace.PlaceStatus != PlaceStatus.DAICHU) throw Oops.Oh("库位异常货!"); // // 查询托盘与库位的关系 // var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode // && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE); // if (wmsContainerPlace == null) throw Oops.Oh("库位容器关系不存在!"); // // 查询库存信息 // var wmsMaterialStockList = await _wmsMaterialStockRep.DetachedEntities.Where(u => u.ContainerCode == wmsTask.ContainerCode).ToListAsync(); // if (wmsMaterialStockList.Count <= 0) throw Oops.Oh("库存数据异常!"); // ////查询物料与托盘组盘关系(状态:正常) // var wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsTask.ContainerCode // && p.BindStatus == CommonStatus.ENABLE && p.OrderNo == wmsTask.OrderNo).ToListAsync(); // //判断物料是否是空托,如果是空托直接删除,不是空托查询物料 // if (wmsMaterialContainerList.Count == 0) // { // //删除库存 // foreach (var item in wmsMaterialStockList) // { // await _wmsMaterialStockRep.DeleteAsync(item); // } // // 更新托盘状态为“空闲” // wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN; // } // else // { // //构建出库物料和周转箱号关系 // var orderNo = "N/A"; // if (wmsMaterialContainerList.Count > 0) orderNo = YitIdHelper.NextId().ToString(); // foreach (var item in wmsMaterialContainerList) // { // //更新状态为”删除“ // item.BindStatus = CommonStatus.DELETED; // await _wmsMaterialContainerRep.UpdateNowAsync(item); // //新增组盘绑定记录 正常 // var wmsMaterialContainer = item; // wmsMaterialContainer.Id = YitIdHelper.NextId(); // wmsMaterialContainer.OrderNo = orderNo; // wmsMaterialContainer.BindStatus = CommonStatus.ENABLE; // await _wmsMaterialContainerRep.InsertNowAsync(wmsMaterialContainer); // //更改库存的库位号为N/A // foreach (var stock in wmsMaterialStockList) // { // stock.PlaceCode = "N/A"; // await _wmsMaterialStockRep.UpdateAsync(stock); // } // } // wmsContainer.ContainerStatus = ContainerStatus.FENJIAN; // } // await _wmsContainerRep.UpdateAsync(wmsContainer); // //更新库位状态为“空闲” // wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN; // wmsPlace.Islock = YesOrNot.N; // wmsPlace.EmptyContainer = YesOrNot.N; // await _wmsPlaceRep.UpdateAsync(wmsPlace); // //更新周转箱号与库位关系为“删除” // wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED; // await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace); // } // if (wmsTask.TaskType == TaskType.CHUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_CSSX) // { // wmsTask.TaskStatus = TaskStatusEnum.WANCHENG; // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W; // } // else //移库 // { // if (wmsTask.TaskType == TaskType.YIKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ) // { // wmsTask.TaskStatus = TaskStatusEnum.WANCHENG; // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W; // // 起点库位信息 // var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync(); // SourcePlace.PlaceStatus = PlaceStatus.KONGXIAN; // await _wmsPlaceRep.UpdateAsync(SourcePlace); // //目标库位信息 // var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync(); // ToPlace.PlaceStatus = PlaceStatus.CUNHUO; // await _wmsPlaceRep.UpdateAsync(ToPlace); // //托盘库位关系表 // var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == SourcePlace.Id && z.PlaceCode == SourcePlace.PlaceCode // && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE); // wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED; // await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace); // await _wmsContainerPlaceRep.InsertAsync(new WmsContainerPlace() // { // PlaceId = ToPlace.Id, // PlaceCode = ToPlace.PlaceCode, // ContainerId = wmsContainer.Id, // ContainerCode = wmsContainer.ContainerCode, // ContainerPlaceStatus = CommonStatus.ENABLE // }); // //库存库位更新 // var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == SourcePlace.PlaceCode).FirstOrDefaultAsync(); // if (stockModel != null) // { // stockModel.PlaceCode = ToPlace.PlaceCode; // } // } // } // await _wmsTaskRep.UpdateAsync(wmsTask); // } // /// // /// 获取库位信息 // /// // /// // [HttpPost("GetPlace")] // [AllowAnonymous] // public async Task GetPlace([FromBody] GetPlaceInput input) // { // //1.列 优先1排和4排 层优先从下到上 // //2.保留10个内侧移库库位 // var taskModel = await _wmsTaskRep.Where(p => p.TaskNo == input.TaskNo).FirstOrDefaultAsync(); // if (taskModel == null) return new GetPlaceOutput() { TaskIsExist = false }; // if (taskModel.TaskStatus == TaskStatusEnum.CHEHUI || taskModel.TaskStatus == TaskStatusEnum.QUXIAO || taskModel.TaskStatus == TaskStatusEnum.WANCHENG || taskModel.TaskStatus == TaskStatusEnum.ZANTING) // { // throw Oops.Oh("任务状态未满足获取的库位条件"); // } // taskModel.TaskStatus = TaskStatusEnum.ZHIXINGZHONG; // //定义入库对象,移库对象 // var ToPlace = new WmsPlace(); // var SourcePlace = new WmsPlace(); // var rowNumber = 0; // //入库流程 // if (taskModel.TaskType == TaskType.RUKU) // { // //防重操作 // if (taskModel != null && !string.IsNullOrEmpty(taskModel.ToPlace)) // { // ToPlace = await _wmsPlaceRep.Where(p => p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && p.PlaceCode == taskModel.ToPlace).FirstOrDefaultAsync(); // if (ToPlace.RowNo == GetOneRowByAisle(taskModel.Aisle) || ToPlace.RowNo == GetFourRowByAisle(taskModel.Aisle)) // { // if (ToPlace.RowNo == GetOneRowByAisle(taskModel.Aisle)) // rowNumber = GetTwoRowByAisle(taskModel.Aisle); // else // rowNumber = GetThreeRowByAisle(taskModel.Aisle); // SourcePlace = await _wmsPlaceRep.Where(p => p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && p.Aisle == taskModel.Aisle && p.RowNo == rowNumber && p.ColumnNo == ToPlace.ColumnNo && p.LayerNo == ToPlace.LayerNo).FirstOrDefaultAsync(); // if (SourcePlace != null && SourcePlace.PlaceStatus == PlaceStatus.CUNHUO) // return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode }; // } // return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode }; // } // //获取立体库可用库位 // var placeList = await _wmsPlaceRep.DetachedEntities.Where(z => z.PlaceStatus == PlaceStatus.KONGXIAN // && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN // && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == taskModel.Aisle).ProjectToType().ToListAsync(); // //获取当前立体库需要出库库位集合 // var placeCodeList = await _wmsTaskRep.DetachedEntities.Where(p => p.IsRead == true // && p.TaskType == TaskType.CHUKU && p.Aisle == taskModel.Aisle).Select(n => n.SourcePlace).ToListAsync(); // var ckPlaceModelList = await _wmsPlaceRep.DetachedEntities.Where(z => placeCodeList.Contains(z.PlaceCode) // && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN // && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == taskModel.Aisle).ToListAsync(); // //配置文件中设置是否开启指定库位入库和移库操作 // //if (Convert.ToBoolean(App.Configuration["YiKuTestPalce:IsStart"])) // //{ // // var rukuPoint = App.Configuration["YiKuTestPalce:rukuPoint"].Split('.'); //入库起点 // // var yikuPoint = App.Configuration["YiKuTestPalce:yikuPoint"].Split('.'); //移库起点 // // ToPlace = placeList.Where(p => p.RowNo == Convert.ToInt32(rukuPoint[0]) // // && p.ColumnNo == Convert.ToInt32(rukuPoint[1]) && p.LayerNo == Convert.ToInt32(rukuPoint[2])).FirstOrDefault(); // // if (ToPlace != null) // // { // // ToPlace.PlaceStatus = PlaceStatus.DAIRU; // // await _wmsPlaceRep.UpdateAsync(ToPlace); // // taskModel.ToPlace = ToPlace.PlaceCode; // // taskModel.AreaName = ToPlace.WmsArea.AreaName; // // await _wmsTaskRep.UpdateAsync(taskModel); // // if (yikuPoint.Length > 1) // // { // // SourcePlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.RowNo == Convert.ToInt32(yikuPoint[0]) // // && p.ColumnNo == Convert.ToInt32(yikuPoint[1]) && p.LayerNo == Convert.ToInt32(yikuPoint[2]) // // && p.Aisle == taskModel.Aisle && p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN // // && p.WmsArea.AreaType == AreaType.LITIKU // // ); // // } // // return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode }; // // } // //} // var maxColumn = placeList.Max(selector: n => n.ColumnNo); // var maxLayerNo = 0; // //先以列为进行循环判断 // for (int j = 1; j <= maxColumn; j++) // { // //获取该列的最大层 // if (placeList.Where(p => p.ColumnNo == j).Count() <= 1) continue; // maxLayerNo = placeList.Where(p => p.ColumnNo == j).Max(selector: n => n.LayerNo); // //循环每列每层的中列 // //分配库位需要考虑外侧是否有出库任务,有的话就没有执行 // for (int f = 1; f <= maxLayerNo; f++) // { // var model = placeList.FirstOrDefault(p => p.RowNo == GetOneRowByAisle(taskModel.Aisle) && p.ColumnNo == j && p.LayerNo == f); // var ckmodel = ckPlaceModelList.FirstOrDefault(p => p.RowNo == GetTwoRowByAisle(taskModel.Aisle) && p.ColumnNo == j && p.LayerNo == f); // if (model != null && ckmodel == null) // { // ToPlace = model; // break; // } // } // if (!string.IsNullOrEmpty(ToPlace.PlaceCode)) break; // } // if (string.IsNullOrEmpty(ToPlace.PlaceCode)) throw Oops.Oh("暂无可以库位!"); // //进行库位和任务的更新 // ToPlace.PlaceStatus = PlaceStatus.DAIRU; // await _wmsPlaceRep.UpdateAsync(ToPlace); // taskModel.ToPlace = ToPlace.PlaceCode; // taskModel.AreaName = ToPlace.WmsArea.AreaName; // await _wmsTaskRep.UpdateAsync(taskModel); // if (SourcePlace == null || string.IsNullOrEmpty(SourcePlace.PlaceCode)) return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode }; // else return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode }; // } // //出库流程 // if (taskModel.TaskType == TaskType.CHUKU) // { // //需要判断下库位是否已经进行移库操作,需要通过托盘编号进行重新查找 // var containerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(p => p.ContainerCode == taskModel.ContainerCode // && p.ContainerPlaceStatus == CommonStatus.ENABLE); // if (containerPlace != null && containerPlace.PlaceCode != taskModel.SourcePlace) // { // ToPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == containerPlace.PlaceCode); // taskModel.SourcePlace = containerPlace.PlaceCode; // } // else // { // ToPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == taskModel.SourcePlace); // } // //进行库位和任务的更新 // ToPlace.PlaceStatus = PlaceStatus.DAICHU; // await _wmsPlaceRep.UpdateAsync(ToPlace); // taskModel.ToPlace = taskModel.Aisle.ToString(); // await _wmsTaskRep.UpdateAsync(taskModel); // if (SourcePlace == null || string.IsNullOrEmpty(SourcePlace.PlaceCode)) return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode }; // else return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode }; // } // else // { // throw Oops.Oh("任务异常" + taskModel.TaskNo); // } // } // /// // /// 创建移库任务 // /// // /// // [HttpPost("CreateYKTask")] // [UnitOfWork] // [AllowAnonymous] // public async Task CreateRelocation(CreateRelocationInput input) // { // var placeModel = await _wmsPlaceRep.Where(p => p.PlaceCode == input.SourcePlace).ProjectToType().FirstOrDefaultAsync(); // if (placeModel == null) throw Oops.Oh("库位数据异常!"); // placeModel.PlaceStatus = PlaceStatus.DAICHU; // await _wmsPlaceRep.UpdateAsync(placeModel); // //查询组盘单据 // var containerPlaceModel = await _wmsContainerPlaceRep.Where(p => p.PlaceCode == input.SourcePlace && p.ContainerPlaceStatus == CommonStatus.ENABLE).FirstOrDefaultAsync(); // if (containerPlaceModel == null) throw Oops.Oh("移库库位托盘数据异常!"); // var materialContainer = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == containerPlaceModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE).FirstOrDefaultAsync(); // if (materialContainer == null) throw Oops.Oh("组盘数据异常!"); // //获取空闲库位集合 // var placeList = await _wmsPlaceRep.DetachedEntities.Where(z => z.PlaceStatus == PlaceStatus.KONGXIAN // && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN // && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == input.Aisle).ToListAsync(); // if (placeList.Count == 0) throw Oops.Oh("无可移库库位!"); // //定义目标点 // var ToPlaceModel = new WmsPlace(); // var rowNumber = 0; // //1.推荐外侧库位 // var wcPlaceList = placeList.Where(p => (p.RowNo == GetOneRowByAisle(placeModel.Aisle) || p.RowNo == GetFourRowByAisle(placeModel.Aisle))).ToList(); // if (placeModel.Aisle == 11) // { // wcPlaceList = placeList.Where(p => (p.RowNo == GetOneRowByAisle(placeModel.Aisle) || p.RowNo == GetThreeRowByAisle(placeModel.Aisle))).ToList(); // } // //定义最优库位集合 // var zyPlaceList = new List(); // //循环判断对应的2,3是有货 // foreach (var item in wcPlaceList) // { // if (placeModel.Aisle == 11) // { // if (item.RowNo == GetOneRowByAisle(placeModel.Aisle)) // { // zyPlaceList.Add(item); // } // if (item.RowNo == GetThreeRowByAisle(placeModel.Aisle)) // { // rowNumber = GetTwoRowByAisle(placeModel.Aisle); // var dypalceModel = placeList.Where(p => p.RowNo == rowNumber && p.ColumnNo == item.ColumnNo && p.LayerNo == item.LayerNo).FirstOrDefault(); // if (dypalceModel != null) // zyPlaceList.Add(item); // } // } // else // { // if (item.RowNo == GetOneRowByAisle(placeModel.Aisle) || item.RowNo == GetFourRowByAisle(placeModel.Aisle)) // { // if (item.RowNo == GetOneRowByAisle(placeModel.Aisle)) // rowNumber = GetTwoRowByAisle(placeModel.Aisle); // else // rowNumber = GetThreeRowByAisle(placeModel.Aisle); // var dypalceModel = placeList.Where(p => p.RowNo == rowNumber && p.ColumnNo == item.ColumnNo && p.LayerNo == item.LayerNo).FirstOrDefault(); // if (dypalceModel != null) // zyPlaceList.Add(item); // } // } // } // if (zyPlaceList.Count != 0) // { // //获取路径最短的库位 使用二分法 // var mindModel = zyPlaceList.Where(p => p.ColumnNo == placeModel.ColumnNo).FirstOrDefault(); // var leftModel = zyPlaceList.Where(p => p.ColumnNo < placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault(); // var rightModel = zyPlaceList.Where(p => p.ColumnNo > placeModel.ColumnNo).OrderBy(p => p.ColumnNo).FirstOrDefault(); // if (mindModel != null) ToPlaceModel = mindModel; // else if (leftModel == null) ToPlaceModel = rightModel; // else if (rightModel == null) ToPlaceModel = leftModel; // else if ((placeModel.ColumnNo - leftModel.ColumnNo) > (rightModel.ColumnNo - placeModel.ColumnNo)) ToPlaceModel = rightModel; // else ToPlaceModel = leftModel; // } // if (string.IsNullOrEmpty(ToPlaceModel.PlaceCode)) // { // //2.次优库位集合 // //次优2,3排库位 // var cyPlace = placeList.Where(p => (p.RowNo == GetTwoRowByAisle(placeModel.Aisle) || p.RowNo == GetThreeRowByAisle(placeModel.Aisle))).OrderByDescending(p => p.ColumnNo).OrderBy(p => p.LayerNo).ToList(); // if (placeModel.Aisle == 11) // { // cyPlace = placeList.Where(p => p.RowNo == GetTwoRowByAisle(placeModel.Aisle)).OrderByDescending(p => p.ColumnNo).OrderBy(p => p.LayerNo).ToList(); // } // if (cyPlace.Count > 0) // { // //获取路径最短的库位 使用二分法 // var mindModel = cyPlace.Where(p => p.ColumnNo == placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault(); // var leftModel = cyPlace.Where(p => p.ColumnNo < placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault(); // var rightModel = cyPlace.Where(p => p.ColumnNo > placeModel.ColumnNo).OrderBy(p => p.ColumnNo).FirstOrDefault(); // if (mindModel != null) ToPlaceModel = mindModel; // else if (leftModel == null) ToPlaceModel = rightModel; // else if (rightModel == null) ToPlaceModel = leftModel; // else if ((placeModel.ColumnNo - leftModel.ColumnNo) > (rightModel.ColumnNo - placeModel.ColumnNo)) ToPlaceModel = rightModel; // else ToPlaceModel = leftModel; // } // } // ToPlaceModel.PlaceStatus = PlaceStatus.DAIRU; // await _wmsPlaceRep.UpdateAsync(ToPlaceModel); // //创建移库任务 // var newWmsTask = new WmsTask() // { // //TaskNo = _commonOrderServiceRep.GetFYKOrderNo(), // TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(), // TaskModel = TaskModel.QUANZIDONG, // TaskType = TaskType.YIKU, // TaskLevel = 5, // TaskStatus = TaskStatusEnum.WEIZHIXING, // OrderNo = materialContainer.OrderNo, // OrderDetailsId = materialContainer.OrderDetailsId, // ContainerCode = materialContainer.ContainerCode, // SourcePlace = placeModel.PlaceCode, // ToPlace = ToPlaceModel.PlaceCode, // AreaName = placeModel.WmsArea.AreaName, // IsRead = true, //WCS是否可以读取 // SendTimes = 1, //发送次数 // Aisle = placeModel.Aisle, // Dodevicetype = DodeviceType.AGV, // TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX, // }; // await _wmsTaskRep.InsertAsync(newWmsTask); // return new GetYiKuPlaceOutput() // { // ToPlace = ToPlaceModel.PlaceCode, // TaskNo = newWmsTask.TaskNo, // }; // } // ///// // ///// 强制完成 // ///// // ///// // //[HttpPost("Finish")] // //[UnitOfWork] // //[AllowAnonymous] // //public async Task Finish([FromBody] FinishTaskInput input) // //{ // // var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.TaskNo == input.TaskNo); // // if (wmsTask == null) throw Oops.Oh("任务不存在!"); // // if (wmsTask.TaskStatus == TaskStatusEnum.WANCHENG) throw Oops.Oh("任务已完成,强制完成失败!"); // // var statusList = new List { TaskStatusEnum.WEIZHIXING, TaskStatusEnum.ZHIXINGZHONG }; // // if (!statusList.Contains(wmsTask.TaskStatus)) throw Oops.Oh("只有未执行和执行中的任务才能强制完成!"); // // if (wmsTask.TaskType == TaskType.RUKU) // 入库任务 // // { // // var taskStatusList = new List { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ }; // // if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("只有堆垛机执行,堆垛机完成才能强制完成!"); // // //查询库位 // // var wmsPlace = await _wmsPlaceRep.DetachedEntities.Where(u => u.PlaceCode == wmsTask.ToPlace // // && u.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).ProjectToType().FirstOrDefaultAsync(); // // // 查询托盘 // // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode); // // if (wmsContainer == null) throw Oops.Oh("托盘信息不存在!"); // // // 更新任务状态 // // wmsTask.TaskStatus = TaskStatusEnum.WANCHENG; // // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W; // // wmsTask.IsRead = false; // // await _wmsTaskRep.UpdateAsync(wmsTask); // // // 更新单据明细状态为完成、更新托盘编号、更新库位编号 // // var wmsOrderDetails = await _wmsOrderDetailsRep.Where(z => z.Id == wmsTask.OrderDetailsId).ProjectToType().FirstOrDefaultAsync(); // // if (wmsOrderDetails != null) // // { // // wmsOrderDetails.ContainerCode = wmsTask.ContainerCode; // // wmsOrderDetails.PlaceCode = wmsPlace.PlaceCode; // // wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WANCHENG; // // await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails); // // } // // // 单据明细完成总数 // // var orderDetailsCount = (await _wmsOrderDetailsRep.DetachedEntities // // .Where(z => z.OrderId == wmsOrderDetails.WareOrder.Id && z.OrderStatus == OrderDetailsStatusEnum.WANCHENG).ToListAsync()).Count; // // if (orderDetailsCount == wmsOrderDetails.WareOrder.OrderQuantityTotal) // // { // // wmsOrderDetails.WareOrder.OrderStatus = OrderStatusEnum.WANCHENG; // // await _wmsOrderRep.UpdateAsync(wmsOrderDetails.WareOrder); // // } // // // 更新库位状态为存货 // // wmsPlace.PlaceStatus = PlaceStatus.CUNHUO; // // await _wmsPlaceRep.UpdateAsync(wmsPlace); // // // 更新托盘状态为“库位” // // wmsContainer.ContainerStatus = ContainerStatus.KUWEI; // // await _wmsContainerRep.UpdateAsync(wmsContainer); // // // 物料与托盘关系 // // var wmsMaterialContainer = await _wmsMaterialContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode // // && z.MaterialNo == wmsOrderDetails.MaterialNo && z.BindStatus == CommonStatus.ENABLE); // // // 托盘与库位关系 // // var wmsContainerPlace = new WmsContainerPlace() // // { // // PlaceId = wmsPlace.Id, // // PlaceCode = wmsPlace.PlaceCode, // // ContainerId = wmsContainer.Id, // // ContainerCode = wmsContainer.ContainerCode, // // ContainerPlaceStatus = CommonStatus.ENABLE // // }; // // await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlace); // // // 添加库存 // // var StockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode // // && p.MaterialNo == wmsOrderDetails.MaterialNo && p.MaterialBatch == wmsOrderDetails.Batch).FirstOrDefaultAsync(); // // if (StockModel != null) // // { // // StockModel.MaterialDensity = wmsOrderDetails.MaterialDensity; // // StockModel.PlaceCode = wmsTask.ToPlace; // // StockModel.AreaId = wmsPlace.AreaId; // // StockModel.StockNumber = wmsOrderDetails.OrderQuantity; // // await _wmsMaterialStockRep.UpdateAsync(StockModel); // // } // // else // // { // // StockModel = new WmsMaterialStock() // // { // // MaterialNo = wmsOrderDetails.MaterialNo, // // MaterialType = wmsOrderDetails.MaterialType, // // MaterialName = "N/A", // // Long = wmsOrderDetails.Long, // // Wide = wmsOrderDetails.Wide, // // High = wmsOrderDetails.High, // // MaterialSpec = wmsOrderDetails.Long + "*" + wmsOrderDetails.Wide + "*" + wmsOrderDetails.High, // // MaterialBatch = wmsOrderDetails.Batch, // // MaterialDensity = wmsOrderDetails.MaterialDensity, // // //InspectionMethod = item.WmsMaterial.InspectionMethod, // // //UnitType = item.WmsMaterial.UnitType, // // //UnitNo = item.WmsMaterial.UnitNo, // // StockNumber = wmsOrderDetails.OrderQuantity, // // PlaceCode = wmsTask.ToPlace, // // ContainerId = wmsContainer.Id, // // ContainerCode = wmsContainer.ContainerCode, // // AreaId = wmsPlace.AreaId, // // }; // // await _wmsMaterialStockRep.InsertAsync(StockModel); // // } // // } // // else if (wmsTask.TaskType == TaskType.CHUKU) //出库任务 // // { // // var taskStatusList = new List { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ }; // // if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("只有堆垛机执行,堆垛机完成才能强制完成!"); // // // 查询托盘信息 // // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode); // // if (wmsContainer == null) throw Oops.Oh("托盘信息不存在!"); // // // 查询库位信息 // // var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace); // // if (wmsPlace == null) throw Oops.Oh("库位信息不存在!"); // // // 查询托盘与库位的关系 // // var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode // // && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE); // // if (wmsContainerPlace != null) // // { // // // 禁用托盘库位关系 // // wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED; // // await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace); // // } // // // 根据任务表中的单据明细Id查询单据明细信息 // // var wmsOrderDetails = await _wmsOrderDetailsRep.FirstOrDefaultAsync(z => z.Id == wmsTask.OrderDetailsId); // // wmsTask.TaskStatus = TaskStatusEnum.ZHIXINGZHONG; // // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.ZX_RGV; // // wmsTask.IsRead = false; // // await _wmsTaskRep.UpdateAsync(wmsTask); // // // 查询是否已存在物料与托盘关系 // // var wmsMaterialContainer = await _wmsMaterialContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode // // && z.MaterialNo == wmsOrderDetails.MaterialNo && z.BindStatus == CommonStatus.ENABLE); // // //入库时组盘信息逻辑删除 // // if (wmsMaterialContainer != null) // // { // // wmsMaterialContainer.BindStatus = CommonStatus.DELETED; // // await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainer); // // //新增出库绑定记录 正常 // // var enable = new WmsMaterialContainer() // // { // // ContainerId = wmsContainer.Id, // // ContainerCode = wmsContainer.ContainerCode, // // MaterialId = YitIdHelper.NextId(), //系统生成的Id // // MaterialName = "N/A", // // MaterialNo = wmsMaterialContainer.MaterialNo, // // MaterialBatch = wmsMaterialContainer.MaterialBatch, // // MaterialDensity = wmsMaterialContainer.MaterialDensity, // // MaterialSpec = wmsOrderDetails.Long + "*" + wmsOrderDetails.Wide + "*" + wmsOrderDetails.High, // // BindQuantity = 1, //一个库位只有一个物料 // // OrderNo = wmsMaterialContainer.OrderNo, // // OrderDetailsId = wmsMaterialContainer.OrderDetailsId, // // BindStatus = CommonStatus.ENABLE // // }; // // await _wmsMaterialContainerRep.InsertAsync(enable); // // } // // //更新库存 // // var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == wmsTask.SourcePlace // // && p.MaterialNo == wmsOrderDetails.MaterialNo && p.MaterialBatch == wmsOrderDetails.Batch).FirstOrDefaultAsync(); // // if (stockModel != null) // // { // // await _wmsMaterialStockRep.DeleteAsync(stockModel); // // } // // // 更新库位状态为“空闲” // // wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN; // // await _wmsPlaceRep.UpdateAsync(wmsPlace); // // //更新托盘状态为“空闲” // // wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN; // // await _wmsContainerRep.UpdateAsync(wmsContainer); // // } // // else //移库任务 // // { // // var taskStatusList = new List { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ }; // // if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("只有堆垛机执行,堆垛机完成才能强制完成!"); // // // 查询托盘 // // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode); // // if (wmsContainer == null) throw Oops.Oh("托盘信息不存在!"); // // wmsTask.TaskStatus = TaskStatusEnum.WANCHENG; // // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W; // // wmsTask.IsRead = false; // // // 起点库位信息 // // var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync(); // // SourcePlace.PlaceStatus = PlaceStatus.KONGXIAN; // // await _wmsPlaceRep.UpdateAsync(SourcePlace); // // //目标库位信息 // // var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync(); // // ToPlace.PlaceStatus = PlaceStatus.CUNHUO; // // await _wmsPlaceRep.UpdateAsync(ToPlace); // // //托盘库位关系表 // // var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == SourcePlace.Id && z.PlaceCode == SourcePlace.PlaceCode // // && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE); // // wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED; // // await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace); // // await _wmsContainerPlaceRep.InsertAsync(new WmsContainerPlace() // // { // // PlaceId = ToPlace.Id, // // PlaceCode = ToPlace.PlaceCode, // // ContainerId = wmsContainer.Id, // // ContainerCode = wmsContainer.ContainerCode, // // ContainerPlaceStatus = CommonStatus.ENABLE // // }); // // //库存库位更新 // // var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == SourcePlace.PlaceCode).FirstOrDefaultAsync(); // // if (stockModel != null) // // { // // stockModel.PlaceCode = ToPlace.PlaceCode; // // } // // } // //} // /// // /// 取消任务 // /// // /// // [HttpPost("CancelTask")] // [UnitOfWork] // [AllowAnonymous] // public async Task CancelTask([FromBody] FinishTaskInput input) // { // var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.TaskNo == input.TaskNo); // if (wmsTask == null) throw Oops.Oh("任务不存在!"); // if (wmsTask.TaskStatus == TaskStatusEnum.WANCHENG) throw Oops.Oh("任务已完成,取消失败!"); // if (wmsTask.TaskType == TaskType.RUKU) // 入库任务 // { // //var statusList = new List {TaskDodeviceStatusEnum.ZX_RSSX, TaskDodeviceStatusEnum.WC_RSSX,TaskDodeviceStatusEnum.WZX }; // //if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("只有入库输送线执行,入库输送线完成或者设备未执行才能强制取消!"); // //更新单据明细状态为未执行、更新托盘编号、更新库位编号 // var wmsOrderDetails = await _wmsOrderDetailsRep.Where(z => z.Id == wmsTask.OrderDetailsId).ProjectToType().FirstOrDefaultAsync(); // if (wmsOrderDetails != null) // { // wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WEIZHIXING; // await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails); // } // //查询库位 // var wmsPlace = await _wmsPlaceRep.DetachedEntities.Where(u => u.PlaceCode == wmsTask.ToPlace && u.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).ProjectToType().FirstOrDefaultAsync(); // if (wmsPlace != null) // { // // 更新库位状态为空闲 // wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN; // await _wmsPlaceRep.UpdateAsync(wmsPlace); // } // var materialContainer = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.BindStatus == CommonStatus.ENABLE).FirstOrDefaultAsync(); // if (materialContainer != null) // { // await _wmsMaterialContainerRep.DeleteNowAsync(materialContainer); // } // // 查询托盘 // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode); // if (wmsContainer != null) // { // wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN; // await _wmsContainerRep.UpdateAsync(wmsContainer); // } // // 更新任务状态 // wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING; // wmsTask.IsRead = false; // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX; // wmsTask.ToPlace = ""; // await _wmsTaskRep.UpdateAsync(wmsTask); // } // else if (wmsTask.TaskType == TaskType.CHUKU) //出库任务 // { // var statusList = new List { TaskDodeviceStatusEnum.WZX, TaskDodeviceStatusEnum.ZX_DDJ }; // if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("只有堆垛机执行中或设备未执行才能强制取消!"); // // 查询库位信息 // var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace); // if (wmsPlace == null) throw Oops.Oh("库位信息不存在!"); // // 查询托盘与库位的关系 // var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode // && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE); // if (wmsContainerPlace == null) throw Oops.Oh("库位容器关系不存在!"); // // 根据任务表中的单据明细Id查询单据明细信息 // var wmsOrderDetails = await _wmsOrderDetailsRep.FirstOrDefaultAsync(z => z.Id == wmsTask.OrderDetailsId); // //修改单据明细,任务状态,设备任务状态为未执行 // wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WEIZHIXING; // await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails); // wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING; // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX; // await _wmsTaskRep.UpdateAsync(wmsTask); // // 更新库位状态为存货 // wmsPlace.PlaceStatus = PlaceStatus.CUNHUO; // await _wmsPlaceRep.UpdateAsync(wmsPlace); // } // else //移库任务 // { // var statusList = new List { TaskDodeviceStatusEnum.WZX, TaskDodeviceStatusEnum.ZX_DDJ }; // if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("只有堆垛机执行中,设备未执行才能强制取消!"); // // 查询托盘 // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode); // if (wmsContainer == null) throw Oops.Oh("托盘信息不存在!"); // //删除任务 // await _wmsTaskRep.DeleteAsync(wmsTask); // // 起点库位信息 // var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync(); // SourcePlace.PlaceStatus = PlaceStatus.CUNHUO; // await _wmsPlaceRep.UpdateAsync(SourcePlace); // //目标库位信息 // var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync(); // ToPlace.PlaceStatus = PlaceStatus.KONGXIAN; // await _wmsPlaceRep.UpdateAsync(ToPlace); // } // } // /// // /// wcs读取接口判断物料是否组盘出库 true代表已经组盘出库 // /// // /// // [HttpGet("CheckPack")] // [AllowAnonymous] // [NonAction] // public async Task CheckPack() // { // var packList = await _lesPackWarehouseRep.Where(p => p.LesPackState == LesPackState.WEICHUKU).Select(n => n.OrderNo).Distinct().ToListAsync(); // if (packList.Count >= 2) return false; // else return true; // } // /// // /// 设备报警信息 // /// // /// // [HttpPost("AddDeviceWaring")] // [AllowAnonymous] // [NonAction] // public async Task AddDeviceWaring(AddDeviceWaringInput input) // { // //判断wcsid是否存在 // var lesDeviceWaring = await _lesDeviceWaringRep.FirstOrDefaultAsync(u => u.WcsId == input.WcsId); // if (lesDeviceWaring != null) // { // await _lesDeviceWaringRep.UpdateAsync(lesDeviceWaring); // } // else // { // lesDeviceWaring = input.Adapt(); // await _lesDeviceWaringRep.InsertAsync(lesDeviceWaring); // } // } // #region 公用方法 // /// // /// 根据巷道获取外侧第一排 // /// // /// // /// // [NonAction] // public int GetOneRowByAisle(int Aisle) // { // if (Aisle >= 7) // { // return 1; // } // return (Aisle - 1) * 4 + 1; // } // /// // /// 根据巷道获取内侧第二排 // /// // /// // /// // [NonAction] // public int GetTwoRowByAisle(int Aisle) // { // if (Aisle >= 7) // { // return 2; // } // return (Aisle - 1) * 4 + 2; // } // /// // /// 根据巷道获取外侧第二排 // /// // /// // /// // [NonAction] // public int GetThreeRowByAisle(int Aisle) // { // if (Aisle >= 7) // { // return 3; // } // return (Aisle - 1) * 4 + 3; // } // /// // /// 根据巷道获取外侧第一排 // /// // /// // /// // [NonAction] // public int GetFourRowByAisle(int Aisle) // { // if (Aisle >= 7) // { // return 4; // } // return (Aisle - 1) * 4 + 4; // } // #endregion // } //}