diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index d9b4bd5c..596f520b 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index e52b42f5..3d3589af 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1115,16 +1115,66 @@ 明细ID + + + 供应商Id + + + + + 组织ID + + + + + 收货仓库 + + + + + 收货仓库编码(对应金蝶和单点) + + 物料ID + + + 出厂价(对应金蝶数据) + + + + + 应入数量(对应金蝶的订单数量-对应物料) + + + + + 已交数量(对应金蝶的已交数量-对应物料),目前只有采购订单有 + + 收货数量 + + + 实际入库数量(仓库人员现场入库的数量)上架动作 + + + + + 明细备注 + + + + + 创建时间(erp那边的创建时间) + + 入库任务-修改请求对象 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 925140bc..8c702984 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1134,6 +1134,18 @@ + + + 获取事务 用来处理即时库存 + + + + + + 获取事务 用来处理即时库存 + + + 箱库存-仓储接口 diff --git a/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskDetailsRequest.cs b/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskDetailsRequest.cs index 63e859f9..f8ce406c 100644 --- a/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskDetailsRequest.cs +++ b/src/WMS.Web.Core/Dto/InStockTask/UpdateInStockTaskDetailsRequest.cs @@ -14,12 +14,52 @@ namespace WMS.Web.Core.Dto.InStockTask /// public override int Id { get; set; } = 0; /// + /// 供应商Id + /// + public int SupplierId { get; set; } + /// + /// 组织ID + /// + public int OrgId { get; set; } + /// + /// 收货仓库 + /// + public int StockId { get; set; } + /// + /// 收货仓库编码(对应金蝶和单点) + /// + public string StockCode { get; set; } + /// /// 物料ID /// public int MaterialId { get; set; } /// + /// 出厂价(对应金蝶数据) + /// + public decimal FactoryPrice { get; set; } + /// + /// 应入数量(对应金蝶的订单数量-对应物料) + /// + public decimal AccruedQty { get; set; } + /// + /// 已交数量(对应金蝶的已交数量-对应物料),目前只有采购订单有 + /// + public decimal DeliveredQty { get; set; } + /// /// 收货数量 /// public decimal ReceiveQty { get; set; } + /// + /// 实际入库数量(仓库人员现场入库的数量)上架动作 + /// + public decimal RealityQty { get; set; } + /// + /// 明细备注 + /// + public string Remark { get; set; } + /// + /// 创建时间(erp那边的创建时间) + /// + public DateTime CreateTime { get; set; } } } diff --git a/src/WMS.Web.Domain/Entitys/InstockTask.cs b/src/WMS.Web.Domain/Entitys/InstockTask.cs index d37fcdb0..a17dfd11 100644 --- a/src/WMS.Web.Domain/Entitys/InstockTask.cs +++ b/src/WMS.Web.Domain/Entitys/InstockTask.cs @@ -54,12 +54,14 @@ namespace WMS.Web.Domain.Entitys /// /// 箱信息集合 /// - public List Boxs { get; set; } + [NotMapped] + public virtual List Boxs { get; set; } /// /// 明细 /// - public List Details { get; set; } + [NotMapped] + public virtual List Details { get; set; } /// /// 创建 diff --git a/src/WMS.Web.Domain/Infrastructure/IBasicsRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBasicsRepositories.cs index 6aa79d15..9e93c5c7 100644 --- a/src/WMS.Web.Domain/Infrastructure/IBasicsRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IBasicsRepositories.cs @@ -1,4 +1,5 @@ -using System; +using Microsoft.EntityFrameworkCore.Storage; +using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; @@ -37,5 +38,17 @@ namespace WMS.Web.Domain.Infrastructure /// /// Task> GetUcStockAsync(string systemCode,string name, int companyId); + + /// + /// 获取事务 用来处理即时库存 + /// + /// + IDbContextTransaction GetTransaction(); + + /// + /// 获取事务 用来处理即时库存 + /// + /// + bool CommitTransaction(bool isRollback, IDbContextTransaction transaction); } } diff --git a/src/WMS.Web.Domain/Mappers/InStockMapper.cs b/src/WMS.Web.Domain/Mappers/InStockMapper.cs index b0eebe08..5729a2a1 100644 --- a/src/WMS.Web.Domain/Mappers/InStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/InStockMapper.cs @@ -16,11 +16,24 @@ namespace WMS.Web.Domain.Mappers { public InStockMapper() { - CreateMap() - .ForMember(x => x.Boxs, opt => opt.Ignore()) - .ForMember(x => x.Details, opt => opt.Ignore()); + CreateMap(); + //.ForMember(x => x.Boxs, opt => opt.Ignore()) + //.ForMember(x => x.Details, opt => opt.Ignore()); CreateMap(); + //.ForMember(x => x.SupplierId, opt => opt.Ignore()) + //.ForMember(x => x.OrgId, opt => opt.Ignore()) + //.ForMember(x => x.StockId, opt => opt.Ignore()) + //.ForMember(x => x.StockCode, opt => opt.Ignore()) + //.ForMember(x => x.FactoryPrice, opt => opt.Ignore()) + //.ForMember(x => x.AccruedQty, opt => opt.Ignore()) + //.ForMember(x => x.DeliveredQty, opt => opt.Ignore()) + //.ForMember(x => x.RealityQty, opt => opt.Ignore()) + //.ForMember(x => x.Remark, opt => opt.Ignore()) + //.ForMember(x => x.CreateTime, opt => opt.Ignore()); CreateMap(); + //CreateMap().ReverseMap(); + //CreateMap().ReverseMap(); + //CreateMap().ReverseMap(); diff --git a/src/WMS.Web.Domain/Services/BackRecordService.cs b/src/WMS.Web.Domain/Services/BackRecordService.cs index 3c8321e7..15d9d50b 100644 --- a/src/WMS.Web.Domain/Services/BackRecordService.cs +++ b/src/WMS.Web.Domain/Services/BackRecordService.cs @@ -22,15 +22,15 @@ namespace WMS.Web.Domain.Services { private readonly IMapper _mapper; private readonly ILoginService _loginService; - public readonly ITransactionRepositories _transactionRepositories; + public readonly IBasicsRepositories _basicsRepositories; private readonly IBackRecordRepositories _backRecordRepositories; public BackRecordService(IMapper mapper, ILoginService loginService, - ITransactionRepositories transactionRepositories, + IBasicsRepositories basicsRepositories, IBackRecordRepositories backRecordRepositories) { _mapper = mapper; _loginService = loginService; - _transactionRepositories = transactionRepositories; + _basicsRepositories = basicsRepositories; _backRecordRepositories = backRecordRepositories; } @@ -42,7 +42,7 @@ namespace WMS.Web.Domain.Services /// public async Task BackShelf(SaveBackRecordRequest dto, LoginInDto loginInfo) { - IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); + IDbContextTransaction _transaction = _basicsRepositories.GetTransaction(); bool isRollback = false; bool isTransaction = false; @@ -53,7 +53,7 @@ namespace WMS.Web.Domain.Services entity = await _backRecordRepositories.Add(entity, isTransaction); //提交事务 - var isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 8b46e41a..de8383b8 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -27,17 +27,17 @@ namespace WMS.Web.Domain.Services private readonly IMapper _mapper; private readonly ILoginService _loginService; private readonly IBoxRepositories _boxRepositories; - public readonly ITransactionRepositories _transactionRepositories; + private readonly IBasicsRepositories _basicsRepositories; private readonly IInStockRepositories _inStockRepositories; private readonly IInStockTaskRepositories _inStockTaskRepositories; public InStockService(IMapper mapper, ILoginService loginService, IBoxRepositories boxRepositories, - ITransactionRepositories transactionRepositories, + IBasicsRepositories basicsRepositories, IInStockRepositories inStockRepositories, IInStockTaskRepositories inStockTaskRepositories) { _mapper = mapper; _loginService = loginService; _boxRepositories = boxRepositories; - _transactionRepositories = transactionRepositories; + _basicsRepositories = basicsRepositories; _inStockRepositories = inStockRepositories; _inStockTaskRepositories = inStockTaskRepositories; } @@ -64,14 +64,14 @@ namespace WMS.Web.Domain.Services /// public async Task Receive(UpdateInStockTaskRequest dto, LoginInDto loginInfo) { - IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); + IDbContextTransaction _transaction = _basicsRepositories.GetTransaction(); bool isRollback = false; bool isTransaction = false; var result = await this.Update(dto, loginInfo.UserInfo.StaffId,true, isTransaction); if (!result.IsSuccess) isRollback = true; //提交事务 - var isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); @@ -86,7 +86,7 @@ namespace WMS.Web.Domain.Services /// public async Task Shelf(PurchaseShelfRequest instock, LoginInDto loginInfo) { - IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); + IDbContextTransaction _transaction = _basicsRepositories.GetTransaction(); bool isRollback = false; bool isTransaction = false; //1.添加入库单:(同步金蝶在save方法里面进行) @@ -100,7 +100,7 @@ namespace WMS.Web.Domain.Services } //提交事务 - var isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); @@ -180,10 +180,10 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(ResultCodes.DateWriteError); entity = _mapper.Map(dto, entity); - //子集单独映射 - entity.Boxs = _mapper.ToMapList(dto.Boxs, entity.Boxs); - //子集单独映射 - entity.Details = _mapper.ToMapList(dto.Details, entity.Details); + ////子集单独映射 + //entity.Boxs = _mapper.ToMapList(dto.Boxs, entity.Boxs); + ////子集单独映射 + //entity.Details = _mapper.ToMapList(dto.Details, entity.Details); if (isReceive) entity.Receive(staffId); else diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index 5881d71c..660cedca 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -22,17 +22,17 @@ namespace WMS.Web.Domain.Services private readonly IMapper _mapper; private readonly IErpService _erpService; private readonly ILoginService _loginService; - private readonly ITransactionRepositories _transactionRepositories; + private readonly IBasicsRepositories _basicsRepositories; private readonly IInStockRepositories _inStockRepositories; private readonly IInStockTaskRepositories _inStockTaskRepositories; public InStockTaskService(IMapper mapper, IErpService erpService, ILoginService loginService, - ITransactionRepositories transactionRepositories, + IBasicsRepositories basicsRepositories, IInStockRepositories inStockRepositories, IInStockTaskRepositories inStockTaskRepositories) { _mapper = mapper; _erpService = erpService; _loginService = loginService; - _transactionRepositories = transactionRepositories; + _basicsRepositories = basicsRepositories; _inStockRepositories = inStockRepositories; _inStockTaskRepositories = inStockTaskRepositories; } diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 4e789263..2a979042 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -40,7 +40,6 @@ namespace WMS.Web.Domain.Services.Public private readonly IMemoryCache _memoryCache; private readonly IInStockTaskRepositories _inStockTaskRepositories; private readonly ISingleDataService _singleDataService; - public readonly ITransactionRepositories _transactionRepositories; private readonly ILoginRepositories _loginRepositories; private readonly IBasicsRepositories _basicsRepositories; public ErpService( @@ -50,7 +49,6 @@ namespace WMS.Web.Domain.Services.Public ILogger logger, IMemoryCache memoryCache, IInStockTaskRepositories inStockTaskRepositories, - ITransactionRepositories transactionRepositories, ISingleDataService singleDataService, ILoginRepositories loginRepositories, IBasicsRepositories basicsRepositories) { @@ -61,7 +59,6 @@ namespace WMS.Web.Domain.Services.Public this._logger = logger; this._memoryCache = memoryCache; this._inStockTaskRepositories = inStockTaskRepositories; - this._transactionRepositories = transactionRepositories; this._singleDataService = singleDataService; this._loginRepositories = loginRepositories; } diff --git a/src/WMS.Web.Repositories/BasicsRepositories.cs b/src/WMS.Web.Repositories/BasicsRepositories.cs index b3b04df5..e3b8c2b9 100644 --- a/src/WMS.Web.Repositories/BasicsRepositories.cs +++ b/src/WMS.Web.Repositories/BasicsRepositories.cs @@ -1,4 +1,5 @@ using AutoMapper; +using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; using System.Linq; @@ -79,5 +80,32 @@ namespace WMS.Web.Repositories return null; return result.Data.ToList(); } + + public IDbContextTransaction GetTransaction() + { + return _context.Database.BeginTransaction(); + } + + public bool CommitTransaction(bool isRollback, IDbContextTransaction transaction) + { + try + { + if (transaction == null) + return true; + + if (isRollback) + { + transaction.Rollback(); + return false; + } + transaction.Commit(); + } + catch (Exception ex) + { + transaction.Rollback(); + return false; + } + return true; + } } } diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs index 3c56a965..a4847dce 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs @@ -32,10 +32,9 @@ namespace Microsoft.Extensions.DependencyInjection { services.AddHttpContextAccessor(); services.AddScoped(); - services.AddScoped(); + //services.AddScoped(); services.AddScoped(); - - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs index a5e1533d..1bb18876 100644 --- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs @@ -131,7 +131,8 @@ namespace WMS.Web.Repositories .Include(s => s.Details) .FirstOrDefaultAsync(f => f.Id == id); - return entity.Clone(); + //return entity.Clone(); + return entity; } /// @@ -339,14 +340,13 @@ namespace WMS.Web.Repositories try { 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); var result= await _context.SaveChangesAsync(); if (_transaction != null) _transaction.Commit();