From 3fb6bfc7d068cafa47906eb6f22d8e2989426f32 Mon Sep 17 00:00:00 2001 From: 陈勇 <chenyong@hnkhzn.com> Date: 星期二, 19 十一月 2024 09:03:17 +0800 Subject: [PATCH] 合并 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 152 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 130 insertions(+), 22 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 856cbac..177bc6e 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 @@ -144,7 +144,7 @@ ParameterCode = y.ParameterCode, ParameterDesc = y.Description, TargetValue = y.TargetValue, - Value = ( DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(), + Value = (DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(), DefectCode = y.UOMCode }).ToList() }).ToList() @@ -253,6 +253,91 @@ /// </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) { // 鍒濆鍖栧搷搴斿唴瀹� @@ -311,6 +396,7 @@ { MaterielCode = "绌烘墭鐩�", Id = 0, + Status = (int)StockStateEmun.宸插叆搴� } } }; @@ -322,6 +408,7 @@ private DtStockInfo CreateFullPalletStock(Dt_Task task, DtLocationInfo locationInf, DtBoxingInfo boxing) { var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>(); + boxDetail.ForEach(x => { x.Status = (int)StockStateEmun.宸插叆搴�; }); var stock = new DtStockInfo() { PalletCode = task.PalletCode, @@ -444,6 +531,7 @@ { Software = "WMS", TrayBarcode = input.PalletCode, + //EquipmentCode = "EQ_CWJZ01" EquipmentCode = "ECH001-B" }; @@ -459,9 +547,9 @@ return content.Error(result.MOMMessage); // TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭� - var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); - if (productions.Count <= 0) - return content.Error("鏂欐灞炴�т笉瀛樺湪"); + //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); + //if (productions.Count <= 0) + // return content.Error("鏂欐灞炴�т笉瀛樺湪"); // 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭� @@ -485,7 +573,7 @@ List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" }; // 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟 - content = await CreateNewTask(input, strings); + content = await CreateNewTask(input, strings); if (content.Status) { var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); @@ -557,7 +645,11 @@ return content.OK(data: task); } - return await CreateNewTask(input, null, 1); + // 鑾峰彇鐩爣鍦板潃 + List<string> strings = input.Position == "1016" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" }; + + return await CreateNewTask(input, strings, 1); + //return await CreateNewTask(input, null, 1); } catch (Exception) { @@ -658,12 +750,20 @@ { // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅 DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound - ? QueryStockInfoForRealTray(areaCode, roadways) - : QueryStockInfoForEmptyTray(areaCode, roadways); + ? QueryStockInfoForRealTrayAsync(areaCode, roadways).Result + : QueryStockInfoForEmptyTrayAsync(areaCode, roadways).Result; if (stockInfo == null) { return content.Error("搴撳瓨淇℃伅涓嶅瓨鍦�"); + } + + // 鏂板閲嶅浠诲姟鏍¢獙 + var hasTask = BaseDal.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); + if (hasTask != null) + { + WMSTaskDTO taskDTO1 = CreateTaskDTO(hasTask); + return content.OK("宸插瓨鍦ㄧ┖鐩樺嚭搴撲换鍔�", data: taskDTO1); } // 鍒涘缓鏂颁换鍔″疄渚� @@ -698,26 +798,33 @@ /// <summary> /// 鏌ヨ瀹炵洏搴撳瓨淇℃伅 /// </summary> - private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways) + private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> roadways) { // TODO鏃堕棿鏍规嵁MOM绯荤粺閰嶇疆鐨勫嚭搴撴椂闂存潵鑾峰彇,鏆傛椂涓嶇煡閬揗OM杩斿洖鐨勬椂闂存槸浠�涔堟墍浠ヨ繖閲屾祴璇曟椂鍊欏湪鏀� - return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && Convert.ToDateTime(x.LinedProcessFeedbackTime) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) - .Includes(x => x.LocationInfo) - .Includes(x => x.StockInfoDetails) - .OrderBy(x => x.CreateDate) - .First(); + //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 result = await _stockInfoRepository.QueryFirstNavAsync(x => + x.AreaCode == areaCode && + Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now && + x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && + roadways.Contains(x.LocationInfo.RoadwayNo) && + x.StockInfoDetails != null && x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.宸插叆搴�)); + return result; } /// <summary> /// 鏌ヨ绌虹洏搴撳瓨淇℃伅 /// </summary> - private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways) + private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, List<string> roadways) { - return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo)) - .Includes(x => x.LocationInfo) - .Includes(x => x.StockInfoDetails) - .OrderBy(x => x.CreateDate) - .First(); + //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 result = await _stockInfoRepository.QueryFirstNavAsync(x => + x.StockInfoDetails != null && x.StockInfoDetails.Any(detail => detail.MaterielCode == "绌烘墭鐩�") && + roadways.Contains(x.LocationInfo.RoadwayNo) && + x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.宸插叆搴�) && + x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock); + return result; } /// <summary> @@ -1211,7 +1318,8 @@ WebResponseContent content = new WebResponseContent(); // 鑾峰彇鐩爣鍦板潃 - string ToAddress = await GetRoadWayAsync(process); + //string ToAddress = await GetRoadWayAsync(process); + string ToAddress = await GetRoadWayAsync(input, process); // 鍒涘缓鏂颁换鍔″疄渚� var task = new Dt_Task @@ -1301,7 +1409,7 @@ /// <param name="Direction">鏂瑰悜</param> /// <param name="area">鍏崇郴鍖哄煙</param> /// <returns></returns> - public async Task<string> GetRoadWayAsync(List<string> process) + 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) -- Gitblit v1.9.3