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)