using ServiceCenter.Logs; using ServiceCenter.Redis; using ServiceCenter.WebApi; using WCS.WorkEngineering.WebApi.Models.AGV; using WCS.WorkEngineering.WebApi.Models.AGV.Request; using WCS.WorkEngineering.WebApi.Models.AGV.Response; namespace WCS.WorkEngineering.WebApi.Controllers { /// /// AGV接口 /// public static class AgvApi { private static string _AgvUrl = null!; /// /// AGV地址 /// public static string AgvUrl { get { _AgvUrl ??= RedisHub.Default.Check("AgvUrl"); if (string.IsNullOrEmpty(_AgvUrl)) { throw new KnownException($"请在Redis配置AgvUrl", LogLevelEnum.High); } return _AgvUrl; } } #region 任务单生成 /// /// 满轮入库 /// /// RFID /// 取货机台 /// WMS任务号 /// 优先级 /// public static GenAgvSchedulingTaskResponse 满轮入库(string ctnrCode, string position, string taskCode, string priority) { return GenAgvSchedulingTask("iwms_third", ctnrCode, "4", new List() { new positionCodeClass(){ //取货机台 positionCode=position, type="00" }, new positionCodeClass(){ //巷道分配点 positionCode="HJLK", type="00" }, new positionCodeClass(){ //预分配放货点 positionCode="1015", type="00" } }, priority, taskCode, "ZTGT03", "1"); } /// /// 机台补空 /// /// 补空机台 /// WMS任务号 /// 优先级 /// public static GenAgvSchedulingTaskResponse 机台补空(string position, string taskCode, string priority) { return GenAgvSchedulingTask("iWMS", "", "4", new List() { new positionCodeClass(){ //合金库空区域 positionCode="21", type="04" }, new positionCodeClass(){ //目标机台 positionCode=position, type="00" } }, priority, taskCode, "ZTGT03", "0"); } /// /// 缓存架补空 /// /// 任务号 /// 取货地址 /// public static ContinueTaskResponse 缓存架补空(string taskCode, string nextPositionCode) { return ContinueTask(taskCode, nextPositionCode); } /// /// 机台补满 /// /// RFID /// 取货站台 /// 放货机台 /// WMS任务号 /// 优先级 /// public static GenAgvSchedulingTaskResponse 机台补满(string ctnrCode, string position1, string position2, string taskCode, string priority) { return GenAgvSchedulingTask("iWMS", ctnrCode, "1", new List() { new positionCodeClass(){ //取货站台 positionCode=position1, type="00" }, new positionCodeClass(){ //放货机台 positionCode=position2, type="00" } }, priority, taskCode, "ZTGT21", "-1"); } /// /// Agv任务单生成接口 /// /// 客户端编号 /// 容器编号 /// 容器类型 /// 路径 /// 优先级 /// 任务单号 /// 任务类型 /// 合金任务模板 /// /// public static GenAgvSchedulingTaskResponse GenAgvSchedulingTask(string clienCode, string ctnrCode, string ctnrTyp, List positionCodePath, string priority, string taskCode, string taskType, string hjTaskTy) { var res = APICaller.CallApi2(AgvUrl + "/rcms/services/rest/hikRpcService/genAgvSchedulingTask", new GenAgvSchedulingTaskRequest { clientCode = clienCode, ctnrCode = ctnrCode, ctnrTyp = ctnrTyp, interfaceName = "genAgvSchedulingTask", positionCodePath = positionCodePath, priority = priority, reqCode = Guid.NewGuid().ToString().Replace("-", ""), taskCode = taskCode, taskTyp = taskType, hjTaskTy = hjTaskTy, tokenCode = "56898661ea976b748f328cefa6960434", }); if (res.code != AgvResponseCode.Success) { throw new KnownException(res.message, LogLevelEnum.High); } return res; } #endregion 任务单生成 #region 继续执行任务 /// /// 继续执行任务 /// /// AGV任务号 /// 下一个地址 /// 接口返回结果 /// public static ContinueTaskResponse ContinueTask(string taskCode, string nextPositionCode) { var res = APICaller.CallApi2(AgvUrl + "/rcms/services/rest/hikRpcService/continueTask", new ContinueTaskRequest { reqCode = Guid.NewGuid().ToString().Replace("-", ""), taskCode = taskCode, nextPositionCode = new positionCodeClass() { positionCode = nextPositionCode, type = "00" } }); if (res.code != AgvResponseCode.Success) { throw new KnownException(res.message, LogLevelEnum.High); } return res; } #endregion public static GenAgvSchedulingTaskResponse GenAgvSchedulingTask() { var res = APICaller.CallApi2(AgvUrl + "/rcms/services/rest/hikRpcService/CancelTaskRequest", new GenAgvSchedulingTaskRequest { //clientCode = clienCode, //ctnrCode = ctnrCode, //ctnrTyp = ctnrTyp, //interfaceName = "genAgvSchedulingTask", //positionCodePath = positionCodePath, //priority = priority, //reqCode = Guid.NewGuid().ToString().Replace("-", ""), //taskCode = taskCode, //taskTyp = taskType, //hjTaskTy = hjTaskTy, //tokenCode = "56898661ea976b748f328cefa6960434", }); if (res.code != AgvResponseCode.Success) { throw new KnownException(res.message, LogLevelEnum.High); } return res; } } }