diff --git a/src/WMS.Web.Api/Controllers/TakeStockController.cs b/src/WMS.Web.Api/Controllers/TakeStockController.cs
new file mode 100644
index 00000000..2ec2588d
--- /dev/null
+++ b/src/WMS.Web.Api/Controllers/TakeStockController.cs
@@ -0,0 +1,66 @@
+using AutoMapper;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using WMS.Web.Core.Dto.TakeStock;
+using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Infrastructure;
+using WMS.Web.Domain.IService.Public;
+using WMS.Web.Domain.Values;
+
+namespace WMS.Web.Api.Controllers
+{
+ ///
+ /// 盘点单
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class TakeStockController : ControllerBase
+ {
+ private readonly IMapper _mapper;
+ private readonly ILoginService _loginService;
+ private readonly ITakeStockRepositories _repositories;
+ public TakeStockController(IMapper mapper, ILoginService loginService, ITakeStockRepositories repositories)
+ {
+ _mapper = mapper;
+ _loginService = loginService;
+ _repositories = repositories;
+ }
+ ///
+ /// 列表
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetList")]
+ public async Task> GetPagedList([FromBody] TakeStockQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ var (list, count) = await _repositories.GetListAsync(dto);
+ var result = ResultPagedList.ReSuccess(list, count);
+ return result;
+ }
+
+ ///
+ /// 保存
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Save")]
+ public async Task Save(List dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ return await _changeMoveBoxService.MoveBoxSave(dto, loginInfo);
+ }
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs
new file mode 100644
index 00000000..7e5f1c48
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.TakeStock
+{
+ ///
+ /// 盘点单明细
+ ///
+ public class SaveTakeStockRequest
+ {
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs
new file mode 100644
index 00000000..aad1d6f4
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.TakeStock
+{
+ ///
+ /// 盘点单列表
+ ///
+ public class TakeStockQueryInfoResponse
+ {
+ ///
+ /// 明细编号
+ ///
+ public int DetailId { get; set; }
+ ///
+ /// 单据编号
+ ///
+ public string BillNo { get; set; }
+ ///
+ /// 盘点日期
+ ///
+ public DateTime Date { get; set; }
+ ///
+ /// 盘点人员
+ ///
+ public string Creator { get; set; }
+ ///
+ /// 金蝶同步成功或者失败 null 就是未同步
+ ///
+ public bool? SuccessSync { get; set; }
+ ///
+ /// 单位
+ ///
+ public string Unit { get; set; }
+ ///
+ /// 仓库
+ ///
+ public string Stock { get; set; }
+ ///
+ /// 仓位
+ ///
+ public string SubStock { get; set; }
+ ///
+ /// 盘点前数量(wms系统数量)
+ ///
+ public decimal BeforeQty { get; set; }
+ ///
+ /// 盘点实际数量(实际仓库数量)
+ ///
+ public decimal AfterQty { get; set; }
+ ///
+ /// 盘点后数量
+ ///
+ public decimal FinalQty { get; set; }
+ ///
+ /// 盘点结果类型:1为盘盈,2位盘亏
+ ///
+ public string ResultType { get; set; }
+ ///
+ /// 备注
+ ///
+ public string Remark { get; set; }
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryRequest.cs
new file mode 100644
index 00000000..b15b3919
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryRequest.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.TakeStock
+{
+ ///
+ /// 盘点单列表请求
+ ///
+ public class TakeStockQueryRequest : PaginationBaseRequestDto
+ {
+ ///
+ /// 盘点结果类型:1为盘盈,2位盘亏
+ ///
+ public int? ResultType { get; set; }
+ ///
+ /// 仓库ID
+ ///
+ public int? StockId { get; set; }
+ ///
+ /// 单据编号
+ ///
+ public string BillNo { get; set; }
+ ///
+ /// 盘点日期-开始
+ ///
+ public DateTime? DateBeginDate { get; set; } = null;
+ ///
+ /// 盘点日期-结束
+ ///
+ public DateTime? DateEndDate { get; set; } = null;
+ }
+}
diff --git a/src/WMS.Web.Domain/Entitys/TakeStock.cs b/src/WMS.Web.Domain/Entitys/TakeStock.cs
index b06af7ff..1df14a5a 100644
--- a/src/WMS.Web.Domain/Entitys/TakeStock.cs
+++ b/src/WMS.Web.Domain/Entitys/TakeStock.cs
@@ -35,11 +35,6 @@ namespace WMS.Web.Domain.Entitys
[Column("CreatorId")]
public int CreatorId { get; set; }
///
- /// 公司ID
- ///
- [Column("CompanyId")]
- public int CompanyId { get; set; }
- ///
/// 同步成功或者失败 null 就是未同步
///
[Column("SuccessSync")]
@@ -48,5 +43,14 @@ namespace WMS.Web.Domain.Entitys
/// 明细
///
public List Details = new List();
+ ///
+ /// 创建
+ ///
+ ///
+ public void Create(int creatorId)
+ {
+ this.CreatorId = creatorId;
+ this.Date = DateTime.Now;
+ }
}
}
diff --git a/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs b/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs
index 93921bcf..5dd23943 100644
--- a/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs
+++ b/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs
@@ -26,7 +26,7 @@ namespace WMS.Web.Domain.Entitys
[Column("Fid")]
public int Fid { get; set; }
///
- /// 单据头Id
+ /// 箱Id
///
[Column("BoxId")]
public int BoxId { get; set; }
diff --git a/src/WMS.Web.Domain/IService/ITakeStockService.cs b/src/WMS.Web.Domain/IService/ITakeStockService.cs
new file mode 100644
index 00000000..b3e358c6
--- /dev/null
+++ b/src/WMS.Web.Domain/IService/ITakeStockService.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using WMS.Web.Core.Dto.Login;
+using WMS.Web.Core.Dto.TakeStock;
+using WMS.Web.Core.Internal.Results;
+
+namespace WMS.Web.Domain.IService
+{
+ ///
+ /// 盘点单服务
+ ///
+ public interface ITakeStockService
+ {
+ //保存
+ Task Save(List dto, LoginInDto loginInfo);
+ }
+}
diff --git a/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs
index 3d0811ee..945f4d21 100644
--- a/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs
@@ -13,7 +13,7 @@ namespace WMS.Web.Domain.Infrastructure
// 新增
Task Add(ChangeBoxRecord entity, bool isTransaction = true);
- // 获取销售列表
+ // 获取列表
Task<(List list,int total)> GetListAsync(ChangeBoxRecordQueryRequest dto);
}
}
diff --git a/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs
index aca051b2..4ffcd2e0 100644
--- a/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs
@@ -11,7 +11,7 @@ namespace WMS.Web.Domain.Infrastructure
{
// 新增
Task Add(MoveBoxRecord entity, bool isTransaction = true);
- // 获取销售列表
+ // 获取列表
Task<(List list, int total)> GetListAsync(MoveBoxRecordQueryRequest dto);
}
}
diff --git a/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs
index e43f0388..c6d25f56 100644
--- a/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
+using WMS.Web.Core.Dto.TakeStock;
using WMS.Web.Domain.Entitys;
namespace WMS.Web.Domain.Infrastructure
@@ -10,5 +11,7 @@ namespace WMS.Web.Domain.Infrastructure
{
// 新增
Task Add(TakeStock entity, bool isTransaction = true);
+ // 获取列表
+ Task<(List list, int total)> GetListAsync(TakeStockQueryRequest dto);
}
}
diff --git a/src/WMS.Web.Domain/Mappers/MoveBoxRecordMapper.cs b/src/WMS.Web.Domain/Mappers/MoveBoxRecordMapper.cs
new file mode 100644
index 00000000..ebcd5e1d
--- /dev/null
+++ b/src/WMS.Web.Domain/Mappers/MoveBoxRecordMapper.cs
@@ -0,0 +1,18 @@
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using WMS.Web.Core.Dto.ChangeBoxRecord;
+using WMS.Web.Core.Dto.MoveBoxRecord;
+using WMS.Web.Domain.Entitys;
+
+namespace WMS.Web.Domain.Mappers
+{
+ public class MoveBoxRecordMapper : Profile
+ {
+ public MoveBoxRecordMapper()
+ {
+ CreateMap();
+ }
+ }
+}
diff --git a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs
new file mode 100644
index 00000000..cb309f4f
--- /dev/null
+++ b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs
@@ -0,0 +1,17 @@
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using WMS.Web.Core.Dto.TakeStock;
+using WMS.Web.Domain.Entitys;
+
+namespace WMS.Web.Domain.Mappers
+{
+ public class TakeStockMapper:Profile
+ {
+ public TakeStockMapper()
+ {
+ CreateMap();
+ }
+ }
+}
diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs
new file mode 100644
index 00000000..4c99cfe9
--- /dev/null
+++ b/src/WMS.Web.Domain/Services/TakeStockService.cs
@@ -0,0 +1,65 @@
+using AutoMapper;
+using Microsoft.EntityFrameworkCore.Storage;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using WMS.Web.Core.Dto.Login;
+using WMS.Web.Core.Dto.TakeStock;
+using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Entitys;
+using WMS.Web.Domain.Infrastructure;
+using WMS.Web.Domain.IService;
+using WMS.Web.Domain.IService.Public;
+using WMS.Web.Domain.Values;
+
+namespace WMS.Web.Domain.Services
+{
+ ///
+ /// 盘点单服务
+ ///
+ public class TakeStockService : ITakeStockService
+ {
+ private readonly IMapper _mapper;
+ private readonly ILoginService _loginService;
+ public readonly ITransactionRepositories _transactionRepositories;
+ private readonly ITakeStockRepositories _takeStockRepositories;
+ public TakeStockService(IMapper mapper, ILoginService loginService,
+ ITransactionRepositories transactionRepositories,
+ ITakeStockRepositories takeStockRepositories)
+ {
+ _mapper = mapper;
+ _loginService = loginService;
+ _transactionRepositories = transactionRepositories;
+ _takeStockRepositories = takeStockRepositories;
+ }
+ ///
+ /// 保存
+ ///
+ ///
+ ///
+ ///
+ public async Task Save(List dto, LoginInDto loginInfo)
+ {
+ TakeStock entity = new TakeStock();
+ entity.Details = _mapper.Map>(dto);
+ entity.Create(loginInfo.UserInfo.StaffId);
+
+ //需要填写序列号
+ //需要修改库存
+
+ IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
+ bool isRollback = false;
+ bool isSuccess = true;
+ entity = await _takeStockRepositories.Add(entity, true);
+ if (entity == null) isRollback = true;
+
+ //提交事务
+ isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
+ if (!isSuccess)
+ return Result.ReFailure(ResultCodes.DateWriteError);
+
+ return Result.ReSuccess();
+ }
+ }
+}
diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
index 61940d96..d1fa4aa0 100644
--- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
+++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
@@ -235,7 +235,7 @@ namespace WMS.Web.Repositories.DependencyInjection
Services.AddTransient();
Services.AddTransient();
-
+ Services.AddTransient();
}
}
}
diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs
index 09542d0c..a5fd33e0 100644
--- a/src/WMS.Web.Repositories/TakeStockRepositories.cs
+++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs
@@ -1,9 +1,12 @@
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.Core.Dto.TakeStock;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Repositories.Configuration;
@@ -57,5 +60,43 @@ namespace WMS.Web.Repositories
}
}
+ ///
+ /// 盘点单列表
+ ///
+ ///
+ ///
+ public async Task<(List list, int total)> GetListAsync(TakeStockQueryRequest dto)
+ {
+ var query = _context.TakeStock
+ .OrderByDescending(o => o.Id)
+ .Where(adv => 1 == 1);
+
+ if (dto.DateBeginDate != null)
+ query = query.Where(w => w.Date >= dto.DateBeginDate);
+ if (dto.DateEndDate != null)
+ query = query.Where(w => w.Date <= dto.DateEndDate);
+ //组装
+ int total = await query.CountAsync();
+ var list = await query.Select(s => new TakeStockQueryInfoResponse()
+ {
+ #region dto组装
+ DetailId = 0,
+ BillNo = "",
+ Unit = "",
+ Stock = "",
+ SubStock = "",
+ BeforeQty = 0,
+ AfterQty = 0,
+ FinalQty = 0,
+ ResultType="",
+ Remark="",
+ Creator = "",
+ Date = s.Date,
+ SuccessSync=s.SuccessSync
+ #endregion
+
+ }).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
+ return (list, total);
+ }
}
}