| | |
| | | using WIDESEA_DTO.Stock; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_Core.Helper; |
| | | using Newtonsoft.Json; |
| | | using WIDESEA_DTO.WCSInfo; |
| | | using WIDESEAWCS_DTO.WCSInfo; |
| | | |
| | | namespace WIDESEA_TaskInfoService |
| | | { |
| | |
| | | TargetAddress = roadwayInfo.OutStationCode, |
| | | TaskState = OutTaskStatusEnum.OutNew.ObjToInt(), |
| | | TaskType = TaskTypeEnum.Outbound.ObjToInt(), |
| | | TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) |
| | | //TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) |
| | | TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), |
| | | }; |
| | | tasks.Add(task); |
| | | } |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºåºä»»å¡æ°æ®å¤ç |
| | | /// åºåºä»»å¡æ°æ®å¤ç/æå®åºåºååºåº |
| | | /// </summary> |
| | | /// <param name="orderDetailId"></param> |
| | | /// <param name="stockSelectViews"></param> |
| | |
| | | throw new Exception("æ åºå"); |
| | | } |
| | | } |
| | | else |
| | | else if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.AssignOverPartial.ObjToInt() || outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.AssignOver.ObjToInt()) |
| | | { |
| | | List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.OrderId); |
| | | List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.Id); |
| | | if (stockLockInfos != null && stockLockInfos.Count > 0) |
| | | { |
| | | List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); |
| | |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | #region çæç§»åºä»»å¡ |
| | | List<Dt_Task> taskList = new List<Dt_Task>(); |
| | | List<Dt_StockInfo> dt_StockInfos = _stockService.StockInfoService.Repository.LocationCodesGetStockInfos(tasks.Select(x => x.SourceAddress).ToList()); |
| | | List<Dt_StockInfo> dt_stockInfos = dt_StockInfos.Where(x => x.StockStatus == StockStatusEmun.åºåºéå®.ObjToInt() || tasks.Select(x => x.PalletCode).ToList().Contains(x.PalletCode)).ToList();//å¾
åºåºåºå |
| | | dt_StockInfos = dt_StockInfos.Where(x => !dt_stockInfos.Select(x => x.Id).ToList().Contains(x.Id)).ToList();//æé¤å¾
åºåºåºå |
| | | if (dt_StockInfos.Count > 0) |
| | | { |
| | | foreach (var dt_stockInfo in dt_stockInfos) |
| | | { |
| | | foreach (var dt_StockInfo in dt_StockInfos.Where(x => x.LocationCode == dt_stockInfo.LocationCode)) |
| | | { |
| | | if (dt_StockInfo.InDate > dt_stockInfo.InDate) |
| | | { |
| | | dt_StockInfo.StockStatus = StockStatusEmun.ç§»åºä¸.ObjToInt(); |
| | | dt_stockInfo.Details.ForEach(x => |
| | | { |
| | | x.Status = StockStatusEmun.ç§»åºä¸.ObjToInt(); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | List<Dt_StockInfoDetail> stockInfoDetails = dt_StockInfos.Where(x => x.StockStatus == StockStatusEmun.ç§»åºä¸.ObjToInt()).Select(x => x.Details).ToList().OfType<Dt_StockInfoDetail>().ToList();//å¾
ç§»åºè¯¦æ
|
| | | foreach (var stockInfoDetail in stockInfoDetails.GroupBy(x => x.MaterielCode)) |
| | | { |
| | | foreach (var item in stockInfoDetail.GroupBy(x => x.BatchNo)) |
| | | { |
| | | var locationInfo = _basicService.LocationInfoService.AssignLocation(item.Count());//éæ°åé
è´§ä½ |
| | | var stockInfo = dt_StockInfos.Where(x => x.Id == item.First().StockId).First(); |
| | | foreach (var infoDetail in item) |
| | | { |
| | | Dt_Task task = new Dt_Task() |
| | | { |
| | | CurrentAddress = stockInfo.LocationCode, |
| | | Grade = 2, |
| | | PalletCode = stockInfo.PalletCode, |
| | | NextAddress = locationInfo.LocationCode, |
| | | Roadway = locationInfo.RoadwayNo, |
| | | SourceAddress = stockInfo.LocationCode, |
| | | TargetAddress = locationInfo.LocationCode, |
| | | TaskState = InTaskStatusEnum.RelocationNew.ObjToInt(), |
| | | TaskType = TaskTypeEnum.Relocation.ObjToInt(), |
| | | TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), |
| | | }; |
| | | taskList.Add(task); |
| | | } |
| | | stockInfo.LocationCode = locationInfo.LocationCode; |
| | | } |
| | | } |
| | | } |
| | | tasks.AddRange(taskList); |
| | | #endregion |
| | | |
| | | BaseDal.AddData(tasks); |
| | | |
| | | #region ä¸åä»»å¡ç»WCS |
| | | List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(tasks); |
| | | var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>()); |
| | | if (ResultData.Result == null) throw new Exception($"åWCSä¸ååºåºä»»å¡è¶
æ¶"); |
| | | WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result); |
| | | if (content == null) throw new Exception($"ä¸ååºåºä»»å¡WCSæ ååº"); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | #endregion |
| | | |
| | | if (stockInfos != null && outboundOrderDetails != null && outStockLockInfos != null && locationInfos != null) |
| | | { |
| | | WebResponseContent content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); |
| | | content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); |
| | | |
| | | if (content.Status) |
| | | { |