.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/0aee5537-94af-4049-9107-4c61afb239ee.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/24e15c73-c902-489a-b348-f6cec9783170.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/437becf2-8149-4b30-b2bc-cfc629b6be4c.vsidxBinary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/7e201a71-d554-4ded-906f-7da951526801.vsidxBinary files differ
Controllers/DebugController.cs
@@ -58,5 +58,11 @@ public string InsertLocCntrCg() { return DebugService.InsertLocCntrCg(); } [HttpPost] [Route("SetTaskWeight")] public string SetTaskWeight(SetTaskWeightInfo model) { return DebugService.SetTaskWeight(model); } } } Dispatch/GZRobot.cs
@@ -257,7 +257,6 @@ if (data.data != null) { res = data.data; } } catch (Exception ex) { Console.WriteLine(ex.Message); Dtos/Request/DebugRequest.cs
@@ -27,5 +27,10 @@ public class CoverInfo { public bool IsCover { set; get; } = true; } public class SetTaskWeightInfo { public string TaskNo { set; get; } public float Weight { set; get; } } } } Helpers/AgvHelper.cs
@@ -29,7 +29,7 @@ public static bool IsNextStateOk(int lastState, int nextState) { var lastPri = GetPri(lastState); var nextPri = GetPri(nextState); return lastPri != 0 && nextPri != 0 && lastPri <= nextState; return lastPri != 0 && nextPri != 0 && lastPri <= nextPri; } /// <summary> Models/DebugModel.cs
@@ -10,7 +10,6 @@ public string LocCode { get; set; } public string LocArea { get; set; } public string CntrCode { get; set; } public string CntrType { get; set; } public string ItemCode { get; set; } public string BatchNo { get; set; } } Models/TN_Loc_Container.cs
@@ -10,8 +10,6 @@ public string S_LOC_CODE { get; set; } public string S_CNTR_CODE { get; set; } public string S_CNTR_TYPE { get; set; } = ""; [Navigate(NavigateType.OneToMany, nameof(TN_CG_Detail.S_CNTR_CODE))] public List<TN_CG_Detail> CntrItemRels { get; set; } Models/TN_Location.cs
@@ -78,10 +78,5 @@ /// 货架编码 /// </summary> public string S_SHELF_CODE { get; set; } /// <summary> /// 货位高度 /// </summary> public int N_HEIGHT { get; set; } } } Models/TN_Task.cs
@@ -36,8 +36,6 @@ public string S_CNTR_CODE { get; set; } public string S_OP_NAME { get; set; } public int N_START_LAYER { get; internal set; } public int N_END_LAYER { get; internal set; } public int N_CNTR_COUNT { get; internal set; } /// <summary> Services/AgvService.cs
@@ -143,72 +143,88 @@ var endLoc = new TN_Location(); var data = GZRobot.CustomBuf(); var weight = float.Parse(data[0].parameter_varchar200_up); tn_task.F_WEIGHT = weight; // 只当之前指定终点货架后,才尝试计算终点货位,否则交给人工决定 if (tn_task.S_END_AREA != "") { if (weight > 1500) { // 重量超过1.5t,需要选择1-3层货架 endLoc = db.Queryable<TN_Location>().First(a => a.S_SHELF_CODE == tn_task.S_END_AREA && LocationHelper.IsFree(a) && a.N_CURRENT_NUM == 0 && a.N_HEIGHT <= 3); } else if (weight > 0) { // 重量未超过1.5t,在指定货架随便选择1个 endLoc = db.Queryable<TN_Location>().First(a => a.S_SHELF_CODE == tn_task.S_END_AREA && LocationHelper.IsFree(a) && a.N_CURRENT_NUM == 0); } else { // 没有接收到重量,或重量出错 endLoc = null; LogHelper.Info($"错误的重量信息:{weight}"); if (data.Count == 0) { LogHelper.Info("设置终点货位失败:没有接受到来自国自AGV的重量信息"); //return; } else { var weight = float.Parse(data[0].parameter_varchar200_up); tn_task.F_WEIGHT = weight; if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) { LogHelper.Info("修改Task重量失败"); return; } } // 如果没有符合条件的货位,置空,等待PDA重新确定 if (endLoc == null) { tn_task.S_END_AREA = ""; tn_task.S_END_LOC = ""; // 终点货架为空时,不判断,交给人工处理 if (tn_task.S_END_AREA == "") { LogHelper.Info("终点货架为空,不处理"); } // 不需要再给GZ AGV传空值,一开始就没给具体货位,只给了Area // 只当之前指定终点货架后,才尝试计算终点货位 if (tn_task.F_WEIGHT > 1500) { // 重量超过1.5t,需要选择1-3层货架 endLoc = db.Queryable<TN_Location>().First(a => a.S_SHELF_CODE == tn_task.S_END_AREA && LocationHelper.IsFree(a) && a.N_CURRENT_NUM == 0 && a.N_LAYER <= 3); } else if (tn_task.F_WEIGHT > 0) { // 重量未超过1.5t,在指定货架随便选择1个 endLoc = db.Queryable<TN_Location>().First(a => a.S_SHELF_CODE == tn_task.S_END_AREA && LocationHelper.IsFree(a) && a.N_CURRENT_NUM == 0); } else { // 没有接收到重量,或重量出错 endLoc = null; LogHelper.Info($"错误的重量信息:{tn_task.F_WEIGHT}"); return; } //var request = new UpdateInteractInfo { // interaction_info_id = 3, // 更改终点信息 // info_status = "active", // return_value = "", //}; // 如果没有符合条件的货位,置空,等待PDA重新确定 if (endLoc == null) { tn_task.S_END_AREA = ""; tn_task.S_END_LOC = ""; //GZRobot.UpdateInteractInfo(request); // 不需要再给GZ AGV传空值,一开始就没给具体货位,只给了Area using (var trans = db.Ado.UseTran()) { if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC, it.F_WEIGHT }) .ExecuteCommand() > 0) { //LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁 //var request = new UpdateInteractInfo { // interaction_info_id = 3, // 更改终点信息 // info_status = "active", // return_value = "", //}; trans.CommitTran(); LogHelper.Info($"重新计算后没有合适货位,任务 {tn_task.S_CODE} 修改成功,修改终点货架和货位为空"); } else { trans.RollbackTran(); LogHelper.Info($"重新计算后没有合适货位,任务 {tn_task.S_CODE} 修改失败,修改终点货架和货位为空"); } //GZRobot.UpdateInteractInfo(request); using (var trans = db.Ado.UseTran()) { if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC, it.F_WEIGHT }) .ExecuteCommand() > 0) { //LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁 trans.CommitTran(); LogHelper.Info($"重新计算后没有合适货位,任务 {tn_task.S_CODE} 修改成功,修改终点货架和货位为空"); } else { trans.RollbackTran(); LogHelper.Info($"重新计算后没有合适货位,任务 {tn_task.S_CODE} 修改失败,修改终点货架和货位为空"); } } else { // 找到合适的货位,推送 tn_task.S_END_LOC = endLoc.S_CODE; } else { // 找到合适的货位,推送 tn_task.S_END_LOC = endLoc.S_CODE; using (var trans = db.Ado.UseTran()) { if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC, it.F_WEIGHT }) .ExecuteCommand() > 0) { LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁 using (var trans = db.Ado.UseTran()) { if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC, it.F_WEIGHT }) .ExecuteCommand() > 0) { LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁 trans.CommitTran(); LogHelper.Info($"计算货位成功,任务 {tn_task.S_CODE} 修改成功,终点货架为 {endLoc.S_SHELF_CODE},修改终点位置为 {endLoc.S_CODE}"); } else { trans.RollbackTran(); trans.CommitTran(); LogHelper.Info($"计算货位成功,任务 {tn_task.S_CODE} 修改成功,终点货架为 {endLoc.S_SHELF_CODE},修改终点位置为 {endLoc.S_CODE}"); } else { trans.RollbackTran(); LogHelper.Info($"计算货位成功,任务 {tn_task.S_CODE} 修改失败,终点货架为 {endLoc.S_SHELF_CODE},修改终点位置为 {endLoc.S_CODE}"); } LogHelper.Info($"计算货位成功,任务 {tn_task.S_CODE} 修改失败,终点货架为 {endLoc.S_SHELF_CODE},修改终点位置为 {endLoc.S_CODE}"); } } } Services/DebugService.cs
@@ -189,8 +189,7 @@ if (locCntrRel == null) { var newLocCntrRel = new TN_Loc_Container { S_LOC_CODE = locCntrCg.LocCode, S_CNTR_CODE = locCntrCg.CntrCode, S_CNTR_TYPE = locCntrCg.CntrType ?? "" S_CNTR_CODE = locCntrCg.CntrCode }; loc.N_CURRENT_NUM = 1; @@ -233,5 +232,23 @@ return $"Error reading CSV file: {ex.Message}"; } } public static string SetTaskWeight(SetTaskWeightInfo model) { var db = DbHelper.GetDbClient(); try { if (db.Updateable<TN_Task>().SetColumns(it => it.F_WEIGHT == model.Weight).Where(it => it.S_CODE == model.TaskNo) .ExecuteCommand() <= 0 ) { return "修改失败"; } return "修改成功"; } catch (Exception ex) { return ex.Message; } } } } Services/MoboxService.cs
@@ -119,7 +119,7 @@ if (task.F_WEIGHT > 1500) { // 重量超过1.5t,需要选择1-3层货架 endLoc = db.Queryable<TN_Location>().First( a => a.S_CODE == model.endLoc && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0 && a.N_HEIGHT <= 3); a => a.S_CODE == model.endLoc && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0 && a.N_LAYER <= 3); } else { endLoc = db.Queryable<TN_Location>().First( config/config.json
@@ -2,7 +2,7 @@ "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=(local);Initial Catalog=AnGangTest;User ID=sa;Password=123456;", "SqlServer": "Data Source=192.168.1.144;Initial Catalog=YinKouAnGan;User ID=hhuser;Password=Am123123", "TCPServerIP": "127.0.0.1", "TCPServerPort": 8085, "Areas": [