.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/0dac82e9-3813-4381-97c5-6d5e9aea9264.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/45cd14e7-f5f2-43ad-8265-90a4e2beef30.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/aba42493-3f71-43ce-88ef-e0cd43be7a13.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/b46d38b7-1876-42b3-81c8-ac8f930ac5f8.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/cebd90f0-0f2c-46b9-a251-1039546e19c0.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/f899d85d-f665-4743-b2a9-9b2ea8fc7674.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/v17/HierarchyCache.v1.txtBinary files differ
HH.WCS.Mobox3.AnGang.csproj
@@ -310,7 +310,6 @@ <ItemGroup> <None Include=".editorconfig" /> <None Include="App.config" /> <None Include="config\config.comment.json" /> <None Include="config\config.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> Program.cs
@@ -23,7 +23,7 @@ //1.0 开启api Startup(); //2.0 开启tcp StartTcp(); //StartTcp(); //3.0 开启S7 //StartS7(); //4.0 开启Modbus @@ -76,9 +76,9 @@ /// </summary> private static void StartTcp() { var tcpServerIP = Settings.TCPServerIP; var tcpServerPort = Settings.TCPServerPort; new TcpServer(tcpServerIP, tcpServerPort); //var tcpServerIP = Settings.TCPServerIP; //var tcpServerPort = Settings.TCPServerPort; //new TcpServer(tcpServerIP, tcpServerPort); } api/ApiHelper.cs
@@ -23,13 +23,15 @@ var taskName = TaskName.产品入库; var db = new SqlHelper<object>().GetInstance(); var startAreas = Settings.Areas[AreaIndex.Q取货区]; try { // 起点位置必须:为空、无锁、启用、属于收发区域 var startLoc = db.Queryable<TN_Location>() .Where(a => a.S_CODE == model.StartLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") //.Where(a => a.N_CURRENT_NUM == 0) .Where(a => Settings.Areas[0].Contains(a.S_AREA_CODE)) // 收发区 .Where(a => startAreas.Contains(a.S_AREA_CODE)) .First(); if (startLoc == null) { @@ -150,13 +152,15 @@ var taskName = TaskName.产品入库; var db = new SqlHelper<object>().GetInstance(); var startAreas = Settings.Areas[AreaIndex.Q取货区]; try { // 起点位置必须:为空、无锁、启用、属于收发区域 var startLoc = db.Queryable<TN_Location>() .Where(a => a.S_CODE == model.StartLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") //.Where(a => a.N_CURRENT_NUM == 0) .Where(a => Settings.Areas[0].Contains(a.S_AREA_CODE)) // 收发区 .Where(a => startAreas.Contains(a.S_AREA_CODE)) .First(); if (startLoc == null) { @@ -261,6 +265,8 @@ var db = new SqlHelper<object>().GetInstance(); var endAreas = Settings.Areas[AreaIndex.H货架区]; try { // 任务号存在:终点货架和终点位置为空,且任务为产品入库(PDA) var task = db.Queryable<TN_Task>() @@ -305,7 +311,7 @@ .Where(a => a.S_CODE == model.EndLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") .Where(a => a.N_CURRENT_NUM == 0) .Where(a => Settings.Areas[1].Contains(a.S_AREA_CODE)) .Where(a => endAreas.Contains(a.S_AREA_CODE)) .Where(a => a.N_LAYER <= 2) .First(); } @@ -314,7 +320,7 @@ .Where(a => a.S_CODE == model.EndLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") .Where(a => a.N_CURRENT_NUM == 0) .Where(a => Settings.Areas[1].Contains(a.S_AREA_CODE)) .Where(a => endAreas.Contains(a.S_AREA_CODE)) .OrderBy(a => a.N_LAYER > 2 ? 0 : 1) // 优先取大于2的 //.Where(a => a.N_LAYER <= 3) .First(); @@ -375,11 +381,15 @@ var taskName = TaskName.产品部分出库; var db = new SqlHelper<object>().GetInstance(); var startAreas = Settings.Areas[AreaIndex.H货架区]; var endAreas = Settings.Areas[AreaIndex.X卸货区]; try { // 起点位置:货架(有货、没有锁、已启用) var startLoc = db.Queryable<TN_Location>() .Where(a => a.S_CODE == model.startLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") .Where(a => startAreas.Contains(a.S_AREA_CODE)) .Where(a => a.N_CURRENT_NUM == 1) .First(); @@ -393,7 +403,7 @@ return BuildSimpleResult(3, $"起点位置 {model.startLoc} 没有绑定容器,无可出库的物料"); } var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && Settings.Areas[0].Contains(a.S_AREA_CODE)); var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && endAreas.Contains(a.S_AREA_CODE)); if (endLoc == null) { return BuildSimpleResult(4, $"终点位置 {model.endLoc} 不具备放货条件"); @@ -446,9 +456,12 @@ var taskName = TaskName.产品部分回库; var db = new SqlHelper<object>().GetInstance(); var startAreas = Settings.Areas[AreaIndex.X卸货区]; var endAreas = Settings.Areas[AreaIndex.H货架区]; try { // 起点位置:取放货区(有货物、没有锁、已启用) var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && Settings.Areas[0].Contains(a.S_AREA_CODE)); var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && startAreas.Contains(a.S_AREA_CODE)); if (startLoc == null) { return BuildSimpleResult(2, $"起点位置 {model.startLoc} 不符合回库条件"); } @@ -459,7 +472,7 @@ } // 终点位置:货架(没有货物,没有锁) var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y"); var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && endAreas.Contains(a.S_AREA_CODE)); if (endLoc == null) { return BuildSimpleResult(4, $"终点位置 {model.endLoc} 不具备放货条件"); } config/config.comment.json
File was deleted config/config.json
@@ -1,14 +1,15 @@ { "WebApiUrl": "http://127.0.0.1:8901", "RCSApiUrl": "http://127.0.0.1:6001/", "NDCApiUrl": "http://127.0.0.1:5201/api/order/", "SqlServer": "Data Source=192.168.1.144;Initial Catalog=YinKouAnGan;User ID=hhuser;Password=Hh123321&&", "TCPServerIP": "127.0.0.1", "TCPServerPort": 8085, "Areas": [ { "Name": "取放货区", "Codes": [ "QFHQ" ] "Name": "取货区", "Codes": [ "AGVQH" ] }, { "Name": "卸货区", "Codes": [ "AGVXH" ] }, { "Name": "货架区", core/WCSCore.cs
@@ -126,13 +126,13 @@ return; } if (db.Updateable<TN_Loc_Container>() .SetColumns(d => d.S_IMG_URL == filepath) .Where(d => d.S_CNTR_CODE == model.S_CNTR_CODE).ExecuteCommand() <= 0) { //if (db.Updateable<TN_Loc_Container>() // .SetColumns(d => d.S_IMG_URL == filepath) // .Where(d => d.S_CNTR_CODE == model.S_CNTR_CODE).ExecuteCommand() <= 0) { LogHelper.Info($"图片URL '{filepath}' 写入数据库失败"); return; } // LogHelper.Info($"图片URL '{filepath}' 写入数据库失败"); // return; //} } catch (Exception ex) { LogHelper.Info($"发生了错误:{ex.Message}"); @@ -245,7 +245,7 @@ // 如果没有符合条件的货位,置空,等待PDA重新确定 if (endLoc == null) { tn_task.S_END_AREA = Settings.Areas[1][0]; // HJQ tn_task.S_END_AREA = Settings.Areas[AreaIndex.H货架区][0]; // HJQ tn_task.S_END_LOC = "0"; // 不需要再给GZ AGV传空值,一开始就没给具体货位,只给了Area models/TN_Loc_Container.cs
@@ -20,6 +20,6 @@ /// <summary> /// 图片链接 /// </summary> public string S_IMG_URL { get; set; } = ""; //public string S_IMG_URL { get; set; } = ""; } } process/TaskProcess.cs
@@ -29,7 +29,6 @@ LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}"); LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); } } /// <summary> @@ -45,13 +44,10 @@ LocationHelper.UnLockLoc(mst.S_END_LOC); } else { //起点终点解锁 LocationHelper.UnLockLoc(mst.S_START_LOC); LocationHelper.UnLockLoc(mst.S_END_LOC); } } /// <summary> @@ -118,8 +114,19 @@ var startSite = LocationHelper.GetAgvSite(mst.S_START_LOC); var endSite = LocationHelper.GetAgvSite(mst.S_END_LOC); // 如果找不到会返回0,就是假终点 var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, dst = endSite }), "p2pdst", "pgapi"); var code = -1; if (taskType == TaskName.产品入库) { code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, order_name = $"{mst.S_CODE}" }), "p2pdst", "pgapi"); } else { code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, dst = endSite }), "p2p", "pgapi"); } // car_type 默认为1 // src_ort 货架排号 // dst_orc 货架层数(后两个信息应该为国自AGV内部维护,以后面更改的结果为准) //var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, $"{{\"src\" = \"{startSite}\", \"dst\" = \"{endSite}\", \"car-type\": 1 }}", "p2pdst", "pgapi"); if (code > 0) { //更新任务状态 mst.N_B_STATE = 1; util/Settings.cs
@@ -49,10 +49,10 @@ WebApiUrl = root.WebApiUrl; RCSApiUrl = root.RCSApiUrl; NDCApiUrl = root.NDCApiUrl; //NDCApiUrl = root.NDCApiUrl; SqlServer = root.SqlServer; TCPServerIP = root.TCPServerIP; TCPServerPort = root.TCPServerPort; //TCPServerIP = root.TCPServerIP; //TCPServerPort = root.TCPServerPort; //Areas = root.Areas; foreach (var item in root.Areas) { Areas.Add(item.Codes); @@ -90,10 +90,7 @@ public class Root { public string WebApiUrl { get; set; } public string RCSApiUrl { get; set; } public string NDCApiUrl { get; set; } public string SqlServer { get; set; } public string TCPServerIP { get; set; } public int TCPServerPort { get; set; } public List<Area> Areas { get; set; } public List<Snap> Snaps { get; set; } public string CaptureUrl { get; set; } @@ -105,13 +102,19 @@ public string Name { get; set; } public string Pwd { get; set; } } } public class TaskName { public const string 产品入库 = "产品入库"; public const string 产品部分出库 = "产品部分出库"; public const string 产品部分回库 = "产品部分回库"; public const string 盘点理货出库 = "盘点理货出库"; public const string 盘点理货回库 = "盘点理货回库"; } public class AreaIndex { public const int Q取货区 = 0; public const int X卸货区 = 1; public const int H货架区 = 2; } } wms/WCSHelper.cs
@@ -64,7 +64,7 @@ public static TN_Task BuildInboundTask(TN_Location startLoc, string endLocCode, string cntId) { var type = TaskName.产品入库; var endArea = Settings.Areas[1][0]; // HJQ var endArea = Settings.Areas[AreaIndex.H货架区][0]; // HJQ TN_Task TN_Task = new TN_Task() { S_CODE = GenerateTaskNo(), @@ -100,7 +100,7 @@ var endArea = ""; if (endLoc == null) { if (taskType == TaskName.产品入库) { endArea = Settings.Areas[1][0]; // HJQ endArea = Settings.Areas[AreaIndex.H货架区][0]; // HJQ } else { LogHelper.Info("终点货位不存在,且任务类型不是PDA货品入库");