#region << 版 本 注 释 >> /*---------------------------------------------------------------- * 命名空间:WIDESEAWCS_QuartzJob * 创建者:胡童庆 * 创建时间:2024/8/2 16:13:36 * 版本:V1.0.0 * 描述:设备协议业务实现层 * * ---------------------------------------------------------------- * 修改人: * 修改时间: * 版本:V1.0.1 * 修改说明: * *----------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using Magicodes.ExporterAndImporter.Core.Models; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Repository; namespace WIDESEAWCS_QuartzJob.Service { public class DeviceProtocolService : ServiceBase, IDeviceProtocolService { private readonly IUnitOfWorkManage _unitOfWorkManage; public DeviceProtocolService(IDeviceProtocolRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; } /// /// 读取导入文件的数据返回到前端 /// /// 文件 /// 返回读取结果,成功返回数据,失败返回错误信息 public WebResponseContent GetImportData(List fileInput) { try { if (fileInput == null || fileInput.Count == 0) return new WebResponseContent { Status = true, Message = "请选择上传的文件" }; Microsoft.AspNetCore.Http.IFormFile formFile = fileInput[0]; string dicPath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelImprot/{DateTime.Now.ToString("yyyMMdd")}/{typeof(Dt_DeviceProtocol).Name}/"; if (!Directory.Exists(dicPath)) Directory.CreateDirectory(dicPath); string fileName = $"{Guid.NewGuid()}_{formFile.FileName}"; dicPath = $"{dicPath}{fileName}"; using (FileStream stream = new FileStream(dicPath, FileMode.Create)) { formFile.CopyTo(stream); } ExcelImporter importer = new ExcelImporter(); ImportResult importResult = importer.Import(dicPath, "").Result; if (importResult.HasError) { return WebResponseContent.Instance.Error(importResult.TemplateErrors.Serialize()); } return WebResponseContent.Instance.OK(data: importResult.Data); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } public override WebResponseContent AddData(SaveModel saveModel) { //saveModel.MainData[""] return base.AddData(saveModel); } //public WebResponseContent InsertProtocol_Line(int PLCid, string ChildCode,decimal ProOffsetStart) //{ // Type type = typeof(); //} // 封装检查逻辑 private bool DeviceProtocolExists(int DeviceID, string DeviceChildCode, decimal DeviceProOffset) { return BaseDal.QueryFirst(x => x.DeviceId == DeviceID && x.DeviceChildCode == DeviceChildCode && x.DeviceProOffset == DeviceProOffset) != null; } // 封装对象创建逻辑 private Dt_DeviceProtocol CreateDeviceProtocol(int DeviceID, string DeviceChildCode, decimal DeviceProOffset, int additionalOffset, string dataType, int dataLength, string paramName) { decimal DeviceProOffsets = DeviceProOffset + additionalOffset; return new Dt_DeviceProtocol { DeviceId = DeviceID, DeviceChildCode = DeviceChildCode, DeviceProDataBlock = "DB1000", DeviceProOffset = DeviceProOffsets, DeviceProDataLength = dataLength, DeviceProDataType = dataType, DeviceProParamName = paramName, DeviceProParamType = "DeviceCommand", DeviceProParamDes = "1", DeviceProRemark = "", Creater = "admin", CreateDate = DateTime.Now, }; } public WebResponseContent AddDeviceProtocol(int DeviceID, string DeviceChildCode, decimal DeviceProOffset) { WebResponseContent content = new WebResponseContent(); try { if (DeviceProtocolExists(DeviceID, DeviceChildCode, DeviceProOffset)) { throw new InvalidOperationException("已存在该节点明细"); } var protocols = new List { CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 0, "int", 1, "ConveyorLineTargetAddress"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 2, "int", 1, "ConveyorLineTaskNum"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 6, "string", 25, "ConveyorLineBarcode"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 34, "int", 1, "Reserve1"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 36, "int", 1, "Reserve2"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 38, "int", 1, "Reserve3"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 40, "byte", 1, "InteractiveSignal"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 42, "int", 1, "HasPallet"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 44, "int", 1, "ConveyorLineAlarm"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 46, "int", 1, "ResponState"), CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 48, "int", 1, "Reserve5") }; var result=BaseDal.AddData(protocols); return content.OK(data:result); } catch (Exception ex) { return content.Error(ex.Message); } } } }