From 1a02791b12af1c7dc0a7816c9ae60f5ede442de4 Mon Sep 17 00:00:00 2001 From: 刘磊 <1161824510@qq.com> Date: 星期五, 15 十一月 2024 14:32:16 +0800 Subject: [PATCH] 1 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 153 ++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 126 insertions(+), 27 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 5367dc9..dbe3053 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 @@ -34,6 +34,7 @@ private readonly IProcessApplyService _processApplyService; //宸ヨ壓璺嚎 private readonly IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙 private readonly IAgingInOrOutInputService _agingInOrOutInputService; //闈欑疆\闄堝寲 + private readonly IProductionRepository _productionRepository; //鐢熶骇 public Dt_TaskService(IDt_TaskRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, @@ -54,7 +55,8 @@ IProcessApplyService processApplyService, IDt_AreaInfoRepository areaInfoRepository, IAgingInOrOutInputService agingInOrOutInputService, - IStockInfoDetailRepository stockInfoDetailRepository) : base(BaseDal) + IStockInfoDetailRepository stockInfoDetailRepository, + IProductionRepository productionRepository) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; _outOrderRepository = outOrderRepository; @@ -75,6 +77,7 @@ _areaInfoRepository = areaInfoRepository; _agingInOrOutInputService = agingInOrOutInputService; _stockInfoDetailRepository = stockInfoDetailRepository; + _productionRepository = productionRepository; } #region 澶栭儴鎺ュ彛鏂规硶 @@ -121,6 +124,7 @@ private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, ResponseEqptRunDto info) { + // TODO Value鍊兼牴鎹甅OM涓嬪彂鐨勯潤缃椂闂村埌褰撳墠鏃堕棿鐨勫垎閽熸暟 return new AgingOutputDto { OpFlag = 1, @@ -132,16 +136,16 @@ SlotNo = x.OrderNo.ToInt32(), SerialNo = x.SerialNumber, SerialNoResult = true, - ParameterInfo = info.ParameterInfo.Select(x => new ParameterInfo() + ParameterInfo = info.ParameterInfo.Select(y => new ParameterInfo() { - LowerLomit = x.LowerControlLimit, - UpperLimit = x.UpperControlLimit, - ParameterResult = x.EquipmentAvailabilityFlag, - ParameterCode = x.ParameterCode, - ParameterDesc = x.Description, - TargetValue = x.TargetValue, - Value = (DateTime.Now - stock.CreateDate).TotalMinutes.ToString(), - DefectCode = x.UOMCode + LowerLomit = y.LowerControlLimit, + UpperLimit = y.UpperControlLimit, + ParameterResult = y.EquipmentAvailabilityFlag, + ParameterCode = y.ParameterCode, + ParameterDesc = y.Description, + TargetValue = y.TargetValue, + Value = ( DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(), + DefectCode = y.UOMCode }).ToList() }).ToList() }; @@ -249,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) { // 鍒濆鍖栧搷搴斿唴瀹� @@ -342,7 +431,8 @@ }; var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result; var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()); - stock.Remark = respone.LinedProcessFeedbackTime; + stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime; + stock.SpecialParameterDuration = respone.SpecialParameterDuration; // 璁板綍鏃ュ織 LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}"); @@ -452,7 +542,16 @@ var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); if (result.SerialNos.Count <= 0) 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("鏂欐灞炴�т笉瀛樺湪"); + + // 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭� + var boxing = await CreateBoxingInfo(result, input.PalletCode); + if (boxing == null) return content.Error("缁勭洏澶辫触"); // 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾� ProcessApplyDto process = await GetProcessApplyAsync(result); @@ -460,11 +559,18 @@ // 濡傛灉process涓簄ull锛屽垯杩斿洖content if (process == null) return content; - // 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴� - var processResponse = await GetProcessResponseAsync(process, input.Position); + // 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇� + content = await _processApplyService.GetProcessApplyAsync(process); + // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null + if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触"); + + //// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴� + //var processResponse = await GetProcessResponseAsync(process, input.Position); + + List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" }; // 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟 - content = await CreateNewTask(input, processResponse); + content = await CreateNewTask(input, strings); if (content.Status) { var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); @@ -564,7 +670,7 @@ SerialNumber = serialNoObj.SerialNo, OrderNo = serialNoObj.PositionNo.ToString(), Status = serialNoObj.SerialNoStatus, - MaterielCode = serialNoObj.BindCode, + MaterielCode = result.BindCode, Remark = result.TrayBarcodePropertys.ToJsonString(), }).ToList() }; @@ -679,7 +785,8 @@ /// </summary> private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways) { - return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) + // 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) @@ -1184,20 +1291,12 @@ /// <param name="areaId">鍖哄煙ID</param> /// <param name="content">鍝嶅簲鍐呭</param> /// <returns></returns> - private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input, List<Dt_EquipmentProcess> process = null, int flag = 0) + private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input, List<string> process = null, int flag = 0) { WebResponseContent content = new WebResponseContent(); - List<string> strings = new List<string>(); - if (process != null) - { - strings = process.Select(x => x.EquipmentName).ToList(); - } - else - { - strings = input.Position.Split(',').ToList(); - } + // 鑾峰彇鐩爣鍦板潃 - string ToAddress = await GetRoadWayAsync(strings); + string ToAddress = await GetRoadWayAsync(process); // 鍒涘缓鏂颁换鍔″疄渚� var task = new Dt_Task -- Gitblit v1.9.3