@@ -83,7 +83,7 @@ namespace BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto | |||
{ | |||
if (p.GetValue(t, null) != null && p.GetValue(t, null).ToString() != "") | |||
{ | |||
retstr = retstr + p.Name + "=" + p.GetValue(t, null) + "&"; | |||
retstr = retstr + p.Name + "=" +JsonConvert.SerializeObject(p.GetValue(t, null)) + "&"; | |||
} | |||
} | |||
@@ -15,6 +15,8 @@ using BPA.SAAS.Manage.Core.Device; | |||
using BPA.SAAS.Manage.Core.Product; | |||
using Microsoft.AspNetCore.Components.Forms; | |||
using Newtonsoft.Json; | |||
using NPOI.SS.Formula.Functions; | |||
using System.Drawing.Drawing2D; | |||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Material.Services | |||
{ | |||
@@ -129,99 +131,33 @@ namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Material.Service | |||
throw Oops.Oh(ErrorCodeEnum.Code1002); | |||
} | |||
SqlSugarDb.Db.Ado.CommitTran(); | |||
#region 下发数据到设备 | |||
if (inputDto.IsPush) | |||
var data = new PushDataBatchingDto() | |||
{ | |||
var input = new List<PushDeviceDto>(); | |||
if (inputDto.StoreIdList != null && inputDto.StoreIdList.Count > 0) | |||
{ | |||
input = await SqlSugarDb.Db.Queryable<BPA_DeviceInfo, BPA_Product, BPA_ProductVesion>((a, b, c) => new JoinQueryInfos( | |||
JoinType.Left, a.ProductId == b.Id, | |||
JoinType.Left, a.ProductVersionId == c.Id | |||
)) | |||
.Where((a, b, c) => inputDto.StoreIdList.Contains(a.StopId)) | |||
.Select((a, b, c) => new PushDeviceDto | |||
{ | |||
deviceAutoKey = a.AutoKey, | |||
deviceId = a.Id, | |||
deviceName = a.DeviceName, | |||
messageId = CurrentUser.MessageId, | |||
productKey = b.Key, | |||
productName = b.Name, | |||
productVersion = c.Vesion, | |||
type = 2 | |||
}) | |||
.ToListAsync(); | |||
} | |||
if (inputDto.DeviceIdList != null && inputDto.DeviceIdList.Count > 0) | |||
{ | |||
input = await SqlSugarDb.Db.Queryable<BPA_DeviceInfo, BPA_Product, BPA_ProductVesion>((a, b, c) => new JoinQueryInfos( | |||
JoinType.Left, a.ProductId == b.Id, | |||
JoinType.Left, a.ProductVersionId == c.Id)) | |||
.Where((a, b, c) => inputDto.DeviceIdList.Contains(a.Id)) | |||
.Select((a, b, c) => new PushDeviceDto | |||
{ | |||
deviceAutoKey = a.AutoKey, | |||
deviceId = a.Id, | |||
deviceName = a.DeviceName, | |||
messageId = CurrentUser.MessageId, | |||
productKey = b.Key, | |||
productName = b.Name, | |||
productVersion = c.Vesion, | |||
type = 2, | |||
}) | |||
.ToListAsync(); | |||
} | |||
//4.添加记录 | |||
foreach (var item in input) | |||
{ | |||
await _thirdpartyPushService.AddThirdpartyPushRecord(new Core.System.BPA_ThirdpartyPushRecord() | |||
{ | |||
CallbackUrl = inputDto.CallbackUrl, | |||
GroupId = CurrentUser.GroupId, | |||
Id = Guid.NewGuid().ToString(), | |||
IsPush = false, | |||
MessageId = CurrentUser.MessageId, | |||
PushDevice = item.deviceId, | |||
PushData = materialData.Id, | |||
Status = 1, | |||
Type = 2, | |||
}); | |||
item.data = JsonConvert.SerializeObject(new List<PushDataBatchingDto>() | |||
{ | |||
new() | |||
{ | |||
Aittribute= materialData.Aittribute, | |||
AutoKey= materialData.AutoKey, | |||
Code=materialData.Code, | |||
ForeignKeyRe= materialData.ForeignKeyRe, | |||
Id=materialData.Id, | |||
Name= materialData.Batching_Name, | |||
netrecovery= materialData.netrecovery, | |||
outstockUint= materialData.outstockUint, | |||
Price= materialData.Price, | |||
proportion= materialData.proportion, | |||
Specs= materialData.Specs, | |||
StockUint= materialData.StockUint, | |||
StockUintName= materialData.StockUint, | |||
TypeID= materialData.TypeID, | |||
} | |||
}); | |||
} | |||
SqlSugarDb.Db.Ado.CommitTran(); | |||
//5.发送mq | |||
await _thirdpartyPushService.PushDevice(input); | |||
} | |||
else | |||
Aittribute = materialData.Aittribute, | |||
AutoKey = materialData.AutoKey, | |||
Code = materialData.Code, | |||
ForeignKeyRe = materialData.ForeignKeyRe, | |||
Id = materialData.Id, | |||
Name = materialData.Batching_Name, | |||
netrecovery = materialData.netrecovery, | |||
outstockUint = materialData.outstockUint, | |||
Price = materialData.Price, | |||
proportion = materialData.proportion, | |||
Specs = materialData.Specs, | |||
StockUint = materialData.StockUint, | |||
StockUintName = materialData.StockUint, | |||
TypeID = materialData.TypeID, | |||
}; | |||
if (inputDto.IsPush) | |||
{ | |||
SqlSugarDb.Db.Ado.CommitTran(); | |||
await _thirdpartyPushService.AddPushRecordAndPushDevice<MaterialCreateDto>(inputDto, 2, materialData.Id, | |||
JsonConvert.SerializeObject(data)); | |||
} | |||
#endregion | |||
@@ -1,4 +1,5 @@ | |||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush.Dtos; | |||
using BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto; | |||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush.Dtos; | |||
using BPA.SAAS.Manage.Core.System; | |||
using System; | |||
using System.Collections.Generic; | |||
@@ -33,6 +34,15 @@ namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush.S | |||
/// <returns></returns> | |||
Task<bool> UpdateThirdpartyPushRecord(ThirdpartyPushRecordDto inputDto); | |||
/// <summary> | |||
/// 添加下发记录和下发数据 | |||
/// </summary> | |||
/// <param name="inputDto"></param> | |||
/// <param name="type"> 2:物料</param> | |||
/// <param name="pushData">改动的数据 如物料的id 商品的id 订单的订单号</param> | |||
/// <param name="pushMQData">下发到设备的数据 json</param> | |||
/// <returns></returns> | |||
Task<bool> AddPushRecordAndPushDevice<T>(BaseRequestDto<T> inputDto, int type, string pushData,string pushMQData); | |||
/// <summary> | |||
/// 更具店铺获取设备 | |||
@@ -2,10 +2,12 @@ | |||
using BPA.SAAS.KitChenManage.Core; | |||
using BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto; | |||
using BPA.SAAS.Manage.Application.AExternalPlatform.Enum; | |||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Material.Dtos; | |||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Material.Services; | |||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush.Dtos; | |||
using BPA.SAAS.Manage.Comm.Util; | |||
using BPA.SAAS.Manage.Core.Device; | |||
using BPA.SAAS.Manage.Core.Product; | |||
using BPA.SAAS.Manage.Core.System; | |||
using Microsoft.AspNetCore.Mvc.ViewFeatures; | |||
using Newtonsoft.Json; | |||
@@ -72,7 +74,7 @@ namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush.S | |||
data.IsPush = inputDto.IsPush; | |||
data.CreateAt = DateTime.Now; | |||
data.Status = 0; | |||
var res = await SqlSugarDb.Db.Updateable(data).ExecuteCommandAsync(); | |||
var result= await SqlSugarDb.Db.Updateable(data).ExecuteCommandAsync(); | |||
//回调 | |||
@@ -80,14 +82,20 @@ namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush.S | |||
if (data.Type==2) | |||
{ | |||
urlstr = $@"?materialId={data.PushData}&Device={inputDto.DeviceId}"; | |||
urlstr = $@"{data.CallbackUrl}?materialId={data.PushData}&Device={inputDto.DeviceId}"; | |||
Dictionary<string, string> dic = new Dictionary<string, string>(); | |||
var inputData =""; | |||
HttpHelper.PostData(urlstr, inputData, Encoding.UTF8, "application/json", dic); | |||
var res= HttpHelper.PostData(urlstr, inputData, Encoding.UTF8, "application/json", dic); | |||
if (res.ToUpper()=="true".ToUpper()) | |||
{ | |||
data.IsCallback = true; | |||
} | |||
data.CallbackInfo= res; | |||
await SqlSugarDb.Db.Updateable(data).ExecuteCommandAsync(); | |||
} | |||
return res > 0; | |||
return result > 0; | |||
} | |||
@@ -107,6 +115,89 @@ namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush.S | |||
} | |||
/// <summary> | |||
/// 添加下发记录和下发数据 | |||
/// </summary> | |||
/// <param name="inputDto"></param> | |||
/// <param name="type"> 1.商品 2.物料 3.配方 4.工艺</param> | |||
/// <param name="pushData">改动的数据 如物料的id 商品的id 订单的订单号</param> | |||
/// <param name="pushMQData">下发到设备的数据 json</param> | |||
/// <returns></returns> | |||
public async Task<bool> AddPushRecordAndPushDevice<T>(BaseRequestDto<T> inputDto, int type, string pushData, string pushMQData) | |||
{ | |||
var input = new List<PushDeviceDto>(); | |||
if (inputDto.StoreIdList != null && inputDto.StoreIdList.Count > 0) | |||
{ | |||
input = await SqlSugarDb.Db.Queryable<BPA_DeviceInfo, BPA_Product, BPA_ProductVesion>((a, b, c) => new JoinQueryInfos( | |||
JoinType.Left, a.ProductId == b.Id, | |||
JoinType.Left, a.ProductVersionId == c.Id | |||
)) | |||
.Where((a, b, c) => inputDto.StoreIdList.Contains(a.StopId)) | |||
.Select((a, b, c) => new PushDeviceDto | |||
{ | |||
deviceAutoKey = a.AutoKey, | |||
deviceId = a.Id, | |||
deviceName = a.DeviceName, | |||
messageId = CurrentUser.MessageId, | |||
productKey = b.Key, | |||
productName = b.Name, | |||
productVersion = c.Vesion, | |||
type = 2 | |||
}) | |||
.ToListAsync(); | |||
} | |||
if (inputDto.DeviceIdList != null && inputDto.DeviceIdList.Count > 0) | |||
{ | |||
input = await SqlSugarDb.Db.Queryable<BPA_DeviceInfo, BPA_Product, BPA_ProductVesion>((a, b, c) => new JoinQueryInfos( | |||
JoinType.Left, a.ProductId == b.Id, | |||
JoinType.Left, a.ProductVersionId == c.Id)) | |||
.Where((a, b, c) => inputDto.DeviceIdList.Contains(a.Id)) | |||
.Select((a, b, c) => new PushDeviceDto | |||
{ | |||
deviceAutoKey = a.AutoKey, | |||
deviceId = a.Id, | |||
deviceName = a.DeviceName, | |||
messageId = CurrentUser.MessageId, | |||
productKey = b.Key, | |||
productName = b.Name, | |||
productVersion = c.Vesion, | |||
type = 2, | |||
}) | |||
.ToListAsync(); | |||
} | |||
//4.添加记录 | |||
foreach (var item in input) | |||
{ | |||
await AddThirdpartyPushRecord(new Core.System.BPA_ThirdpartyPushRecord() | |||
{ | |||
CallbackUrl = inputDto.CallbackUrl, | |||
GroupId = CurrentUser.GroupId, | |||
Id = Guid.NewGuid().ToString(), | |||
IsPush = false, | |||
MessageId = CurrentUser.MessageId, | |||
PushDevice = item.deviceId, | |||
PushData = pushData, | |||
Status = 1, | |||
Type = type, | |||
IsCallback=false, | |||
CallbackInfo = "", | |||
}); | |||
item.data =$"[{pushMQData}]"; | |||
} | |||
//5.发送mqy | |||
await PushDevice(input); | |||
return true; | |||
} | |||
#endregion | |||
} | |||
@@ -9,6 +9,7 @@ using System.Threading.Tasks; | |||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush | |||
{ | |||
[ApiDescriptionSettings("开放平台", Tag = "aaaa")] | |||
public class ThirdpartyPushServices: IDynamicApiController | |||
{ | |||
IThirdpartyPushService _thirdpartyPushService; | |||
@@ -52,6 +53,12 @@ namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.ThirdpartyPush | |||
{ | |||
return await _thirdpartyPushService.GetDeviceByStoreId(inputDto); | |||
} | |||
[ AllowAnonymous, NonUnify] | |||
public async Task<bool> aaaaa() | |||
{ | |||
return true; | |||
} | |||
#endregion | |||
} | |||
} |
@@ -44,9 +44,26 @@ namespace BPA.SAAS.Manage.Core.System | |||
/// </summary> | |||
public string PushData { get; set; } | |||
/// <summary> | |||
/// 0: 成功 1:失败 | |||
/// </summary> | |||
public int Status { get; set; } | |||
/// <summary> | |||
/// 1.商品 2.物料 3.配方 4.工艺 | |||
/// </summary> | |||
public int Type { get; set; } | |||
/// <summary> | |||
/// 是否回调 | |||
/// </summary> | |||
public bool IsCallback { get; set; } | |||
/// <summary> | |||
/// 回调信息 | |||
/// </summary> | |||
public string CallbackInfo { get; set; } | |||
} | |||
} |