#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<Dt_DeviceProtocol, IDeviceProtocolRepository>, IDeviceProtocolService
|
{
|
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
public DeviceProtocolService(IDeviceProtocolRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
|
{
|
_unitOfWorkManage = unitOfWorkManage;
|
}
|
|
/// <summary>
|
/// 读取导入文件的数据返回到前端
|
/// </summary>
|
/// <param name="fileInput">文件</param>
|
/// <returns>返回读取结果,成功返回数据,失败返回错误信息</returns>
|
public WebResponseContent GetImportData(List<IFormFile> 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<Dt_DeviceProtocol> importResult = importer.Import<Dt_DeviceProtocol>(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<Dt_DeviceProtocol>
|
{
|
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);
|
}
|
|
}
|
}
|
}
|