|
- using BPA.Message;
- using BPASmartClient.Device;
- using BPASmartClient.EventBus;
- using BPASmartClient.Helper;
- using BPASmartClient.Http;
- using BPASmartClient.Message;
- using BPASmartClient.Model;
- using BPASmartClient.Model.小炒机;
- using BPASmartClient.Model.调酒机;
- using BPASmartClient.Peripheral;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace BPASmartClient.Business
- {
- /// <summary>
- /// 设备管理器,统一管理所有设备资源
- /// </summary>
- public class DeviceMgr : IPlugin
- {
- //设备集合
- private List<IDevice> devices = new List<IDevice>();
-
- public void Dispose()
- {
- }
-
- public void Initialize()
- {
- }
-
- public void Start()
- {
- LoadDevice();
- }
-
- public List<IDevice> GetDevices()
- {
- return devices;
- }
-
- /// <summary>
- /// 设备加载
- /// </summary>
- private void LoadDevice()
- {
- var result = Plugin.GetInstance().GetPlugin<ConfigMgr>()?.deviceConfigModelJsons;
- //var text = TextHelper.GetInstance.ReadTextInfo("StartShop", "DeviceConfig");
- //string path = $"{LocaPath.GetInstance().GetDeviceConfigPath}{text}.json";
- //if (File.Exists(path))
- //{
- //string JsonString = File.ReadAllText(path);
- //var result = JsonConvert.DeserializeObject<ObservableCollection<DeviceConfigModelJson>>(JsonString);
- if (result != null)
- {
- foreach (var shop in result)//店铺集合
- {
- foreach (var device in shop.deviceModels)//设备集合
- {
-
- string Namespace = device.DeviceNamespace.Substring(0, device.DeviceNamespace.LastIndexOf('.'));
- var deviceTemp = Assembly.Load(Namespace).CreateInstance(device.DeviceNamespace) as IDevice;
- deviceTemp.Name = device?.DeviceName;
- deviceTemp.DeviceId = int.Parse(device.DeviceId);
-
- //通讯模块
- List<IPeripheral> peripherals = new List<IPeripheral>();
- foreach (var comms in device.communicationDevcies)//通讯集合
- {
- string IPeripheralNamespace = comms.CommunicationNamespace.Substring(0, comms.CommunicationNamespace.LastIndexOf('.'));
- var peripheralTemp = Assembly.Load(IPeripheralNamespace).CreateInstance(comms.CommunicationNamespace) as IPeripheral;
- peripheralTemp.variables = comms.variables;
- peripheralTemp.communicationPar = comms.communicationPar;
- peripherals.Add(peripheralTemp);
- }
-
- deviceTemp.Initliaze(peripherals);
- this.devices.Add(deviceTemp);
- }
- }
- }
- //}
- }
-
- public void StartService()
- {
- this.devices.ForEach(device =>
- {
- device.StartMain();
-
- #region 获取物料数据
- string result = string.Empty;
- for (int i = 0; i < 4; i++)
- {
- try
- {
- int PushType = i;//0:主料 1:辅料
- int clientId = device.DeviceId;
- var jsondata = new { clientId, PushType };
- string header = $"[/stock/GetItemInfo]_[{DateTime.Now.Ticks}]".AESEncrypt();
- string url = $"{InternetInfo.StockServer}GetItemInfo";
- result = APIHelper.GetInstance.HttpRequest(url, header, jsondata, RequestType.POST);
-
- if (PushType == 1)
- {
- new RecipeBomEvent()
- {
- DeviceId = device.DeviceId,
- recipeBoms = JsonConvert.DeserializeObject<RecipeBoms>(result)
- }.Publish();
- MessageLog.GetInstance.Show("接收到【 API 】获取的辅料信息");
- }
- else if (PushType == 0)
- {
- var apiData = JsonConvert.DeserializeObject<OrderMaterialDelivery>(result);
- new MaterialDeliveryEvent()
- {
- DeviceId = device.DeviceId,
- orderMaterialDelivery = apiData
- }.Publish();
- MessageLog.GetInstance.Show("接收到【 API 】获取的物料信息");
- apiData?.BatchingInfo?.ForEach(x =>
- {
- MessageLog.GetInstance.Show($"物料ID:=[{x.BatchingId}],{x.BatchingLoc}号位置:{x.BatchingCount}");
- });
- }
- else if (PushType == 2)//小炒API流程获取,待定
- {
- new StirFryGoodsEvent()
- {
- DeviceId = device.DeviceId,
- stirFrymessage = JsonConvert.DeserializeObject<StirFryPushMessage>(result)
- }.Publish();
- MessageLog.GetInstance.Show("接收到【 API 】获取的小炒流程信息");
- }
- else if (PushType == 3)
- {
- new MorkMWGoodsEvent()
- {
- DeviceId = device.DeviceId,
- morkMWPushMessage = JsonConvert.DeserializeObject<MORKMWPushMessage>(result)
- }.Publish();
- MessageLog.GetInstance.Show("接收到【API】获取的调酒机配方信息");
- }
- }
- catch (Exception ex)
- {
- MessageLog.GetInstance.ShowEx(ex.ToString());
- }
- }
- #endregion
-
- });
- }
-
- public void StopService()
- {
- this.devices.ForEach(device => device.Stop());
- }
-
-
- }
- }
|