Browse Source

提交

master
gwbvipvip 10 months ago
parent
commit
d130cf4831
7 changed files with 86 additions and 39 deletions
  1. BIN
     
  2. +1
    -3
      BPA.KitChen.GroupMeal.Application/Service/Device/DevicePushRecodeServices.cs
  3. +0
    -12
      BPA.KitChen.GroupMeal.Application/Service/Device/Dtos/Class1.cs
  4. +25
    -0
      BPA.KitChen.GroupMeal.Application/Service/Device/Dtos/DevicePushRecodeDtoInput.cs
  5. +2
    -0
      BPA.KitChen.GroupMeal.Application/Service/Device/Dtos/DevicePushRecodeDtoPageInput.cs
  6. +51
    -21
      BPA.KitChen.GroupMeal.Application/Service/Device/Services/DevicePushRecodeService.cs
  7. +7
    -3
      BPA.KitChen.GroupMeal.Application/Service/Device/Services/IDevicePushRecodeService.cs

BIN
View File


+ 1
- 3
BPA.KitChen.GroupMeal.Application/Service/Device/DevicePushRecodeServices.cs View File

@@ -37,18 +37,16 @@ namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
{
return await _devicePushRecodeService.Add(input);
}

/// <summary>
/// 修改
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("/api/devicepushrecode/update")]
public async Task<bool> Update(string id)
public async Task<bool> Update(string id)
{
return await _devicePushRecodeService.Update(id);
}

/// <summary>
/// 删除
/// </summary>


+ 0
- 12
BPA.KitChen.GroupMeal.Application/Service/Device/Dtos/Class1.cs View File

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

namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
{
internal class Class1
{
}
}

+ 25
- 0
BPA.KitChen.GroupMeal.Application/Service/Device/Dtos/DevicePushRecodeDtoInput.cs View File

@@ -9,9 +9,34 @@ namespace BPA.KitChen.GroupMeal.Application.Service.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.KitChen.GroupMeal.Application/Service/Device/Dtos/DevicePushRecodeDtoPageInput.cs View File

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

+ 51
- 21
BPA.KitChen.GroupMeal.Application/Service/Device/Services/DevicePushRecodeService.cs View File

@@ -7,6 +7,7 @@ using Furion.DependencyInjection;
using Furion.FriendlyException;
using Furion.LinqBuilder;
using Mapster;
using Microsoft.CodeAnalysis.Operations;
using Microsoft.Extensions.Hosting;
using MQTTnet;
using MQTTnet.Client;
@@ -28,7 +29,7 @@ namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
public DevicePushRecodeService(ISqlSugarClient db, IMqttClient mqttClient)
{
_db = db;
_mqttClient=mqttClient;
_mqttClient = mqttClient;
}
/// <summary>
/// 分页
@@ -39,6 +40,8 @@ namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
{
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 == (CommonStatus)Convert.ToInt32(input.Status) )
.Select(t => new
{
CreateAt = t.CreateAt,
@@ -49,8 +52,10 @@ namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
Type = t.Type,
Topic = t.Topic,
DataResore = t.DataResore,
t.Status
}).OrderBy(x => x.CreateAt, OrderByType.Desc).ToPageListAsync(input.Current, input.PageSize, total);
Status = t.Status,
Description = t.Description,
}).OrderBy(x => x.CreateAt, OrderByType.Desc)
.ToPageListAsync(input.Current, input.PageSize, total);
PageUtil util = new PageUtil()
{
Total = total,
@@ -67,33 +72,54 @@ namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
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 = CommonStatus.ENABLE;
data.DataResore = JsonConvert.SerializeObject(JsonConvert.DeserializeObject<dynamic>(input.Data.ToString()));
var res=await Push(Topic, new PushData() { Data=input.Data, DeviceId= input.DeviceAutoKey });
data.Status = res == "success" ? CommonStatus.ENABLE : CommonStatus.DISABLE;
await _db.Insertable(data).CallEntityMethod(t => t.Create()).ExecuteCommandAsync();
return res == "success";
data.DeviceAutoKey= input.DeviceAutoKey;
data.Description = "成功";
if (input.TopicsData.Count > 0)
{
var chaeck = input.TopicsData.Any(x => x.Topics.Trim() == topstr.Trim());
if (!chaeck)
{
data.Status = CommonStatus.DISABLE;
data.Description = "下发数据失败,该产品还未配置对应的topic,请联系管理员进行配置";
}
}
else
{
data.Status = CommonStatus.DISABLE;
data.Description = "下发数据失败,该产品还未配置对应的topic,请联系管理员进行配置";
}
if (data.Status == CommonStatus.ENABLE)
{
var respush = await Push(Topic, new PushData() { Data = data.DataResore, DeviceId = input.DeviceAutoKey });
if (respush != "success")
{
data.Description = respush;
data.Status = CommonStatus.DISABLE;
}
}
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 = CommonStatus.ENABLE;
var respush = await Push(data.Topic, new PushData() { Data = data.DataResore, DeviceId = data.DeviceAutoKey });
if (respush != "success")
data.Description = respush;
if (respush!= "success")
{
data.Description = respush;
data.Status = CommonStatus.DISABLE;
}
var res = await _db.Updateable(data).ExecuteCommandAsync();
return res > 0;
}



/// <summary>
/// 删除
/// </summary>
@@ -118,7 +144,6 @@ namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
{
try
{
// Topic = TOPIC.GetInstance.GetBusinessTopic(x, storeInfo.FirstOrDefault(a => a.Id == item.OrgId).AutoKey) + "/" + item.AutoKey;
BPAPackage bPAPackage = new BPAPackage
{
@@ -138,22 +163,27 @@ namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
}
catch (Exception e)
{
return "下发错误,错误信息:" + 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;


+ 7
- 3
BPA.KitChen.GroupMeal.Application/Service/Device/Services/IDevicePushRecodeService.cs View File

@@ -1,4 +1,5 @@
using BPA.KitChen.GroupMeal.Application.BaseDto;

using BPA.KitChen.GroupMeal.Application.BaseDto;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -21,8 +22,11 @@ namespace BPA.KitChen.GroupMeal.Application.Service.Device.Dtos
/// <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>
/// 删除


Loading…
Cancel
Save