From 8c8532db8fc7fa76b7fe4c254a36d67c6af24ace Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期三, 11 六月 2025 14:46:33 +0800 Subject: [PATCH] 添加物料编码字段并更新查询逻辑 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs | 159 +++++++++++++++++++++++++++++++++++----------------- 1 files changed, 107 insertions(+), 52 deletions(-) diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs index 4e9a194..2e8dd63 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs @@ -1,21 +1,13 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Metadata; -using System.Text; -using System.Threading.Tasks; +锘縰sing Masuit.Tools; +using SqlSugar; using WIDESEA_Core.Const; -using WIDESEA_Core.DB.Models; using WIDESEA_DTO.MOM; using WIDESEA_DTO.WMS; -using WIDESEA_DTO; -using WIDESEA_Model.Models; -using WIDESEA_Repository; -using WIDESEAWCS_BasicInfoRepository; -using Masuit.Tools; +using WIDESEA_StorageTaskRepository; + +//using WIDESEAWCS_Model.Models; namespace WIDESEA_StorageTaskServices; - public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService { @@ -50,36 +42,75 @@ private async Task<WebResponseContent> ProcessOCVB(DtBoxingInfo boxing, Dt_AreaInfo area, RequestTaskDto input) { WebResponseContent content = new WebResponseContent(); - // 鍒ゆ柇闇�涓嶉渶瑕佸幓鍖呰锛屼笉闇�瑕佸氨鍘诲父娓╀笁 - var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache"); - var station = stationManagers.Select(x => x.stationChildCode).ToList(); + try + { + // 鍒ゆ柇闇�涓嶉渶瑕佸幓鍖呰锛屼笉闇�瑕佸氨鍘诲父娓╀笁 + var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache" && x.productLine == input.ProductionLine); - // 鑾峰彇WCSip鍦板潃鐩稿叧閰嶇疆 - var wcsIpAddrss = GetWCSIpAddress(); - if (wcsIpAddrss == null) - { - throw new InvalidOperationException("WCS IP 鏈厤缃�"); - } + var STATION = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position); - var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result; - content = JsonConvert.DeserializeObject<WebResponseContent>(abc); - if (content.Data.ObjToInt() > 0) - { - // 閫佽嚦鍖呰 - List<string> strings = stationManagers.Where(x => x.stationType == 0).Select(x => x.Roadway).ToList(); - return await CreateNewTask(input, strings, 3); - } - else - { - var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker"); - var strings = config.ConfigValue.Split(',').ToList(); - // 鍏ュ簱閫佽嚦甯告俯3 - var resultContent = await CreateNewTask(input, strings); - if (resultContent.Status) + //var station = stationManagers.Select(x => x.stationChildCode).ToList(); + + //// 鑾峰彇WCSip鍦板潃鐩稿叧閰嶇疆 + var wcsIpAddrss = GetWCSIpAddress(); + //if (wcsIpAddrss == null) + //{ + // throw new InvalidOperationException("WCS IP 鏈厤缃�"); + //} + + //var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result; + //content = JsonConvert.DeserializeObject<WebResponseContent>(abc); + //var num = content.Data.ObjToInt(); + + //濡傛灉褰撳墠搴撳唴瀛樺湪姣斿綋鍓嶆椂闂寸殑瀵瑰簲浜х嚎鐨勬枡 鍒欏叆搴撹嚦甯告俯3 + DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(x => x.AreaCode == "CWSC3" && x.IsFull == true && x.ProductionLine == STATION.productLine && x.OutboundTime < DateTime.Now); + if (stockInfo != null) { - await _boxingInfoRepository.AddDataNavAsync(boxing); + var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker"); + var strings = config.ConfigValue.Split(',').ToList(); + // 鍏ュ簱閫佽嚦甯告俯3 + var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings); + if (resultContent.Status) + { + await _boxingInfoRepository.AddDataNavAsync(boxing); + } + return resultContent; } - return resultContent; + + // TODO 鍒ゆ柇鍦ㄩ�旀暟閲� + + var needBarcode = await SqlSugarHelper.DbWCS.Queryable<dt_needBarcode>().FirstAsync(x => x.productLine == STATION.productLine && x.fromArea == "CW"); + var needCount = BaseDal.QueryData(x => x.TargetAddress == needBarcode.toArea).Count(); + //var count = BaseDal.QueryData(x => x.TargetAddress == stationManagers[0].Roadway).Count; + if (needCount < needBarcode.cacheNum) + { + // 閫佽嚦鍖呰 + List<string> strings = stationManagers.Where(x => x.stationType == 0 && x.productLine == input.ProductionLine).Select(x => x.Roadway).ToList(); + var x = await SqlSugarHelper.DbWCS.Updateable<dt_needBarcode>() + .SetColumns(x => x.inLineNum == x.inLineNum + 1) + .Where(x => x.id == needBarcode.id).ExecuteCommandHasChangeAsync(); + ConsoleHelper.WriteSuccessLine($"鍦ㄩ�旀暟閲忔坊鍔爗(x ? "鎴愬姛" : "澶辫触")}鏁伴噺+1,褰撳墠宸ュ簭{boxing.ProcessCode},浜х嚎{input.ProductionLine}"); + LogFactory.GetLog("OCVB").InfoFormat(true, $"鍦ㄩ�旀暟閲忔坊鍔爗(x ? "鎴愬姛" : "澶辫触")}鏁伴噺+1,褰撳墠宸ュ簭{boxing.ProcessCode},浜х嚎{input.ProductionLine}", "鏃犲弬鏁�"); + return await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings, 3); + } + else + { + var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker"); + var strings = config.ConfigValue.Split(',').ToList(); + // 鍏ュ簱閫佽嚦甯告俯3 + var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings); + if (resultContent.Status) + { + await _boxingInfoRepository.AddDataNavAsync(boxing); + } + return resultContent; + } + } + catch (Exception ex) + { + ConsoleHelper.WriteErrorLine(ex.Message); + LogFactory.GetLog("OCVB").InfoFormat(true, $"锛屽紓甯镐俊鎭細{ex.Message},{ex.StackTrace}", "鏃犲弬鏁�"); + return content.Error(ex.Message); } } @@ -107,9 +138,13 @@ if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触"); var resultProcessApply = JsonConvert.DeserializeObject<ResultProcessApply>(content.Data.ToString()); - if (!resultProcessApply.Success) return content.Error("宸ヨ壓鐢宠澶辫触"); + if (!resultProcessApply.Success) + { + return await HandleErrorCells(input, area); + //return content.Error("宸ヨ壓鐢宠澶辫触"); + } - var number = resultProcessApply.ProcessInfo.Where(x => x.ProcessCode == boxing.ProcessCode).FirstOrDefault().Number.ToInt32(); + var number = resultProcessApply.ProcessInfo.Where(x => x.ProcessCode.Contains(boxing.ProcessCode)).FirstOrDefault().Number.ToInt32(); foreach (var item in resultProcessApply.ProcessInfo) { if (item.Number.ToInt32() == number + 1) @@ -124,9 +159,22 @@ { throw new Exception("鏈壘鍒板叆搴撶珯鍙伴厤缃�"); } + //List<string> strings; + //if (areaIn == "GWSC1") + //{ + // strings = new List<string> + // { + // (boxing.ProductionLine != null && boxing.ProductionLine == "ZJ-7") ? "GWSC1" : "GWSC2" + // }; + //} + //else + //{ + // strings = stationManagers.Roadway.Split(',').ToList(); + //} + List<string> strings = stationManagers.Roadway.Split(',').ToList(); - var resultContent = await CreateNewTask(input, strings); + var resultContent = await CreateNewTask(input, result.ProductionLine, boxing.ProcessCode, strings); if (resultContent.Status) { var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); @@ -140,14 +188,19 @@ { case "CH01": return "CH001"; + case "JZ01": return "JZ001"; + case "GW01": return "GWSC1"; + case "CW01": return "CWSC1"; + case "CW02": return "CWSC2"; + default: return string.Empty; } @@ -168,21 +221,22 @@ /// <summary> /// 鐢佃姱NG閫佽嚦NG鍙� /// </summary> - private async Task<WebResponseContent> HandleErrorCells(RequestTaskDto input, Dt_AreaInfo area, List<SerialNoDto> serialNosError) + private async Task<WebResponseContent> HandleErrorCells(RequestTaskDto input, Dt_AreaInfo area, List<SerialNoDto> serialNosError = null) { WebResponseContent content = new WebResponseContent(); // TODO 鍒涘缓浠诲姟閫佽嚦NG鎺掑嚭鍙� var stationManagers = _stationManagerRepository.QueryData(x => x.stationType == 1 && x.stationChildCode == input.Position && x.stationArea == area.AreaCode).FirstOrDefault(); - if (stationManagers == null) + if (stationManagers == null) { throw new Exception("鏈壘鍒癗G鍏ュ簱绔欏彴閰嶇疆"); } - List<string> NGStation = stationManagers.Roadway.Split(',').ToList(); - if (NGStation.Count <= 0) - { - NGStation = stationManagers.stationNGChildCode.Split(',').ToList(); - } - content = await CreateNewTask(input, NGStation, 2); + //List<string> NGStation = stationManagers.Roadway.Split(',').ToList(); + //if (NGStation.Count <= 0) + //{ + // NGStation = stationManagers.stationNGChildCode.Split(',').ToList(); + //} + List<string> NGStation = stationManagers.stationNGChildCode.Split(',').ToList(); + content = await CreateNewTask(input, input.ProductionLine, "", NGStation, 2); return content.Error("瀛樺湪寮傚父鐢佃姱"); } @@ -212,7 +266,8 @@ TargetAddress = task.Roadway, TaskState = task.TaskState.Value, Id = 0, - TaskType = task.TaskType + TaskType = task.TaskType, + ProductionLine = task.ProductionLine, }; return new WebResponseContent().OK(data: taskDTO); } @@ -240,4 +295,4 @@ { return await _areaInfoRepository.QueryFirstAsync(x => x.Spare1.Contains(position)); } -} +} \ No newline at end of file -- Gitblit v1.9.3