From 7f08d970686ee8acd0a6061619a1f5206fc48bae Mon Sep 17 00:00:00 2001 From: 陈勇 <chenyong@hnkhzn.com> Date: 星期三, 20 十一月 2024 09:26:28 +0800 Subject: [PATCH] 2024-11-20 提交更新,查询空盘与实盘逻辑更改 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 162 +++++++++++++++--------------------------------------- 1 files changed, 45 insertions(+), 117 deletions(-) diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs index 73feaf9..0344c68 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs @@ -130,7 +130,7 @@ { OpFlag = 1, Software = "WMS", - EquipmentCode = "ECH001-B", + EquipmentCode = "24MEJQ08-1091", TrayBarcode = stock.PalletCode, SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto { @@ -254,91 +254,6 @@ /// </summary> /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param> /// <returns>杩斿洖缁撴灉闆�</returns> - //public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task) - //{ - // WebResponseContent content = new WebResponseContent(); - // try - // { - // var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode); - // var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress); - - // locationInf.LocationStatus = (int)LocationEnum.InStock; - - // // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷 - // var taskHty = CreateHistoricalTask(task); - - // // 鍒涘缓搴撳瓨瀹炰緥妯″瀷 - // DtStockInfo stock; - // if (boxing == null) - // { - // // 绌烘墭鐩� - - // stock = new DtStockInfo() - // { - // PalletCode = task.PalletCode, - // LocationCode = task.TargetAddress, - // CreateDate = DateTime.Now, - // Creater = "system", - // IsFull = boxing.IsFull, - // StockInfoDetails = new List<DtStockInfoDetail>() - // { - // new DtStockInfoDetail() - // { - // MaterielCode = "绌烘墭鐩�", - // Id = 0, - // } - // } - // }; - // } - // else - // { - // // 瀹炵洏 - // var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>(); - // // 鍒涘缓搴撳瓨瀹炰緥妯″瀷 - // stock = new DtStockInfo() - // { - // PalletCode = task.PalletCode, - // LocationCode = task.TargetAddress, - // CreateDate = DateTime.Now, - // Creater = "system", - // IsFull = boxing.IsFull, - // StockInfoDetails = boxDetail, - // }; - - // AgingInputDto agingInputDto = new AgingInputDto() - // { - // SerialNos = boxing.BoxingInfoDetails - // .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo }) - // .ToList(), - // TrayBarcode = task.PalletCode, - // OpFlag = 1 - // }; - // var result = await _agingInOrOutInputService.GetOCVInputAsync(agingInputDto); - // stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime; - - // LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}"); - - // } - - // // 鎵ц鏁版嵁搴撲簨鍔� - // bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId); - // if (isResult) - // content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛"); - // else - // content.Error("鍏ュ簱浠诲姟瀹屾垚澶辫触"); - // } - // catch (Exception err) - // { - // Console.WriteLine(err.Message.ToString()); - // } - // return content; - //} - - /// <summary> - /// 瀹屾垚鍏ュ簱浠诲姟 - /// </summary> - /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param> - /// <returns>杩斿洖缁撴灉闆�</returns> public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task) { // 鍒濆鍖栧搷搴斿唴瀹� @@ -383,6 +298,8 @@ /// </summary> private DtStockInfo CreateEmptyPalletStock(Dt_Task task, DtLocationInfo locationInf) { + var loation = _locationRepository.QueryFirst(x => x.RoadwayNo == task.Roadway && x.LocationCode == task.TargetAddress); + var area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId); return new DtStockInfo() { PalletCode = task.PalletCode, @@ -390,7 +307,8 @@ CreateDate = DateTime.Now, Creater = "system", IsFull = false, - AreaCode = task.Roadway, + AreaCode = area.AreaCode, + LocationId = loation.Id, StockInfoDetails = new List<DtStockInfoDetail>() { new DtStockInfoDetail() @@ -408,6 +326,8 @@ /// </summary> private DtStockInfo CreateFullPalletStock(Dt_Task task, DtLocationInfo locationInf, DtBoxingInfo boxing) { + var loation = _locationRepository.QueryFirst(x => x.RoadwayNo == task.Roadway && x.LocationCode == task.TargetAddress); + var area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId); var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>(); boxDetail.ForEach(x => { x.Status = (int)StockStateEmun.宸插叆搴�; }); var stock = new DtStockInfo() @@ -417,7 +337,8 @@ CreateDate = DateTime.Now, Creater = "system", IsFull = boxing.IsFull, - AreaCode = task.Roadway, + AreaCode = area.AreaCode, + LocationId = loation.Id, StockInfoDetails = boxDetail, }; @@ -429,7 +350,7 @@ .ToList(), TrayBarcode = task.PalletCode, OpFlag = 1, - EquipmentCode = "ECH001-B", + EquipmentCode = "24MEJQ08-1091", Software = "WMS" }; var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result; @@ -438,6 +359,7 @@ stock.SpecialParameterDuration = respone.SpecialParameterDuration; //2024骞�11鏈�16鏃ワ細鏂板瀛楁璁$畻搴斿嚭搴撴椂闂� stock.OutboundTime = Convert.ToDateTime(respone.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(respone.SpecialParameterDuration)); + stock.ProductionLine = respone.ProductionLine; // 璁板綍鏃ュ織 LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}"); @@ -529,13 +451,14 @@ return content.OK(data: taskDTO); } } + // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪�� TrayCellsStatusDto trayCells = new TrayCellsStatusDto() { Software = "WMS", TrayBarcode = input.PalletCode, //EquipmentCode = "EQ_CWJZ01" - EquipmentCode = "ECH001-B" + EquipmentCode = "24MEJQ08-1091" }; // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺� @@ -692,7 +615,7 @@ // 鍒涘缓涓�涓狿rocessApplyDto瀵硅薄锛屽苟璧嬪�� return new ProcessApplyDto() { - EquipmentCode = "ECH001-B", + EquipmentCode = "24MEJQ08-1091", Software = "WMS", //WipOrderNo = result.BindCode, SerialNos = content.SerialNos.Select(item => new SerialNos @@ -803,19 +726,19 @@ /// </summary> private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> roadways) { - // TODO鏃堕棿鏍规嵁MOM绯荤粺閰嶇疆鐨勫嚭搴撴椂闂存潵鑾峰彇,鏆傛椂涓嶇煡閬揗OM杩斿洖鐨勬椂闂存槸浠�涔堟墍浠ヨ繖閲屾祴璇曟椂鍊欏湪鏀� - //return _stockInfoRepository.QueryFirstNavAsync(x => x.AreaCode == areaCode && Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now - // && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo) && x.StockInfoDetails.Any(x => x.Status == (int)StockStateEmun.宸插叆搴�) && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).Result; + var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode); - var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => - x.AreaCode == areaCode && - Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now) - .Includes(x => x.LocationInfo) - .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) - .Includes(x => x.StockInfoDetails) - .Where(x => x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.宸插叆搴�)) - .OrderBy(x => x.CreateDate) - .FirstAsync(); + var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>() + .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo + .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails + .Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢 + .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢 + .OrderBy(x => x.OutboundTime) // 鎺掑簭 + .FirstAsync(); // 鑾峰彇绗竴涓厓绱� + + //var firstOrDefault = result.FirstOrDefault(x => roadways.Contains(x.LocationInfo.RoadwayNo)); // 鏌ユ壘绗竴涓尮閰嶇殑鍏冪礌 + //var firstOrDefault = result[0]; // 鏌ユ壘绗竴涓尮閰嶇殑鍏冪礌 + //return firstOrDefault; return result; } @@ -824,14 +747,19 @@ /// </summary> private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, List<string> roadways) { - //return _stockInfoRepository.QueryFirstNavAsync(x => x.StockInfoDetails.Any(x => x.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo) && x.StockInfoDetails.Any(x => x.Status == (int)StockStateEmun.宸插叆搴�) && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).Result; + var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode); + var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>() - .Includes(x => x.LocationInfo) - .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) - .Includes(x => x.StockInfoDetails) - .Where(x => x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.宸插叆搴� && detail.MaterielCode == "绌烘墭鐩�")) - .OrderBy(x => x.CreateDate) - .FirstAsync(); + .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo + .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails + .Where(x => x.AreaCode == areaCode && x.IsFull == false) + .Where(x => x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�")) + .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢 + .OrderBy(x => x.CreateDate) // 鎺掑簭 + .FirstAsync(); // 杞崲涓哄垪琛� + + //var firstOrDefault = result[0]; // 鏌ユ壘绗竴涓尮閰嶇殑鍏冪礌 + //return firstOrDefault; return result; } @@ -897,7 +825,7 @@ if (task == null) return content.Error("鏈壘鍒颁换鍔�"); - if (taskState == (int)TaskOutStatusEnum.Line_OutFinish) + if (taskState == (int)TaskOutStatusEnum.Line_OutFinish || taskState == (int)TaskOutStatusEnum.SC_OutFinish) { var taskHty = CreateHistoricalTask(task); await _unitOfWorkManage.UseTranAsync(async () => @@ -1058,7 +986,7 @@ /// <returns>鏄惁鏇存柊鎴愬姛</returns> public async Task<bool> Update(Dt_Task model) { - return await BaseDal.Update(model); + return await BaseDal.UpdateDataAsync(model); } /// <summary> @@ -1068,7 +996,7 @@ /// <returns>鏄惁鏇存柊鎴愬姛</returns> public async Task<bool> Update(List<Dt_Task> models) { - return await BaseDal.Update(models); + return await BaseDal.UpdateDataAsync(models); } /// <summary> @@ -1088,7 +1016,7 @@ /// <returns></returns> public async Task<Dt_Task> GetByLocation(string locationID) { - return await Db.Queryable<Dt_Task>().Where(x => x.SourceAddress == locationID).FirstAsync(); + return await BaseDal.QueryFirstAsync(x => x.SourceAddress == locationID); } /// <summary> @@ -1098,7 +1026,7 @@ /// <returns></returns> public async Task<Dt_Task> GetByTaskNum(int taskNum) { - return await Db.Queryable<Dt_Task>().Where(x => x.TaskNum == taskNum).FirstAsync(); + return await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum); } #endregion 鍐呴儴璋冪敤鏂规硶 @@ -1383,7 +1311,7 @@ /// <summary> /// 鏌ユ壘璐т綅 /// </summary> - /// <param name="areaId">鍖哄煙涓婚敭</param> + /// <param name="IsFull">鍖哄煙涓婚敭</param> /// <param name="roadWay">宸烽亾</param> /// <returns></returns> public async Task<DtLocationInfo> GetLocationDistributeAsync(string roadWay, bool IsFull = true) @@ -1429,7 +1357,7 @@ public async Task<string> GetRoadWayAsync(RequestTaskDto input, List<string> process) { var minGroup = _locationRepository.QueryData(x => process.Contains(x.RoadwayNo) && x.LocationStatus == (int)LocationEnum.Free) - .GroupBy(x => x.RoadwayNo) + .GroupBy(x => x.RoadwayNo) .OrderByDescending(g => g.Count()) // 鏍规嵁姣忎釜缁勭殑鍏冪礌鏁伴噺鎺掑簭 .First(); // 鍙栧嚭鏁伴噺鏈�澶氱殑缁� -- Gitblit v1.9.3