change - 海康 AGVS 系统接口测试,增加请求头配置、禁用 SSL 请求

pull/1/head
WenJY 3 weeks ago
parent e5abfdfa36
commit 5be020c3e6

@ -1,6 +1,5 @@
using Sln.Wcs.HikRoBotApi.Domain.Dto.CancelTask; using Sln.Wcs.HikRoBotApi.Domain.Dto.CancelTask;
using Sln.Wcs.HikRoBotApi.Domain.Dto.ContinueTask; using Sln.Wcs.HikRoBotApi.Domain.Dto.ContinueTask;
using Sln.Wcs.HikRoBotApi.Domain.Dto.GenAgvSchedulingTask;
using Sln.Wcs.HikRoBotApi.Enum; using Sln.Wcs.HikRoBotApi.Enum;
using Sln.Wcs.HikRoBotApi.Util; using Sln.Wcs.HikRoBotApi.Util;
using Sln.Wcs.HikRoBotSdk; using Sln.Wcs.HikRoBotSdk;
@ -10,6 +9,9 @@ using System.Linq;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Sln.Wcs.HikRoBotSdk.Dto.GenAgvSchedulingTask;
using GenAgvSchedulingTaskDto = Sln.Wcs.HikRoBotApi.Domain.Dto.GenAgvSchedulingTask.GenAgvSchedulingTaskDto;
using GenAgvSchedulingTaskResultDto = Sln.Wcs.HikRoBotApi.Domain.Dto.GenAgvSchedulingTask.GenAgvSchedulingTaskResultDto;
#region << 版 本 注 释 >> #region << 版 本 注 释 >>
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
@ -65,10 +67,19 @@ namespace Sln.Wcs.HikRoBotApi.Service.Impl
throw new ArgumentException($"输入参数为空。"); throw new ArgumentException($"输入参数为空。");
} }
// var data = new HikRoBotSdk.Dto.GenAgvSchedulingTask.GenAgvSchedulingTaskDto()
// {
// reqCode = genAgvSchedulingTask.reqCode,
// taskTyp = genAgvSchedulingTask.taskTyp,
// };
var data = new HikRoBotSdk.Dto.GenAgvSchedulingTask.GenAgvSchedulingTaskDto() var data = new HikRoBotSdk.Dto.GenAgvSchedulingTask.GenAgvSchedulingTaskDto()
{ {
reqCode = genAgvSchedulingTask.reqCode, taskType = "PF-FMR-COMMON",
taskTyp = genAgvSchedulingTask.taskTyp, targetRoutes = new List<targetRoute>()
{
new targetRoute(){type = "STORAGE",code = "R5001A02011"},
new targetRoute(){type = "STORAGE",code = "R5001A01011"}
}
}; };
var resp = this.hikRoBotSdk.GenAgvSchedulingTask(data); var resp = this.hikRoBotSdk.GenAgvSchedulingTask(data);
@ -83,8 +94,8 @@ namespace Sln.Wcs.HikRoBotApi.Service.Impl
{ {
code = resp.code, code = resp.code,
message = resp.message, message = resp.message,
reqCode = resp.reqCode, //reqCode = resp.reqCode,
data = resp.data //data = resp.data
}, },
}; };

@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Flurl.Http;
#region << 版 本 注 释 >> #region << 版 本 注 释 >>
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
@ -32,11 +33,10 @@ namespace Sln.Wcs.HikRoBotSdk.Config
public class HikRoBotConfig public class HikRoBotConfig
{ {
public readonly string api = ""; public readonly string api = "";
public readonly string partnerId; public readonly string contentType = "";
public readonly string accesskey; public readonly string userAgent="";
public readonly string secretkey; public readonly string xlrRequestId="";//随机生成
public readonly string version; public readonly string xlrVersion="";
public readonly string test;
/// <summary> /// <summary>
/// 注入海康 SDK 配置参数 /// 注入海康 SDK 配置参数
@ -45,15 +45,26 @@ namespace Sln.Wcs.HikRoBotSdk.Config
/// <exception cref="Exception"></exception>IConfiguration configuration /// <exception cref="Exception"></exception>IConfiguration configuration
public HikRoBotConfig(IConfiguration configuration) public HikRoBotConfig(IConfiguration configuration)
{ {
// if (string.IsNullOrEmpty(configuration["sdk_api"])) if (string.IsNullOrEmpty(configuration["HikRoBot_Url"]))
// { {
// throw new Exception("sdk_api 配置不正确,请检查Apollo配置."); throw new Exception("HikRoBot_Url 配置不正确,请检查Apollo配置.");
// } }
// if (string.IsNullOrEmpty(configuration["sdk_json_str"])) if (string.IsNullOrEmpty(configuration["HikRoBot_Content-Type"]))
// { {
// throw new Exception("sdk_partner_id 配置不正确,请检查Apollo配置."); throw new Exception("HikRoBot_Content-Type 配置不正确,请检查Apollo配置.");
// } }
// api = configuration["sdk_json_str"]; if (string.IsNullOrEmpty(configuration["HikRoBot_User-Agent"]))
{
throw new Exception("HikRoBot_User-Agent 配置不正确,请检查Apollo配置.");
}
if (string.IsNullOrEmpty(configuration["HikRoBot_X-lr-version"]))
{
throw new Exception("HikRoBot_X-lr-version 配置不正确,请检查Apollo配置.");
}
api = configuration["HikRoBot_Url"];
contentType = configuration["HikRoBot_ContentType"];
userAgent = configuration["HikRoBot_User-Agent"];
xlrVersion = configuration["HikRoBot_X-lr-version"];
} }
} }

@ -30,129 +30,139 @@ namespace Sln.Wcs.HikRoBotSdk.Dto.GenAgvSchedulingTask
{ {
public class GenAgvSchedulingTaskDto public class GenAgvSchedulingTaskDto
{ {
//这里写请求参数
/// <summary> public string taskType{get;set;}
/// 请求编号,每个请求都要一个唯一编号, 同一个请求重复提交, 使用同一编号。;
/// </summary> public List<targetRoute> targetRoutes{get;set;}
public string reqCode { get; set; }
// /// <summary>
// /// 请求编号,每个请求都要一个唯一编号, 同一个请求重复提交, 使用同一编号。;
// /// </summary>
// public string reqCode { get; set; }
//
// /// <summary>
// /// 请求时间截 格式: “yyyy-MM-dd HH:mm:ss”。
// /// </summary>
// public string reqTime { get; set; }
//
// /// <summary>
// /// 客户端编号如PDAHCWMS等。
// /// </summary>
// public string clientCode { get; set; }
//
// /// <summary>
// /// 令牌号, 由调度系统颁发
// /// </summary>
// public string tokenCode { get; set; }
//
// /// <summary>
// /// 任务类型,
// /// 业务流程
// /// 5层柜体来料验收拆分 柜体物料 提升机输送线对接位-验收拆分区 WMS F501 2
// /// 5层柜体来料入库 柜体物料 验收拆分区-原材料周转区 WMS F502 2
// /// 5层辅料立体库物料入库 辅料料箱 回转输送线回库口-辅料库货架 WMS F503 1
// /// 5层辅料立体库分拣出库 辅料料箱 辅料库货架-回转输送线出库口 WMS F504 1
// /// 5层辅料立体库分拣回库 辅料料箱 回转输送线回库口-辅料库货架 WMS F505 1
// /// 5层辅料配送流程 辅料料箱 物料分拣位-装配区领料工位 WMS F506 空值
// /// 5层背板安装区物料配送 柜体物料 原材料周转区-背板安装区 WMS F507 2
// /// 5层半成品下线 半成品柜 背板安装区-半成品周转区 WMS F508 2
// /// 5层半成品检验 半成品柜 半成品周转区-检测台 WMS F509 2
// /// 5层成品柜体入库 成品柜体 检验台-成品区 WMS F510 2
// /// 5层成品柜体出库 成品柜体 成品区-提升机输送线对接点 WMS F511 2
// /// </summary>
// public string taskTyp { get; set; }
//
// /// <summary>
// /// 容器类型(叉车/CTU专用叉车项目必传
// /// </summary>
// public string ctnrTyp { get; set; }
//
// /// <summary>
// /// 容器编号(叉车/CTU专用
// /// </summary>
// public string ctnrCode { get; set; }
//
// /// <summary>
// /// 容器数量叉车堆叠专用默认值1仅记录堆叠的数量不记录堆叠的每个容器号
// /// </summary>
// public string ctnrNum { get; set; }
//
// /// <summary>
// /// 任务模式 0-普通move 1-出库move 2-入库move 3-移库move
// /// </summary>
// public string taskMode { get; set; }
//
// /// <summary>
// /// 工作位一般为机台或工作台位置与RCS-2000端配置的位置名称一致, 工作位名称为字母\数字\或组合, 不超过32位。
// /// </summary>
// public string wbCode { get; set; }
//
// /// <summary>
// /// 位置路径AGV关键路径位置集合与任务类型中模板配置的位置路径一一对应。待现场地图部署、配置完成后可获取。
// /// </summary>
// public List<Position> positionCodePath { get; set; }
//
// /// <summary>
// /// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ,不指定方向可以为空
// /// </summary>
// public string podDir { get; set; }
//
// /// <summary>
// /// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ,不指定方向可以为空
// /// </summary>
// public string podTyp { get; set; }
//
// /// <summary>
// /// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ,不指定方向可以为空
// /// </summary>
// public string podCode { get; set; }
//
// /// <summary>
// /// 物料批次或货架上的物料唯一编码,
// /// </summary>
// public string materialLot { get; set; }
//
// /// <summary>
// /// 物料类型, 仅移载机器人协议专用必填, 其它车型任务不填
// /// </summary>
// public string materialType { get; set; }
//
// /// <summary>
// /// 优先级1~127最大优先级最高。为空时采用任务模板的优先级。
// /// </summary>
// public string priority { get; set; }
//
// /// <summary>
// /// 任务单号,选填, 不填系统自动生成UUID小于等于64位
// /// </summary>
// public string taskCode { get; set; }
//
// /// <summary>
// /// AGV编号填写表示指定某一编号的AGV执行该任务
// /// </summary>
// public string agvCode { get; set; }
//
// /// <summary>
// /// 组编号
// /// </summary>
// public string groupId { get; set; }
//
// /// <summary>
// /// 设备类型
// /// </summary>
// public string agvTyp { get; set; }
//
// /// <summary>
// /// 区域/策略中挑选货架以及根据物料批次挑选货架时的先进先出规则
// /// </summary>
// public string positionSelStrategy { get; set; }
//
// public string data { get; set; }
}
/// <summary> public class targetRoute
/// 请求时间截 格式: “yyyy-MM-dd HH:mm:ss”。 {
/// </summary> public string type{get;set;}
public string reqTime { get; set; } public string code{get;set;}
/// <summary>
/// 客户端编号如PDAHCWMS等。
/// </summary>
public string clientCode { get; set; }
/// <summary>
/// 令牌号, 由调度系统颁发
/// </summary>
public string tokenCode { get; set; }
/// <summary>
/// 任务类型,
/// 业务流程
/// 5层柜体来料验收拆分 柜体物料 提升机输送线对接位-验收拆分区 WMS F501 2
/// 5层柜体来料入库 柜体物料 验收拆分区-原材料周转区 WMS F502 2
/// 5层辅料立体库物料入库 辅料料箱 回转输送线回库口-辅料库货架 WMS F503 1
/// 5层辅料立体库分拣出库 辅料料箱 辅料库货架-回转输送线出库口 WMS F504 1
/// 5层辅料立体库分拣回库 辅料料箱 回转输送线回库口-辅料库货架 WMS F505 1
/// 5层辅料配送流程 辅料料箱 物料分拣位-装配区领料工位 WMS F506 空值
/// 5层背板安装区物料配送 柜体物料 原材料周转区-背板安装区 WMS F507 2
/// 5层半成品下线 半成品柜 背板安装区-半成品周转区 WMS F508 2
/// 5层半成品检验 半成品柜 半成品周转区-检测台 WMS F509 2
/// 5层成品柜体入库 成品柜体 检验台-成品区 WMS F510 2
/// 5层成品柜体出库 成品柜体 成品区-提升机输送线对接点 WMS F511 2
/// </summary>
public string taskTyp { get; set; }
/// <summary>
/// 容器类型(叉车/CTU专用叉车项目必传
/// </summary>
public string ctnrTyp { get; set; }
/// <summary>
/// 容器编号(叉车/CTU专用
/// </summary>
public string ctnrCode { get; set; }
/// <summary>
/// 容器数量叉车堆叠专用默认值1仅记录堆叠的数量不记录堆叠的每个容器号
/// </summary>
public string ctnrNum { get; set; }
/// <summary>
/// 任务模式 0-普通move 1-出库move 2-入库move 3-移库move
/// </summary>
public string taskMode { get; set; }
/// <summary>
/// 工作位一般为机台或工作台位置与RCS-2000端配置的位置名称一致, 工作位名称为字母\数字\或组合, 不超过32位。
/// </summary>
public string wbCode { get; set; }
/// <summary>
/// 位置路径AGV关键路径位置集合与任务类型中模板配置的位置路径一一对应。待现场地图部署、配置完成后可获取。
/// </summary>
public List<Position> positionCodePath { get; set; }
/// <summary>
/// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ,不指定方向可以为空
/// </summary>
public string podDir { get; set; }
/// <summary>
/// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ,不指定方向可以为空
/// </summary>
public string podTyp { get; set; }
/// <summary>
/// “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下” ,不指定方向可以为空
/// </summary>
public string podCode { get; set; }
/// <summary>
/// 物料批次或货架上的物料唯一编码,
/// </summary>
public string materialLot { get; set; }
/// <summary>
/// 物料类型, 仅移载机器人协议专用必填, 其它车型任务不填
/// </summary>
public string materialType { get; set; }
/// <summary>
/// 优先级1~127最大优先级最高。为空时采用任务模板的优先级。
/// </summary>
public string priority { get; set; }
/// <summary>
/// 任务单号,选填, 不填系统自动生成UUID小于等于64位
/// </summary>
public string taskCode { get; set; }
/// <summary>
/// AGV编号填写表示指定某一编号的AGV执行该任务
/// </summary>
public string agvCode { get; set; }
/// <summary>
/// 组编号
/// </summary>
public string groupId { get; set; }
/// <summary>
/// 设备类型
/// </summary>
public string agvTyp { get; set; }
/// <summary>
/// 区域/策略中挑选货架以及根据物料批次挑选货架时的先进先出规则
/// </summary>
public string positionSelStrategy { get; set; }
public string data { get; set; }
} }
} }

@ -43,14 +43,21 @@ namespace Sln.Wcs.HikRoBotSdk.Dto.GenAgvSchedulingTask
/// </summary> /// </summary>
public string message { get; set; } public string message { get; set; }
public data data { get; set; }
/// <summary> /// <summary>
/// 请求编号 /// 请求编号
/// </summary> /// </summary>
public string reqCode { get; set; } public string errorCode { get; set; }
/// <summary> /// <summary>
/// 自定义返回(返回任务单号) /// 自定义返回(返回任务单号)
/// </summary> /// </summary>
public string data { get; set; } public bool success { get; set; }
}
public class data
{
public string robotTaskCode { get; set; }
} }
} }

@ -7,6 +7,7 @@ using Sln.Wcs.HikRoBotSdk.Dto.GenAgvSchedulingTask;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Authentication;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -55,10 +56,15 @@ namespace Sln.Wcs.HikRoBotSdk
/// <returns></returns> /// <returns></returns>
public GenAgvSchedulingTaskResultDto GenAgvSchedulingTask(GenAgvSchedulingTaskDto genAgvSchedulingTask) public GenAgvSchedulingTaskResultDto GenAgvSchedulingTask(GenAgvSchedulingTaskDto genAgvSchedulingTask)
{ {
string url = $"{hikRoBotConfig.api}/task/submit";
var request = url
.WithHeader("Content-Type", hikRoBotConfig.contentType)
.WithHeader("User-Agent",hikRoBotConfig.userAgent)
.WithHeader("X-lr-request-id", System.Guid.NewGuid().ToString("N"))
.WithHeader("X-lr-version", hikRoBotConfig.xlrVersion);
Console.WriteLine($"请求报文:{JsonConvert.SerializeObject(genAgvSchedulingTask)}"); Console.WriteLine($"请求报文:{JsonConvert.SerializeObject(genAgvSchedulingTask)}");
return this.hikRoBotConfig.api.PostJsonAsync(genAgvSchedulingTask).Result.GetJsonAsync<GenAgvSchedulingTaskResultDto>().Result; return request.PostJsonAsync(genAgvSchedulingTask).Result.GetJsonAsync<GenAgvSchedulingTaskResultDto>().Result;
} }
/// <summary> /// <summary>

@ -1,9 +1,13 @@
using System.Reflection; using System.Reflection;
using Com.Ctrip.Framework.Apollo; using Com.Ctrip.Framework.Apollo;
using Flurl.Http;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using NeoSmart.Caching.Sqlite; using NeoSmart.Caching.Sqlite;
using Sln.Wcs.HikRoBotApi.Domain.Dto.GenAgvSchedulingTask;
using Sln.Wcs.HikRoBotApi.Service;
using Sln.Wcs.HikRoBotApi.Service.Impl;
using Sln.Wcs.Repository; using Sln.Wcs.Repository;
using Sln.Wcs.Serilog; using Sln.Wcs.Serilog;
using Sln.Wcs.Plc; using Sln.Wcs.Plc;
@ -18,6 +22,11 @@ namespace Sln.Wcs
static async Task Main(string[] args) static async Task Main(string[] args)
{ {
TimeZoneInfo chinaZone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
DateTimeOffset utcNow = DateTimeOffset.UtcNow;
DateTimeOffset beijingTime = TimeZoneInfo.ConvertTime(utcNow, chinaZone);
string beijingTimeString = beijingTime.ToString("yyyy-MM-dd HH:mm");
Console.WriteLine(beijingTimeString);
var services = new ServiceCollection(); var services = new ServiceCollection();
ConfigureServices(services); ConfigureServices(services);
@ -32,9 +41,16 @@ namespace Sln.Wcs
// MaterialInStoreTest? service = serviceProvider.GetService<MaterialInStoreTest>(); // MaterialInStoreTest? service = serviceProvider.GetService<MaterialInStoreTest>();
// service?.Run(); // service?.Run();
//禁用 SSL
FlurlHttp.ConfigureClientForUrl("https://172.16.12.11")
.ConfigureInnerHandler(handler =>
{
handler.ServerCertificateCustomValidationCallback = (_, _, _, _) => true;
});
var service = serviceProvider.GetService<MaterialStrategy>(); // var service = serviceProvider.GetService<HikRoBotService>();
service.Run(); // var res = service.GetGenAgvSchedulingTask(new GenAgvSchedulingTaskDto());
Task.Delay(-1).Wait(); Task.Delay(-1).Wait();
} }

Loading…
Cancel
Save