| | |
| | | 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; |
| | | //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 |
| | | { |
| | | /// <summary> |
| | | /// WCSè°ç¨æå¡ |
| | | /// </summary> |
| | | [ApiDescriptionSettings("WCSè°ç¨æå¡", Name = "WareWcsToWmsService", Order = 100)] |
| | | [Route("api/[Controller]")] |
| | | public class WareWcsToWmsService : IDynamicApiController, ITransient |
| | | { |
| | | private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep; |
| | | private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep; |
| | | private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep; |
| | | private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep; |
| | | private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep; |
| | | private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; |
| | | private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep; |
| | | private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep; |
| | | private readonly IRepository<LesPackWarehouse, MasterDbContextLocator> _lesPackWarehouseRep; |
| | | private readonly IRepository<LesDeviceWaring, MasterDbContextLocator> _lesDeviceWaringRep; |
| | | |
| | | |
| | | /// <summary> |
| | | /// æé 彿° |
| | | /// </summary> |
| | | public WareWcsToWmsService( |
| | | IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep, |
| | | IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep, |
| | | IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep, |
| | | IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep, |
| | | IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep, |
| | | IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep, |
| | | IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep, |
| | | IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep, |
| | | IRepository<LesPackWarehouse, MasterDbContextLocator> lesPackWarehouseRep, |
| | | IRepository<LesDeviceWaring, MasterDbContextLocator> lesDeviceWaringRep |
| | | ) |
| | | { |
| | | _wmsOrderRep = wmsOrderRep; |
| | | _wmsOrderDetailsRep = wmsOrderDetailsRep; |
| | | _wmsTaskRep = wmsTaskRep; |
| | | _wmsMaterialContainerRep = wmsMaterialContainerRep; |
| | | _wmsPlaceRep = wmsPlaceRep; |
| | | _wmsContainerPlaceRep = wmsContainerPlaceRep; |
| | | _wmsMaterialStockRep = wmsMaterialStockRep; |
| | | _wmsContainerRep = wmsContainerRep; |
| | | _lesPackWarehouseRep = lesPackWarehouseRep; |
| | | _lesDeviceWaringRep = lesDeviceWaringRep; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 宿¶æ¥è¯¢WCSå¯ä»¥ä¸åçåºå
¥åºä»»å¡(10æ¡) |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpGet("GetSendTask")] |
| | | [AllowAnonymous] |
| | | public async Task<List<SendTaskDetailOutput>> GetSendTask() |
| | | { |
| | | var outputList = new List<SendTaskDetailOutput>(); |
| | | 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; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ´æ°ä»»å¡ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [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) |
| | | //namespace Admin.NET.Application |
| | | //{ |
| | | //} |
| | | //å
¥åºè¾é线å¼å§ |
| | | //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RSSX) |
| | | // /// <summary> |
| | | // /// WCSè°ç¨æå¡ |
| | | // /// </summary> |
| | | // [ApiDescriptionSettings("WCSè°ç¨æå¡", Name = "WareWcsToWmsService", Order = 100)] |
| | | // [Route("api/[Controller]")] |
| | | // public class WareWcsToWmsService : IDynamicApiController, ITransient |
| | | //{ |
| | | //} |
| | | //å
¥åºè¾éçº¿ç»æ |
| | | //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<WmsMaterialContainer>().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); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·ååºä½ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost("GetPlace")] |
| | | [AllowAnonymous] |
| | | public async Task<GetPlaceOutput> 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<WmsPlace>().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); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// å建移åºä»»å¡ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost("CreateYKTask")] |
| | | [UnitOfWork] |
| | | [AllowAnonymous] |
| | | public async Task<GetYiKuPlaceOutput> CreateRelocation(CreateRelocationInput input) |
| | | { |
| | | var placeModel = await _wmsPlaceRep.Where(p => p.PlaceCode == input.SourcePlace).ProjectToType<WmsPlace>().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<WmsPlace>(); |
| | | //循ç¯å¤æå¯¹åºç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, |
| | | }; |
| | | } |
| | | // private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep; |
| | | // private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep; |
| | | // private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep; |
| | | // private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep; |
| | | // private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep; |
| | | // private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; |
| | | // private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep; |
| | | // private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep; |
| | | // private readonly IRepository<LesPackWarehouse, MasterDbContextLocator> _lesPackWarehouseRep; |
| | | // private readonly IRepository<LesDeviceWaring, MasterDbContextLocator> _lesDeviceWaringRep; |
| | | |
| | | |
| | | ///// <summary> |
| | | ///// 强å¶å®æ |
| | | // /// æé 彿° |
| | | // /// </summary> |
| | | // public WareWcsToWmsService( |
| | | // IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep, |
| | | // IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep, |
| | | // IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep, |
| | | // IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep, |
| | | // IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep, |
| | | // IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep, |
| | | // IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep, |
| | | // IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep, |
| | | // IRepository<LesPackWarehouse, MasterDbContextLocator> lesPackWarehouseRep, |
| | | // IRepository<LesDeviceWaring, MasterDbContextLocator> lesDeviceWaringRep |
| | | // ) |
| | | // { |
| | | // _wmsOrderRep = wmsOrderRep; |
| | | // _wmsOrderDetailsRep = wmsOrderDetailsRep; |
| | | // _wmsTaskRep = wmsTaskRep; |
| | | // _wmsMaterialContainerRep = wmsMaterialContainerRep; |
| | | // _wmsPlaceRep = wmsPlaceRep; |
| | | // _wmsContainerPlaceRep = wmsContainerPlaceRep; |
| | | // _wmsMaterialStockRep = wmsMaterialStockRep; |
| | | // _wmsContainerRep = wmsContainerRep; |
| | | // _lesPackWarehouseRep = lesPackWarehouseRep; |
| | | // _lesDeviceWaringRep = lesDeviceWaringRep; |
| | | // } |
| | | |
| | | |
| | | // /// <summary> |
| | | // /// 宿¶æ¥è¯¢WCSå¯ä»¥ä¸åçåºå
¥åºä»»å¡(10æ¡) |
| | | ///// </summary> |
| | | ///// <returns></returns> |
| | | //[HttpPost("Finish")] |
| | | // [HttpGet("GetSendTask")] |
| | | // [AllowAnonymous] |
| | | // public async Task<List<SendTaskDetailOutput>> GetSendTask() |
| | | // { |
| | | // var outputList = new List<SendTaskDetailOutput>(); |
| | | // 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; |
| | | // } |
| | | |
| | | |
| | | // /// <summary> |
| | | // /// æ´æ°ä»»å¡ä¿¡æ¯ |
| | | // /// </summary> |
| | | // /// <returns></returns> |
| | | // [HttpPost("UpdateTask")] |
| | | //[UnitOfWork] |
| | | //[AllowAnonymous] |
| | | //public async Task Finish([FromBody] FinishTaskInput input) |
| | | // public async Task UpdateTask([FromBody] UpdateTaskInput 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> { TaskStatusEnum.WEIZHIXING, TaskStatusEnum.ZHIXINGZHONG }; |
| | | // if (!statusList.Contains(wmsTask.TaskStatus)) throw Oops.Oh("åªææªæ§è¡åæ§è¡ä¸ç任塿è½å¼ºå¶å®æï¼"); |
| | | |
| | | // if (wmsTask.TaskType == TaskType.RUKU) // å
¥åºä»»å¡ |
| | | // { |
| | | // var taskStatusList = new List<TaskDodeviceStatusEnum> { 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<WmsPlace>().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; |
| | | // //æ ¹æ®ä»»å¡å·æ¥è¯¢ä»»å¡ä¿¡æ¯ |
| | | // 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; |
| | | // await _wmsTaskRep.UpdateAsync(wmsTask); |
| | | |
| | | // // æ´æ°åæ®æç»ç¶æä¸ºå®æãæ´æ°æçç¼å·ãæ´æ°åºä½ç¼å· |
| | | // var wmsOrderDetails = await _wmsOrderDetailsRep.Where(z => z.Id == wmsTask.OrderDetailsId).ProjectToType<WmsOrderDetails>().FirstOrDefaultAsync(); |
| | | // if (wmsOrderDetails != null) |
| | | // WmsPlace wmsPlace = new WmsPlace(); |
| | | // //夿å
¥åºè¿æ¯åºåº |
| | | // if (wmsTask.TaskType == TaskType.RUKU) |
| | | // { |
| | | // wmsOrderDetails.ContainerCode = wmsTask.ContainerCode; |
| | | // wmsOrderDetails.PlaceCode = wmsPlace.PlaceCode; |
| | | // wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WANCHENG; |
| | | // await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails); |
| | | // //åºä½ä¿¡æ¯ |
| | | // wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(z => z.PlaceCode == wmsTask.ToPlace); |
| | | // } |
| | | // // åæ®æç»å®ææ»æ° |
| | | // var orderDetailsCount = (await _wmsOrderDetailsRep.DetachedEntities |
| | | // .Where(z => z.OrderId == wmsOrderDetails.WareOrder.Id && z.OrderStatus == OrderDetailsStatusEnum.WANCHENG).ToListAsync()).Count; |
| | | |
| | | // if (orderDetailsCount == wmsOrderDetails.WareOrder.OrderQuantityTotal) |
| | | // else if (wmsTask.TaskType == TaskType.CHUKU) |
| | | // { |
| | | // wmsOrderDetails.WareOrder.OrderStatus = OrderStatusEnum.WANCHENG; |
| | | // await _wmsOrderRep.UpdateAsync(wmsOrderDetails.WareOrder); |
| | | // //åºä½ä¿¡æ¯ |
| | | // wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(z => z.PlaceCode == wmsTask.SourcePlace); |
| | | // } |
| | | // if (wmsPlace == null) throw Oops.Oh(errorMessage: "åºä½ä¸åå¨ï¼"); |
| | | |
| | | // // æ´æ°åºä½ç¶æä¸ºåè´§ |
| | | // wmsPlace.PlaceStatus = PlaceStatus.CUNHUO; |
| | | // // æ¥è¯¢æçä¿¡æ¯ |
| | | // 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); |
| | | |
| | | // // ç©æä¸æçå
³ç³» |
| | | // var wmsMaterialContainer = await _wmsMaterialContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode |
| | | // && z.MaterialNo == wmsOrderDetails.MaterialNo && z.BindStatus == CommonStatus.ENABLE); |
| | | // //åºä½ä¿¡æ¯ |
| | | // if (wmsPlace == null) throw Oops.Oh("åºä½ä¸åå¨!"); |
| | | // if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("åºä½è¢«éå®!"); |
| | | |
| | | // // æçä¸åºä½å
³ç³» |
| | | // var wmsContainerPlace = new WmsContainerPlace() |
| | | // // æ´æ°åºä½ç¶æä¸ºâåè´§â |
| | | // 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, |
| | |
| | | // ContainerCode = wmsContainer.ContainerCode, |
| | | // ContainerPlaceStatus = CommonStatus.ENABLE |
| | | // }; |
| | | // await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlace); |
| | | // await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel); |
| | | |
| | | // // æ·»å åºå |
| | | // var StockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode |
| | | // && p.MaterialNo == wmsOrderDetails.MaterialNo && p.MaterialBatch == wmsOrderDetails.Batch).FirstOrDefaultAsync(); |
| | | // if (StockModel != null) |
| | | // // æ´æ°åºå |
| | | // var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities |
| | | // .Where(p => p.OrderNo == wmsTask.OrderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync(); |
| | | |
| | | // foreach (var item in wmsMaterialContainerList) |
| | | // { |
| | | // StockModel.MaterialDensity = wmsOrderDetails.MaterialDensity; |
| | | // StockModel.PlaceCode = wmsTask.ToPlace; |
| | | // StockModel.AreaId = wmsPlace.AreaId; |
| | | // StockModel.StockNumber = wmsOrderDetails.OrderQuantity; |
| | | // await _wmsMaterialStockRep.UpdateAsync(StockModel); |
| | | // 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 |
| | | // { |
| | | // StockModel = new WmsMaterialStock() |
| | | // wmsMaterialStock = 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, |
| | | // 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(StockModel); |
| | | // await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock); |
| | | // } |
| | | // } |
| | | // else if (wmsTask.TaskType == TaskType.CHUKU) //åºåºä»»å¡ |
| | | // // 空æç®±å
¥åº |
| | | // if (wmsTask.Description == "空æ") |
| | | // { |
| | | // var taskStatusList = new List<TaskDodeviceStatusEnum> { 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 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) |
| | | // { |
| | | |
| | | // // æ¥è¯¢åºä½ä¿¡æ¯ |
| | | // var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace); |
| | | // if (wmsPlace == null) throw Oops.Oh("åºä½ä¿¡æ¯ä¸åå¨!"); |
| | | // 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) |
| | | // 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); |
| | | // } |
| | | // // æ ¹æ®ä»»å¡è¡¨ä¸çåæ®æç»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) |
| | | // if (wmsTask.TaskType == TaskType.CHUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_CSSX) |
| | | // { |
| | | // 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> { 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; |
| | | // } |
| | | // 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 _wmsTaskRep.UpdateAsync(wmsTask); |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è·ååºä½ä¿¡æ¯ |
| | | // /// </summary> |
| | | // /// <returns></returns> |
| | | // [HttpPost("GetPlace")] |
| | | // [AllowAnonymous] |
| | | // public async Task<GetPlaceOutput> 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<WmsPlace>().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); |
| | | // } |
| | | // } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åæ¶ä»»å¡ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [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> {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<WmsOrderDetails>().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<WmsPlace>().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> { 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> { 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); |
| | | } |
| | | } |
| | | // /// <summary> |
| | | // /// å建移åºä»»å¡ |
| | | // /// </summary> |
| | | // /// <returns></returns> |
| | | // [HttpPost("CreateYKTask")] |
| | | // [UnitOfWork] |
| | | // [AllowAnonymous] |
| | | // public async Task<GetYiKuPlaceOutput> CreateRelocation(CreateRelocationInput input) |
| | | // { |
| | | // var placeModel = await _wmsPlaceRep.Where(p => p.PlaceCode == input.SourcePlace).ProjectToType<WmsPlace>().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<WmsPlace>(); |
| | | // //循ç¯å¤æå¯¹åºç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, |
| | | // }; |
| | | // } |
| | | |
| | | |
| | | /// <summary> |
| | | /// wcsè¯»åæ¥å£å¤æç©ææ¯å¦ç»çåºåº true代表已ç»ç»çåºåº |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpGet("CheckPack")] |
| | | [AllowAnonymous] |
| | | [NonAction] |
| | | public async Task<bool> 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; |
| | | } |
| | | // ///// <summary> |
| | | // ///// 强å¶å®æ |
| | | // ///// </summary> |
| | | // ///// <returns></returns> |
| | | // //[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> { TaskStatusEnum.WEIZHIXING, TaskStatusEnum.ZHIXINGZHONG }; |
| | | // // if (!statusList.Contains(wmsTask.TaskStatus)) throw Oops.Oh("åªææªæ§è¡åæ§è¡ä¸ç任塿è½å¼ºå¶å®æï¼"); |
| | | |
| | | /// <summary> |
| | | /// è®¾å¤æ¥è¦ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [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<LesDeviceWaring>(); |
| | | await _lesDeviceWaringRep.InsertAsync(lesDeviceWaring); |
| | | } |
| | | } |
| | | // // if (wmsTask.TaskType == TaskType.RUKU) // å
¥åºä»»å¡ |
| | | // // { |
| | | // // var taskStatusList = new List<TaskDodeviceStatusEnum> { 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<WmsPlace>().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); |
| | | |
| | | #region å
¬ç¨æ¹æ³ |
| | | /// <summary> |
| | | /// æ ¹æ®å··éè·åå¤ä¾§ç¬¬ä¸æ |
| | | /// </summary> |
| | | /// <param name="Aisle"></param> |
| | | /// <returns></returns> |
| | | [NonAction] |
| | | public int GetOneRowByAisle(int Aisle) |
| | | { |
| | | if (Aisle >= 7) |
| | | { |
| | | return 1; |
| | | } |
| | | return (Aisle - 1) * 4 + 1; |
| | | } |
| | | /// <summary> |
| | | /// æ ¹æ®å··éè·åå
ä¾§ç¬¬äºæ |
| | | /// </summary> |
| | | /// <param name="Aisle"></param> |
| | | /// <returns></returns> |
| | | [NonAction] |
| | | public int GetTwoRowByAisle(int Aisle) |
| | | { |
| | | if (Aisle >= 7) |
| | | { |
| | | return 2; |
| | | } |
| | | return (Aisle - 1) * 4 + 2; |
| | | } |
| | | /// <summary> |
| | | /// æ ¹æ®å··éè·åå¤ä¾§ç¬¬äºæ |
| | | /// </summary> |
| | | /// <param name="Aisle"></param> |
| | | /// <returns></returns> |
| | | [NonAction] |
| | | public int GetThreeRowByAisle(int Aisle) |
| | | { |
| | | if (Aisle >= 7) |
| | | { |
| | | return 3; |
| | | } |
| | | return (Aisle - 1) * 4 + 3; |
| | | } |
| | | /// <summary> |
| | | /// æ ¹æ®å··éè·åå¤ä¾§ç¬¬ä¸æ |
| | | /// </summary> |
| | | /// <param name="Aisle"></param> |
| | | /// <returns></returns> |
| | | [NonAction] |
| | | public int GetFourRowByAisle(int Aisle) |
| | | { |
| | | if (Aisle >= 7) |
| | | { |
| | | return 4; |
| | | } |
| | | return (Aisle - 1) * 4 + 4; |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | | // // // æ´æ°åæ®æç»ç¶æä¸ºå®æãæ´æ°æçç¼å·ãæ´æ°åºä½ç¼å· |
| | | // // var wmsOrderDetails = await _wmsOrderDetailsRep.Where(z => z.Id == wmsTask.OrderDetailsId).ProjectToType<WmsOrderDetails>().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> { 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> { 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; |
| | | // // } |
| | | // // } |
| | | // //} |
| | | |
| | | |
| | | // /// <summary> |
| | | // /// åæ¶ä»»å¡ |
| | | // /// </summary> |
| | | // /// <returns></returns> |
| | | // [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> {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<WmsOrderDetails>().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<WmsPlace>().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> { 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> { 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); |
| | | // } |
| | | // } |
| | | |
| | | |
| | | // /// <summary> |
| | | // /// wcsè¯»åæ¥å£å¤æç©ææ¯å¦ç»çåºåº true代表已ç»ç»çåºåº |
| | | // /// </summary> |
| | | // /// <returns></returns> |
| | | // [HttpGet("CheckPack")] |
| | | // [AllowAnonymous] |
| | | // [NonAction] |
| | | // public async Task<bool> 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; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è®¾å¤æ¥è¦ä¿¡æ¯ |
| | | // /// </summary> |
| | | // /// <returns></returns> |
| | | // [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<LesDeviceWaring>(); |
| | | // await _lesDeviceWaringRep.InsertAsync(lesDeviceWaring); |
| | | // } |
| | | // } |
| | | |
| | | // #region å
¬ç¨æ¹æ³ |
| | | // /// <summary> |
| | | // /// æ ¹æ®å··éè·åå¤ä¾§ç¬¬ä¸æ |
| | | // /// </summary> |
| | | // /// <param name="Aisle"></param> |
| | | // /// <returns></returns> |
| | | // [NonAction] |
| | | // public int GetOneRowByAisle(int Aisle) |
| | | // { |
| | | // if (Aisle >= 7) |
| | | // { |
| | | // return 1; |
| | | // } |
| | | // return (Aisle - 1) * 4 + 1; |
| | | // } |
| | | // /// <summary> |
| | | // /// æ ¹æ®å··éè·åå
ä¾§ç¬¬äºæ |
| | | // /// </summary> |
| | | // /// <param name="Aisle"></param> |
| | | // /// <returns></returns> |
| | | // [NonAction] |
| | | // public int GetTwoRowByAisle(int Aisle) |
| | | // { |
| | | // if (Aisle >= 7) |
| | | // { |
| | | // return 2; |
| | | // } |
| | | // return (Aisle - 1) * 4 + 2; |
| | | // } |
| | | // /// <summary> |
| | | // /// æ ¹æ®å··éè·åå¤ä¾§ç¬¬äºæ |
| | | // /// </summary> |
| | | // /// <param name="Aisle"></param> |
| | | // /// <returns></returns> |
| | | // [NonAction] |
| | | // public int GetThreeRowByAisle(int Aisle) |
| | | // { |
| | | // if (Aisle >= 7) |
| | | // { |
| | | // return 3; |
| | | // } |
| | | // return (Aisle - 1) * 4 + 3; |
| | | // } |
| | | // /// <summary> |
| | | // /// æ ¹æ®å··éè·åå¤ä¾§ç¬¬ä¸æ |
| | | // /// </summary> |
| | | // /// <param name="Aisle"></param> |
| | | // /// <returns></returns> |
| | | // [NonAction] |
| | | // public int GetFourRowByAisle(int Aisle) |
| | | // { |
| | | // if (Aisle >= 7) |
| | | // { |
| | | // return 4; |
| | | // } |
| | | // return (Aisle - 1) * 4 + 4; |
| | | // } |
| | | // #endregion |
| | | // } |
| | | //} |