This commit is contained in:
2026-01-07 15:39:28 +08:00
parent b5a8de5dc5
commit a6ca3d6c20

View File

@@ -34,7 +34,6 @@ namespace DOAN.Service.BZFM
return response;
}
/// <summary>
/// 获取详情
/// </summary>
@@ -42,9 +41,7 @@ namespace DOAN.Service.BZFM
/// <returns></returns>
public MmMaterial GetInfo(int Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
var response = Queryable().Where(x => x.Id == Id).First();
return response;
}
@@ -76,11 +73,24 @@ namespace DOAN.Service.BZFM
/// <returns></returns>
private static Expressionable<MmMaterial> QueryExp(MmMaterialQueryDto parm)
{
var predicate = Expressionable.Create<MmMaterial>()
.AndIF(!string.IsNullOrEmpty(parm.CategoryCode), m => m.CategoryCode.Contains(parm.CategoryCode))
.AndIF(!string.IsNullOrEmpty(parm.MaterialName), m => m.MaterialName.Contains(parm.MaterialName))
.AndIF(!string.IsNullOrEmpty(parm.MaterialCode), m => m.MaterialCode.Contains(parm.MaterialCode))
.AndIF(!string.IsNullOrEmpty(parm.Specification), m => m.Specification.Contains(parm.Specification))
var predicate = Expressionable
.Create<MmMaterial>()
.AndIF(
!string.IsNullOrEmpty(parm.CategoryCode),
m => m.CategoryCode.Contains(parm.CategoryCode)
)
.AndIF(
!string.IsNullOrEmpty(parm.MaterialName),
m => m.MaterialName.Contains(parm.MaterialName)
)
.AndIF(
!string.IsNullOrEmpty(parm.MaterialCode),
m => m.MaterialCode.Contains(parm.MaterialCode)
)
.AndIF(
!string.IsNullOrEmpty(parm.Specification),
m => m.Specification.Contains(parm.Specification)
)
.AndIF(!string.IsNullOrEmpty(parm.Type), m => m.Type.Contains(parm.Type))
.AndIF(!string.IsNullOrEmpty(parm.Status), m => m.Status == parm.Status);
return predicate;
@@ -92,19 +102,28 @@ namespace DOAN.Service.BZFM
/// <param name="parm"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public List<MmMaterialCategoryOptionsDto> GetMmMaterialCategoryOptions(MmMaterialCategoryDto parm)
public List<MmMaterialCategoryOptionsDto> GetMmMaterialCategoryOptions(
MmMaterialCategoryDto parm
)
{
try
{
return Context.Queryable<MmMaterialCategory>()
.WhereIF(!string.IsNullOrEmpty(parm.CategoryCode),it => it.CategoryCode.Contains(parm.CategoryCode))
.WhereIF(!string.IsNullOrEmpty(parm.CategoryName), it => it.CategoryName.Contains(parm.CategoryName))
return Context
.Queryable<MmMaterialCategory>()
.WhereIF(
!string.IsNullOrEmpty(parm.CategoryCode),
it => it.CategoryCode.Contains(parm.CategoryCode)
)
.WhereIF(
!string.IsNullOrEmpty(parm.CategoryName),
it => it.CategoryName.Contains(parm.CategoryName)
)
.Select(it => new MmMaterialCategoryOptionsDto
{
Label = it.CategoryName,
Value = it.CategoryCode
}
).ToList();
Value = it.CategoryCode,
})
.ToList();
}
catch (Exception)
{
@@ -142,11 +161,12 @@ namespace DOAN.Service.BZFM
}
x.Description = x.Description.IsEmpty() ? "数据导入" : x.Description;
});
var x = Context.Storageable(material)
var x = Context
.Storageable(material)
.SplitInsert(it => !it.Any())
.WhereColumns(it => new { it.Id, it.MaterialCode })//如果不是主键可以这样实现多字段it=>new{it.x1,it.x2}
.WhereColumns(it => new { it.Id, it.MaterialCode }) //如果不是主键可以这样实现多字段it=>new{it.x1,it.x2}
.ToStorage();
var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
var result = x.AsInsertable.ExecuteCommand(); //插入可插入部分;
var importResult = new ImportResultDto
{
@@ -156,29 +176,44 @@ namespace DOAN.Service.BZFM
ErrorCount = x.ErrorList.Count,
IgnoredCount = x.IgnoreList.Count,
Deleted = x.DeleteList.Count,
Total = x.TotalList.Count
Total = x.TotalList.Count,
};
//输出统计
//输出统计
Console.WriteLine(importResult);
// 收集错误与忽略信息
foreach (var item in x.ErrorList)
{
importResult.Errors.Add(new ImportErrorDto { MaterialCode = item.Item.MaterialCode, Message = item.StorageMessage });
importResult.Errors.Add(
new ImportErrorDto
{
MaterialCode = item.Item.MaterialCode,
Message = item.StorageMessage,
}
);
}
foreach (var item in x.IgnoreList)
{
importResult.Ignored.Add(new ImportErrorDto { MaterialCode = item.Item.MaterialCode, Message = item.StorageMessage });
importResult.Ignored.Add(
new ImportErrorDto
{
MaterialCode = item.Item.MaterialCode,
Message = item.StorageMessage,
}
);
}
return importResult;
}
/// <summary>
/// 导出物料表列表
/// </summary>
/// <returns></returns>
public PagedInfo<MmMaterialExcelDto> SelectMaterialList(MmMaterialQueryDto material, PagerInfo pager)
/// 导出物料表列表
/// </summary>
/// <returns></returns>
public PagedInfo<MmMaterialExcelDto> SelectMaterialList(
MmMaterialQueryDto material,
PagerInfo pager
)
{
// Use the same predicate builder as GetList to support consistent filtering
var predicate = QueryExp(material);
@@ -186,17 +221,13 @@ namespace DOAN.Service.BZFM
var query = Queryable()
.Where(predicate.ToExpression())
.Select(it => new MmMaterialExcelDto
.Select(it => new MmMaterialCategoryOptionsDto
{
Label = it.CategoryName,
Value = it.CategoryCode
}
).ToList()
;
Id = it.Id,
Type = it.Type,
MaterialCode = it.MaterialCode,
});
return query.ToPage(pager);
}
}
}
}