mirror of
http://git.xinwangdao.com/cnnc-embedded-parts-detect/detect.git
synced 2025-06-24 13:34:13 +08:00
fix
This commit is contained in:
parent
e5869250a6
commit
6369114e63
@ -1,4 +1,5 @@
|
|||||||
using detect.device.Utils;
|
using detect.device.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace detect.device;
|
namespace detect.device;
|
||||||
|
|
||||||
@ -43,12 +44,21 @@ public class DeviceClientRequestBuilder
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DeviceClientRequestBuilder WithParam(string name, string value)
|
public DeviceClientRequestBuilder WithParam(string name, object value)
|
||||||
{
|
{
|
||||||
this._params.TryAdd(name, value);
|
this._params.TryAdd(name, value);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DeviceClientRequestBuilder WithParams(Dictionary<string, object> dictionary)
|
||||||
|
{
|
||||||
|
foreach (var (key, value) in dictionary)
|
||||||
|
{
|
||||||
|
this._params.TryAdd(key, value);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public string Build()
|
public string Build()
|
||||||
{
|
{
|
||||||
Dictionary<string, object?> request = new()
|
Dictionary<string, object?> request = new()
|
||||||
|
@ -50,6 +50,25 @@ public class IpEndPointConverter : JsonConverter
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class JsonDateTimeConverter(string dateTimeFormat) : JsonConverter
|
||||||
|
{
|
||||||
|
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
||||||
|
{
|
||||||
|
var dateTime = (DateTime)value!;
|
||||||
|
writer.WriteValue(dateTime.ToString(dateTimeFormat));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
|
||||||
|
{
|
||||||
|
return DateTime.Parse((string)reader.Value!);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CanConvert(Type objectType)
|
||||||
|
{
|
||||||
|
return objectType == typeof(DateTime?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static class JsonUtil
|
public static class JsonUtil
|
||||||
{
|
{
|
||||||
@ -73,6 +92,8 @@ public static class JsonUtil
|
|||||||
{
|
{
|
||||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
settings.Converters.Add(new JsonDateTimeConverter("yyyy-MM-dd HH:mm:ss"));
|
||||||
settings.Converters.Add(new IpAddressConverter());
|
settings.Converters.Add(new IpAddressConverter());
|
||||||
settings.Converters.Add(new IpEndPointConverter());
|
settings.Converters.Add(new IpEndPointConverter());
|
||||||
settings.Formatting = formatting;
|
settings.Formatting = formatting;
|
||||||
|
@ -21,6 +21,12 @@ public class DetectDeviceService : ServiceBase<DeviceEntity>
|
|||||||
return new ApiResponse<DeviceEntity?>(0, "success", item);
|
return new ApiResponse<DeviceEntity?>(0, "success", item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ApiResponse<DeviceEntity?> ListBySn(string deviceSn)
|
||||||
|
{
|
||||||
|
var item = Find(x => x.DeviceSn == deviceSn);
|
||||||
|
return new ApiResponse<DeviceEntity?>(0, "success", item);
|
||||||
|
}
|
||||||
|
|
||||||
public ApiResponse<List<DeviceEntity>?> ListAll()
|
public ApiResponse<List<DeviceEntity>?> ListAll()
|
||||||
{
|
{
|
||||||
var items = FindList(x => true, "Id", true)
|
var items = FindList(x => true, "Id", true)
|
||||||
|
@ -22,6 +22,13 @@ public class DetectTaskService : ServiceBase<DetectTaskEntity>
|
|||||||
return new ApiResponse<List<DetectTaskEntity>?>(0, "success", items);
|
return new ApiResponse<List<DetectTaskEntity>?>(0, "success", items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ApiResponse<List<DetectTaskEntity>?> ListByIds(long[] ids)
|
||||||
|
{
|
||||||
|
var items = FindList(x => ids.Contains(x.Id!.Value), "Id", true)
|
||||||
|
.ToList();
|
||||||
|
return new ApiResponse<List<DetectTaskEntity>?>(0, "success", items);
|
||||||
|
}
|
||||||
|
|
||||||
public ApiResponse<PagedResult<DetectTaskEntity>> Search(string? name = "", int pageNum = 1, int pageSize = 10)
|
public ApiResponse<PagedResult<DetectTaskEntity>> Search(string? name = "", int pageNum = 1, int pageSize = 10)
|
||||||
{
|
{
|
||||||
Expression<Func<DetectTaskEntity,bool>> filter = x => (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(x.Name) || x.Name.Contains(name));
|
Expression<Func<DetectTaskEntity,bool>> filter = x => (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(x.Name) || x.Name.Contains(name));
|
||||||
|
@ -37,8 +37,8 @@ public class DeviceClientService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void ConnectAllDevices()
|
public void ConnectAllDevices()
|
||||||
{
|
{
|
||||||
var eventService = Locator.Current.GetService<DetectDeviceService>()!;
|
var deviceService = Locator.Current.GetService<DetectDeviceService>()!;
|
||||||
var devices = eventService.ListAll().Result!;
|
var devices = deviceService.ListAll().Result!;
|
||||||
if (devices.Any())
|
if (devices.Any())
|
||||||
{
|
{
|
||||||
devices.ForEach(device =>
|
devices.ForEach(device =>
|
||||||
@ -134,6 +134,8 @@ public class DeviceClientService
|
|||||||
{
|
{
|
||||||
var sysInfo = GetDeviceInfo(1).GetAwaiter().GetResult();
|
var sysInfo = GetDeviceInfo(1).GetAwaiter().GetResult();
|
||||||
Log.Information("device info: {@Info}", sysInfo);
|
Log.Information("device info: {@Info}", sysInfo);
|
||||||
|
// test
|
||||||
|
// AssignTasks(new long[] { 1 }).GetAwaiter();
|
||||||
}
|
}
|
||||||
|
|
||||||
// var deviceService = Locator.Current.GetService<VapDeviceService>()!;
|
// var deviceService = Locator.Current.GetService<VapDeviceService>()!;
|
||||||
@ -205,5 +207,32 @@ public class DeviceClientService
|
|||||||
return resp.Result;
|
return resp.Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<Dictionary<string, object>?> AssignTasks(long[] taskIds)
|
||||||
|
{
|
||||||
|
var taskService = Locator.Current.GetService<DetectTaskService>()!;
|
||||||
|
var deviceService = Locator.Current.GetService<DetectDeviceService>()!;
|
||||||
|
var taskList = taskService.ListByIds(taskIds).Result!;
|
||||||
|
if (taskList.Count == 0)
|
||||||
|
{
|
||||||
|
throw new Exception("未选择需要下发的任务!");
|
||||||
|
}
|
||||||
|
|
||||||
|
var deviceSn = taskList[0].DeviceSn!;
|
||||||
|
var device = deviceService.ListBySn(deviceSn).Result!;
|
||||||
|
var deviceClient = GetDeviceClient(device.Id!.Value);
|
||||||
|
if (deviceClient == null)
|
||||||
|
{
|
||||||
|
throw new Exception("设备未连接!");
|
||||||
|
}
|
||||||
|
var req = DeviceClientRequestBuilder.Create().WithType("service").WithComponent("dat_task")
|
||||||
|
.WithMethod("add_server_tasks").WithParam("tasks", taskList);
|
||||||
|
var resp = await deviceClient.RequestAction<Dictionary<string, object>>(req);
|
||||||
|
if (resp.IsFailed)
|
||||||
|
{
|
||||||
|
throw new Exception(resp.Message);
|
||||||
|
}
|
||||||
|
return resp.Result;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
@ -2,6 +2,7 @@
|
|||||||
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Cxwd_005Ccnnc_005Cdetect_005Cdetect_002Egui_005CLibs_005Cxwd_002Eutils_002Edll/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Cxwd_005Ccnnc_005Cdetect_005Cdetect_002Egui_005CLibs_005Cxwd_002Eutils_002Edll/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AControl_002Ecs_002Fl_003AC_0021_003FUsers_003Fxiongwei_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff963a2a29ea2bb2d4ad8737293b45c4edbd94e55219dc42cf68343d6d91d9_003FControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AControl_002Ecs_002Fl_003AC_0021_003FUsers_003Fxiongwei_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff963a2a29ea2bb2d4ad8737293b45c4edbd94e55219dc42cf68343d6d91d9_003FControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADependencyResolverMixins_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fca0d4592dc494bbaa872fd9db942335922638_003Ff9_003Fb0105fc3_003FDependencyResolverMixins_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADependencyResolverMixins_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fca0d4592dc494bbaa872fd9db942335922638_003Ff9_003Fb0105fc3_003FDependencyResolverMixins_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonStringEnumConverter_002Ecs_002Fl_003AC_0021_003FUsers_003Fxiongwei_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fe8fd44bb4fe5af449849853612f32962e78c0e82a7b6a4307a7bcae61a547a_003FJsonStringEnumConverter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AReactiveUserControl_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F4d7c93652a64ddcaeff466d4c6bae2d847fe753565401deac6d1e5995386b1_003FReactiveUserControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AReactiveUserControl_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F4d7c93652a64ddcaeff466d4c6bae2d847fe753565401deac6d1e5995386b1_003FReactiveUserControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AReactiveWindow_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fxiongwei_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe4ef1a6c8fbf4ab1a0360a42a1854b208c00_003F5d_003Fbfa2c6a3_003FReactiveWindow_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AReactiveWindow_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fxiongwei_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe4ef1a6c8fbf4ab1a0360a42a1854b208c00_003F5d_003Fbfa2c6a3_003FReactiveWindow_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARxApp_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F4c75a39152c6ea672be27a386dbf424c0f2d222d51114dffb436ecd6b570ce_003FRxApp_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARxApp_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F4c75a39152c6ea672be27a386dbf424c0f2d222d51114dffb436ecd6b570ce_003FRxApp_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
Loading…
Reference in New Issue
Block a user