Browse Source

设备数据下发

master
zhaoy 9 months ago
parent
commit
462fa6a11e
12 changed files with 431 additions and 2 deletions
  1. +7
    -0
      BPA.SAAS.KitChenManage.Application/BPA.SAAS.KitChenManage.Application.csproj
  2. +84
    -0
      BPA.SAAS.KitChenManage.Application/BPA.SAAS.KitChenManage.Application.xml
  3. +61
    -0
      BPA.SAAS.KitChenManage.Application/Device/DevicePushRecodeServices.cs
  4. +15
    -0
      BPA.SAAS.KitChenManage.Application/Device/Dtos/DevicePushRecodeDtoInput.cs
  5. +13
    -0
      BPA.SAAS.KitChenManage.Application/Device/Dtos/DevicePushRecodeDtoPageInput.cs
  6. +18
    -0
      BPA.SAAS.KitChenManage.Application/Device/Dtos/PushData.cs
  7. +125
    -0
      BPA.SAAS.KitChenManage.Application/Device/Services/DevicePushRecodeService.cs
  8. +38
    -0
      BPA.SAAS.KitChenManage.Application/Device/Services/IDevicePushRecodeService.cs
  9. +18
    -0
      BPA.SAAS.KitChenManage.Core/Model/BPA_DevicePushRecode.cs
  10. +7
    -0
      BPA.SAAS.KitChenManage.Web.Core/BPA.SAAS.KitChenManage.Web.Core.csproj
  11. +36
    -1
      BPA.SAAS.KitChenManage.Web.Core/Startup.cs
  12. +9
    -1
      BPA.SAAS.KitChenManage.Web.Entry/appsettings.json

+ 7
- 0
BPA.SAAS.KitChenManage.Application/BPA.SAAS.KitChenManage.Application.csproj View File

@@ -14,6 +14,13 @@
<None Remove="BPA.SAAS.KitChenManage.Application.xml" />
</ItemGroup>



<ItemGroup>
<PackageReference Include="BPA.Message" Version="1.0.105" />
<PackageReference Include="BPA.MQTTClient" Version="1.0.11" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\BPA.SAAS.KitChenManage.Core\BPA.SAAS.KitChenManage.Core.csproj" />
</ItemGroup>


+ 84
- 0
BPA.SAAS.KitChenManage.Application/BPA.SAAS.KitChenManage.Application.xml View File

@@ -4,6 +4,90 @@
<name>BPA.SAAS.KitChenManage.Application</name>
</assembly>
<members>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.DevicePushRecodeServices.Page(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoPageInput)">
<summary>
分页
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.DevicePushRecodeServices.Add(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoInput)">
<summary>
添加
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.DevicePushRecodeServices.Update(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoInput)">
<summary>
修改
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.DevicePushRecodeServices.Delete(System.Collections.Generic.List{System.String})">
<summary>
删除
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.DevicePushRecodeService.Page(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoPageInput)">
<summary>
分页
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.DevicePushRecodeService.Add(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoInput)">
<summary>
添加
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.DevicePushRecodeService.Update(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoInput)">
<summary>
修改
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.DevicePushRecodeService.Delete(System.Collections.Generic.List{System.String})">
<summary>
删除
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.IDevicePushRecodeService.Page(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoPageInput)">
<summary>
分页
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.IDevicePushRecodeService.Add(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoInput)">
<summary>
添加
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.IDevicePushRecodeService.Update(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoInput)">
<summary>
修改
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.IDevicePushRecodeService.Delete(System.Collections.Generic.List{System.String})">
<summary>
删除
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Food.Dtos.FoodMenuBaseDto.GoodsIds">
<summary>
商品菜品id


+ 61
- 0
BPA.SAAS.KitChenManage.Application/Device/DevicePushRecodeServices.cs View File

@@ -0,0 +1,61 @@
using BPA.SAAS.KitChenManage.Application.Device.Dtos;
using BPA.SAAS.KitChenManage.Application.Device.Services;
using BPA.SAAS.KitChenManage.Core.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.KitChenManage.Application.Device
{
[ApiDescriptionSettings("DevicePushRecode", Tag = "设备下发")]
public class DevicePushRecodeServices: IDynamicApiController
{
IDevicePushRecodeService _devicePushRecodeService;
public DevicePushRecodeServices(IDevicePushRecodeService devicePushRecodeService)
{
_devicePushRecodeService= devicePushRecodeService;
}
/// <summary>
/// 分页
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/api/devicepushrecode/page")]
public async Task<PageUtil> Page(DevicePushRecodeDtoPageInput input)
{
return await _devicePushRecodeService.Page(input);
}
/// <summary>
/// 添加
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/api/devicepushrecode/add")]
public async Task<bool> Add(DevicePushRecodeDtoInput input)
{
return await _devicePushRecodeService.Add(input);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/api/devicepushrecode/update")]
public async Task<bool> Update(DevicePushRecodeDtoInput input)
{
return await _devicePushRecodeService.Update(input);
}
/// <summary>
/// 删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/api/devicepushrecode/delete")]
public async Task<bool> Delete(List<string> input)
{
return await _devicePushRecodeService.Delete(input);
}
}
}

+ 15
- 0
BPA.SAAS.KitChenManage.Application/Device/Dtos/DevicePushRecodeDtoInput.cs View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.KitChenManage.Application.Device.Dtos
{
public class DevicePushRecodeDtoInput
{
public string Id { get; set; }
public string DeviceId { get; set; }
public string Type { get; set; }
}
}

+ 13
- 0
BPA.SAAS.KitChenManage.Application/Device/Dtos/DevicePushRecodeDtoPageInput.cs View File

@@ -0,0 +1,13 @@
using BPA.SAAS.KitChenManage.Core.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.KitChenManage.Application.Device.Dtos
{
public class DevicePushRecodeDtoPageInput: PageInputBase
{
}
}

+ 18
- 0
BPA.SAAS.KitChenManage.Application/Device/Dtos/PushData.cs View File

@@ -0,0 +1,18 @@
using BPA.Message;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.KitChenManage.Application.Device.Dtos
{
public class PushData: IMessage
{
public object Data { get; set; }
/// <summary>
/// 设备AutoKey
/// </summary>
public int DeviceId { get; set; }
}
}

+ 125
- 0
BPA.SAAS.KitChenManage.Application/Device/Services/DevicePushRecodeService.cs View File

@@ -0,0 +1,125 @@
using BPA.Message;
using BPA.SAAS.KitChenManage.Application.Device.Dtos;
using BPA.SAAS.KitChenManage.Application.Store.Dtos;
using BPA.SAAS.KitChenManage.Core.Base;
using BPA.SAAS.KitChenManage.Core.Model;
using Furion.LinqBuilder;
using MQTTnet;
using MQTTnet.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.KitChenManage.Application.Device.Services
{
public class DevicePushRecodeService: IDevicePushRecodeService, ITransient
{
private readonly ISqlSugarClient _db;
private readonly IMqttClient _mqttClient;
public DevicePushRecodeService(ISqlSugarClient db, IMqttClient mqttClient)
{
_db = db;
_mqttClient=mqttClient;
}
/// <summary>
/// 分页
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<PageUtil> Page(DevicePushRecodeDtoPageInput input)
{
RefAsync<int> total = 0;
var res = await _db.Queryable<BPA_DevicePushRecode>()
.Select(t => new
{
CreateAt = t.CreateAt,
Id = t.Id,
DeviceId = t.DeviceId,
Type=t.Type
}).OrderBy(x => x.CreateAt, OrderByType.Desc).ToPageListAsync(input.Current, input.PageSize, total);
PageUtil util = new PageUtil()
{
Total = total,
Data = res

};
return util;
}
/// <summary>
/// 添加
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<bool> Add(DevicePushRecodeDtoInput input)
{
var Store = input.Adapt<BPA_DevicePushRecode>();
// role.DataScopeType = DataScopeType.ALL;
await Push(0, null);
return await _db.Insertable(Store).CallEntityMethod(t => t.Create()).ExecuteCommandAsync() > 0;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<bool> Update(DevicePushRecodeDtoInput input)
{
var BPA_Store = await _db.Queryable<BPA_DevicePushRecode>().Where(a => a.Id == input.Id).FirstAsync();

var Store = await _db.Queryable<BPA_DevicePushRecode>().Where(a => a.Id == input.Id).FirstAsync();
Store.DeviceId = input.DeviceId;
Store.Type = input.Type;
return _db.Updateable(Store).ExecuteCommandHasChange();

}
/// <summary>
/// 删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<bool> Delete(List<string> input)
{
try
{
// 查询数据库中是否存在未删除的活动信息
var resEntitites = _db.Queryable<BPA_DevicePushRecode>().In(input).ToList();
var res = await _db.Deleteable(resEntitites).ExecuteCommandAsync();
return res > 0;

}
catch (Exception)
{
throw Oops.Oh("删除失败");
}
}
private async Task<bool> Push(int AutoKey, PushData data)
{
try
{
string Topic = "";
// Topic = TOPIC.GetInstance.GetBusinessTopic(x, storeInfo.FirstOrDefault(a => a.Id == item.OrgId).AutoKey) + "/" + item.AutoKey;
BPAPackage bPAPackage = new BPAPackage
{
MessageId = MessageID.TMC_PUSH_INGREDIENTS,
ClientId = AutoKey,
//ClientType = Procuct
MessageVersion = 0x30,
Timestamp = DateTime.Now,
Message = data
};
//每次下发暂停200毫秒 by 王刚 2022-06-08 测试提出修改
// Thread.Sleep(200);
//string aa = bPAPackage.Serialize(false);
var applictionmessage = new MqttApplicationMessageBuilder().WithTopic(Topic).WithPayload(bPAPackage.Serialize(false)).WithAtLeastOnceQoS().Build();
_mqttClient.PublishAsync(applictionmessage);
return true;
}
catch (Exception)
{
return false;
}
}
}
}

+ 38
- 0
BPA.SAAS.KitChenManage.Application/Device/Services/IDevicePushRecodeService.cs View File

@@ -0,0 +1,38 @@
using BPA.SAAS.KitChenManage.Application.Device.Dtos;
using BPA.SAAS.KitChenManage.Core.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.KitChenManage.Application.Device.Services
{
public interface IDevicePushRecodeService
{
/// <summary>
/// 分页
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<PageUtil> Page(DevicePushRecodeDtoPageInput input);
/// <summary>
/// 添加
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<bool> Add(DevicePushRecodeDtoInput input);
/// <summary>
/// 修改
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<bool> Update(DevicePushRecodeDtoInput input);
/// <summary>
/// 删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<bool> Delete(List<string> input);
}
}

+ 18
- 0
BPA.SAAS.KitChenManage.Core/Model/BPA_DevicePushRecode.cs View File

@@ -0,0 +1,18 @@
using BPA.SAAS.KitChenManage.Core.Base;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.KitChenManage.Core.Model
{
[SugarTable("bpa_devicepushrecode")]
public class BPA_DevicePushRecode : IBaseEntity, IGroupId
{
public string DeviceId { get; set; }
public string Type { get; set; }
public string GroupId { get; set; }
}
}

+ 7
- 0
BPA.SAAS.KitChenManage.Web.Core/BPA.SAAS.KitChenManage.Web.Core.csproj View File

@@ -13,6 +13,13 @@
<None Remove="BPA.SAAS.KitChenManage.Web.Core.xml" />
</ItemGroup>



<ItemGroup>
<PackageReference Include="BPA.MQTTClient" Version="1.0.11" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\BPA.SAAS.KitChenManage.Application\BPA.SAAS.KitChenManage.Application.csproj" />
</ItemGroup>


+ 36
- 1
BPA.SAAS.KitChenManage.Web.Core/Startup.cs View File

@@ -1,9 +1,14 @@
using BPA.SAAS.KitChenManage.Core;
using BPA.MQTTClient;
using BPA.SAAS.KitChenManage.Core;
using Furion;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Disconnecting;
using System;
using System.Threading.Tasks;

namespace BPA.SAAS.KitChenManage.Web.Core
{
@@ -13,7 +18,37 @@ namespace BPA.SAAS.KitChenManage.Web.Core
{
services.AddConsoleFormatter();
services.AddJwt<JwtHandler>();
services.AddMqttClientHostedService(op =>
{
op.Port = int.Parse(App.Configuration["dev1_brokerHostSettings:Port"]);
op.Server = App.Configuration["dev1_brokerHostSettings:Host"];
op.UserName = App.Configuration["MqttClientSettings:UserName"];
op.Password = App.Configuration["MqttClientSettings:Password"];
op.mqttClientConnectedHandlerDelegate = new MqttClientConnectedHandlerDelegate(async e =>
{
Console.WriteLine("MQTT连接成功");
});
op.mqttClientDisconnectedHandlerDelegate = new MqttClientDisconnectedHandlerDelegate(async e =>
{
Console.WriteLine("MQTT断开连接");
await Task.Delay(TimeSpan.FromSeconds(5));
try
{
//var options = op.Server.GetService<IMqttClientOptions>();
//await op.Server.GetService<IMqttClient>().ConnectAsync(options);
}
catch (global::System.Exception)
{


}
});
op.MqttApplicationMessageReceivedHandler = new MQTTnet.Client.Receiving.MqttApplicationMessageReceivedHandlerDelegate(async e =>
{

});
});
// services.GetService<IMqttClientOptions>();
services.AddCorsAccessor();
services.AddSqlsugarSetup(App.Configuration);
services.AddControllers()


+ 9
- 1
BPA.SAAS.KitChenManage.Web.Entry/appsettings.json View File

@@ -14,5 +14,13 @@
"DbType": "Mysql",
"IsAutoCloseConnection": true
}
]
],
"dev1_brokerHostSettings": {
"Port": 8083,
"Host": "10.2.1.21"
},
"MqttClientSettings": {
"UserName": "emqx_u_block",
"Password": "emqx_p_admin8765490789"
}
}

Loading…
Cancel
Save