优化物料导入功能,完善报错信息

This commit is contained in:
2026-01-08 16:05:04 +08:00
parent 9634f741a4
commit fdcb5b5200

View File

@@ -145,7 +145,7 @@ namespace DOAN.Service.BZFM
/// <returns></returns>
public ImportResultDto Importmaterial(IFormFile formFile, string username)
{
string message = "导入成功";
// TODO 1.构建空的待导入数据集合MmMaterialExcelDto多余部分删除
List<MmMaterialExcelDto> materialList = new();
// TODO 2.使用NPOI读取Excel内容填充到MmMaterialExcelDto集合中注意列的对应关系id不要忘且跳过标题行目前需要从第2行开始读取注意修改row
@@ -172,84 +172,67 @@ namespace DOAN.Service.BZFM
//01 物料标号
NPOI.SS.UserModel.ICell currentCell_01 = currentRow.GetCell(1);
material.Type = currentCell_01?.ToString();
if (currentCell_01 == null || string.IsNullOrEmpty(material.Type))
{
continue;
}
material.Type = currentCell_01?.ToString() ?? string.Empty;
//02物料编码
NPOI.SS.UserModel.ICell currentCell_02 = currentRow.GetCell(2);
material.MaterialCode = currentCell_02?.ToString();
if (
currentCell_02 == null
|| string.IsNullOrEmpty(material.MaterialCode)
)
{
continue;
message = $"物料编码不可为空,第{row + 1}行";
break;
}
//03物料名称
NPOI.SS.UserModel.ICell currentCell_03 = currentRow.GetCell(3);
material.MaterialName = currentCell_03?.ToString();
if (
currentCell_03 == null
|| string.IsNullOrEmpty(material.MaterialName)
)
{
continue;
}
material.MaterialName = currentCell_03?.ToString() ?? string.Empty;
//04规格
NPOI.SS.UserModel.ICell currentCell_04 = currentRow.GetCell(4);
material.Specification = currentCell_04?.ToString();
material.Specification = currentCell_04?.ToString() ?? string.Empty;
//05 类型编码
NPOI.SS.UserModel.ICell currentCell_05 = currentRow.GetCell(5);
material.CategoryCode = currentCell_05?.ToString();
if (
currentCell_05 == null
|| string.IsNullOrEmpty(material.CategoryCode)
)
{
continue;
message = $"类型编码不可为空,第{row + 1}行";
break;
}
//06 类型名称
NPOI.SS.UserModel.ICell currentCell_06 = currentRow.GetCell(6);
material.CategoryName = currentCell_06?.ToString();
if (
currentCell_06 == null
|| string.IsNullOrEmpty(material.CategoryName)
)
{
continue;
}
material.CategoryName = currentCell_06?.ToString() ?? string.Empty;
//07 单位
NPOI.SS.UserModel.ICell currentCell_07 = currentRow.GetCell(7);
material.Unit = currentCell_07?.ToString();
material.Unit = currentCell_07?.ToString() ?? string.Empty;
//08 供应商编码
NPOI.SS.UserModel.ICell currentCell_08 = currentRow.GetCell(8);
material.SupplierCode = currentCell_08?.ToString();
material.SupplierCode = currentCell_08?.ToString() ?? string.Empty;
//09 供应商名称
NPOI.SS.UserModel.ICell currentCell_09 = currentRow.GetCell(9);
material.SupplierName = currentCell_09?.ToString();
//10 状态
material.SupplierName = currentCell_09?.ToString() ?? string.Empty;
//10 安全库存
NPOI.SS.UserModel.ICell currentCell_10 = currentRow.GetCell(10);
material.Status = currentCell_10?.ToString();
material.SafetyStock = (int)currentCell_10?.NumericCellValue;
//11 状态
NPOI.SS.UserModel.ICell currentCell_11 = currentRow.GetCell(11);
material.Status = currentCell_11?.ToString() ?? "启用";
//12 创建时间
NPOI.SS.UserModel.ICell currentCell_12 = currentRow.GetCell(12);
material.CreatedTime = currentCell_12?.DateCellValue ?? DateTime.Now;
//13 更新时间
NPOI.SS.UserModel.ICell currentCell_13 = currentRow.GetCell(13);
material.UpdatedTime = currentCell_13?.DateCellValue ?? DateTime.Now;
//14 描述
NPOI.SS.UserModel.ICell currentCell_14 = currentRow.GetCell(14);
material.Description = currentCell_14?.ToString() ?? "Excel导入";
materialList.Add(material);
}
}
@@ -267,14 +250,15 @@ namespace DOAN.Service.BZFM
var x = Context
.Storageable(materialList)
.SplitInsert(it => !it.Any())
.WhereColumns(it => it.Id) //如果不是主键可以这样实现多字段it=>new{it.x1,it.x2}
//.SplitInsert(it => !it.Any())
//.WhereColumns(it => it.Id) //如果不是主键可以这样实现多字段it=>new{it.x1,it.x2}
.ToStorage();
var result = x.AsUpdateable.ExecuteCommand(); //插入可插入部分;
var result = x.AsInsertable.ExecuteCommand();
var result2 = x.AsUpdateable.IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand(); //插入可插入部分;
var importResult = new ImportResultDto
{
Message = "导入完成",
Message = message,
Inserted = x.InsertList.Count,
Updated = x.UpdateList.Count,
ErrorCount = x.ErrorList.Count,