Ver código fonte

xiafa

master
zhaoy 8 meses atrás
pai
commit
b3b281d4cc
8 arquivos alterados com 147 adições e 15 exclusões
  1. +34
    -0
      BPA.SAAS.KitChenManage.Application/BPA.SAAS.KitChenManage.Application.xml
  2. +10
    -1
      BPA.SAAS.KitChenManage.Application/Device/DevicePushRecodeServices.cs
  3. +25
    -0
      BPA.SAAS.KitChenManage.Application/Device/Dtos/DevicePushRecodeDtoInput.cs
  4. +2
    -0
      BPA.SAAS.KitChenManage.Application/Device/Dtos/DevicePushRecodeDtoPageInput.cs
  5. +59
    -13
      BPA.SAAS.KitChenManage.Application/Device/Services/DevicePushRecodeService.cs
  6. +6
    -1
      BPA.SAAS.KitChenManage.Application/Device/Services/IDevicePushRecodeService.cs
  7. +5
    -0
      BPA.SAAS.KitChenManage.Core/BPA.SAAS.KitChenManage.Core.xml
  8. +6
    -0
      BPA.SAAS.KitChenManage.Core/Model/BPA_DevicePushRecode.cs

+ 34
- 0
BPA.SAAS.KitChenManage.Application/BPA.SAAS.KitChenManage.Application.xml Ver arquivo

@@ -18,6 +18,13 @@
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.DevicePushRecodeServices.Update(System.String)">
<summary>
修改
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.DevicePushRecodeServices.Delete(System.Collections.Generic.List{System.String})">
<summary>
删除
@@ -25,6 +32,26 @@
<param name="input"></param>
<returns></returns>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.Dtos.ProductTopics.Topics">
<summary>
Topics类
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.Dtos.ProductTopics.TopicsType">
<summary>
TopicsType类型 0发布 1订阅 2发布和订阅
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.Dtos.ProductTopics.Description">
<summary>
描述
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.Dtos.ProductTopics.IsDefault">
<summary>
是否默认Topics
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoPageInput.Type">
<summary>
下发类型1商品 2物料 3配方
@@ -70,6 +97,13 @@
<param name="input"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.IDevicePushRecodeService.Update(System.String)">
<summary>
更新
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.IDevicePushRecodeService.Delete(System.Collections.Generic.List{System.String})">
<summary>
删除


+ 10
- 1
BPA.SAAS.KitChenManage.Application/Device/DevicePushRecodeServices.cs Ver arquivo

@@ -37,7 +37,16 @@ namespace BPA.SAAS.KitChenManage.Application.Device
{
return await _devicePushRecodeService.Add(input);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("/api/devicepushrecode/update")]
public async Task<bool> Update(string id)
{
return await _devicePushRecodeService.Update(id);
}
/// <summary>
/// 删除
/// </summary>


+ 25
- 0
BPA.SAAS.KitChenManage.Application/Device/Dtos/DevicePushRecodeDtoInput.cs Ver arquivo

@@ -9,9 +9,34 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Dtos
public class DevicePushRecodeDtoInput
{
public string DeviceId { get; set; }
public string ProductVersion { get; set; }
public string ProductKey { get; set; }
public string DeviceName { get; set; }
public int DeviceAutoKey { get; set; }
public object Data { get; set; }
public int Type { get; set; }
public List<ProductTopics> TopicsData { get; set; }
}
public class ProductTopics
{
public string Id { get; set; }
/// <summary>
/// Topics类
/// </summary>
public string Topics { get; set; }
/// <summary>
/// TopicsType类型 0发布 1订阅 2发布和订阅
/// </summary>
public int TopicsType { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
public string ProductId { get; set; }
public string ProductVesionId { get; set; }
/// <summary>
/// 是否默认Topics
/// </summary>
public bool IsDefault { get; set; }
}
}

+ 2
- 0
BPA.SAAS.KitChenManage.Application/Device/Dtos/DevicePushRecodeDtoPageInput.cs Ver arquivo

@@ -13,5 +13,7 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Dtos
/// 下发类型1商品 2物料 3配方
/// </summary>
public int Type { get; set; }
public string DeviceName { get; set; }
public string Status { get; set; }
}
}

+ 59
- 13
BPA.SAAS.KitChenManage.Application/Device/Services/DevicePushRecodeService.cs Ver arquivo

@@ -5,6 +5,7 @@ using BPA.SAAS.KitChenManage.Application.Store.Dtos;
using BPA.SAAS.KitChenManage.Core.Base;
using BPA.SAAS.KitChenManage.Core.Model;
using Furion.LinqBuilder;
using Microsoft.CodeAnalysis.Operations;
using Microsoft.Extensions.Hosting;
using MQTTnet;
using MQTTnet.Client;
@@ -36,6 +37,8 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
{
RefAsync<int> total = 0;
var res = await _db.Queryable<BPA_DevicePushRecode>().Where(x=>x.Type== input.Type)
.WhereIF(!string.IsNullOrWhiteSpace(input.DeviceName),x=>x.DeviceName.Contains(input.DeviceName))
.WhereIF(!string.IsNullOrWhiteSpace(input.Status), x => x.Status==Convert.ToInt32(input.Status))
.Select(t => new
{
CreateAt = t.CreateAt,
@@ -46,6 +49,8 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
Type =t.Type,
Topic=t.Topic,
DataResore=t.DataResore,
Status=t.Status,
Description=t.Description,
}).OrderBy(x => x.CreateAt, OrderByType.Desc).ToPageListAsync(input.Current, input.PageSize, total);
PageUtil util = new PageUtil()
{
@@ -63,16 +68,53 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
public async Task<bool> Add(DevicePushRecodeDtoInput input)
{
var data = input.Adapt<BPA_DevicePushRecode>();
string Topic = GetTopic(input.Type, input.DeviceAutoKey.ToString());
string topstr = "";
string Topic = GetTopic(input.Type, input.DeviceAutoKey.ToString(), input.ProductVersion, input.ProductKey, out topstr);
if (string.IsNullOrEmpty(Topic)) throw Oops.Oh("请配置相关topic");
data.Topic= Topic;
data.Status = 1;
data.DataResore = JsonConvert.SerializeObject(JsonConvert.DeserializeObject<dynamic>(input.Data.ToString()));
var res=await Push(Topic, new PushData() { Data = data.DataResore, DeviceId = input.DeviceAutoKey });
if (res)
data.DeviceAutoKey= input.DeviceAutoKey;
data.Description = "成功";
if (input.TopicsData.Count > 0)
{
await _db.Insertable(data).CallEntityMethod(t => t.Create()).ExecuteCommandAsync();
var chaeck = input.TopicsData.Any(x => x.Topics.Trim() == topstr.Trim());
if (!chaeck)
{
data.Status =2;
data.Description = "下发数据失败,该产品还未配置对应的topic,请联系管理员进行配置";
}
}
else
{
data.Status = 2;
data.Description = "下发数据失败,该产品还未配置对应的topic,请联系管理员进行配置";
}
if (data.Status == 1)
{
var respush = await Push(Topic, new PushData() { Data = data.DataResore, DeviceId = input.DeviceAutoKey });
if (respush != "success")
{
data.Description = respush;
data.Status =2;
}
}
return res;
var res = await _db.Insertable(data).CallEntityMethod(t => t.Create()).ExecuteCommandAsync();
return res>0;
}
public async Task<bool> Update(string id)
{
var data = _db.Queryable<BPA_DevicePushRecode>().Where(x => x.Id == id).First();
data.Status = 1;
var respush = await Push(data.Topic, new PushData() { Data = data.DataResore, DeviceId = data.DeviceAutoKey });
if (respush!= "success")
{
data.Description = respush;
data.Status = 2;
}
var res = await _db.Updateable(data).ExecuteCommandAsync();
return res > 0;
}
/// <summary>
/// 删除
@@ -94,11 +136,10 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
throw Oops.Oh("删除失败");
}
}
private async Task<bool> Push(string Topic,PushData data)
private async Task<string> Push(string Topic,PushData data)
{
try
{
// Topic = TOPIC.GetInstance.GetBusinessTopic(x, storeInfo.FirstOrDefault(a => a.Id == item.OrgId).AutoKey) + "/" + item.AutoKey;
BPAPackage bPAPackage = new BPAPackage
{
@@ -114,26 +155,31 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
//string aa = bPAPackage.Serialize(false);
var applictionmessage = new MqttApplicationMessageBuilder().WithTopic(Topic).WithPayload(bPAPackage.Serialize(false)).WithAtLeastOnceQoS().Build();
await _mqttClient.PublishAsync(applictionmessage);
return true;
return "success";
}
catch (Exception e)
{
throw Oops.Oh("下发错误,错误信息:"+e.Message);
return "下发错误,错误信息:" + e.Message;
}
}
private string GetTopic(int type,string deviceKey)
private string GetTopic(int type,string deviceKey, string productVersion, string productKey,out string topstr )
{
string topic = "";
topstr = "";
switch (type)
{
case 1: //商品下发
topic = $"/da4bfff042c656210/${deviceKey}/use/goodspush";
topic = $"/{productKey}/{productVersion}/{deviceKey}/defaul/goodspush";
topstr = "/"+productKey+"/"+productVersion+"/${deviceKey}/defaul/goodspush";
break;
case 2://物料下发
topic = $"/da4bfff042c656210/${deviceKey}/use/batvhingpush";
topic = $"/{productKey}/{productVersion}/{deviceKey}/defaul/batvhingpush";
topstr = "/" + productKey + "/" + productVersion + "/${deviceKey}/defaul/batvhingpush";
break;
case 4:
topic = $"/da4bfff042c656210/${deviceKey}/use/chnologypush";
topic = $"/{productKey}/{productVersion}/{deviceKey}/defaul/chnologypush";
topstr = "/" + productKey + "/" + productVersion + "/${deviceKey}/defaul/chnologypush";
break;
}
return topic;


+ 6
- 1
BPA.SAAS.KitChenManage.Application/Device/Services/IDevicePushRecodeService.cs Ver arquivo

@@ -22,7 +22,12 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
/// <param name="input"></param>
/// <returns></returns>
Task<bool> Add(DevicePushRecodeDtoInput input);

/// <summary>
/// 更新
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<bool> Update(string id);
/// <summary>
/// 删除
/// </summary>


+ 5
- 0
BPA.SAAS.KitChenManage.Core/BPA.SAAS.KitChenManage.Core.xml Ver arquivo

@@ -65,6 +65,11 @@
下发类型1商品 2物料 3配方 4工艺
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Core.Model.BPA_DevicePushRecode.Status">
<summary>
下发状态 1成功 2失败
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Core.Model.BPA_FoodMenuGoods.FoodMenuId">
<summary>
菜谱id


+ 6
- 0
BPA.SAAS.KitChenManage.Core/Model/BPA_DevicePushRecode.cs Ver arquivo

@@ -20,5 +20,11 @@ namespace BPA.SAAS.KitChenManage.Core.Model
public string GroupId { get; set; }
public string Topic { get; set; }
public string DataResore { get; set; }
/// <summary>
/// 下发状态 1成功 2失败
/// </summary>
public int Status { get; set; }
public int DeviceAutoKey { get; set; }
public string Description { get; set; }
}
}

Carregando…
Cancelar
Salvar