using Magicodes.ExporterAndImporter.Core.Models;
|
using Magicodes.ExporterAndImporter.Excel;
|
using Microsoft.AspNetCore.Http;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseServices;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_Core.Utilities;
|
using WIDESEA_ISystemRepository;
|
using WIDESEA_ISystemService;
|
using WIDESEA_Model.Models;
|
using WIDESEA_Model.Models.System;
|
|
namespace WIDESEA_SystemService
|
{
|
public class Sys_TraycodeinfoService : ServiceBase<Dt_traycodeinfo, ISys_TraycodeinfoRepository>, ISys_TraycodeinfoService
|
{
|
public readonly IDt_palletService _PalletService;
|
public Sys_TraycodeinfoService(ISys_TraycodeinfoRepository BaseDal , IDt_palletService palletService) : base(BaseDal)
|
{
|
_PalletService = palletService;
|
}
|
|
public ISys_TraycodeinfoRepository Repository => BaseDal;
|
|
|
|
|
public Dt_traycodeinfo? GetInCacheList(string traycode_code)
|
{
|
Dt_traycodeinfo _Traycodeinfo= BaseDal.QueryData(x=>x.traycode_code== traycode_code && x.traycode_staute==1).FirstOrDefault();
|
return _Traycodeinfo;
|
}
|
|
public WebResponseContent AddTenantInfo(SaveModel saveModel)
|
{
|
WebResponseContent content = new WebResponseContent();
|
string barcode = saveModel.MainData["barcode"].ToString(); //条码
|
string stationnum = saveModel.MainData["cacheNo"].ToString();
|
Dt_traycodeinfo _Traycodeinfo = BaseDal.QueryData(x => x.traycode_code == barcode).FirstOrDefault();
|
if (_Traycodeinfo != null)
|
{
|
return content.Error("已有该托盘信息,请误重复新增");
|
}
|
Dt_traycodeinfo dt_Traycodeinfo = new Dt_traycodeinfo()
|
{
|
traycode_type = stationnum,
|
traycode_staute = 1,
|
traycode_code = barcode,
|
traycode_createtime = DateTime.Now,
|
};
|
|
BaseDal.AddData(dt_Traycodeinfo);
|
return content.OK("新增成功");
|
}
|
/// <summary>
|
/// 添加数据
|
/// </summary>
|
/// <param name="saveModel"></param>
|
/// <returns></returns>
|
public virtual WebResponseContent AddData(SaveModel saveModel)
|
{
|
try
|
{
|
if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//判断参数是否传入
|
{
|
return WebResponseContent.Instance.Error("传参错误,参数不能为空");
|
}
|
string validResult = typeof(Dt_traycodeinfo).ValidateDicInEntity(saveModel.MainData, true, TProperties);
|
|
if (!string.IsNullOrEmpty(validResult))
|
{
|
return WebResponseContent.Instance.Error(validResult);
|
}
|
|
PropertyInfo keyPro = typeof(Dt_traycodeinfo).GetKeyProperty();
|
if (keyPro == null)
|
{
|
return WebResponseContent.Instance.Error("请先设置主键");
|
}
|
if (keyPro.PropertyType == typeof(Guid))
|
{
|
saveModel.MainData.Add(keyPro.Name, Guid.NewGuid());
|
}
|
else if (keyPro.PropertyType == typeof(int) || keyPro.PropertyType == typeof(long))
|
{
|
SugarColumn? sugarColumn = keyPro.GetCustomAttribute<SugarColumn>();
|
if (sugarColumn?.IsIdentity ?? true)
|
{
|
saveModel.MainData.Remove(keyPro.Name.FirstLetterToUpper());
|
saveModel.MainData.Remove(keyPro.Name.FirstLetterToLower());
|
}
|
}
|
Dt_traycodeinfo entity = saveModel.MainData.DicToModel<Dt_traycodeinfo>();
|
List<Dt_traycodeinfo> dt_Traycodeinfos = BaseDal.QueryData(x => x.traycode_code == entity.traycode_code).ToList();
|
if (dt_Traycodeinfos.Count > 0)
|
{
|
return WebResponseContent.Instance.Error("新增失败!!!已添加该托盘");
|
}
|
|
if (saveModel.DetailData == null || saveModel.DetailData.Count == 0)
|
{
|
BaseDal.AddData(entity);
|
return WebResponseContent.Instance.OK();
|
}
|
|
if (typeof(Dt_traycodeinfo).GetNavigatePro() == null)
|
{
|
return WebResponseContent.Instance.Error("未配置导航属性");
|
}
|
|
Type detailType = typeof(Dt_traycodeinfo).GetDetailType();
|
MethodInfo? methodInfo = GetType().GetMethod("AddDataIncludesDetail");
|
methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
|
object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData });
|
return obj as WebResponseContent;
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
|
|
//导入
|
public virtual WebResponseContent Import(List<IFormFile> files)
|
{
|
try
|
{
|
if (files == null || files.Count == 0)
|
return new WebResponseContent { Status = true, Message = "请选择上传的文件" };
|
|
Microsoft.AspNetCore.Http.IFormFile formFile = files[0];
|
|
// 使用Path.Combine,避免硬编码路径分隔符
|
string dicPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ExcelImport", DateTime.Now.ToString("yyyyMMdd"));
|
if (!Directory.Exists(dicPath))
|
Directory.CreateDirectory(dicPath);
|
|
string fileName = $"{Guid.NewGuid()}_{formFile.FileName}";
|
string fullPath = Path.Combine(dicPath, fileName);
|
|
// 使用FileStream保存文件
|
using (FileStream stream = new FileStream(fullPath, FileMode.Create))
|
{
|
formFile.CopyTo(stream);
|
}
|
|
// 初始化Excel导入工具
|
ExcelImporter importer = new ExcelImporter();
|
|
// 导入Excel数据
|
ImportResult<Dt_traycodeinfo> importResult = importer.Import<Dt_traycodeinfo>(fullPath, "").Result;
|
|
|
if (importResult.HasError)
|
{
|
return WebResponseContent.Instance.Error(importResult.TemplateErrors.Serialize());
|
}
|
// 假设BaseDal是数据访问层,进行数据存储
|
List<Dt_traycodeinfo> traycodeinfo = new List<Dt_traycodeinfo>();
|
|
|
|
foreach (var item in importResult.Data)
|
{
|
Dt_traycodeinfo dt_Traycodeinfo = BaseDal.QueryFirst(x => x.traycode_code == item.traycode_code);
|
if (dt_Traycodeinfo != null)
|
{
|
return WebResponseContent.Instance.Error($"添加失败!已有该托盘条码:{item.traycode_code},请勿重复添加!");
|
}
|
|
Dt_pallet pallerdata =_PalletService.Repository.QueryFirst(x => x.palletname == item.traycode_type);
|
if(pallerdata == null)
|
{
|
return WebResponseContent.Instance.Error($"添加失败!托盘条码:{item.traycode_code},未找到对应的类型");
|
}
|
|
|
Dt_traycodeinfo dt_ = new Dt_traycodeinfo()
|
{
|
traycode_type = pallerdata.palletnumber.ToString(),
|
traycode_createtime = DateTime.Now,
|
traycode_staute = 1,
|
traycode_code=item.traycode_code,
|
};
|
traycodeinfo.Add(dt_);
|
}
|
BaseDal.AddData(traycodeinfo);
|
|
return WebResponseContent.Instance.OK("导入成功");
|
}
|
catch (Exception ex)
|
{
|
// 捕获异常并返回错误消息
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
}
|
}
|