diff --git a/DOAN.Admin.WebApi/Controllers/MES/Material/productionMaterial/MmMaterialController.cs b/DOAN.Admin.WebApi/Controllers/MES/Material/productionMaterial/MmMaterialController.cs
index 36e89a2..613b241 100644
--- a/DOAN.Admin.WebApi/Controllers/MES/Material/productionMaterial/MmMaterialController.cs
+++ b/DOAN.Admin.WebApi/Controllers/MES/Material/productionMaterial/MmMaterialController.cs
@@ -1,9 +1,11 @@
using DOAN.Admin.WebApi.Filters;
using DOAN.Model.BZFM;
using DOAN.Model.BZFM.Dto;
+using DOAN.Model.System;
using DOAN.Service.BZFM;
using DOAN.Service.BZFM.IBZFMService;
using Microsoft.AspNetCore.Mvc;
+using MiniExcelLibs;
//创建时间:2025-12-25
namespace DOAN.Admin.WebApi.Controllers.BZFM
@@ -111,6 +113,23 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
return SUCCESS(response);
}
+ ///
+ /// 导入
+ ///
+ /// 使用IFromFile必须使用name属性否则获取不到文件
+ ///
+ [HttpPost("importData")]
+ [Log(Title = "物料清单导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = true)]
+ [ActionPermissionFilter(Permission = "mmmaterial:import")]
+ public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
+ {
+ List material = new();
+ using (var stream = formFile.OpenReadStream())
+ {
+ material = stream.Query(startCell: "A2").ToList();
+ }
+ return SUCCESS(_MmMaterialService.Importmaterial(material));
+ }
}
}
\ No newline at end of file
diff --git a/DOAN.Model/MES/Material/Dto/MmMaterialCategoryDto.cs b/DOAN.Model/MES/Material/Dto/MmMaterialCategoryDto.cs
index e407232..13a3abd 100644
--- a/DOAN.Model/MES/Material/Dto/MmMaterialCategoryDto.cs
+++ b/DOAN.Model/MES/Material/Dto/MmMaterialCategoryDto.cs
@@ -9,6 +9,8 @@ namespace DOAN.Model.BZFM.Dto
public string CategoryCode { get; set; }
public string CategoryName { get; set; }
public string Status { get; set; }
+
+ public DateTime? CreatedTime { get; set; }
}
///
diff --git a/DOAN.Model/MES/Material/Dto/MmMaterialDto.cs b/DOAN.Model/MES/Material/Dto/MmMaterialDto.cs
index 4f39a33..ee6b5bc 100644
--- a/DOAN.Model/MES/Material/Dto/MmMaterialDto.cs
+++ b/DOAN.Model/MES/Material/Dto/MmMaterialDto.cs
@@ -16,6 +16,7 @@ namespace DOAN.Model.BZFM.Dto
public string TypeLabel { get; set; }
public string Type { get; set; }
public string Status { get; set; }
+ public DateTime? CreatedTime { get; set; }
}
///
diff --git a/DOAN.Service/MES/Material/IService/IMmMaterialService.cs b/DOAN.Service/MES/Material/IService/IMmMaterialService.cs
index 40fa3d4..df9524a 100644
--- a/DOAN.Service/MES/Material/IService/IMmMaterialService.cs
+++ b/DOAN.Service/MES/Material/IService/IMmMaterialService.cs
@@ -1,5 +1,6 @@
-using DOAN.Model.BZFM.Dto;
using DOAN.Model.BZFM;
+using DOAN.Model.BZFM.Dto;
+using DOAN.Model.System;
namespace DOAN.Service.BZFM.IBZFMService
{
@@ -20,5 +21,12 @@ namespace DOAN.Service.BZFM.IBZFMService
// 查询物料类别下拉框
List GetMmMaterialCategoryOptions(MmMaterialCategoryDto parm);
+ ///
+ /// 导入
+ ///
+ ///
+ ///
+ (string, object, object) Importmaterial(List material);
+
}
}
diff --git a/DOAN.Service/MES/Material/MmMaterialService.cs b/DOAN.Service/MES/Material/MmMaterialService.cs
index 6767c47..db27ffb 100644
--- a/DOAN.Service/MES/Material/MmMaterialService.cs
+++ b/DOAN.Service/MES/Material/MmMaterialService.cs
@@ -1,9 +1,12 @@
-using Infrastructure.Attribute;
-using Infrastructure.Extensions;
-using DOAN.Model.BZFM.Dto;
+using DOAN.Common;
using DOAN.Model.BZFM;
+using DOAN.Model.BZFM.Dto;
+using DOAN.Model.System;
using DOAN.Repository;
using DOAN.Service.BZFM.IBZFMService;
+using Infrastructure;
+using Infrastructure.Attribute;
+using Infrastructure.Extensions;
namespace DOAN.Service.BZFM
{
@@ -109,5 +112,52 @@ namespace DOAN.Service.BZFM
throw;
}
}
+
+ ///
+ /// 导入数据
+ ///
+ ///
+ ///
+ public (string, object, object) Importmaterial(List material)
+ {
+ material.ForEach(x =>
+ {
+ x.CreatedTime = DateTime.Now;
+ x.Status = "启用";
+ x.MaterialCode = "";
+ x.MaterialName = "E10ADC3949BA59ABBE56E057F20F883E";
+ //x.Remark = x.Remark.IsEmpty() ? "数据导入" : x.Remark;
+ });
+ var x = Context.Storageable(material)
+ .SplitInsert(it => !it.Any())
+ .SplitIgnore(it => it.Item.MaterialCode == GlobalConstant.AdminRole)
+ .SplitError(x => x.Item.MaterialCode.IsEmpty(), "物料编码不能为空")
+ .SplitError(x => !Tools.CheckUserName(x.Item.MaterialCode), "物料编码不符合规范")
+ .WhereColumns(it => it.MaterialCode)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
+ .ToStorage();
+ var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
+
+ string msg = string.Format(" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4} 总共{5}",
+ x.InsertList.Count,
+ x.UpdateList.Count,
+ x.ErrorList.Count,
+ x.IgnoreList.Count,
+ x.DeleteList.Count,
+ x.TotalList.Count);
+ //输出统计
+ Console.WriteLine(msg);
+
+ //输出错误信息
+ foreach (var item in x.ErrorList)
+ {
+ Console.WriteLine("MaterialCode为" + item.Item.MaterialCode + " : " + item.StorageMessage);
+ }
+ foreach (var item in x.IgnoreList)
+ {
+ Console.WriteLine("MaterialCode为" + item.Item.MaterialCode + " : " + item.StorageMessage);
+ }
+
+ return (msg, x.ErrorList, x.IgnoreList);
+ }
}
}
\ No newline at end of file