using Sln.Wcs.HikRoBotApi.Domain.Dto.CancelTask; using Sln.Wcs.HikRoBotApi.Domain.Dto.ContinueTask; using Sln.Wcs.HikRoBotApi.Domain.Dto.GbCancelTask; using Sln.Wcs.HikRoBotApi.Domain.Dto.GbContinueTask; using Sln.Wcs.HikRoBotApi.Domain.Dto.GbTaskSubmit; using Sln.Wcs.HikRoBotApi.Enum; using Sln.Wcs.HikRoBotApi.Util; using Sln.Wcs.HikRoBotSdk; using GenAgvSchedulingTaskDto = Sln.Wcs.HikRoBotApi.Domain.Dto.GenAgvSchedulingTask.GenAgvSchedulingTaskDto; using GenAgvSchedulingTaskResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.GenAgvSchedulingTask.GenAgvSchedulingTaskResultDto; using TaskGroupResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.TaskGroup.TaskGroupResultDto; using TaskPriorityResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.TaskPriority.TaskPriorityResultDto; using ZonePauseResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.ZonePause.ZonePauseResultDto; using ZoneHomingResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.ZoneHoming.ZoneHomingResultDto; using ZoneBanishResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.ZoneBanish.ZoneBanishResultDto; using ZoneBlockadeResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.ZoneBlockade.ZoneBlockadeResultDto; using CarrierBindResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.CarrierBind.CarrierBindResultDto; using CarrierUnbindResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.CarrierUnbind.CarrierUnbindResultDto; using SiteBindResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.SiteBind.SiteBindResultDto; using CarrierLockResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.CarrierLock.CarrierLockResultDto; using SiteLockResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.SiteLock.SiteLockResultDto; using PreTaskResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.PreTask.PreTaskResultDto; using QueryTaskResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.QueryTask.QueryTaskResultDto; using QueryRobotResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.QueryRobot.QueryRobotResultDto; using QueryCarrierResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.QueryCarrier.QueryCarrierResultDto; using MatLabelBindResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.MatLabelBind.MatLabelBindResultDto; using MatLabelUnbindResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.MatLabelUnbind.MatLabelUnbindResultDto; using EquipmentNotifyResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.EquipmentNotify.EquipmentNotifyResultDto; using CancelTaskResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.CancelTask.CancelTaskResultDto; using ContinueTaskResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.ContinueTask.ContinueTaskResultDto; #region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2026 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:T14-GEN3-7895 * 命名空间:Sln.Wcs.HikRoBotApi.Service.Impl * 唯一标识:05713c1e-50f3-48cf-8ac8-0dfd1f768856 * * 创建者:WenJY * 电子邮箱: * 创建时间:2026-02-25 15:15:34 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> namespace Sln.Wcs.HikRoBotApi.Service.Impl { public class HikRoBotService : IHikRoBotService { private readonly IHIKRoBotSdk hikRoBotSdk; private readonly ApiResultCodeUtil codeUtil; public HikRoBotService(IHIKRoBotSdk hikRoBotSdk,ApiResultCodeUtil codeUtil) { this.hikRoBotSdk = hikRoBotSdk; this.codeUtil = codeUtil; } public GbContinueTaskResultDto GbContinueTask(GbContinueTaskDto gbContinueTask) { try { if (gbContinueTask == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new HikRoBotSdk.Dto.GbContinueTask.GbContinueTaskDto() { triggerType = gbContinueTask.TriggerType, triggerCode = gbContinueTask.TriggerCode, targetRoute = gbContinueTask.TargetRoute != null ? new HikRoBotSdk.Dto.Common.TargetRoute() { type = gbContinueTask.TargetRoute.Type, code = gbContinueTask.TargetRoute.Code, operation = gbContinueTask.TargetRoute.Operation, } : null, extra = gbContinueTask.Extra, }; var resp = this.hikRoBotSdk.GbContinueTask(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new GbContinueTaskResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.GbContinueTask.GbContinueTaskResultModel { RobotTaskCode = resp.data?.robotTaskCode, NextSeq = resp.data?.nextSeq, Extra = resp.data?.extra, }, }; } catch (Exception ex) { return new GbContinueTaskResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public GbCancelTaskResultDto GbCancelTask(GbCancelTaskDto gbCancelTask) { try { if (gbCancelTask == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new HikRoBotSdk.Dto.GbCancelTask.GbCancelTaskDto() { robotTaskCode = gbCancelTask.RobotTaskCode, cancelType = gbCancelTask.CancelType, carrierCode = gbCancelTask.CarrierCode, robotCode = gbCancelTask.RobotCode, reason = gbCancelTask.Reason, returnTaskType = gbCancelTask.ReturnTaskType, targetRoute = gbCancelTask.TargetRoute != null ? new HikRoBotSdk.Dto.Common.TargetRoute() { type = gbCancelTask.TargetRoute.Type, code = gbCancelTask.TargetRoute.Code, } : null, extra = gbCancelTask.Extra, }; var resp = this.hikRoBotSdk.GbCancelTask(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new GbCancelTaskResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.GbCancelTask.GbCancelTaskResultModel { RobotTaskCode = resp.data?.robotTaskCode, Extra = resp.data?.extra, }, }; } catch (Exception ex) { return new GbCancelTaskResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public GbTaskSubmitResultDto GbTaskSubmit(GbTaskSubmitDto gbTaskSubmit) { try { if (gbTaskSubmit == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new HikRoBotSdk.Dto.GbTaskSubmit.GbTaskSubmitDto() { taskType = gbTaskSubmit.TaskType, initPriority = gbTaskSubmit.InitPriority, deadline = gbTaskSubmit.Deadline, expectedStartTime = gbTaskSubmit.ExpectedStartTime, robotType = gbTaskSubmit.RobotType, robotCode = gbTaskSubmit.RobotCode, interrupt = gbTaskSubmit.Interrupt, robotTaskCode = gbTaskSubmit.RobotTaskCode, groupCode = gbTaskSubmit.GroupCode, extra = gbTaskSubmit.Extra != null ? new HikRoBotSdk.Dto.Common.ExtraInfo() : null, targetRoute = gbTaskSubmit.TargetRoute != null ? gbTaskSubmit.TargetRoute.ConvertAll(r => new HikRoBotSdk.Dto.Common.TargetRoute() { type = r.Type, code = r.Code, operation = r.Operation, robotType = r.RobotType, robotCode = r.RobotCode, }) : null, }; var resp = this.hikRoBotSdk.GbTaskSubmit(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new GbTaskSubmitResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.GbTaskSubmit.GbTaskSubmitResultModel { code = resp.code, message = resp.message, data = new Domain.Model.GbTaskSubmit.GbTaskSubmitResultData() { robotTaskCode = resp.data?.robotTaskCode, extra = resp.data?.extra?.ToString(), } }, }; } catch (Exception ex) { return new GbTaskSubmitResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public TaskGroupResultDto TaskGroup(Domain.Dto.TaskGroup.TaskGroupDto taskGroup) { try { if (taskGroup == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.TaskGroup.TaskGroupDto() { groupCode = taskGroup.GroupCode, strategy = taskGroup.Strategy, strategyValue = taskGroup.StrategyValue, groupSeq = !string.IsNullOrEmpty(taskGroup.GroupSeq) ? int.Parse(taskGroup.GroupSeq) : (int?)null, targetRoute = taskGroup.TargetRoute != null ? new Sln.Wcs.HikRoBotSdk.Dto.Common.TargetRoute() { type = taskGroup.TargetRoute.Type, code = taskGroup.TargetRoute.Code, } : null, }; var resp = this.hikRoBotSdk.TaskGroup(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new TaskGroupResultDto() { code = hikRoBotStatus, msg = resp.message, }; } catch (Exception ex) { return new TaskGroupResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public TaskPriorityResultDto SetTaskPriority(Domain.Dto.TaskPriority.TaskPriorityDto taskPriority) { try { if (taskPriority == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.TaskPriority.TaskPriorityDto() { robotTaskCode = taskPriority.RobotTaskCode, initPriority = taskPriority.InitPriority ?? 0, deadline = taskPriority.Deadline, extra = taskPriority.Extra, }; var resp = this.hikRoBotSdk.SetTaskPriority(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new TaskPriorityResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.TaskPriority.TaskPriorityResultModel { RobotTaskCode = resp.data?.robotTaskCode, Extra = resp.data?.extra?.ToString(), }, }; } catch (Exception ex) { return new TaskPriorityResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public ZonePauseResultDto ZonePause(Domain.Dto.ZonePause.ZonePauseDto zonePause) { try { if (zonePause == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.ZonePause.ZonePauseDto() { zoneCode = zonePause.ZoneCode, mapCode = zonePause.MapCode, invoke = zonePause.Invoke, }; var resp = this.hikRoBotSdk.ZonePause(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new ZonePauseResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.ZonePause.ZonePauseResultModel { Extra = resp.extra?.ToString(), }, }; } catch (Exception ex) { return new ZonePauseResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public ZoneHomingResultDto ZoneHoming(Domain.Dto.ZoneHoming.ZoneHomingDto zoneHoming) { try { if (zoneHoming == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.ZoneHoming.ZoneHomingDto() { mapCode = zoneHoming.MapCode, zoneCode = zoneHoming.ZoneCode, zoneCodes = zoneHoming.ZoneCodes, autoShutdown = zoneHoming.AutoShutdown.ToString().ToLower(), bootTime = zoneHoming.BootTime, expireTime = zoneHoming.ExpireTime, extra = zoneHoming.Extra, }; var resp = this.hikRoBotSdk.ZoneHoming(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new ZoneHomingResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.ZoneHoming.ZoneHomingResultModel { HomingCode = resp.data?.homingCode, RobotCount = resp.data?.robotCount ?? 0, Extra = resp.data?.extra?.ToString(), }, }; } catch (Exception ex) { return new ZoneHomingResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public ZoneBanishResultDto ZoneBanish(Domain.Dto.ZoneBanish.ZoneBanishDto zoneBanish) { try { if (zoneBanish == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.ZoneBanish.ZoneBanishDto() { zoneCode = zoneBanish.ZoneCode, zoneCodes = zoneBanish.ZoneCodes, targetZoneCode = zoneBanish.TargetZoneCode, pause = zoneBanish.Pause.ToString().ToLower(), report = zoneBanish.Report.ToString().ToLower(), controlMode = zoneBanish.ControlMode, expireTime = zoneBanish.ExpireTime, invoke = zoneBanish.Invoke, extra = zoneBanish.Extra, }; var resp = this.hikRoBotSdk.ZoneBanish(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new ZoneBanishResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.ZoneBanish.ZoneBanishResultModel { BanishCode = resp.data?.banishCode, Extra = resp.data?.extra?.ToString(), }, }; } catch (Exception ex) { return new ZoneBanishResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public ZoneBlockadeResultDto ZoneBlockade(Domain.Dto.ZoneBlockade.ZoneBlockadeDto zoneBlockade) { try { if (zoneBlockade == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.ZoneBlockade.ZoneBlockadeDto() { zoneCode = zoneBlockade.ZoneCode, mapCode = zoneBlockade.MapCode, invoke = zoneBlockade.Invoke, pause = zoneBlockade.Pause.ToString().ToLower(), report = zoneBlockade.Report.ToString().ToLower(), disableSite = zoneBlockade.DisableSite, enableSite = zoneBlockade.EnableSite, }; var resp = this.hikRoBotSdk.ZoneBlockade(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new ZoneBlockadeResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.ZoneBlockade.ZoneBlockadeResultModel { Extra = resp.extra?.ToString(), }, }; } catch (Exception ex) { return new ZoneBlockadeResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public CarrierBindResultDto CarrierBind(Domain.Dto.CarrierBind.CarrierBindDto carrierBind) { try { if (carrierBind == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.CarrierBind.CarrierBindDto() { carrierCode = carrierBind.CarrierCode, siteCode = carrierBind.SiteCode, carrierDir = carrierBind.CarrierDir, extra = carrierBind.Extra, }; var resp = this.hikRoBotSdk.CarrierBind(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new CarrierBindResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.CarrierBind.CarrierBindResultModel { Extra = resp.extra?.ToString(), }, }; } catch (Exception ex) { return new CarrierBindResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public CarrierUnbindResultDto CarrierUnbind(Domain.Dto.CarrierUnbind.CarrierUnbindDto carrierUnbind) { try { if (carrierUnbind == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.CarrierUnbind.CarrierUnbindDto() { carrierCode = carrierUnbind.CarrierCode, siteCode = carrierUnbind.SiteCode, extra = carrierUnbind.Extra, }; var resp = this.hikRoBotSdk.CarrierUnbind(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new CarrierUnbindResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.CarrierUnbind.CarrierUnbindResultModel { Extra = resp.extra?.ToString(), }, }; } catch (Exception ex) { return new CarrierUnbindResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public SiteBindResultDto SiteBind(Domain.Dto.SiteBind.SiteBindDto siteBind) { try { if (siteBind == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.SiteBind.SiteBindDto() { slotCategory = siteBind.SlotCategory, slotCode = siteBind.SlotCode, carrierCategory = siteBind.CarrierCategory, carrierType = siteBind.CarrierType, carrierCode = siteBind.CarrierCode, carrierDir = siteBind.CarrierDir, invoke = siteBind.Invoke, stackLabel = siteBind.StackLabel, colCount = siteBind.ColCount, extra = siteBind.Extra, }; var resp = this.hikRoBotSdk.SiteBind(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new SiteBindResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.SiteBind.SiteBindResultModel { Extra = resp.extra?.ToString(), }, }; } catch (Exception ex) { return new SiteBindResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public CarrierLockResultDto CarrierLock(Domain.Dto.CarrierLock.CarrierLockDto carrierLock) { try { if (carrierLock == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.CarrierLock.CarrierLockDto() { carrierCode = carrierLock.CarrierCode, invoke = carrierLock.Invoke, }; var resp = this.hikRoBotSdk.CarrierLock(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new CarrierLockResultDto() { code = hikRoBotStatus, msg = resp.message, }; } catch (Exception ex) { return new CarrierLockResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public SiteLockResultDto SiteLock(Domain.Dto.SiteLock.SiteLockDto siteLock) { try { if (siteLock == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.SiteLock.SiteLockDto() { siteCode = siteLock.SiteCode, invoke = siteLock.Invoke, }; var resp = this.hikRoBotSdk.SiteLock(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new SiteLockResultDto() { code = hikRoBotStatus, msg = resp.message, }; } catch (Exception ex) { return new SiteLockResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public PreTaskResultDto PreTask(Domain.Dto.PreTask.PreTaskDto preTask) { try { if (preTask == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.PreTask.PreTaskDto() { siteCode = preTask.SiteCode, nextTaskTime = preTask.NextTaskTime, robotType = preTask.RobotType, priority = preTask.Priority, taskCount = preTask.TaskCount, capacityCount = preTask.CapacityCount, amrDir = preTask.AmrDir, extra = preTask.Extra, }; var resp = this.hikRoBotSdk.PreTask(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new PreTaskResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.PreTask.PreTaskResultModel { RobotTaskCode = resp.data?.robotTaskCode, Extra = resp.data?.extra?.ToString(), }, }; } catch (Exception ex) { return new PreTaskResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public QueryTaskResultDto QueryTaskStatus(Domain.Dto.QueryTask.QueryTaskDto queryTask) { try { if (queryTask == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.QueryTask.QueryTaskDto() { robotTaskCode = queryTask.RobotTaskCode, }; var resp = this.hikRoBotSdk.QueryTaskStatus(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); var model = new Domain.Model.QueryTask.QueryTaskResultModel { RobotTaskCode = resp.data?.robotTaskCode, TaskType = resp.data?.taskType, TaskStatus = resp.data?.taskStatus, InitPriority = resp.data?.initPriority, Deadline = resp.data?.deadline, SingleRobotCode = resp.data?.singleRobotCode, CurrentSeq = resp.data?.currentSeq, Extra = resp.data?.extra?.ToString(), }; if (resp.data?.targetRoute != null) { model.TargetRoute = resp.data.targetRoute.Select(r => new Domain.Model.QueryTask.TargetRoute { Type = r.type, Code = r.code, }).ToList(); } if (resp.data?.waring != null) { model.Waring = new Domain.Model.QueryTask.Waring { Code = resp.data.waring.taskWarnCode, Desc = resp.data.waring.errorMsg, }; } return new QueryTaskResultDto() { code = hikRoBotStatus, msg = resp.message, data = model, }; } catch (Exception ex) { return new QueryTaskResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public QueryRobotResultDto QueryRobotStatus(Domain.Dto.QueryRobot.QueryRobotDto queryRobot) { try { if (queryRobot == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.QueryRobot.QueryRobotDto() { singleRobotCode = queryRobot.SingleRobotCode, }; var resp = this.hikRoBotSdk.QueryRobotStatus(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); var model = new Domain.Model.QueryRobot.QueryRobotResultModel { SingleRobotCode = resp.data?.singleRobotCode, RobotDir = resp.data?.robotDir ?? 0, RobotIp = resp.data?.robotIp, Battery = resp.data?.battery ?? 0, Speed = resp.data?.speed ?? 0, CarrierCode = resp.data?.carrierCode, Extra = resp.data?.extra?.ToString(), }; if (double.TryParse(resp.data?.x, out double xVal)) { model.X = xVal; } if (double.TryParse(resp.data?.y, out double yVal)) { model.Y = yVal; } if (resp.data?.robotStatus != null) { model.RobotStatus = resp.data.robotStatus.taskable; } if (resp.data?.warnings != null) { model.Warnings = resp.data.warnings.Select(w => new Domain.Model.QueryRobot.Waring { Code = w.taskWarnCode, Desc = w.errorMsg, }).ToList(); } return new QueryRobotResultDto() { code = hikRoBotStatus, msg = resp.message, data = model, }; } catch (Exception ex) { return new QueryRobotResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public QueryCarrierResultDto QueryCarrierStatus(Domain.Dto.QueryCarrier.QueryCarrierDto queryCarrier) { try { if (queryCarrier == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.QueryCarrier.QueryCarrierDto() { carrierCode = queryCarrier.CarrierCode, }; var resp = this.hikRoBotSdk.QueryCarrierStatus(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); var model = new Domain.Model.QueryCarrier.QueryCarrierResultModel { CarrierCode = resp.data?.carrierCode, RobotTaskCode = resp.data?.robotTaskCode, SiteCode = resp.data?.siteCode, CarrierDir = resp.data?.carrierDir, CarrierStatus = resp.data?.carrierStatus, BinCode = resp.data?.binCode, BinName = resp.data?.binName, RobotCode = resp.data?.robotCode, Extra = resp.data?.extra?.ToString(), }; if (double.TryParse(resp.data?.x, out double xVal)) { model.X = xVal; } if (double.TryParse(resp.data?.y, out double yVal)) { model.Y = yVal; } return new QueryCarrierResultDto() { code = hikRoBotStatus, msg = resp.message, data = model, }; } catch (Exception ex) { return new QueryCarrierResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public MatLabelBindResultDto MatLabelBind(Domain.Dto.MatLabelBind.MatLabelBindDto matLabelBind) { try { if (matLabelBind == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.MatLabelBind.MatLabelBindDto() { carrierCode = matLabelBind.CarrierCode, matLabel = matLabelBind.MatLabel, }; var resp = this.hikRoBotSdk.MatLabelBind(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new MatLabelBindResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.MatLabelBind.MatLabelBindResultModel { Extra = resp.extra?.ToString(), }, }; } catch (Exception ex) { return new MatLabelBindResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public MatLabelUnbindResultDto MatLabelUnbind(Domain.Dto.MatLabelUnbind.MatLabelUnbindDto matLabelUnbind) { try { if (matLabelUnbind == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.MatLabelUnbind.MatLabelUnbindDto() { carrierCode = matLabelUnbind.CarrierCode, matLabel = matLabelUnbind.MatLabel, }; var resp = this.hikRoBotSdk.MatLabelUnbind(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new MatLabelUnbindResultDto() { code = hikRoBotStatus, msg = resp.message, }; } catch (Exception ex) { return new MatLabelUnbindResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public EquipmentNotifyResultDto EquipmentNotify(Domain.Dto.EquipmentNotify.EquipmentNotifyDto equipmentNotify) { try { if (equipmentNotify == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.EquipmentNotify.EquipmentNotifyDto() { eqptCode = equipmentNotify.EqptCode, taskCode = equipmentNotify.TaskCode, actionStatus = equipmentNotify.ActionStatus, siteCode = equipmentNotify.SiteCode, extra = equipmentNotify.Extra, }; var resp = this.hikRoBotSdk.EquipmentNotify(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new EquipmentNotifyResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.EquipmentNotify.EquipmentNotifyResultModel { RobotTaskCode = resp.data?.robotTaskCode, NextSeq = resp.data?.nextSeq, Extra = resp.data?.extra?.ToString(), }, }; } catch (Exception ex) { return new EquipmentNotifyResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } public EquipmentNotifyResultDto EquipmentNotifyGbt(Domain.Dto.EquipmentNotify.EquipmentNotifyDto equipmentNotify) { try { if (equipmentNotify == null) { throw new ArgumentException("输入参数为空。"); } var sdkDto = new Sln.Wcs.HikRoBotSdk.Dto.EquipmentNotify.EquipmentNotifyDto() { eqptCode = equipmentNotify.EqptCode, taskCode = equipmentNotify.TaskCode, actionStatus = equipmentNotify.ActionStatus, siteCode = equipmentNotify.SiteCode, extra = equipmentNotify.Extra, }; var resp = this.hikRoBotSdk.EquipmentNotifyGbt(sdkDto); bool parseRes = this.codeUtil.parse(resp.code, resp.message, out HikRoBotStatusEnum hikRoBotStatus); return new EquipmentNotifyResultDto() { code = hikRoBotStatus, msg = resp.message, data = new Domain.Model.EquipmentNotify.EquipmentNotifyResultModel { RobotTaskCode = resp.data?.robotTaskCode, NextSeq = resp.data?.nextSeq, Extra = resp.data?.extra?.ToString(), }, }; } catch (Exception ex) { return new EquipmentNotifyResultDto() { code = HikRoBotStatusEnum.SDK调用异常, msg = ex.Message, }; } } } }