diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs index 197a304f..e151de5a 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs @@ -2,6 +2,7 @@ using System.Data; using System.Dynamic; using System.Security.Policy; +using System.Text; using Aop.Api.Domain; using JNPF; using JNPF.Common.Cache; @@ -193,6 +194,34 @@ namespace Tnb.ProductionMgr } } } + + private static readonly Dictionary s_logLevelMap = new() + { + [LogLevel.Debug] = "DBG", + [LogLevel.Information] = "INF", + [LogLevel.Warning] = "WRN", + [LogLevel.Error] = "ERR", + }; + protected ILogger Logger => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/custom{DateTime.Now:yyyyMMdd}.log", cfgOpts => + { + + //cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff"; + cfgOpts.MessageFormat = (logMsg) => + { + var logLevel = s_logLevelMap[logMsg.LogLevel]; + var sb = new StringBuilder(); + _ = sb.Append($"[{logLevel}] "); + _ = sb.Append($"{logMsg.LogName} "); + _ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} "); + _ = sb.Append($"#{logMsg.EventId.Id} "); + _ = sb.Append(logMsg.Message + " "); + _ = sb.Append(logMsg.Exception?.ToString()); + return sb.ToString(); + }; + + })).CreateLogger(this.GetType()); + + //扫码入库 private void ScanInStock(object state) { @@ -207,9 +236,14 @@ namespace Tnb.ProductionMgr bool flag = _redisData.HashExist(strs[0], strs[1]).Result; string data = _redisData.GetHash(strs[0], strs[1]).Result; JObject? res = JsonConvert.DeserializeObject(data); + + bool result = res != null && res["Value"] != null ? res.Value("Value") : false; if (result) { + Logger.LogInformation($"八工位扫到码发送入库请求:{res}"); + + Dictionary dicCommand = new(StringComparer.OrdinalIgnoreCase) { ["DevName"] = strs[0], @@ -224,7 +258,7 @@ namespace Tnb.ProductionMgr WmsCarryH? carry = _repository.AsSugarClient().Queryable().Single(it => it.carry_code == coderesult); if (carry != null) { - if (_repository.AsSugarClient().Queryable().Where(p => p.carry_id == carry.id && p.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID ).Any()) + if (_repository.AsSugarClient().Queryable().Where(p => p.carry_id == carry.id && p.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID ).Any()) continue; var WmsCarryCode = _repository.AsSugarClient().Queryable().Single(it => it.carry_id == carry.id); if (WmsCarryCode != null) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs index 95c5f19c..0e4f3d80 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs @@ -434,6 +434,8 @@ namespace Tnb.WarehouseMgr { _ = await _db.Deleteable(elevatorQueueItem).ExecuteCommandAsync(); } + + await _wareHouseService.SsxControl(disTask, "LOAD"); } else if (input.action == "UNLOAD") diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 4914e880..d7e58eb2 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -247,6 +247,8 @@ namespace Tnb.WarehouseMgr [AllowAnonymous] public async Task CheckPut(CheckPutInput input) { + Logger.Information("联合请求CheckPut接口传入参数为:" + JsonConvert.SerializeObject(input)); + Dictionary putdic = new Dictionary(); putdic.Add("SSX-011-006", new string[] { "YTCS", "AllowEmptyIn_CS06" }); @@ -269,10 +271,12 @@ namespace Tnb.WarehouseMgr throw new AppFriendlyException("点位" + input.targetName + "不存在", 500); } string data = await _redisData.GetHash(strs[0], strs[1]); + Logger.Information("联合请求CheckPut接口查询X2Server数据:" + data); JObject? res = JsonConvert.DeserializeObject(data); bool result = res != null && res["Value"] != null ? res.Value("Value") : false; if (!result) throw new AppFriendlyException("点位" + input.targetName + "不可放", 500); + Logger.Information("联合请求CheckPut接口结果:CTU可放货" + data); } /// @@ -347,6 +351,8 @@ namespace Tnb.WarehouseMgr } public async Task SsxControl(WmsDistaskH disTask, string action) { + Logger.Information($"输送线控制SsxControl传入参数: {JsonConvert.SerializeObject(disTask)} {action}"); + Dictionary putdic = new Dictionary(); Dictionary getdic = new Dictionary(); getdic.Add("SSX-021-005", new string[] { "YTCS", "FullOut_CS05Done", "true" }); @@ -393,7 +399,7 @@ namespace Tnb.WarehouseMgr ["TagName"] = strarr[1], ["Value"] = strarr[2], }; - Logger.Information($"SsxControlLOAD:{dicCommand}"); + Logger.Information($"SsxControlLOAD:{JsonConvert.SerializeObject(dicCommand)}"); var str = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand); Logger.Information($"SsxControlLOAD:{str}"); } @@ -448,6 +454,8 @@ namespace Tnb.WarehouseMgr }, true) .ToListAsync(); + + //List executedPreTasks = await db.Queryable().Where(it => it.status != WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && it.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID).ToListAsync(); List agvElevatorTasks = preTasks @@ -693,8 +701,11 @@ namespace Tnb.WarehouseMgr List DistaskCodes = new List(); var inCtuExec = new List(); var outCtuExec = new List(); + foreach (var item in InTasks) { + + /* if (indic.Keys.Contains(item.startlocation_code)) { @@ -708,8 +719,8 @@ namespace Tnb.WarehouseMgr if (!result) continue; }*/ - - WmsDistaskH distaskH = item.Adapt(); + + WmsDistaskH distaskH = item.Adapt(); distaskH.id = SnowflakeIdHelper.NextId(); distaskH.status = WmsWareHouseConst.TASK_BILL_STATUS_DZX_ID; distaskH.is_chain = 1; @@ -735,7 +746,11 @@ namespace Tnb.WarehouseMgr inCtuExec.AddRange(DistaskHs.Where(p => p.groups == distaskH.groups).ToList()); } } - List preTaskCodes = TaskCodes.FindAll(x => x.bill_id == distaskH.pretask_id); + + + Logger.Information($"开始执行CTU入库任务: {JsonConvert.SerializeObject(distaskH)}"); + + List preTaskCodes = TaskCodes.FindAll(x => x.bill_id == distaskH.pretask_id); List disTaskCodes = preTaskCodes.Adapt>(); disTaskCodes.ForEach(x => { @@ -775,6 +790,8 @@ namespace Tnb.WarehouseMgr outCtuExec.AddRange(DistaskHs.Where(p => p.groups == distaskH.groups).ToList()); } } + + Logger.Information($"开始执行CTU出库任务: {JsonConvert.SerializeObject(distaskH)}"); List preTaskCodes = TaskCodes.FindAll(x => x.bill_id == distaskH.pretask_id); List disTaskCodes = preTaskCodes.Adapt>(); disTaskCodes.ForEach(x => @@ -815,8 +832,8 @@ namespace Tnb.WarehouseMgr if (inCtuExec.Count > 0) { //呼叫ctu入库 - // await db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_RUNING_ID }).Where(it => inCtuExec.Select(p => p.id).ToList().Contains(it.id)).ExecuteCommandAsync(); - // await db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_START_ID }).Where(it => inCtuExec.Select(x => x.pretask_id).ToList().Contains(it.id)).ExecuteCommandAsync(); + // await db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_RUNING_ID }).Where(it => inCtuExec.Select(p => p.id).ToList().Contains(it.id)).ExecuteCommandAsync(); + // await db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_START_ID }).Where(it => inCtuExec.Select(x => x.pretask_id).ToList().Contains(it.id)).ExecuteCommandAsync(); CancellationTokenSource Ctu = new(); await CallingCTU(inCtuExec, Ctu.Token, 1); Ctu.Dispose(); @@ -1136,6 +1153,9 @@ namespace Tnb.WarehouseMgr { AgvRequestConfig requestCfg = App.Configuration.Build(); string url = requestCfg.AgvRequestUrls.CreateTaskChainUrl; + + Logger.Information($"Agv任务执行的disTasks:{JsonConvert.SerializeObject(disTasks)}"); + var taskChainCodeDic = disTasks.Where(t => !t.groups.IsNullOrWhiteSpace()).GroupBy(g => g.groups!) .ToDictionary(x => x.Key, x => x.Select(it => new { @@ -1146,6 +1166,8 @@ namespace Tnb.WarehouseMgr })); Logger.Information($"请求地址:{url}"); + Logger.Information($"Agv任务执行的taskChainCodeDic:{JsonConvert.SerializeObject(taskChainCodeDic)}"); + foreach ((string k, object v) in taskChainCodeDic) { var typeflag = false; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs index 221ecd44..eb7d5fa3 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs @@ -68,7 +68,6 @@ namespace Tnb.WarehouseMgr } private async Task WmsEmptyIn(VisualDevModelDataCrInput input) { - try { await _db.Ado.BeginTranAsync(); @@ -76,7 +75,7 @@ namespace Tnb.WarehouseMgr //入库取终点 InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; //test - BasLocation llll = await _db.Queryable().FirstAsync(it => it.location_code == _configuration["TestLocation"]); + //BasLocation llll = await _db.Queryable().FirstAsync(it => it.location_code == _configuration["TestLocation"]); List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); WmsPointH? sPoint = null; WmsPointH? ePoint = null; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs index 68fc62ed..73b790a2 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs @@ -179,7 +179,7 @@ namespace Tnb.WarehouseMgr } if (barcodes?.Count > 0) { - base.BarCodePrint(barcodes, 1,""); + base.BarCodePrint(barcodes, 1, "192.167.14.253"); } await _db.Ado.CommitTranAsync(); } diff --git a/apihost/Tnb.API.Entry/Configurations/ConnectionStrings.json b/apihost/Tnb.API.Entry/Configurations/ConnectionStrings.json index 04943f3c..cb1b9a74 100644 --- a/apihost/Tnb.API.Entry/Configurations/ConnectionStrings.json +++ b/apihost/Tnb.API.Entry/Configurations/ConnectionStrings.json @@ -2,7 +2,8 @@ "ConnectionStrings": { "ConfigId": "default", "DBType": "PostgreSQL", //MySql;SqlServer;Oracle;PostgreSQL;Dm;Kdbndp;Sqlite; - "Host": "192.168.11.109", + //"Host": "192.168.11.109", + "Host": "localhost", "Port": "5432", //"DBName": "tianyi_db", //"UserName": "postgres", diff --git a/common/Tnb.Common/Utils/Dijkstra.cs b/common/Tnb.Common/Utils/Dijkstra.cs index 355dbb79..098822a8 100644 --- a/common/Tnb.Common/Utils/Dijkstra.cs +++ b/common/Tnb.Common/Utils/Dijkstra.cs @@ -50,10 +50,14 @@ node1.ivex = p2; node1.weight = weight; // 将node1链接到"p1所在链表的末尾" - if (mVexs[p1].firstEdge == null) - mVexs[p1].firstEdge = node1; - else - LinkLast(mVexs[p1].firstEdge, node1); + if (p1 != -1) + { + if (p1 != -1 && mVexs[p1].firstEdge == null) + mVexs[p1].firstEdge = node1; + else + LinkLast(mVexs[p1].firstEdge, node1); + } + //// 初始化node2 //ENode node2 = new ENode(); //node2.ivex = p1;