using System.Linq; using HH.WCS.Mobox3.AnGang.ServiceCore; using HH.WCS.Mobox3.AnGang.Devices; using HH.WCS.Mobox3.AnGang.Dispatch; using HH.WCS.Mobox3.AnGang.config; using HH.WCS.Mobox3.AnGang.Helper; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Web.Http; using static Opc.Ua.ContentFilter; using System.Threading.Tasks; using HH.WCS.Mobox3.AnGang.Models; using HH.WCS.Mobox3.AnGang.Services; using static HH.WCS.Mobox3.AnGang.Dtos.Request.AgvRequest; using static HH.WCS.Mobox3.AnGang.Dtos.Response.AgvResponse; using HH.WCS.Mobox3.AnGang.Helpers; namespace HH.WCS.Mobox3.AnGang.Controllers { /// /// 测试用,如果项目中要和设备对接,前期设备无法测试,用接口模拟 /// [RoutePrefix("api")] public class DebugController : System.Web.Http.ApiController { /// /// AGV状态一键回报134562 /// /// 容器号 /// [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(); 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; } /// /// AGV状态一键回报134 /// /// /// [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(); 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; } /// /// AGV状态一键回报562 /// /// /// [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(); 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; } /// /// 初始化数据库 /// /// [HttpPost] [Route("BuildDB")] public string BuildDB() { //bool res = false; try { var db = DbHelper.GetDbClient(); //db.CodeFirst.InitTables(); //所有库都支持 //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); var locList = new List(); //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(locList).ExecuteCommand() <= 0) { return "失败"; } } catch (Exception ex) { LogHelper.Info($"发生了异常"); return "初始化数据库错误" + ex.Message; } //return res ? "成功" : "失败"; return "成功"; } /// /// 修改任务的重量,便于测试 /// /// [HttpPost] [Route("UpdateTaskWeight")] public string UpdateTaskWeight(UpdateTaskWeightInfo model) { var db = DbHelper.GetDbClient(); var task = db.Queryable().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(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; } } [HttpPost] public string AddCgCntrLocRel(CgInfo model) { var db = DbHelper.GetDbClient(); try { var loc = db.Queryable().First(a => a.S_CODE == model.LocId); if (loc == null) { var locList = new List(); locList.Add(new TN_Location { S_CODE = model.LocId, N_CURRENT_NUM = 1 }); if (db.Insertable(locList).ExecuteCommand() <= 0) { return $"插入位置{model.LocId}失败"; } } if (loc.N_CURRENT_NUM == 0) { loc.N_CURRENT_NUM = 1; if (db.Updateable(loc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.T_MODIFY }).ExecuteCommand() <= 0) { return $"修改位置{model.LocId}失败"; } } var locCntrRel = db.Queryable().First(a => a.S_LOC_CODE == model.LocId && a.S_CNTR_CODE == model.CntId); if (loc == null) { var locList = new List(); locList.Add(new TN_Loc_Container { S_LOC_CODE = model.LocId, S_CNTR_CODE = model.CntId }); if (db.Insertable(locList).ExecuteCommand() <= 0) { return $"插入位置托盘关系{model.LocId}-{model.CntId}失败"; } } var cgDetail = db.Queryable().First(a => a.S_CNTR_CODE == model.CntId && a.S_CG_ID == model.CgId); if (cgDetail == null) { var locList = new List(); locList.Add(new TN_CG_Detail { S_CNTR_CODE = model.CntId, S_CG_ID = model.CntId }); if (db.Insertable(locList).ExecuteCommand() <= 0) { return $"插入托盘物料关系{model.CntId}-{model.CgId}失败"; } } } catch (Exception ex) { return $"出错:{ex}"; } return "success"; } } 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 resultList { set; get; } } }