using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; using HH.WCS.Mobox3.AnGang.dispatch; using HH.WCS.Mobox3.AnGang.wms; using HH.WCS.Mobox3.AnGang.models; using Newtonsoft.Json; using static HH.WCS.Mobox3.AnGang.api.ApiModel; using HH.WCS.Mobox3.AnGang.util; namespace HH.WCS.Mobox3.AnGang.api { /// /// 测试用,如果项目中要和设备对接,前期设备无法测试,用接口模拟 /// [RoutePrefix("api")] public class DebugController : System.Web.Http.ApiController { /// /// AGV状态一键回报1462-国自 /// /// [HttpPost] [Route("AGVSeriesReports")] public GzResults AGVSeriesReports(UpdateTaskState model) { GzResults gzResults = new GzResults(); gzResults.GzResultList = new List(); var orderStatus = new orderStatusReportParme() { orderName = model.TaskID, agvIDList = model.ForkliftNo, orderStatus = "waiting", }; var temp1 = GZRobot.orderStatusReport(orderStatus); gzResults.GzResultList.Add(temp1); orderStatus.orderStatus = "source_finish"; var temp2 = GZRobot.orderStatusReport(orderStatus); gzResults.GzResultList.Add(temp2); orderStatus.orderStatus = "dest_finish"; var temp3 = GZRobot.orderStatusReport(orderStatus); gzResults.GzResultList.Add(temp3); orderStatus.orderStatus = "finish"; var temp4 = GZRobot.orderStatusReport(orderStatus); gzResults.GzResultList.Add(temp4); return gzResults; } /// /// AGV状态一键回报14-国自 /// /// [HttpPost] [Route("AGVSeriesReports-14")] public GzResults AGVSeriesReports14(UpdateTaskState model) { GzResults gzResults = new GzResults(); gzResults.GzResultList = new List(); var orderStatus = new orderStatusReportParme() { orderName = model.TaskID, agvIDList = model.ForkliftNo, orderStatus = "waiting", }; var temp1 = GZRobot.orderStatusReport(orderStatus); gzResults.GzResultList.Add(temp1); orderStatus.orderStatus = "source_finish"; var temp2 = GZRobot.orderStatusReport(orderStatus); gzResults.GzResultList.Add(temp2); return gzResults; } /// /// AGV状态一键回报62-国自 /// /// [HttpPost] [Route("AGVSeriesReports-62")] public GzResults AGVSeriesReports62(UpdateTaskState model) { GzResults gzResults = new GzResults(); gzResults.GzResultList = new List(); var orderStatus = new orderStatusReportParme() { orderName = model.TaskID, agvIDList = model.ForkliftNo, orderStatus = "dest_finish", }; var temp3 = GZRobot.orderStatusReport(orderStatus); gzResults.GzResultList.Add(temp3); orderStatus.orderStatus = "finish"; var temp4 = GZRobot.orderStatusReport(orderStatus); gzResults.GzResultList.Add(temp4); return gzResults; } /// /// 初始化数据库 /// /// [HttpPost] [Route("CreateDatabase")] public string CreateDatabase() { try { var db = new SqlHelper().GetInstance(); var entityTypes = new Type[] { }; //db.CodeFirst.InitTables(entityTypes); } catch (Exception ex) { LogHelper.Info($"发生了异常"); return "初始化数据库错误" + ex.Message; } return "成功"; } /// /// DEBUG:根据任务号设置物料重量 /// /// /// [HttpPost] [Route("SetTaskWeight")] public string SetTaskWeight(SetTaskWeightInfo model) { var db = new SqlHelper().GetInstance(); var cgDetail = db.Queryable((d, t) => d.S_CNTR_CODE == t.S_CNTR_CODE) .Where((d, t) => t.S_CODE == model.TaskNo).First(); if (cgDetail == null) { return "找不到对应的物料信息"; } var task = db.Queryable() .Where(t => t.S_CODE == model.TaskNo).First(); if (cgDetail == null) { return "找不到对应的任务号"; } cgDetail.F_QTY = model.Weight; task.F_WEIGHT = model.Weight; try { using (var tran = db.Ado.UseTran()) { if (db.Updateable(cgDetail).UpdateColumns(it => it.F_QTY) .ExecuteCommand() <= 0) { tran.RollbackTran(); return "修改失败"; } if (db.Updateable(task).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) { tran.RollbackTran(); return "修改失败"; } tran.CommitTran(); } LogHelper.Info($"模拟AGV传递物料重量:修改任务号{task.S_CODE}重量为{model.Weight}", "HosttoagvTask"); return "修改成功"; } catch (Exception ex) { return ex.Message; } } } public class ReturnResults { public List ResultList { set; get; } } public class GzResults { public List GzResultList { set; get; } } /// /// 模拟 AGV 传递信号,用于更改任务状态 /// public class UpdateTaskState { /// /// 任务ID /// public string TaskID { set; get; } /// /// AGV 小车号 /// public string ForkliftNo { set; get; } /// /// AGV 下一个状态 /// public int NextState { set; get; } } public class SetTaskWeightInfo { public string TaskNo { set; get; } public float Weight { set; get; } } }