kazelee
2025-05-19 452b9b63ada7ef220952412613552d36ed477adc
Controllers/DebugController.cs
@@ -16,6 +16,9 @@
using static HH.WCS.Mobox3.AnGang.Dtos.Request.AgvRequest;
using static HH.WCS.Mobox3.AnGang.Dtos.Response.AgvResponse;
using HH.WCS.Mobox3.AnGang.Helpers;
using HH.WCS.Mobox3.AnGang.Debug;
using static HH.WCS.Mobox3.AnGang.Dtos.Request.DebugRequest;
using static HH.WCS.Mobox3.AnGang.Dtos.Response.DebugResponse;
namespace HH.WCS.Mobox3.AnGang.Controllers
{
@@ -26,108 +29,14 @@
    public class DebugController : System.Web.Http.ApiController
    {
        /// <summary>
        /// AGV状态一键回报134562
        /// 模拟 AGV 多次回报任务状态
        /// </summary>
        /// <param name="model">容器号</param>
        /// <returns></returns>
        [HttpPost]
        [Route("AGVSeriesReports")]
        public ReturnResults AGVSeriesReports(UpdateTaskState model)
        {
            var agvTaskState = new AgvTaskState()
            {
                task_no = model.TaskID,
                forklift_no = model.ForkliftNo,
                state = 1
            };
            ReturnResults returnResults = new ReturnResults();
            returnResults.resultList = new List<ReturnResult>();
            var temp1 =  AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp1);
            agvTaskState.state = 3;
            var temp3 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp3);
            agvTaskState.state = 4;
            var temp4 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp4);
            agvTaskState.state = 5;
            var temp5 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp5);
            agvTaskState.state = 6;
            var temp6 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp6);
            agvTaskState.state = 2;
            var temp2 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp2);
            return returnResults;
        }
        /// <summary>
        /// AGV状态一键回报134
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("AGVSeriesReportsPartA")]
        public ReturnResults AGVSeriesReportsPartA(UpdateTaskState model) {
            var agvTaskState = new AgvTaskState() {
                task_no = model.TaskID,
                forklift_no = model.ForkliftNo,
                state = 1
            };
            ReturnResults returnResults = new ReturnResults();
            returnResults.resultList = new List<ReturnResult>();
            var temp1 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp1);
            agvTaskState.state = 3;
            var temp3 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp3);
            agvTaskState.state = 4;
            var temp4 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp4);
            return returnResults;
        }
        /// <summary>
        /// AGV状态一键回报562
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("AGVSeriesReportsPartB")]
        public ReturnResults AGVSeriesReportsPartB(UpdateTaskState model) {
            var agvTaskState = new AgvTaskState() {
                task_no = model.TaskID,
                forklift_no = model.ForkliftNo,
                state = 4
            };
            ReturnResults returnResults = new ReturnResults();
            returnResults.resultList = new List<ReturnResult>();
            agvTaskState.state = 5;
            var temp5 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp5);
            agvTaskState.state = 6;
            var temp6 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp6);
            agvTaskState.state = 2;
            var temp2 = AgvService.OperateAgvTaskStatus(agvTaskState);
            returnResults.resultList.Add(temp2);
            return returnResults;
        [Route("AgvSeriesReports")]
        public ReturnResults AgvSeriesReports(UpdateTaskState model) {
            return DebugService.AgvSeriesReports(model);
        }
        /// <summary>
@@ -135,154 +44,25 @@
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("BuildDB")]
        public string BuildDB()
        {
            //bool res = false;
            try
            {
                var db = DbHelper.GetDbClient();
                //db.CodeFirst.InitTables<WCSTask>(); //所有库都支持
                //db.CodeFirst.InitTables<Zone>();
                //db.CodeFirst.InitTables<Area>();
                //db.CodeFirst.InitTables<Location>();
                //db.CodeFirst.InitTables<LocCntrRel>();
                //db.CodeFirst.InitTables<Container>();
                //db.CodeFirst.InitTables<TN_CG_Detail>();
                //db.CodeFirst.InitTables<TN_WorkOrder>();
                //db.CodeFirst.InitTables<TN_CAR_IN>();
                //db.CodeFirst.InitTables<SYSHelper.OI_SYS_MAXID>();
                //db.CodeFirst.InitTables<TN_Task_Action>();
                //db.CodeFirst.InitTables<TN_Task>();
                //db.CodeFirst.InitTables<TN_Location>();
                //db.CodeFirst.InitTables<TN_Loc_Container>();
                var locList = new List<TN_Location>();
                //foreach (var area in Settings.Areas.Skip(1).ToList()) {
                //    for (int i = 0; i < 8; i++) {
                //        for (int j = 0; j < 30; j++) {
                //            locList.Add(new TN_Location { S_SHELF_CODE = area, S_CODE = $"{area}-{i + 1}-{j + 1}", S_NAME = $"{area}货架 第{i + 1}层 第{j + 1}号货位", S_AGV_SITE = $"{area}-{i + 1}-{j + 1}", N_HEIGHT = i + 1 });
                //        }
                //    }
                //}
                locList.Add(new TN_Location { S_AREA_CODE = "B111", S_CODE = "B111-1-1", S_NAME = "B111-1-1", S_AGV_SITE = "B111-1-1"});
                locList.Add(new TN_Location { S_AREA_CODE = "B111", S_CODE = "B111-4-1", S_NAME = "B111-4-1", S_AGV_SITE = "B111-4-1"});
                locList.Add(new TN_Location { S_AREA_CODE = "B112", S_CODE = "B112-1-1", S_NAME = "B112-1-1", S_AGV_SITE = "B112-1-1"});
                //locList.Add(new TN_Location { S_AREA_CODE = Settings.Areas[0], S_SHELF_CODE = Settings.Areas[0], S_CODE = Settings.Areas[0] + "-1", S_NAME = "取放货区-1", S_AGV_SITE = "P0-1"});
                //locList.Add(new TN_Location { S_AREA_CODE = Settings.Areas[0], S_SHELF_CODE = Settings.Areas[0], S_CODE = Settings.Areas[0] + "-2", S_NAME = "取放货区-2", S_AGV_SITE = "P0-2"});
                if (db.Insertable<TN_Location>(locList).ExecuteCommand() <= 0) {
                    return "失败";
                }
            }
            catch (Exception ex)
            {
                LogHelper.Info($"发生了异常");
                return "初始化数据库错误" + ex.Message;
            }
            //return res ? "成功" : "失败";
            return "成功";
        [Route("CreateDatabase")]
        public string CreateDatabase(CoverInfo model) {
            return DebugService.CreateDatabase(model.IsCover);
        }
        /// <summary>
        /// 修改任务的重量,便于测试
        /// DEBUG:插入货位、容器、货品信息
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("UpdateTaskWeight")]
        public string UpdateTaskWeight(UpdateTaskWeightInfo model) {
            var db = DbHelper.GetDbClient();
            var task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.TaskID);
            if (task == null) {
                return "任务号不存在";
            }
            task.F_WEIGHT = model.Weight;
            try {
                using (var trans = db.Ado.UseTran()) {
                    if (db.Updateable<TN_Task>(task).ExecuteCommand() > 0) {
                        trans.CommitTran();
                        return $"成功 | 修改任务{task.S_CODE}重量为{task.F_WEIGHT}";
                    }
                    else {
                        trans.RollbackTran();
                        return $"失败 | 修改任务{task.S_CODE}重量为{task.F_WEIGHT}";
                    }
                }
            }
            catch (Exception ex) {
                return ex.Message;
            }
        [Route("InsertLocCntrCg")]
        public string InsertLocCntrCg() {
            return DebugService.InsertLocCntrCg();
        }
        [HttpPost]
        public string AddCgCntrLocRel(CgInfo model) {
            var db = DbHelper.GetDbClient();
            try {
                var loc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.LocId);
                if (loc == null) {
                    var locList = new List<TN_Location>();
                    locList.Add(new TN_Location { S_CODE = model.LocId, N_CURRENT_NUM = 1 });
                    if (db.Insertable<TN_Location>(locList).ExecuteCommand() <= 0) {
                        return $"插入位置{model.LocId}失败";
                    }
                }
                if (loc.N_CURRENT_NUM == 0) {
                    loc.N_CURRENT_NUM = 1;
                    if (db.Updateable<TN_Location>(loc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.T_MODIFY }).ExecuteCommand() <= 0) {
                        return $"修改位置{model.LocId}失败";
                    }
                }
                var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.LocId && a.S_CNTR_CODE == model.CntId);
                if (loc == null) {
                    var locList = new List<TN_Loc_Container>();
                    locList.Add(new TN_Loc_Container { S_LOC_CODE = model.LocId, S_CNTR_CODE = model.CntId });
                    if (db.Insertable<TN_Loc_Container>(locList).ExecuteCommand() <= 0) {
                        return $"插入位置托盘关系{model.LocId}-{model.CntId}失败";
                    }
                }
                var cgDetail = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == model.CntId && a.S_CG_ID == model.CgId);
                if (cgDetail == null) {
                    var locList = new List<TN_CG_Detail>();
                    locList.Add(new TN_CG_Detail { S_CNTR_CODE = model.CntId, S_CG_ID = model.CntId });
                    if (db.Insertable<TN_CG_Detail>(locList).ExecuteCommand() <= 0) {
                        return $"插入托盘物料关系{model.CntId}-{model.CgId}失败";
                    }
                }
            }
            catch (Exception ex) {
                return $"出错:{ex}";
            }
            return "success";
        [Route("SetTaskWeight")]
        public string SetTaskWeight(SetTaskWeightInfo model) {
            return DebugService.SetTaskWeight(model);
        }
    }
    public class CgInfo {
        public string CgId { get; set; }
        public string CntId { get; set; }
        public string LocId { get; set; }
    }
    public class UpdateTaskState
    {
        public string TaskID { set; get; } // 任务ID
        public string ForkliftNo { set; get; } // AGV 小车号
    }
    public class UpdateTaskWeightInfo {
        public string TaskID { set; get; }
        public float Weight { set; get; }
    }
    public class ReturnResults
    {
        public List<ReturnResult> resultList { set; get; }
    }
}