|
|
@@ -117,6 +117,8 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 更新配方详情 |
|
|
|
/// </summary> |
|
|
@@ -229,16 +231,130 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<PageUtil> BomPage(BomPageInputDto inputDto) |
|
|
|
{ |
|
|
|
|
|
|
|
var pertainList = _db.Queryable<BPA_BomTypeInfo, BPA_BomType>((a, b) => |
|
|
|
new JoinQueryInfos(JoinType.Left, a.BomTypeId == b.Id)) |
|
|
|
.Where((a, b) => a.IsDeleted == 0 && b.IsDeleted == 0) |
|
|
|
.WhereIF(inputDto.Pertains != null && inputDto.Pertains.Count > 0, (a, b) => inputDto.Pertains.Contains(b.Pertain)) |
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(inputDto.bomTypeList), (a, b) => b.Id == inputDto.bomTypeList) |
|
|
|
.Select((a, b) => a.BomId) |
|
|
|
.ToList(); |
|
|
|
|
|
|
|
int total = new RefAsync<int>(); |
|
|
|
var res = await _db.Queryable<BPA_Bom>() |
|
|
|
.ToPageListAsync(inputDto.Current, inputDto.PageSize, total); |
|
|
|
var res = _db.Queryable<BPA_Bom>() |
|
|
|
.Where(it => it.IsDeleted == 0) |
|
|
|
.WhereIF(!string.IsNullOrEmpty(inputDto.Name),x=>x.Name.Contains(inputDto.Name)) |
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(inputDto.bomTypeList), x => pertainList.Contains(x.Id)) |
|
|
|
.OrderBy(i => i.CreateAt, OrderByType.Desc) |
|
|
|
.ToPageList(inputDto.Current, inputDto.PageSize, ref total); |
|
|
|
|
|
|
|
|
|
|
|
var listtype = _db.Queryable<BPA_BomTypeInfo>() |
|
|
|
.Where(a => res.Select(x => x.Id).Contains(a.BomId) && a.IsDeleted == 0).ToList(); |
|
|
|
|
|
|
|
return new PageUtil() |
|
|
|
var data = new List<object>(); |
|
|
|
foreach (var item in res) |
|
|
|
{ |
|
|
|
Data = res, |
|
|
|
Total= total, |
|
|
|
var obj = listtype.Where(x => x.BomId == item.Id).Select(x => x.BomTypeId).ToList(); |
|
|
|
data.Add(new |
|
|
|
{ |
|
|
|
BomTypeList = obj, |
|
|
|
Name = item.Name, |
|
|
|
Code = item.Code, |
|
|
|
item.IsMain, |
|
|
|
item.BOMInfo, |
|
|
|
item.Status, |
|
|
|
item.Id, |
|
|
|
item.Sort, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
PageUtil util = new PageUtil() |
|
|
|
{ |
|
|
|
Total = total, |
|
|
|
Data = data |
|
|
|
}; |
|
|
|
return util; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 添加配方 |
|
|
|
/// </summary> |
|
|
|
/// <param name="dto"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<bool> AddBom(BomCreateInputDto dto) |
|
|
|
{ |
|
|
|
_db.Ado.BeginTran(); |
|
|
|
try |
|
|
|
{ |
|
|
|
var sortMax = _db.Queryable<BPA_Bom>().Max(x => x.Sort); |
|
|
|
BPA_Bom newbPA_BOM = new BPA_Bom |
|
|
|
{ |
|
|
|
Name = dto.BomName, |
|
|
|
Code = GetNumber2(), |
|
|
|
IsMain = true, |
|
|
|
Sort = sortMax + 1, |
|
|
|
Id = Guid.NewGuid().ToString(), |
|
|
|
CreateAt = DateTime.Now, |
|
|
|
Status = CommonStatus.ENABLE, |
|
|
|
}; |
|
|
|
//添加配方 |
|
|
|
var res = _db.Insertable(newbPA_BOM).CallEntityMethod(m => m.Create()).ExecuteCommand(); |
|
|
|
//添加配方分类 |
|
|
|
var list = dto.BomtypeList.Select(item => new BPA_BomTypeInfo() { BomId = newbPA_BOM.Id, BomTypeId = item }).ToList(); |
|
|
|
_db.Insertable(list).CallEntityMethod(m => m.Create()).ExecuteCommand(); |
|
|
|
|
|
|
|
|
|
|
|
List<BPA_BomEntry> BOMEntryList = new(); |
|
|
|
if (dto.Mate.Count > 0) |
|
|
|
{ |
|
|
|
for (int i = 0; i < dto.Mate.Count; i++) |
|
|
|
{ |
|
|
|
BPA_BomEntry newbPA_BOMEnty = new BPA_BomEntry |
|
|
|
{ |
|
|
|
BatchingId = dto.Mate[i].batchingId, |
|
|
|
//BatchingKey = dto.Mate[i].AutoKey, |
|
|
|
BomQty = dto.Mate[i].dosage, |
|
|
|
BomId = newbPA_BOM.Id, |
|
|
|
Status = CommonStatus.ENABLE, |
|
|
|
IsReplace = false, |
|
|
|
}; |
|
|
|
BOMEntryList.Add(newbPA_BOMEnty); |
|
|
|
} |
|
|
|
} |
|
|
|
//添加配方物料关系 |
|
|
|
_db.Insertable(BOMEntryList).CallEntityMethod(m => m.Create()).ExecuteCommand(); |
|
|
|
_db.Ado.CommitTran(); |
|
|
|
return true; |
|
|
|
} |
|
|
|
catch (Exception e) |
|
|
|
{ |
|
|
|
_db.Ado.RollbackTran(); |
|
|
|
throw Oops.Oh("添加失败,失败信息:" + e.Message); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 删除配方 |
|
|
|
/// </summary> |
|
|
|
/// <param name="dto"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<bool> DelBom(string id) |
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
_db.Ado.BeginTran(); |
|
|
|
await _db.Deleteable<BPA_Bom>().Where(x => x.Id == id).ExecuteCommandAsync(); |
|
|
|
await _db.Deleteable<BPA_BomEntry>().Where(x => x.BomId == id).ExecuteCommandAsync(); |
|
|
|
_db.Ado.CommitTran(); |
|
|
|
return true; |
|
|
|
} |
|
|
|
catch (Exception e) |
|
|
|
{ |
|
|
|
_db.Ado.RollbackTran(); |
|
|
|
throw Oops.Oh("删除失败" + e.Message); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |