kazelee
2025-05-19 452b9b63ada7ef220952412613552d36ed477adc
测试,修复部分数据表问题
2个文件已添加
12个文件已修改
2个文件已删除
169 ■■■■■ 已修改文件
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/0aee5537-94af-4049-9107-4c61afb239ee.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/24e15c73-c902-489a-b348-f6cec9783170.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/437becf2-8149-4b30-b2bc-cfc629b6be4c.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/7e201a71-d554-4ded-906f-7da951526801.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/DebugController.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dispatch/GZRobot.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dtos/Request/DebugRequest.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Helpers/AgvHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Models/DebugModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Models/TN_Loc_Container.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Models/TN_Location.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Models/TN_Task.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Services/AgvService.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Services/DebugService.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Services/MoboxService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/config.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/0aee5537-94af-4049-9107-4c61afb239ee.vsidx
Binary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/24e15c73-c902-489a-b348-f6cec9783170.vsidx
Binary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/437becf2-8149-4b30-b2bc-cfc629b6be4c.vsidx
Binary files differ
.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/7e201a71-d554-4ded-906f-7da951526801.vsidx
Binary 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": [