You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1087 lines
40 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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,
};
}
}
}
}