diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 4fa4e155..2554a22e 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1725,6 +1725,11 @@ 箱信息ID + + + 对应金蝶的明细ID + + 箱号 @@ -1735,9 +1740,9 @@ 修改-入库任务单-明细对象 - + - 明细ID + 对应金蝶的明细ID diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index e18efa9b..b6132e27 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -675,11 +675,6 @@ 创建时间(erp那边的创建时间) - - - 箱信息集合 - - 明细 @@ -748,6 +743,41 @@ 箱号 + + + 明细 + + + + + erp入库任务单的对应box箱信息表的明细表 + + + + + ID + + + + + 上级ID + + + + + 对应金蝶的明细ID + + + + + 物料ID + + + + + 收货数量 + + erp入库任务明细表 @@ -1934,6 +1964,33 @@ + + + 箱与任务单绑定(收货)关系表-仓储接口 + + + + + 集合:任务单ID + + + + + + + 实体:箱号ID + + + + + + + 批量添加 + + + + + 入库任务-仓储接口 @@ -1953,13 +2010,6 @@ - - - 实体:根据箱号 - - - - 实体:根据来源单号 @@ -1967,13 +2017,6 @@ - - - 箱号是否绑定了入库任务单实体:待入库和部分入库状态中 - - - - 列表 @@ -2372,16 +2415,6 @@ - - - 修改-入库任务信息 - - - - - - - 批量修改-入库任务信息 @@ -3620,7 +3653,7 @@ - + 修改-入库任务信息 diff --git a/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskBoxRequest.cs b/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskBoxRequest.cs index 7c65056c..be238f35 100644 --- a/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskBoxRequest.cs +++ b/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskBoxRequest.cs @@ -19,6 +19,11 @@ namespace WMS.Web.Core.Dto.InStockTask /// public int BoxId { get; set; } + /// + /// 对应金蝶的明细ID + /// + public int ErpDetailId { get; set; } + /// /// 箱号 /// diff --git a/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskDetailsRequest.cs b/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskDetailsRequest.cs index 49f78525..01a6655e 100644 --- a/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskDetailsRequest.cs +++ b/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskDetailsRequest.cs @@ -9,11 +9,12 @@ namespace WMS.Web.Core.Dto.InStockTask /// public class UpdateInStockTaskDetailsRequest : EntityBase { + /// - /// 明细ID + /// 对应金蝶的明细ID /// - public override int Id { get; set; } = 0; - + public int ErpDetailId { get; set; } + /// /// 物料ID /// diff --git a/src/WMS.Web.Domain/Entitys/InStockTaskBox.cs b/src/WMS.Web.Domain/Entitys/InStockTaskBox.cs index 86cb288c..75103f16 100644 --- a/src/WMS.Web.Domain/Entitys/InStockTaskBox.cs +++ b/src/WMS.Web.Domain/Entitys/InStockTaskBox.cs @@ -33,5 +33,10 @@ namespace WMS.Web.Domain.Entitys /// 箱号 /// public string BoxBillNo { get; set; } + + /// + /// 明细 + /// + public List Details { get; set; } = new List(); } } diff --git a/src/WMS.Web.Domain/Entitys/InStockTaskBoxDetails.cs b/src/WMS.Web.Domain/Entitys/InStockTaskBoxDetails.cs new file mode 100644 index 00000000..765b9224 --- /dev/null +++ b/src/WMS.Web.Domain/Entitys/InStockTaskBoxDetails.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text; +using WMS.Web.Core; + +namespace WMS.Web.Domain.Entitys +{ + /// + /// erp入库任务单的对应box箱信息表的明细表 + /// + [Serializable] + [Table("t_erp_instock_task_box_details")] + public class InStockTaskBoxDetails : EntityBase + { + /// + /// ID + /// + public override int Id { get; set; } = 0; + /// + /// 上级ID + /// + public int Fid { get; set; } + /// + /// 对应金蝶的明细ID + /// + public int ErpDetailId { get; set; } + /// + /// 物料ID + /// + public int MaterialId { get; set; } + /// + /// 收货数量 + /// + public decimal ReceiveQty { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Entitys/InstockTask.cs b/src/WMS.Web.Domain/Entitys/InstockTask.cs index afc8a850..5ba622d6 100644 --- a/src/WMS.Web.Domain/Entitys/InstockTask.cs +++ b/src/WMS.Web.Domain/Entitys/InstockTask.cs @@ -57,11 +57,6 @@ namespace WMS.Web.Domain.Entitys /// public DateTime CreateTime { get; set; } - /// - /// 箱信息集合 - /// - public List Boxs { get; set; } - /// /// 明细 /// diff --git a/src/WMS.Web.Domain/IService/IInStockService.cs b/src/WMS.Web.Domain/IService/IInStockService.cs index 54d52eeb..fc9858fd 100644 --- a/src/WMS.Web.Domain/IService/IInStockService.cs +++ b/src/WMS.Web.Domain/IService/IInStockService.cs @@ -56,16 +56,6 @@ namespace WMS.Web.Domain.IService /// Task> GetInfoByBox(string boxBillNo); - /// - /// 修改-入库任务信息 - /// - /// - /// - /// - /// - /// - Task> Update(UpdateInStockTaskRequest dto, int staffId, bool? isReceive, bool isTransaction = true, bool isNoPurchaseShelf = false); - /// /// 批量修改-入库任务信息 /// diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockTaskBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockTaskBoxRepositories.cs new file mode 100644 index 00000000..58a45098 --- /dev/null +++ b/src/WMS.Web.Domain/Infrastructure/IInStockTaskBoxRepositories.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Domain.Entitys; + +namespace WMS.Web.Domain.Infrastructure +{ + /// + /// 箱与任务单绑定(收货)关系表-仓储接口 + /// + public interface IInStockTaskBoxRepositories + { + /// + /// 集合:任务单ID + /// + /// + /// + Task> GetListBy(int taskId); + + /// + /// 实体:箱号ID + /// + /// + /// + Task GetBy(string boxBillNo); + + /// + /// 批量添加 + /// + /// + /// + /// + Task AddRange(List entitys, bool isTransaction = true); + } +} diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs index df20cb10..a7c1993f 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs @@ -29,13 +29,6 @@ namespace WMS.Web.Domain.Infrastructure /// Task Get(int id); - /// - /// 实体:根据箱号 - /// - /// - /// - Task GetBy(string boxBillNo); - /// /// 实体:根据来源单号 /// @@ -43,13 +36,6 @@ namespace WMS.Web.Domain.Infrastructure /// Task GetBySource(string sourceBillNo); - /// - /// 箱号是否绑定了入库任务单实体:待入库和部分入库状态中 - /// - /// - /// - Task IsExist(string boxBillNo); - /// /// 列表 /// diff --git a/src/WMS.Web.Domain/Mappers/InStockMapper.cs b/src/WMS.Web.Domain/Mappers/InStockMapper.cs index d9ea78b6..877692c7 100644 --- a/src/WMS.Web.Domain/Mappers/InStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/InStockMapper.cs @@ -18,12 +18,11 @@ namespace WMS.Web.Domain.Mappers public InStockMapper() { CreateMap() - .ForMember(x => x.Boxs, opt => opt.Ignore()) .ForMember(x => x.Details, opt => opt.Ignore()); - CreateMap(); - CreateMap(); + CreateMap(); + CreateMap() + .ForMember(x => x.Details, opt => opt.Ignore()); CreateMap() - .ForMember(x => x.Boxs, opt => opt.Ignore()) .ForMember(x => x.Details, opt => opt.Ignore()); CreateMap(); CreateMap(); diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index eb51fcc8..81b3ff90 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -33,6 +33,7 @@ namespace WMS.Web.Domain.Services private readonly ILoginService _loginService; private readonly ISerialNumberService _serialNumberService; private readonly ISerialNumbersRepositories _serialNumbersRepositories; + private readonly IInStockTaskBoxRepositories _inStockTaskBoxRepositories; private readonly IChangeMoveBoxService _changeMoveBoxService; private readonly IBoxRepositories _boxRepositories; private readonly IBoxInventoryService _boxInventoryService; @@ -41,7 +42,7 @@ namespace WMS.Web.Domain.Services private readonly IInStockTaskRepositories _inStockTaskRepositories; private readonly IErpBasicDataExtendService _erpBasicDataExtendService; public InStockService(IMapper mapper, ISerialNumbersRepositories serialNumbersRepositories, IErpService erpService, IBoxInventoryService boxInventoryService, ISerialNumberService serialNumberService, ILoginService loginService, IBoxRepositories boxRepositories, - IBasicsRepositories basicsRepositories, IErpBasicDataExtendService erpBasicDataExtendService, IChangeMoveBoxService changeMoveBoxService, + IBasicsRepositories basicsRepositories, IErpBasicDataExtendService erpBasicDataExtendService, IChangeMoveBoxService changeMoveBoxService, IInStockTaskBoxRepositories inStockTaskBoxRepositories, IInStockRepositories inStockRepositories, IInStockTaskRepositories inStockTaskRepositories) { _mapper = mapper; @@ -53,6 +54,7 @@ namespace WMS.Web.Domain.Services _changeMoveBoxService = changeMoveBoxService; _basicsRepositories = basicsRepositories; _inStockRepositories = inStockRepositories; + _inStockTaskBoxRepositories = inStockTaskBoxRepositories; _inStockTaskRepositories = inStockTaskRepositories; _erpBasicDataExtendService = erpBasicDataExtendService; _serialNumbersRepositories = serialNumbersRepositories; @@ -79,7 +81,7 @@ namespace WMS.Web.Domain.Services IDbContextTransaction _transaction = _basicsRepositories.GetTransaction(); bool isRollback = false; bool isTransaction = false; - var result = await this.Update(dto, loginInfo.UserInfo.StaffId, true, isTransaction); + var result = await this.Receive(dto, loginInfo.UserInfo.StaffId, isTransaction); if (!result.IsSuccess) isRollback = true; //提交事务 @@ -147,10 +149,13 @@ namespace WMS.Web.Domain.Services materials = materials_result.Data.ToList(); //1.先判断:箱号已经绑定了入库任务单中;备注:业务说法就是箱是否收货了 - var tast = await _inStockTaskRepositories.GetBy(boxBillNo); - if (tast == null) + var tast_box= await _inStockTaskBoxRepositories.GetBy(boxBillNo); + if (tast_box == null) return Result.ReFailure(ResultCodes.Box_NoBind_Task_Data); + //1.2找到任务单 + var tast = await _inStockTaskRepositories.Get(tast_box.TaskId); + //2.找到箱对应的物料信息 var box = await _boxRepositories.GetByNo(boxBillNo); if (box == null) @@ -166,25 +171,29 @@ namespace WMS.Web.Domain.Services result.SourceBillNo = tast.SourceBillNo; result.TaskId = tast.Id; result.BoxId = box.Id; - foreach (var item in tast.Details) + //获取:当前箱的与收货绑定的信息 + foreach (var item in tast_box.Details) { - //这里找箱的物料条件 - var current_box_Det = box.Details.Where(x => x.MaterialId == item.MaterialId).FirstOrDefault(); + var current_task_det = tast.Details.Where(x => x.ErpDetailId == item.ErpDetailId).FirstOrDefault(); + if (current_task_det != null) + { + //3.2映射返回明细对象 + var box_task_detail = new BoxDetailsInStockTaskDto(); + box_task_detail.SupplierId = current_task_det.SupplierId; + box_task_detail.OrgId = current_task_det.OrgId; + box_task_detail.ReceiveQty = current_task_det.ReceiveQty; + box_task_detail.AccruedQty = current_task_det.AccruedQty; + box_task_detail.ErpDetailId = item.ErpDetailId; + box_task_detail.MaterialId = item.MaterialId; + box_task_detail.BoxMaterialQty = item.ReceiveQty; + box_task_detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, item.MaterialId); + box_task_detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, item.MaterialId); + box_task_detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, item.MaterialId); + result.Details.Add(box_task_detail); + } - //3.2映射返回明细对象 - var box_task_detail = new BoxDetailsInStockTaskDto(); - box_task_detail.SupplierId = item.SupplierId; - box_task_detail.OrgId = item.OrgId; - box_task_detail.ReceiveQty = item.ReceiveQty; - box_task_detail.AccruedQty = item.AccruedQty; - box_task_detail.ErpDetailId= item.ErpDetailId; - box_task_detail.MaterialId = item.MaterialId; - box_task_detail.BoxMaterialQty = current_box_Det==null?0:current_box_Det.Qty; - box_task_detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, item.MaterialId); - box_task_detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, item.MaterialId); - box_task_detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, item.MaterialId); - result.Details.Add(box_task_detail); } + return Result.ReSuccess(result); } @@ -343,7 +352,7 @@ namespace WMS.Web.Domain.Services { //通过序列号,获取序列号对应的箱 var cureent_serialNumbs = await _serialNumbersRepositories.GetEntityList(dto.Boxs.SelectMany(x => x.Details).SelectMany(x => x.SerialNumbers).ToList()); - var current_boxIds= cureent_serialNumbs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList(); + var current_boxIds = cureent_serialNumbs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList(); //要改箱的数据集合 var ganenrateChangeBoxs = new List(); @@ -401,38 +410,50 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task> Update(UpdateInStockTaskRequest dto, int staffId, bool? isReceive, bool isTransaction = true, bool isNoPurchaseShelf = false) + public async Task> Receive(UpdateInStockTaskRequest dto, int staffId, bool isTransaction) { + //1.修改任务单的数据 var entity = await _inStockTaskRepositories.Get(dto.Id); if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError); - entity = _mapper.Map(dto, entity); - ////子集单独映射:这个弃用;这个不好的地方就是,前端必须拿到全部的boxs集合一起给到后端处理; - //entity.Boxs = _mapper.ToMapList(dto.Boxs, entity.Boxs); - //子集单独映射:box子集单独组装获取;这个好处就是前端就只传新增的box过来; + entity.Receive(staffId); + //子集单独映射 + entity.Details.ForEach(x => + { + //当前明细收货的明细:可以通过erp明细ID获取唯一一个;并变更收货数量 + var current_dto_det = dto.Details.Where(x => x.ErpDetailId == x.ErpDetailId).FirstOrDefault(); + if (current_dto_det != null) + x.ReceiveQty = x.ReceiveQty + current_dto_det.ReceiveQty; + }); + + //2.修改箱和任务单的绑定关系,先判断箱没有被收货过 + var taskBoxList= await _inStockTaskBoxRepositories.GetListBy(entity.Id); + var dto_boxIds= dto.Boxs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList(); + var isHaveBox= taskBoxList.Where(x => dto_boxIds.Contains(x.BoxId)).Any(); + if (isHaveBox) + return Result.ReFailure(ResultCodes.InStockTaskBoxIsHaveData); + + //3.组装绑定关系表,要添加的集合 + var boxEntitys= await _boxRepositories.GetEntityList(dto_boxIds); + var taskBoxAdd = new List(); foreach (var item in dto.Boxs) { - var box = _mapper.Map(item); - entity.Boxs.Add(box); + var taskBox = _mapper.Map(item); + var current_dto_box_dets= boxEntitys.Where(x => x.Id == item.BoxId).Select(x=>x.Details).ToList(); + taskBox.Details = _mapper.Map>(current_dto_box_dets); + taskBoxAdd.Add(taskBox); } - - //子集单独映射 - entity.Details = _mapper.ToMapList(dto.Details, entity.Details); - if (isNoPurchaseShelf) - entity.NoPurchaseShelf(staffId); - else - { - if (isReceive.HasValue && isReceive.Value) - entity.Receive(staffId); - else - entity.Shelf(staffId); - } - var result = await _inStockTaskRepositories.Update(entity, isTransaction); - if (result != null) - return Result.ReSuccess(entity); - else + var isSuccess= await _inStockTaskBoxRepositories.AddRange(taskBoxAdd); + if(!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); + + + //数据库操作 + var result = await _inStockTaskRepositories.Update(entity, isTransaction); + if (result == null) + return Result.ReFailure(ResultCodes.DateWriteError); + return Result.ReSuccess(entity); } /// @@ -489,22 +510,23 @@ namespace WMS.Web.Domain.Services //3.比对:false为比对失败; bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty >= x.Qty)) && boxDetails.Count <= task_details.Count; - if (!isRight) + if (!isRight) { - var qtyIsError= boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty < x.Qty)); + var qtyIsError = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty < x.Qty)); - if (boxDetails.Count> task_details.Count && qtyIsError) + if (boxDetails.Count > task_details.Count && qtyIsError) return Result.ReFailure(ResultCodes.ContrastError); - else if(qtyIsError) + else if (qtyIsError) return Result.ReFailure(ResultCodes.Contrast_Qty_Error); else return Result.ReFailure(ResultCodes.Contrast_Count_Error); } - + //4.是否任务单存在绑定箱号判断:存在的话,就不能收货或者非采购上架 - bool isHave = task.Boxs.Where(x => dto.BoxBillNos.Contains(x.BoxBillNo)).Any(); + var taskBoxList= await _inStockTaskBoxRepositories.GetListBy(task.Id); + bool isHave = taskBoxList.Where(x => dto.BoxBillNos.Contains(x.BoxBillNo)).Any(); if (isHave) return Result.ReFailure(ResultCodes.BoxHaveError); diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index eb08f149..701746ba 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -36,6 +36,7 @@ namespace WMS.Web.Domain.Values public static ValueTuple BoxIsTrueShelf = (80000, "该箱已上架,请选择其它箱进行上架!"); public static ValueTuple BoxNoData = (80000, "箱信息不存在"); + public static ValueTuple InStockTaskBoxIsHaveData = (80000, "该箱已收货"); public static ValueTuple BoxMateriaNoData = (800010, "箱对应物料信息不存在"); public static ValueTuple MateriaNoData = (800011, "物料信息不存在"); public static ValueTuple BoxInventorySerialNumbersNoData = (800012, "序列号不存在于箱库存数据中"); diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index 50221302..94b9f492 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -211,19 +211,24 @@ namespace WMS.Web.Repositories.Configuration .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); - ent.HasMany(p => p.Boxs) - .WithOne() - .HasForeignKey(p => p.TaskId) - .OnDelete(DeleteBehavior.Cascade); + }); + builder.Entity(ent => + { + ent.ToTable("t_erp_instock_task_details"); + ent.HasKey(x => x.Id); }); builder.Entity(ent => { ent.ToTable("t_erp_instock_task_box"); ent.HasKey(x => x.Id); + ent.HasMany(p => p.Details) + .WithOne() + .HasForeignKey(p => p.Fid) + .OnDelete(DeleteBehavior.Cascade); }); - builder.Entity(ent => + builder.Entity(ent => { - ent.ToTable("t_erp_instock_task_details"); + ent.ToTable("t_erp_instock_task_box_details"); ent.HasKey(x => x.Id); }); #endregion @@ -332,6 +337,7 @@ namespace WMS.Web.Repositories.Configuration public DbSet InStockDetails { get; set; } public DbSet InStockTask { get; set; } public DbSet InstockTaskBox { get; set; } + public DbSet InStockTaskBoxDetails { get; set; } public DbSet InStockTaskDetails { get; set; } public DbSet BackRecord { get; set; } public DbSet BackRecordDetails { get; set; } diff --git a/src/WMS.Web.Repositories/InStockTaskBoxRepositories.cs b/src/WMS.Web.Repositories/InStockTaskBoxRepositories.cs new file mode 100644 index 00000000..b3faa4dc --- /dev/null +++ b/src/WMS.Web.Repositories/InStockTaskBoxRepositories.cs @@ -0,0 +1,104 @@ +using AutoMapper; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Domain.Entitys; +using WMS.Web.Domain.Infrastructure; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Repositories.Configuration; + +namespace WMS.Web.Repositories +{ + /// + /// 箱与任务单绑定(收货)关系表-仓储 + /// + public class InStockTaskBoxRepositories: IInStockTaskBoxRepositories + { + private readonly IMapper _mapper; + private readonly IServiceProvider _serviceProvider; + private readonly RepositoryDbContext _context; + private readonly ISingleDataService _singleDataService; + private readonly IBasicsRepositories _basicsRepositories; + private readonly ILoginRepositories _loginRepositories; + private readonly IErpService _erpService; + private readonly IErpBasicDataExtendService _erpBasicDataExtendService; + + + public InStockTaskBoxRepositories(RepositoryDbContext context, + IMapper mapper, + IErpService erpService, + IBasicsRepositories basicsRepositories, + IServiceProvider serviceProvider, + ISingleDataService singleDataService, + ILoginRepositories loginRepositories, + IErpBasicDataExtendService erpBasicDataExtendService) + { + _context = context; + _mapper = mapper; + _erpService = erpService; + _basicsRepositories = basicsRepositories; + _serviceProvider = serviceProvider; + _singleDataService = singleDataService; + _loginRepositories = loginRepositories; + _erpBasicDataExtendService = erpBasicDataExtendService; + } + + /// + /// 集合:任务ID + /// + /// + /// + public async Task> GetListBy(int taskId) + { + var entitys = await _context.InstockTaskBox + .Include(s => s.Details).Where(x => x.TaskId == taskId).ToListAsync(); + return entitys; + } + + /// + /// 实体:箱号ID + /// + /// + /// + public async Task GetBy(string boxBillNo) + { + var entity = await _context.InstockTaskBox + .Include(s => s.Details).Where(x => x.BoxBillNo == boxBillNo).FirstOrDefaultAsync(); + return entity; + } + + /// + /// 批量添加 + /// + /// + /// + /// + public async Task AddRange(List entitys, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + try + { + if (entitys != null && entitys.Count != 0) + { + await _context.InstockTaskBox.AddRangeAsync(entitys); + await _context.SaveChangesAsync(); + } + if (_transaction != null) + _transaction.Commit(); + return true; + } + catch + { + if (_transaction != null) + _transaction.Rollback(); + return false; + } + } + } +} diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs index 5d14fd59..c6983023 100644 --- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs @@ -172,28 +172,11 @@ namespace WMS.Web.Repositories public async Task Get(int id) { var entity = await _context.InStockTask - .Include(x => x.Boxs) .Include(s => s.Details) .FirstOrDefaultAsync(f => f.Id == id); return entity; } - /// - /// 实体:根据箱号 - /// - /// - /// - public async Task GetBy(string boxBillNo) - { - var entity = await _context.InStockTask - .Include(s => s.Boxs.Where(b => b.BoxBillNo == boxBillNo)) - .Include(s => s.Details) - .Where(w => w.Boxs.Where(b => b.BoxBillNo == boxBillNo).Count() > 0).FirstOrDefaultAsync(); - - return entity; - - } - /// /// 实体:根据来源单号 /// @@ -202,7 +185,6 @@ namespace WMS.Web.Repositories public async Task GetBySource(string sourceBillNo) { var entity = await _context.InStockTask - .Include(s => s.Boxs) .Include(s => s.Details) .Where(w => w.SourceBillNo == sourceBillNo).FirstOrDefaultAsync(); @@ -210,20 +192,6 @@ namespace WMS.Web.Repositories } - /// - /// 箱号是否绑定了任务实体:待入库和部分入库状态中 - /// - /// - /// - public async Task IsExist(string boxBillNo) - { - return await _context.InStockTask - .AsNoTracking() - .Include(s => s.Boxs.Where(b => b.BoxBillNo == boxBillNo)) - .Include(s => s.Details) - .Where(w => (w.Status == InstockStatus.Part || w.Status == InstockStatus.Wait) && w.Boxs.Where(b => b.BoxBillNo == boxBillNo).Count() > 0).AnyAsync(); - } - /// /// 列表 /// @@ -468,7 +436,7 @@ namespace WMS.Web.Repositories try { List list = entitys.Select(s => s.Id).ToList(); - var res = await _context.InStockTask.AsNoTracking().Include(x => x.Boxs).Include(x => x.Details).Where(f => list.Contains(f.Id)).ToListAsync(); + var res = await _context.InStockTask.AsNoTracking().Include(x => x.Details).Where(f => list.Contains(f.Id)).ToListAsync(); _mapper.ToMapList(entitys, res); await _context.SaveChangesAsync(); if (_transaction != null) @@ -498,15 +466,12 @@ namespace WMS.Web.Repositories { var model = await _context.InStockTask .AsNoTracking() - .Include(s => s.Boxs) .Include(s => s.Details) .FirstOrDefaultAsync(f => f.Id == entity.Id); if (model == null) return null; _mapper.Map(entity, model); //子集单独映射 - _mapper.ToMapList(entity.Boxs, model.Boxs); - //子集单独映射 _mapper.ToMapList(entity.Details, model.Details); await _context.SaveChangesAsync(); if (_transaction != null)