123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- 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
- {
- /// <summary>
- /// AGV接口
- /// </summary>
- public static class AgvApi
- {
- private static string _AgvUrl = null!;
- /// <summary>
- /// AGV地址
- /// </summary>
- public static string AgvUrl
- {
- get
- {
- _AgvUrl ??= RedisHub.Default.Check("AgvUrl");
- if (string.IsNullOrEmpty(_AgvUrl))
- {
- throw new KnownException($"请在Redis配置AgvUrl", LogLevelEnum.High);
- }
- return _AgvUrl;
- }
- }
- #region 任务单生成
- /// <summary>
- /// 满轮入库
- /// </summary>
- /// <param name="ctnrCode">RFID</param>
- /// <param name="position">取货机台</param>
- /// <param name="taskCode">WMS任务号</param>
- /// <param name="priority">优先级</param>
- /// <returns></returns>
- public static GenAgvSchedulingTaskResponse 满轮入库(string ctnrCode, string position, string taskCode, string priority)
- {
- return GenAgvSchedulingTask("iwms_third", ctnrCode, "4", new List<positionCodeClass>()
- {
- new positionCodeClass(){ //取货机台
- positionCode=position,
- type="00"
- },
- new positionCodeClass(){ //巷道分配点
- positionCode="HJLK",
- type="00"
- },
- new positionCodeClass(){ //预分配放货点
- positionCode="1015",
- type="00"
- }
- }, priority, taskCode, "ZTGT03", "1");
- }
- /// <summary>
- /// 机台补空
- /// </summary>
- /// <param name="position">补空机台</param>
- /// <param name="taskCode">WMS任务号</param>
- /// <param name="priority">优先级</param>
- /// <returns></returns>
- public static GenAgvSchedulingTaskResponse 机台补空(string position, string taskCode, string priority)
- {
- return GenAgvSchedulingTask("iWMS", "", "4", new List<positionCodeClass>()
- {
- new positionCodeClass(){ //合金库空区域
- positionCode="21",
- type="04"
- },
- new positionCodeClass(){ //目标机台
- positionCode=position,
- type="00"
- }
- }, priority, taskCode, "ZTGT03", "0");
- }
- /// <summary>
- /// 缓存架补空
- /// </summary>
- /// <param name="taskCode">任务号</param>
- /// <param name="nextPositionCode">取货地址</param>
- /// <returns></returns>
- public static ContinueTaskResponse 缓存架补空(string taskCode, string nextPositionCode)
- {
- return ContinueTask(taskCode, nextPositionCode);
- }
- /// <summary>
- /// 机台补满
- /// </summary>
- /// <param name="ctnrCode">RFID</param>
- /// <param name="position1">取货站台</param>
- /// <param name="position2">放货机台</param>
- /// <param name="taskCode">WMS任务号</param>
- /// <param name="priority">优先级</param>
- /// <returns></returns>
- public static GenAgvSchedulingTaskResponse 机台补满(string ctnrCode, string position1, string position2, string taskCode, string priority)
- {
- return GenAgvSchedulingTask("iWMS", ctnrCode, "1", new List<positionCodeClass>()
- {
- new positionCodeClass(){ //取货站台
- positionCode=position1,
- type="00"
- },
- new positionCodeClass(){ //放货机台
- positionCode=position2,
- type="00"
- }
- }, priority, taskCode, "ZTGT21", "-1");
- }
- /// <summary>
- /// Agv任务单生成接口
- /// </summary>
- /// <param name="clienCode">客户端编号</param>
- /// <param name="ctnrCode">容器编号</param>
- /// <param name="ctnrTyp">容器类型</param>
- /// <param name="positionCodePath">路径</param>
- /// <param name="priority">优先级</param>
- /// <param name="taskCode">任务单号</param>
- /// <param name="taskType">任务类型</param>
- /// <param name="hjTaskTy">合金任务模板</param>
- /// <returns></returns>
- /// <exception cref="KnownException"></exception>
- public static GenAgvSchedulingTaskResponse GenAgvSchedulingTask(string clienCode, string ctnrCode, string ctnrTyp, List<positionCodeClass> positionCodePath, string priority, string taskCode, string taskType, string hjTaskTy)
- {
- var res = APICaller.CallApi2<GenAgvSchedulingTaskResponse>(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 继续执行任务
- /// <summary>
- /// 继续执行任务
- /// </summary>
- /// <param name="taskCode">AGV任务号</param>
- /// <param name="nextPositionCode">下一个地址</param>
- /// <returns>接口返回结果</returns>
- /// <exception cref="KnownException"></exception>
- public static ContinueTaskResponse ContinueTask(string taskCode, string nextPositionCode)
- {
- var res = APICaller.CallApi2<ContinueTaskResponse>(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<GenAgvSchedulingTaskResponse>(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;
- }
- }
- }
|