浏览代码

数据下发

master
zhaoy 8 个月前
父节点
当前提交
dccb841fd7
共有 20 个文件被更改,包括 922 次插入1 次删除
  1. +201
    -0
      BPA.SAAS.KitChenManage.Application/BPA.SAAS.KitChenManage.Application.xml
  2. +71
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/Batching/BatchingDto.cs
  3. +19
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/Batching/BatchingInfoDto.cs
  4. +22
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/Batching/BatchingTypeDto.cs
  5. +22
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/Batching/BatchingUintDto.cs
  6. +35
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/Goods/GoodsAttributeDto.cs
  7. +27
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/Goods/GoodsInfoDto.cs
  8. +15
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/Goods/GoodsTypeDto.cs
  9. +14
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/Goods/GoodsUintDto.cs
  10. +23
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/GoodsTechnology/GoodsTechnologysDto.cs
  11. +33
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/GoodsTechnology/TechnologyDto.cs
  12. +91
    -0
      BPA.SAAS.KitChenManage.Application/Device/PushDto/ProductFunction/ProductFunctionDto.cs
  13. +6
    -1
      BPA.SAAS.KitChenManage.Application/Device/Services/DevicePushRecodeService.cs
  14. +271
    -0
      BPA.SAAS.KitChenManage.Application/RequestParmsHeadlen.cs
  15. +18
    -0
      BPA.SAAS.KitChenManage.Comm/Const/ProductParametersConst_Batching.cs
  16. +19
    -0
      BPA.SAAS.KitChenManage.Comm/Const/ProductParametersConst_Goods.cs
  17. +17
    -0
      BPA.SAAS.KitChenManage.Comm/Const/ProductParametersConst_Technology.cs
  18. +16
    -0
      BPA.SAAS.KitChenManage.Core/Base/ResponDataBase.cs
  19. +1
    -0
      BPA.SAAS.KitChenManage.Web.Core/Startup.cs
  20. +1
    -0
      BPA.SAAS.KitChenManage.Web.Entry/appsettings.json

+ 201
- 0
BPA.SAAS.KitChenManage.Application/BPA.SAAS.KitChenManage.Application.xml 查看文件

@@ -62,6 +62,191 @@
设备AutoKey
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.Code">
<summary>
原料编码
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.Aittribute">
<summary>
商品属性 (0成品,1半成品,2,易耗品)
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.Name">
<summary>
原料名称
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.TypeName">
<summary>
配料类型
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.TypeID">
<summary>
原料类型
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.StockUintName">
<summary>
库存单位
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.Specs">
<summary>
规格属性
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.Price">
<summary>
成本价
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.netrecovery">
<summary>
净料率
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.outstockUint">
<summary>
出库单位
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingDto.proportion">
<summary>
换算比例
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingTypeDto.Name">
<summary>
单位名称
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingTypeDto.Remark">
<summary>
备注
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingUintDto.Name">
<summary>
单位名称
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching.BatchingUintDto.Remark">
<summary>
备注
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.GoodsTechnology.TechnologyAction.TechnologyType">
<summary>
工艺模型类型(标识是否物料 1标识物料 0标识其他)
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Goods.GoodsAttributeDto.AttributeName">
<summary>
属性名称
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Goods.GoodsAttributeDto.GoodsTypeId">
<summary>
商品小类id
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Goods.GoodsAttributeValue.GoodsAttributeId">
<summary>
商品属性id
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.Goods.GoodsAttributeValue.AttributeValue">
<summary>
属性值
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.Name">
<summary>
功能名称
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.Type">
<summary>
功能类型 0属性1服务2事件
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.DataType">
<summary>
数据类型
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.DataRange">
<summary>
取值范围
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.Unit">
<summary>
单位
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.StepSize">
<summary>
步长
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.EnumValue">
<summary>
枚举值
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.DataLength">
<summary>
数据长度
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.BoolLabel">
<summary>
数据类型bool的描述
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.ReadWrite">
<summary>
读写类型0读写 1只读
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionDto.Description">
<summary>
描述
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionAction.ProductFunctionId">
<summary>
功能id
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionAction.ActionName">
<summary>
动作名称
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionAction.ActionType">
<summary>
类型 (1 输入框 2下拉框)
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionAction.ActionValue">
<summary>
类型值(jsong格式)
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionAction.Unit">
<summary>
单位
</summary>
</member>
<member name="P:BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction.ProductFunctionAction.Sort">
<summary>
排序
</summary>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Device.Services.DevicePushRecodeService.Page(BPA.SAAS.KitChenManage.Application.Device.Dtos.DevicePushRecodeDtoPageInput)">
<summary>
分页
@@ -247,6 +432,22 @@
<param name="foodMenuId"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.RequestParmsHeadlen.GetDynamic(System.Object,System.Object)">
<summary>
映射数据
</summary>
<param name="data1"></param>
<param name="data2"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.RequestParmsHeadlen.IsPropertyExist(System.Object,System.String)">
<summary>
验证属性是否存在
</summary>
<param name="data"></param>
<param name="propertyname"></param>
<returns></returns>
</member>
<member name="M:BPA.SAAS.KitChenManage.Application.Store.Services.IStoreService.Page(BPA.SAAS.KitChenManage.Application.Store.Dtos.StoreDtoPageInput)">
<summary>
分页


+ 71
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/Batching/BatchingDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching
{
public class BatchingDto
{
public string Id { get; set; }
/// <summary>
/// 原料编码
/// </summary>
public string Code { get; set; }
/// <summary>
/// 商品属性 (0成品,1半成品,2,易耗品)
/// </summary>
public int Aittribute { get; set; } = 0;
/// <summary>
/// 原料名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 配料类型
/// </summary>
public string TypeName { get; set; }
/// <summary>
/// 原料类型
/// </summary>
public string TypeID { get; set; }

/// <summary>
/// 库存单位
/// </summary>
public string StockUintName { get; set; }
public string StockUint { get; set; }
/// <summary>
/// 规格属性
/// </summary>
public string Specs { get; set; }


/// <summary>
/// 成本价
/// </summary>
public decimal Price { get; set; }

/// <summary>
/// 净料率
/// </summary>
public decimal netrecovery { get; set; }

/// <summary>
/// 出库单位
/// </summary>
public string outstockUint { get; set; }


/// <summary>
/// 换算比例
/// </summary>
public decimal proportion { get; set; }


public int AutoKey { get; set; }
public string ForeignKeyRe { get; set; }
public string CreateAt { get; set; }
}
}

+ 19
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/Batching/BatchingInfoDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching
{
public class BatchingInfoDto
{
public string id { get; set; }
public string name { get; set; }
public string typeId { get; set; }
public string typeName { get; set; }
public string stockUintName { get; set; }
public string stockUint { get; set; }
public string createAt { get; set; }
}
}

+ 22
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/Batching/BatchingTypeDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching
{
public class BatchingTypeDto
{
public string Id { get; set; }
/// <summary>
/// 单位名称
/// </summary>

public string Name { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}
}

+ 22
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/Batching/BatchingUintDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching
{
public class BatchingUintDto
{
public string Id { get; set; }
/// <summary>
/// 单位名称
/// </summary>

public string Name { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}
}

+ 35
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/Goods/GoodsAttributeDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.Goods
{
public class GoodsAttributeDto
{
public string Id { get; set; }
/// <summary>
/// 属性名称
/// </summary>
public string AttributeName { get; set; }
/// <summary>
/// 商品小类id
/// </summary>
public string GoodsTypeId { get; set; }
public List<GoodsAttributeValue> AttributeValueList { get; set; }
public int Sort { get; set; }
}
public class GoodsAttributeValue
{
public string Id { get; set; }
/// <summary>
///商品属性id
/// </summary>
public string GoodsAttributeId { get; set; }
/// <summary>
/// 属性值
/// </summary>
public string AttributeValue { get; set; }
}
}

+ 27
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/Goods/GoodsInfoDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.Goods
{
public class GoodsInfoDto
{
public string Id { get; set; }
public string Name { get; set; }
public string Descritption { get; set; }
public string ImgUrl { get; set; }
public int Sort { get; set; }
public decimal Price { get; set; }
public string GoodsUintId { get; set; }
public string GoodsUintName { get; set; }
public bool IsWeigh { get; set; }
public string Design { get; set; }
public string DefaultMate { get; set; }
public bool IsAttrubute { get; set; }
public string GoodsTypeId { get; set; }
public string GoodsTypeName { get; set; }
}
}

+ 15
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/Goods/GoodsTypeDto.cs 查看文件

@@ -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.PushDto.Goods
{
public class GoodsTypeDto
{
public string Id { get; set; }
public string Pid { get; set; }
public string Name { get; set; }
}
}

+ 14
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/Goods/GoodsUintDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.Goods
{
public class GoodsUintDto
{
public string Id { get; set; }
public string Name { get; set; }
}
}

+ 23
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/GoodsTechnology/GoodsTechnologysDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.GoodsTechnology
{
public class GoodsTechnologysDto
{
public string Id { get; set; }
public string StepName { get; set; }
//[JsonIgnore]
public string ActionJson { get; set; }
public string GoodsAttributeId { get; set; }
public string GoodsId { get; set; }
public string DeviceId { get; set; }
public string ChnologyId { get; set; }
public string Sort { get; set; }
public string CreateBy { get; set; }
}
}

+ 33
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/GoodsTechnology/TechnologyDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.GoodsTechnology
{
public class TechnologyDto
{
public string Id { get; set; }
public string Name { get; set; }
public string DeviceVersionId { get; set; }
public string ForeignKeyRe { get; set; }
public DateTime CreateAt { get; set; }
public List<TechnologyAction> TechnologyActionInfo { get; set; }
}
public class TechnologyAction
{
public string Id { get; set; }
public string TechnologyId { get; set; }
public string ActionName { get; set; }
public string ActionValue { get; set; }
public string ActionType { get; set; }
public string Unit { get; set; }
/// <summary>
/// 工艺模型类型(标识是否物料 1标识物料 0标识其他)
/// </summary>
public int TechnologyType { get; set; }
public DateTime CreateAt { get; set; }
public int Sort { get; set; }
}
}

+ 91
- 0
BPA.SAAS.KitChenManage.Application/Device/PushDto/ProductFunction/ProductFunctionDto.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction
{
public class ProductFunctionDto
{
public string Id { get; set; }
/// <summary>
/// 功能名称
/// </summary>
public string Name { get; set; }
public string DeviceVersionKey { get; set; }
/// <summary>
/// 功能类型 0属性1服务2事件
/// </summary>
public string Type { get; set; }
/// <summary>
/// 数据类型
/// </summary>
public string DataType { get; set; }
/// <summary>
/// 取值范围
/// </summary>
public string DataRange { get; set; }
/// <summary>
/// 单位
/// </summary>
public string Unit { get; set; }
/// <summary>
/// 步长
/// </summary>
public decimal StepSize { get; set; }
/// <summary>
/// 枚举值
/// </summary>
public string EnumValue { get; set; }
/// <summary>
/// 数据长度
/// </summary>
public string DataLength { get; set; }
/// <summary>
/// 数据类型bool的描述
/// </summary>
public string BoolLabel { get; set; }
/// <summary>
/// 读写类型0读写 1只读
/// </summary>
public int ReadWrite { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
public string ProductId { get; set; }
public string DataJson { get; set; }
public bool IsDefault { get; set; }
public List<ProductFunctionAction> ProductFunctionValue { get; set; }
}
public class ProductFunctionAction
{
public string Id { get; set; }
/// <summary>
/// 功能id
/// </summary>
public string ProductFunctionId { get; set; }
/// <summary>
/// 动作名称
/// </summary>
public string ActionName { get; set; }
/// <summary>
/// 类型 (1 输入框 2下拉框)
/// </summary>
public string ActionType { get; set; }
/// <summary>
/// 类型值(jsong格式)
/// </summary>
public string ActionValue { get; set; }
/// <summary>
/// 单位
/// </summary>
public string Unit { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
public bool IsDefault { get; set; }
}
}

+ 6
- 1
BPA.SAAS.KitChenManage.Application/Device/Services/DevicePushRecodeService.cs 查看文件

@@ -2,9 +2,11 @@
using BPA.Message.IOT;
using BPA.SAAS.KitChenManage.Application.Device.Dtos;
using BPA.SAAS.KitChenManage.Application.Store.Dtos;
using BPA.SAAS.KitChenManage.Comm.Const;
using BPA.SAAS.KitChenManage.Core.Base;
using BPA.SAAS.KitChenManage.Core.Model;
using Furion.LinqBuilder;
using Furion.RemoteRequest.Extensions;
using Microsoft.CodeAnalysis.Operations;
using Microsoft.Extensions.Hosting;
using MQTTnet;
@@ -23,6 +25,7 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
{
private readonly ISqlSugarClient _db;
private readonly IMqttClient _mqttClient;
RequestParmsHeadlen requestParmsHeadlen = new();
public DevicePushRecodeService(ISqlSugarClient db, IMqttClient mqttClient)
{
_db = db;
@@ -67,6 +70,7 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
/// <returns></returns>
public async Task<bool> Add(DevicePushRecodeDtoInput input)
{
var DataResore =await requestParmsHeadlen.GetParm(input.Type, input.Data.ToString(), input.DeviceId);
var data = input.Adapt<BPA_DevicePushRecode>();
string topstr = "";
string Topic = GetTopic(input.Type, input.DeviceAutoKey.ToString(), input.ProductVersion, input.ProductKey, out topstr);
@@ -74,7 +78,7 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
data.Topic= Topic;
data.Status = 1;
data.DataResore = JsonConvert.SerializeObject(JsonConvert.DeserializeObject<dynamic>(input.Data.ToString()));
data.DataResore = JsonConvert.SerializeObject(DataResore);
data.DeviceAutoKey= input.DeviceAutoKey;
data.Description = "成功";
if (input.TopicsData.Count > 0)
@@ -100,6 +104,7 @@ namespace BPA.SAAS.KitChenManage.Application.Device.Services
data.Status =2;
}
}
// return true;
var res = await _db.Insertable(data).CallEntityMethod(t => t.Create()).ExecuteCommandAsync();
return res>0;
}


+ 271
- 0
BPA.SAAS.KitChenManage.Application/RequestParmsHeadlen.cs 查看文件

@@ -0,0 +1,271 @@
using BPA.Message;
using BPA.SAAS.KitChenManage.Application.Device.PushDto.Batching;
using BPA.SAAS.KitChenManage.Application.Device.PushDto.Goods;
using BPA.SAAS.KitChenManage.Application.Device.PushDto.GoodsTechnology;
using BPA.SAAS.KitChenManage.Application.Device.PushDto.ProductFunction;
using BPA.SAAS.KitChenManage.Comm.Const;
using BPA.SAAS.KitChenManage.Core.Base;
using Furion.JsonSerialization;
using Furion.RemoteRequest.Extensions;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace BPA.SAAS.KitChenManage.Application
{
public class RequestParmsHeadlen
{
private string BaseServerUrl = App.GetConfig<string>("baseurl");
public async Task<dynamic> GetParm(int type,string data,string deviceId)
{
var getProductFunctionurl = BaseServerUrl + "api/productfunction/getproductfunction_alm?deviceId="+ deviceId;//获取商品属性
var responseProductFunction = await getProductFunctionurl.SetHttpMethod(HttpMethod.Get).GetAsStringAsync();
var resProductFunction = JsonConvert.DeserializeObject<ResponDataBase>(responseProductFunction);
if (resProductFunction.statusCode != "200") throw Oops.Oh("获取该设备的物模型数据失败");
if(resProductFunction.data==null) throw Oops.Oh("找不到设备的物模型配置,请配置相关参数后再试");
var dataProductFunction = JsonConvert.DeserializeObject<List<ProductFunctionDto>>(resProductFunction.data.ToString());
dynamic obj = null;
switch (type)
{
case 1: //商品下发
var GoodsFunction=dataProductFunction.Where(x => x.Name == "商品数据下发" && x.Type == "1").First();
if(GoodsFunction == null) throw Oops.Oh("该设备的物模型还没配置对应功能,请配置相关参数后再试");
var GoodsFunctionValue = GoodsFunction.ProductFunctionValue.Where(x => x.IsDefault == true && x.ActionName == "DataSoure").First();
if(string.IsNullOrEmpty(GoodsFunctionValue.ActionValue)) throw Oops.Oh("该设备的物模型配置对应功能参数没有配置,请配置相关参数后再试");
obj = await GetGoods(data, GoodsFunctionValue.ActionValue);
break;
case 2://物料下发
var BatchingFunction = dataProductFunction.Where(x => x.Name == "物料数据下发" && x.Type == "1").First();
if (BatchingFunction == null) throw Oops.Oh("该设备的物模型还没配置对应功能,请配置相关参数后再试");
var BatchingFunctionValue = BatchingFunction.ProductFunctionValue.Where(x => x.IsDefault==true && x.ActionName == "DataSoure").First();
if (string.IsNullOrEmpty(BatchingFunctionValue.ActionValue)) throw Oops.Oh("该设备的物模型配置对应功能参数没有配置,请配置相关参数后再试");
obj =await GetBatching(data, BatchingFunctionValue.ActionValue);
break;
case 4:
var TechnologyFunction = dataProductFunction.Where(x => x.Name == "工艺数据下发" && x.Type == "1").First();
if (TechnologyFunction == null) throw Oops.Oh("该设备的物模型还没配置对应功能,请配置相关参数后再试");
var TechnologyFunctionValue = TechnologyFunction.ProductFunctionValue.Where(x => x.IsDefault == true && x.ActionName == "DataSoure").First();
if (string.IsNullOrEmpty(TechnologyFunctionValue.ActionValue)) throw Oops.Oh("该设备的物模型配置对应功能参数没有配置,请配置相关参数后再试");
obj = await GetGoodsTechnology(data, deviceId,TechnologyFunctionValue.ActionValue);
break;
}
return obj;
}
private async Task<dynamic> GetGoods(string data, string productFunctionData)
{
try
{
//商品信息
var goodsData = JsonConvert.DeserializeObject<List<GoodsInfoDto>>(data);

var cpjson = productFunctionData.Replace("\r", "").Replace("\n", "").Replace("\t", "");
var DynamicObject = JsonConvert.DeserializeObject<dynamic>(cpjson);
//商品信息
if (IsPropertyExist(DynamicObject, ProductParametersConst_Goods.goodsinfo))
{
var goodsinfo = GetDynamic(goodsData, DynamicObject.goodsinfo[0]);
DynamicObject.goodsinfo = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(goodsinfo));
}
//商品属性
if (IsPropertyExist(DynamicObject, ProductParametersConst_Goods.goodsAttribute))
{
//获取商品属性
var getGoodsAttributeurl = BaseServerUrl + "api/goodsattribute/getgoodsattributelist_alm";//获取商品属性
var responseGoodsAttribute = await getGoodsAttributeurl.SetHeaders(new
{
groupId = App.User?.FindFirst(ClaimConst.GroupId)?.Value
}).SetHttpMethod(HttpMethod.Get).GetAsStringAsync();
var resGoodsAttribute = JsonConvert.DeserializeObject<ResponDataBase>(responseGoodsAttribute);
if (resGoodsAttribute.statusCode != "200") throw Oops.Oh("获取商品属性数据失败");
var dataGoodsAttribute = JsonConvert.DeserializeObject<List<GoodsAttributeDto>>(resGoodsAttribute.data.ToString());
var goodsAttribute = GetDynamic(dataGoodsAttribute, DynamicObject.goodsAttribute[0]);
DynamicObject.goodsAttribute = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(goodsAttribute));
}
//商品单位
if (IsPropertyExist(DynamicObject, ProductParametersConst_Goods.goodsUnitInfo))
{
//获商品单位
var getGoodsUinturl = BaseServerUrl + "api/goods/getgoodsuintlist_alm";//获商品单位
var responseGoodsUint = await getGoodsUinturl.SetHeaders(new
{
groupId = App.User?.FindFirst(ClaimConst.GroupId)?.Value
}).SetHttpMethod(HttpMethod.Get).GetAsStringAsync();
var resGoodsUint = JsonConvert.DeserializeObject<ResponDataBase>(responseGoodsUint);
if (resGoodsUint.statusCode != "200") throw Oops.Oh("获取商品单位数据失败");
var dataGoodsUint = JsonConvert.DeserializeObject<List<GoodsUintDto>>(resGoodsUint.data.ToString());
var goodsUnitInfo = GetDynamic(dataGoodsUint, DynamicObject.goodsUnitInfo[0]);
DynamicObject.goodsUnitInfo = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(goodsUnitInfo));
}
//商品分类
if (IsPropertyExist(DynamicObject, ProductParametersConst_Goods.goodsTypeInfo))
{
//获取商品分类
var getGoodsTypeturl = BaseServerUrl + "api/goodstype/getgoodstypelist_alm";//获取商品分类
var responseGoodsType = await getGoodsTypeturl.SetHeaders(new
{
groupId = App.User?.FindFirst(ClaimConst.GroupId)?.Value
}).SetHttpMethod(HttpMethod.Get).GetAsStringAsync();
var resGoodsType = JsonConvert.DeserializeObject<ResponDataBase>(responseGoodsType);
if (resGoodsType.statusCode != "200") throw Oops.Oh("获取商品分类数据失败");
var dataGoodsType = JsonConvert.DeserializeObject<List<GoodsTypeDto>>(resGoodsType.data.ToString());
var goodsTypeInfo = GetDynamic(dataGoodsType, DynamicObject.goodsTypeInfo[0]);
DynamicObject.goodsTypeInfo = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(goodsTypeInfo));
}
return DynamicObject;
}
catch (Exception e)
{
throw Oops.Oh("解析数据失败");
}
}
private async Task<dynamic> GetBatching(string data,string productFunctionData)
{
try
{
var cpjson = productFunctionData.Replace("\r", "").Replace("\n", "").Replace("\t", "");
var DynamicObject = JsonConvert.DeserializeObject<dynamic>(cpjson);
if (IsPropertyExist(DynamicObject, ProductParametersConst_Batching.batchinginfo))
{
//物料信息
var batchingData = JsonConvert.DeserializeObject<List<BatchingDto>>(data);
var batchinginfo = GetDynamic(batchingData, DynamicObject.batchinginfo[0]);
DynamicObject.batchinginfo = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(batchinginfo));
}
if (IsPropertyExist(DynamicObject, ProductParametersConst_Batching.batchingTypeinfo))
{
//获取物料分类
var getTypeurl = BaseServerUrl + "api/batching/getbatchingtypelist_alm";//获取物料分类
var responseType = await getTypeurl.SetHeaders(new
{
groupId = App.User?.FindFirst(ClaimConst.GroupId)?.Value
}).SetHttpMethod(HttpMethod.Get).GetAsStringAsync();
var resType = JsonConvert.DeserializeObject<ResponDataBase>(responseType);
if (resType.statusCode != "200") throw Oops.Oh("获取物料分类数据失败");
var dataType = JsonConvert.DeserializeObject<List<BatchingTypeDto>>(resType.data.ToString());
var batchingTypeinfo = GetDynamic(dataType, DynamicObject.batchingTypeinfo[0]);
DynamicObject.batchingTypeinfo = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(batchingTypeinfo));
}
if (IsPropertyExist(DynamicObject, ProductParametersConst_Batching.batchingUnitinfo))
{
//获取物料单位
var getuinurl = BaseServerUrl + "api/batching/getbatchinguintList_alm";//获取物料单位
var responseUnit = await getuinurl.SetHeaders(new
{
groupId = App.User?.FindFirst(ClaimConst.GroupId)?.Value
}).SetHttpMethod(HttpMethod.Get).GetAsStringAsync();
var resUnit = JsonConvert.DeserializeObject<ResponDataBase>(responseUnit);
if (resUnit.statusCode != "200") throw Oops.Oh("获取物料单位数据失败");
var dataUnit = JsonConvert.DeserializeObject<List<BatchingUintDto>>(resUnit.data.ToString());
var batchingUnitinfo = GetDynamic(dataUnit, DynamicObject.batchingUnitinfo[0]);
DynamicObject.batchingUnitinfo = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(batchingUnitinfo));
}
return DynamicObject;
}
catch (Exception)
{
throw Oops.Oh("解析数据失败");
}

}
private async Task<dynamic> GetGoodsTechnology(string data,string deviceId, string productFunctionData)
{
try
{
//商品工艺信息
var goodsTechnologData = JsonConvert.DeserializeObject<List<GoodsTechnologysDto>>(data);

var cpjson = productFunctionData.Replace("\r", "").Replace("\n", "").Replace("\t", "");
var DynamicObject = JsonConvert.DeserializeObject<dynamic>(cpjson);
if (IsPropertyExist(DynamicObject, ProductParametersConst_Technology.technologysInfo))
{
//获取工艺基础信息
var gettechnologurl = BaseServerUrl + "api/technology/gettechnologylist_alm?deviceId=" + deviceId;//获取工艺基础信息
var responsegetTechnologurl = await gettechnologurl.SetHeaders(new
{
groupId = App.User?.FindFirst(ClaimConst.GroupId)?.Value
}).SetHttpMethod(HttpMethod.Get).GetAsStringAsync();
var resTechnolog = JsonConvert.DeserializeObject<ResponDataBase>(responsegetTechnologurl);
if (resTechnolog.statusCode != "200") throw Oops.Oh("获取工艺基础信息数据失败");
var dataTechnolog = JsonConvert.DeserializeObject<List<TechnologyDto>>(resTechnolog.data.ToString());
var technologysInfo = GetDynamic(dataTechnolog, DynamicObject.technologysInfo[0]);
DynamicObject.technologysInfo = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(technologysInfo));
}
if (IsPropertyExist(DynamicObject, ProductParametersConst_Technology.goodsTechnologysInfo))
{
var goodsTechnologysInfo = GetDynamic(goodsTechnologData, DynamicObject.goodsTechnologysInfo[0]);
DynamicObject.goodsTechnologysInfo = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(goodsTechnologysInfo));
}
return DynamicObject;
}
catch (Exception)
{
throw Oops.Oh("解析数据失败");
}

}
/// <summary>
/// 映射数据
/// </summary>
/// <param name="data1"></param>
/// <param name="data2"></param>
/// <returns></returns>
private List<Dictionary<string, object>> GetDynamic(dynamic data1, dynamic data2)
{
List<Dictionary<string, object>> objws = new();
foreach (var item in data1)
{
PropertyInfo[] properties = item.GetType().GetProperties(); // 获取所有公共属性
Dictionary<string, object> objw = new();
foreach (var property in properties)
{
object value = property.GetValue(item);
foreach (var property1 in data2)
{
if (property.Name.ToLower() == property1?.Name?.ToLower())
{
Type dataType = property.PropertyType;
if (dataType.IsGenericType)
{
var sd = data2[property1.Name][0];
objw.Add(property1.Name, GetDynamic(value, sd));
}
else
{
objw.Add(property1.Name, value);
}
}
}
}
objws.Add(objw);
}
return objws;
}
/// <summary>
/// 验证属性是否存在
/// </summary>
/// <param name="data"></param>
/// <param name="propertyname"></param>
/// <returns></returns>
private bool IsPropertyExist(dynamic data, string propertyname)
{
var check = false;
var sd = data.GetType().GetProperty(propertyname);
foreach (var property1 in data)
{
if (property1.Name == propertyname) check= true;
}
return check;
}
}
}

+ 18
- 0
BPA.SAAS.KitChenManage.Comm/Const/ProductParametersConst_Batching.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Comm.Const
{
/// <summary>
/// 产品物模型对应的服务参数常量
/// </summary>
public class ProductParametersConst_Batching
{
public const string batchinginfo = "batchinginfo";
public const string batchingTypeinfo = "batchingTypeinfo";
public const string batchingUnitinfo = "batchingUnitinfo";
}
}

+ 19
- 0
BPA.SAAS.KitChenManage.Comm/Const/ProductParametersConst_Goods.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Comm.Const
{
/// <summary>
/// 产品物模型对应的服务参数常量
/// </summary>
public class ProductParametersConst_Goods
{
public const string goodsinfo = "goodsinfo";
public const string goodsAttribute = "goodsAttribute";
public const string goodsUnitInfo = "goodsUnitInfo";
public const string goodsTypeInfo = "goodsTypeInfo";
}
}

+ 17
- 0
BPA.SAAS.KitChenManage.Comm/Const/ProductParametersConst_Technology.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Comm.Const
{
/// <summary>
/// 产品物模型对应的服务参数常量
/// </summary>
public class ProductParametersConst_Technology
{
public const string technologysInfo = "technologysInfo";
public const string goodsTechnologysInfo = "goodsTechnologysInfo";
}
}

+ 16
- 0
BPA.SAAS.KitChenManage.Core/Base/ResponDataBase.cs 查看文件

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

namespace BPA.SAAS.KitChenManage.Core.Base
{
public class ResponDataBase
{
public string statusCode { get; set; }
public object data { get; set; }
public string succeeded { get; set; }
public string errors { get; set; }
}
}

+ 1
- 0
BPA.SAAS.KitChenManage.Web.Core/Startup.cs 查看文件

@@ -51,6 +51,7 @@ namespace BPA.SAAS.KitChenManage.Web.Core
});
// services.GetService<IMqttClientOptions>();
services.AddCorsAccessor();
services.AddRemoteRequest();
services.AddSqlsugarSetup(App.Configuration);
services.AddControllers()
.AddInjectWithUnifyResult();


+ 1
- 0
BPA.SAAS.KitChenManage.Web.Entry/appsettings.json 查看文件

@@ -8,6 +8,7 @@
}
},
"AllowedHosts": "*",
"baseurl": "http://localhost:5006/",
"ConnectionConfigs": [
{
"ConnectionString": "server=10.2.1.21;Database=bpa_kitchen_kitchenmanage;Uid=root;Pwd=cygadmin;Allow Zero Datetime=True;Convert Zero Datetime=True;",


正在加载...
取消
保存