This commit is contained in:
tongfei
2023-11-11 13:48:19 +08:00
16 changed files with 467 additions and 43 deletions

View File

@@ -32,14 +32,17 @@ namespace WMS.Web.Api.Controllers
private readonly IBoxRepositories _boxRepositories; private readonly IBoxRepositories _boxRepositories;
private readonly IErpService _erpService; private readonly IErpService _erpService;
private readonly ISingleDataService _singleDataService; private readonly ISingleDataService _singleDataService;
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories, public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories,
IBoxRepositories boxRepositories, IErpService erpService, ISingleDataService singleDataService) IBoxRepositories boxRepositories, IErpService erpService, ISingleDataService singleDataService,
ISerialNumbersRepositories serialNumbersRepositories)
{ {
_loginService = loginService; _loginService = loginService;
_basicsRepositories = basicsRepositories; _basicsRepositories = basicsRepositories;
_boxRepositories = boxRepositories; _boxRepositories = boxRepositories;
_erpService = erpService; _erpService = erpService;
_singleDataService = singleDataService; _singleDataService = singleDataService;
_serialNumbersRepositories = serialNumbersRepositories;
} }
/// <summary> /// <summary>
@@ -254,5 +257,23 @@ namespace WMS.Web.Api.Controllers
return ResultList<BoxResponse>.ReSuccess(res); return ResultList<BoxResponse>.ReSuccess(res);
} }
/// <summary>
/// 根据序列号搜索信息-PDA
/// </summary>
/// <param name="serialNumber">必填</param>
/// <returns></returns>
[HttpGet]
[Route("GetSerialNumber/{serialNumber}")]
public async Task<Result<SerialNumbersResponse>> GetSerialNumbers([FromRoute] string serialNumber)
{
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
if (loginInfo == null || loginInfo.UserInfo == null)
return Result<SerialNumbersResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber);
return Result<SerialNumbersResponse>.ReSuccess(res);
}
} }
} }

View File

@@ -366,6 +366,13 @@
<param name="boxBillNos">必填</param> <param name="boxBillNos">必填</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Api.Controllers.SysConfigController.GetSerialNumbers(System.String)">
<summary>
根据序列号搜索信息-PDA
</summary>
<param name="serialNumber">必填</param>
<returns></returns>
</member>
<member name="T:WMS.Web.Api.Controllers.TakeStockController"> <member name="T:WMS.Web.Api.Controllers.TakeStockController">
<summary> <summary>
盘点单 盘点单

View File

@@ -2665,17 +2665,17 @@
明细 明细
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.SerialNumbersResponse.SerialNumber"> <member name="P:WMS.Web.Core.Dto.OpsSerialNumbersResponse.SerialNumber">
<summary> <summary>
序列号 序列号
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.SerialNumbersResponse.BarCreateTime"> <member name="P:WMS.Web.Core.Dto.OpsSerialNumbersResponse.BarCreateTime">
<summary> <summary>
序列号生成时间 序列号生成时间
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.SerialNumbersResponse.BarCereateUser"> <member name="P:WMS.Web.Core.Dto.OpsSerialNumbersResponse.BarCereateUser">
<summary> <summary>
序列号生成用户 序列号生成用户
</summary> </summary>
@@ -3120,6 +3120,36 @@
每页条数 不传默认每页10 条 每页条数 不传默认每页10 条
</summary> </summary>
</member> </member>
<member name="T:WMS.Web.Core.Dto.SerialNumbersResponse">
<summary>
序列号信息
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbersResponse.SerialNumber">
<summary>
序列号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbersResponse.MaterialId">
<summary>
物料ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbersResponse.MaterialName">
<summary>
物料名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbersResponse.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbersResponse.Specifications">
<summary>
物料规格型号
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.SingleData.NameRequest"> <member name="T:WMS.Web.Core.Dto.SingleData.NameRequest">
<summary> <summary>
名称请求对象 名称请求对象

View File

@@ -155,11 +155,6 @@
数量(装箱数量) 数量(装箱数量)
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Domain.Entitys.BoxDetails.SerialNumbers">
<summary>
序列号集
</summary>
</member>
<member name="T:WMS.Web.Domain.Entitys.BoxInventory"> <member name="T:WMS.Web.Domain.Entitys.BoxInventory">
<summary> <summary>
箱库存表头 箱库存表头
@@ -1052,6 +1047,56 @@
备注 备注
</summary> </summary>
</member> </member>
<member name="T:WMS.Web.Domain.Entitys.SerialNumbers">
<summary>
序列号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.Id">
<summary>
主键 订单编号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.SerialNumber">
<summary>
序列号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.MaterialId">
<summary>
物料ID
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.BoxId">
<summary>
wms箱ID
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.OpsBoxId">
<summary>
对应老OPS的箱ID
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.Creator">
<summary>
创建人(老ops过来)
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.CreateTime">
<summary>
创建时间(老ops过来)
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.OutStockBillNo">
<summary>
出库单号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.InStockBillNo">
<summary>
入库单号/采购单号
</summary>
</member>
<member name="T:WMS.Web.Domain.Entitys.TakeStock"> <member name="T:WMS.Web.Domain.Entitys.TakeStock">
<summary> <summary>
wms盘点单 wms盘点单
@@ -1541,6 +1586,25 @@
<param name="isTransaction"></param> <param name="isTransaction"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:WMS.Web.Domain.Infrastructure.ISerialNumbersRepositories">
<summary>
序列号
</summary>
</member>
<member name="M:WMS.Web.Domain.Infrastructure.ISerialNumbersRepositories.AddRange(System.Collections.Generic.List{WMS.Web.Domain.Entitys.SerialNumbers},System.Boolean)">
<summary>
批量添加
</summary>
<param name="entitys"></param>
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Infrastructure.ISerialNumbersRepositories.GetEntityList(System.Collections.Generic.List{System.String})">
查询实体集合
</member>
<member name="M:WMS.Web.Domain.Infrastructure.ISerialNumbersRepositories.EditEntityList(System.Collections.Generic.List{WMS.Web.Domain.Entitys.SerialNumbers},System.Boolean)">
修改实体集合
</member>
<member name="M:WMS.Web.Domain.Infrastructure.ITakeStockRepositories.AddRange(System.Collections.Generic.List{WMS.Web.Domain.Entitys.TakeStock},System.Boolean)"> <member name="M:WMS.Web.Domain.Infrastructure.ITakeStockRepositories.AddRange(System.Collections.Generic.List{WMS.Web.Domain.Entitys.TakeStock},System.Boolean)">
<summary> <summary>
批量添加 批量添加

View File

@@ -51,7 +51,7 @@ namespace WMS.Web.Core.Dto
[JsonProperty("BoxReturnDetails")] [JsonProperty("BoxReturnDetails")]
public List<OpsBoxDetailsResponse> Details { get; set; } = new List<OpsBoxDetailsResponse>(); public List<OpsBoxDetailsResponse> Details { get; set; } = new List<OpsBoxDetailsResponse>();
} }
public class SerialNumbersResponse public class OpsSerialNumbersResponse
{ {
/// <summary> /// <summary>
/// 序列号 /// 序列号
@@ -62,7 +62,7 @@ namespace WMS.Web.Core.Dto
/// 序列号生成时间 /// 序列号生成时间
/// </summary> /// </summary>
[JsonProperty("barCreateTime")] [JsonProperty("barCreateTime")]
public string BarCreateTime { get; set; } public DateTime? BarCreateTime { get; set; }
/// <summary> /// <summary>
/// 序列号生成用户 /// 序列号生成用户
/// </summary> /// </summary>
@@ -85,6 +85,6 @@ namespace WMS.Web.Core.Dto
/// 序列号集 /// 序列号集
/// </summary> /// </summary>
[JsonProperty("SerialNumbers")] [JsonProperty("SerialNumbers")]
public List<SerialNumbersResponse> SerialNumbers { get; set; } = new List<SerialNumbersResponse>(); public List<OpsSerialNumbersResponse> SerialNumbers { get; set; } = new List<OpsSerialNumbersResponse>();
} }
} }

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto
{
/// <summary>
/// 序列号信息
/// </summary>
public class SerialNumbersResponse
{
/// <summary>
/// 序列号
/// </summary>
public string SerialNumber { get; set; }
/// <summary>
/// 物料ID
/// </summary>
public int MaterialId { get; set; }
/// <summary>
/// 物料名称
/// </summary>
public string MaterialName { get; set; }
/// <summary>
/// 物料编码
/// </summary>
public string MaterialNumber { get; set; }
/// <summary>
/// 物料规格型号
/// </summary>
public string Specifications { get; set; }
}
}

View File

@@ -65,7 +65,7 @@ namespace WMS.Web.Domain.Entitys
if (d == null) return Result.ReFailure(ResultCodes.BoxMateriaNoData); if (d == null) return Result.ReFailure(ResultCodes.BoxMateriaNoData);
d.Qty = d.Qty - l.Qty; d.Qty = d.Qty - l.Qty;
if (d.Qty <= 0) this.Details.Remove(d); if (d.Qty <= 0) this.Details.Remove(d);
foreach (var s in l.SerialNumbers) d.SerialNumbers.Remove(s); //foreach (var s in l.SerialNumbers) d.SerialNumbers.Remove(s);
} }
return Result.ReSuccess(); return Result.ReSuccess();
} }
@@ -82,12 +82,12 @@ namespace WMS.Web.Domain.Entitys
{ {
MaterialId = l.MaterialId, MaterialId = l.MaterialId,
Qty=l.Qty, Qty=l.Qty,
SerialNumbers=l.SerialNumbers //SerialNumbers=l.SerialNumbers
}); });
continue; continue;
} }
d.Qty = d.Qty + l.Qty; d.Qty = d.Qty + l.Qty;
d.SerialNumbers.AddRange(l.SerialNumbers); //d.SerialNumbers.AddRange(l.SerialNumbers);
} }
return Result.ReSuccess(); return Result.ReSuccess();
} }

View File

@@ -31,9 +31,5 @@ namespace WMS.Web.Domain.Entitys
/// 数量(装箱数量) /// 数量(装箱数量)
/// </summary> /// </summary>
public decimal Qty { get; set; } public decimal Qty { get; set; }
/// <summary>
/// 序列号集
/// </summary>
public List<string> SerialNumbers { get; set; } = new List<string>();
} }
} }

View File

@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WMS.Web.Core;
namespace WMS.Web.Domain.Entitys
{
/// <summary>
/// 序列号
/// </summary>
[Serializable]
[Table("t_wms_serialnumbers")]
public class SerialNumbers : EntityBase
{
public SerialNumbers() { }
public SerialNumbers(string serialNumber,int materialId,int boxId,int opsBoxId,string creator,DateTime? createTime)
{
this.SerialNumber = serialNumber;
this.MaterialId = materialId;
this.BoxId = boxId;
this.OpsBoxId = opsBoxId;
this.Creator = creator;
this.CreateTime = createTime == null ? DateTime.Now : (DateTime)createTime;
}
/// <summary>
/// 主键 订单编号
/// </summary>
[Column("Id")]
public override int Id { get; set; }
/// <summary>
/// 序列号
/// </summary>
[Column("SerialNumber")]
public string SerialNumber { get; set; }
/// <summary>
/// 物料ID
/// </summary>
[Column("MaterialId")]
public int MaterialId { get; set; }
/// <summary>
/// wms箱ID
/// </summary>
[Column("BoxId")]
public int BoxId { get; set; }
/// <summary>
/// 对应老OPS的箱ID
/// </summary>
[Column("OpsBoxId")]
public int OpsBoxId { get; set; }
/// <summary>
/// 创建人(老ops过来)
/// </summary>
[Column("Creator")]
public string Creator { get; set; }
/// <summary>
/// 创建时间(老ops过来)
/// </summary>
[Column("CreateTime")]
public DateTime CreateTime { get; set; } = DateTime.Now;
/// <summary>
/// 出库单号
/// </summary>
[Column("OutStockBillNo")]
public string OutStockBillNo { get; set; }
/// <summary>
/// 入库单号/采购单号
///</summary>
[Column("InStockBillNo")]
public string InStockBillNo { get; set; }
}
}

View File

@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Domain.Entitys;
namespace WMS.Web.Domain.Infrastructure
{
/// <summary>
/// 序列号
/// </summary>
public interface ISerialNumbersRepositories
{
/// <summary>
/// 批量添加
/// </summary>
/// <param name="entitys"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
Task<bool> AddRange(List<SerialNumbers> entitys, bool isTransaction = true);
//根据序列号模糊搜索信息
Task<SerialNumbersResponse> GetSerialNumber(string serialNumber);
/// 查询实体集合
Task<List<SerialNumbers>> GetEntityList(List<string> serialNumbers);
/// 修改实体集合
Task<bool> EditEntityList(List<SerialNumbers> entitys, bool isTransaction = true);
}
}

View File

@@ -19,8 +19,8 @@ namespace WMS.Web.Domain.Mappers
CreateMap<BoxDetails, BoxDetailResponse>(); CreateMap<BoxDetails, BoxDetailResponse>();
CreateMap<OpsBoxResponse, Box>(); CreateMap<OpsBoxResponse, Box>();
CreateMap<OpsBoxDetailsResponse, BoxDetails>() CreateMap<OpsBoxDetailsResponse, BoxDetails>();
.ForPath(x => x.SerialNumbers, ops => ops.MapFrom(x => x.SerialNumbers.Select(s=>s.SerialNumber).ToList()));
} }
} }
} }

View File

@@ -27,11 +27,13 @@ namespace WMS.Web.Domain.Services
private readonly IOpsService _opsService; private readonly IOpsService _opsService;
private readonly ISerialNumberOperateRepositories _serialNumberOperateRepositories; private readonly ISerialNumberOperateRepositories _serialNumberOperateRepositories;
private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories; private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories;
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
public BoxService(IMapper mapper, ILoginService loginService, public BoxService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories, IBasicsRepositories transactionRepositories,
IBoxRepositories boxRepositories, IOpsService opsService, IBoxRepositories boxRepositories, IOpsService opsService,
ISerialNumberOperateRepositories serialNumberOperateRepositories, ISerialNumberOperateRepositories serialNumberOperateRepositories,
IErpOpsSyncDateRepositories erpOpsSyncDateRepositories) IErpOpsSyncDateRepositories erpOpsSyncDateRepositories,
ISerialNumbersRepositories serialNumbersRepositories)
{ {
_mapper = mapper; _mapper = mapper;
_loginService = loginService; _loginService = loginService;
@@ -40,6 +42,7 @@ namespace WMS.Web.Domain.Services
_opsService = opsService; _opsService = opsService;
_serialNumberOperateRepositories = serialNumberOperateRepositories; _serialNumberOperateRepositories = serialNumberOperateRepositories;
_erpOpsSyncDateRepositories = erpOpsSyncDateRepositories; _erpOpsSyncDateRepositories = erpOpsSyncDateRepositories;
_serialNumbersRepositories = serialNumbersRepositories;
} }
public async Task<Result> Sync() public async Task<Result> Sync()
@@ -57,25 +60,39 @@ namespace WMS.Web.Domain.Services
} }
var boxs = _mapper.Map<List<Box>>(list); var boxs = _mapper.Map<List<Box>>(list);
//需要添加序列号记录表
List<SerialNumberOperate> sList = new List<SerialNumberOperate>();
foreach (var b in boxs)
{
foreach (var sn in b.Details.SelectMany(s => s.SerialNumbers))
{
SerialNumberOperate s = new SerialNumberOperate(sn, SerialNumberOperateType.Generate, b.CreateUser, "", b.SupplierId, b.OrgId, null, b.CreateTime);
sList.Add(s);
}
}
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
bool isRollback = false; bool isRollback = false;
bool isSuccess = true; bool isSuccess = true;
//批量添加 //批量添加
isSuccess = await _boxRepositories.AddRange(boxs, false); isSuccess = await _boxRepositories.AddRange(boxs, false);
if (!isSuccess) isRollback = true; if (!isSuccess) isRollback = true;
#region wsm插入数据库后生成Id
//需要添加序列号表和记录
List<SerialNumberOperate> soList = new List<SerialNumberOperate>();
List<SerialNumbers> sList = new List<SerialNumbers>();
foreach (var b in boxs)
{
var ops_box = list.FirstOrDefault(f => f.OpsBoxId == b.OpsBoxId);
foreach (var sn in ops_box.Details.SelectMany(s => s.SerialNumbers))
{
var detail = ops_box.Details.FirstOrDefault(f => f.SerialNumbers.Select(s=>s.SerialNumber).Equals(sn.SerialNumber));
var opsSerial = list.FirstOrDefault(f => f.OpsBoxId == b.OpsBoxId).Details
.SelectMany(s => s.SerialNumbers)
.FirstOrDefault(s => s.SerialNumber.Equals(sn.SerialNumber));
//序列号
SerialNumbers s = new SerialNumbers(sn.SerialNumber, detail.MaterialId,b.Id,b.OpsBoxId, opsSerial.BarCereateUser,opsSerial.BarCreateTime);
sList.Add(s);
//序列号记录
SerialNumberOperate so = new SerialNumberOperate(sn.SerialNumber, SerialNumberOperateType.Generate, opsSerial.BarCereateUser, "", b.SupplierId, b.OrgId, null, opsSerial.BarCreateTime);
soList.Add(so);
}
}
#endregion
//序列号
isSuccess = await _serialNumbersRepositories.AddRange(sList, false);
if (!isSuccess) isRollback = true;
//序列号操作记录 //序列号操作记录
var res = await this.SerialNumberOperate(sList, false); var res = await this.SerialNumberOperate(soList, false);
if (!res.Success) isRollback = true; if (!res.Success) isRollback = true;
//更新时间管理 //更新时间管理
isSuccess = await _erpOpsSyncDateRepositories.Edit(ErpOpsSyncType.Ops, false); isSuccess = await _erpOpsSyncDateRepositories.Edit(ErpOpsSyncType.Ops, false);

View File

@@ -27,9 +27,12 @@ namespace WMS.Web.Repositories
private readonly ISingleDataService _singleDataService; private readonly ISingleDataService _singleDataService;
private readonly ILoginRepositories _loginRepositories; private readonly ILoginRepositories _loginRepositories;
private readonly IBasicsRepositories _basicsRepositories; private readonly IBasicsRepositories _basicsRepositories;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
private readonly IErpService _erpService;
public BoxRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider, public BoxRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider,
ISingleDataService singleDataService, ILoginRepositories loginRepositories, IBasicsRepositories basicsRepositories) ISingleDataService singleDataService, ILoginRepositories loginRepositories,
IBasicsRepositories basicsRepositories, IErpBasicDataExtendService erpBasicDataExtendService,
IErpService erpServic)
{ {
_context = context; _context = context;
_mapper = mapper; _mapper = mapper;
@@ -37,6 +40,8 @@ namespace WMS.Web.Repositories
_singleDataService = singleDataService; _singleDataService = singleDataService;
_loginRepositories = loginRepositories; _loginRepositories = loginRepositories;
_basicsRepositories = basicsRepositories; _basicsRepositories = basicsRepositories;
_erpBasicDataExtendService = erpBasicDataExtendService;
_erpService = erpServic;
} }
public async Task<Box> Get(int id) public async Task<Box> Get(int id)
{ {
@@ -55,10 +60,26 @@ namespace WMS.Web.Repositories
var list = await _context.Box.Include(x => x.Details).Where(f => BoxBillNos.Contains(f.BoxBillNo)).ToListAsync(); var list = await _context.Box.Include(x => x.Details).Where(f => BoxBillNos.Contains(f.BoxBillNo)).ToListAsync();
var resList = _mapper.Map<List<BoxResponse>>(list); var resList = _mapper.Map<List<BoxResponse>>(list);
var materials_result = await _erpService.BillQueryForMaterial();
if (!materials_result.IsSuccess)
return new List<BoxResponse>();
var materials = materials_result.Data.ToList();
var ids = list.Select(s => s.Id).ToList();
//获取所有序列号
var serialList = await _context.SerialNumbers.Where(f => ids.Contains(f.BoxId)).ToListAsync();
//获取物料信息 显示物料三件套 //获取物料信息 显示物料三件套
var mIds = list.SelectMany(s => s.Details).Select(s => s.MaterialId).ToList(); var mIds = list.SelectMany(s => s.Details).Select(s => s.MaterialId).ToList();
foreach (var r in resList) foreach (var r in resList)
{ {
foreach (var detail in r.Details)
{
detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, detail.MaterialId);
detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, detail.MaterialId);
detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, detail.MaterialId);
detail.SerialNumbers = serialList.Where(w => w.BoxId == r.Id && w.MaterialId == detail.MaterialId).Select(s => s.SerialNumber).ToList();
}
r.TotalQty = r.Details.Sum(s => s.Qty); r.TotalQty = r.Details.Sum(s => s.Qty);
} }
return resList; return resList;
@@ -111,7 +132,7 @@ namespace WMS.Web.Repositories
public async Task<List<string>> GetByNos(List<string> billNos) public async Task<List<string>> GetByNos(List<string> billNos)
{ {
return await _context.Box return await _context.Box
.Where(w => billNos.Contains(w.BoxBillNo)).Select(s=>s.BoxBillNo).ToListAsync(); .Where(w => billNos.Contains(w.BoxBillNo)).Select(s => s.BoxBillNo).ToListAsync();
} }
public async Task<bool> AddRange(List<Box> entitys, bool isTransaction = true) public async Task<bool> AddRange(List<Box> entitys, bool isTransaction = true)

View File

@@ -49,6 +49,12 @@ namespace WMS.Web.Repositories.Configuration
ent.HasKey(x => x.Id); ent.HasKey(x => x.Id);
}); });
//序列号
builder.Entity<SerialNumbers>(ent =>
{
ent.ToTable("t_wms_serialnumbers");
ent.HasKey(x => x.Id);
});
//序列号操作记录 //序列号操作记录
builder.Entity<SerialNumberOperate>(ent => builder.Entity<SerialNumberOperate>(ent =>
{ {
@@ -226,10 +232,6 @@ namespace WMS.Web.Repositories.Configuration
{ {
ent.ToTable("t_ops_box_details"); ent.ToTable("t_ops_box_details");
ent.HasKey(x => x.Id); ent.HasKey(x => x.Id);
ent.Property(f => f.SerialNumbers).HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject<List<string>>(v));
}); });
#endregion #endregion
@@ -238,6 +240,7 @@ namespace WMS.Web.Repositories.Configuration
base.OnModelCreating(builder); base.OnModelCreating(builder);
} }
public DbSet<SerialNumbers> SerialNumbers { get; set; }
public DbSet<ErpOpsSyncDate> ErpOpsSyncDate { get; set; } public DbSet<ErpOpsSyncDate> ErpOpsSyncDate { get; set; }
public DbSet<SerialNumberOperate> SerialNumberOperate { get; set; } public DbSet<SerialNumberOperate> SerialNumberOperate { get; set; }
public DbSet<ChangeBoxRecord> ChangeBoxRecord { get; set; } public DbSet<ChangeBoxRecord> ChangeBoxRecord { get; set; }

View File

@@ -46,7 +46,7 @@ namespace Microsoft.Extensions.DependencyInjection
services.AddTransient<IBoxInventoryRepositories, BoxInventoryRepositories>(); services.AddTransient<IBoxInventoryRepositories, BoxInventoryRepositories>();
services.AddTransient<ISerialNumbersRepositories, SerialNumbersRepositories>();
services.AddTransient<ISerialNumberOperateRepositories, SerialNumberOperateRepositories>(); services.AddTransient<ISerialNumberOperateRepositories, SerialNumberOperateRepositories>();
services.AddTransient<IChangeBoxRecordRepositories, ChangeBoxRecordRepositories>(); services.AddTransient<IChangeBoxRecordRepositories, ChangeBoxRecordRepositories>();
services.AddTransient<IMoveBoxRecordRepositories, MoveBoxRecordRepositories>(); services.AddTransient<IMoveBoxRecordRepositories, MoveBoxRecordRepositories>();

View File

@@ -0,0 +1,131 @@
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;
using WMS.Web.Core.Help;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Mappers;
using WMS.Web.Repositories.Configuration;
namespace WMS.Web.Repositories
{
/// <summary>
/// 序列号
/// </summary>
public class SerialNumbersRepositories : ISerialNumbersRepositories
{
private readonly IMapper _mapper;
private readonly IServiceProvider _serviceProvider;
private readonly RepositoryDbContext _context;
private readonly IErpService _erpService;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
public SerialNumbersRepositories(RepositoryDbContext context, IMapper mapper,
IServiceProvider serviceProvider, IErpService erpService, IErpBasicDataExtendService erpBasicDataExtendService)
{
_context = context;
_mapper = mapper;
_serviceProvider = serviceProvider;
_erpService = erpService;
_erpBasicDataExtendService = erpBasicDataExtendService;
}
public async Task<bool> AddRange(List<SerialNumbers> entitys, bool isTransaction = true)
{
IDbContextTransaction _transaction = null;
if (isTransaction)
_transaction = _context.Database.BeginTransaction();
try
{
if (entitys != null && entitys.Count != 0)
{
await _context.SerialNumbers.AddRangeAsync(entitys);
await _context.SaveChangesAsync();
}
if (_transaction != null)
_transaction.Commit();
return true;
}
catch (Exception ex)
{
if (_transaction != null)
_transaction.Rollback();
return false;
}
}
/// <summary>
/// 批量修改
/// </summary>
/// <param name="entitys"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<bool> EditEntityList(List<SerialNumbers> entitys, bool isTransaction = true)
{
IDbContextTransaction _transaction = null;
if (isTransaction)
_transaction = _context.Database.BeginTransaction();
try
{
List<int> list = entitys.Select(s => s.Id).ToList();
var res = await _context.SerialNumbers
.Where(f => list.Contains(f.Id)).ToListAsync();
_mapper.ToMapList(entitys, res);
await _context.SaveChangesAsync();
if (_transaction != null)
_transaction.Commit();
}
catch (Exception ex)
{
if (_transaction != null)
_transaction.Rollback();
return false;
}
return true;
}
/// <summary>
/// 根据序列号查询
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
public async Task<List<SerialNumbers>> GetEntityList(List<string> serialNumbers)
{
var res = await _context.SerialNumbers
.Where(f => serialNumbers.Contains(f.SerialNumber))
.ToListAsync();
return res.Clone();
}
/// <summary>
/// 根据序列号
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
public async Task<SerialNumbersResponse> GetSerialNumber(string serialNumber)
{
SerialNumbersResponse response = new SerialNumbersResponse();
var materials_result = await _erpService.BillQueryForMaterial();
if (!materials_result.IsSuccess)
return response;
var materials = materials_result.Data.ToList();
var entity = await _context.SerialNumbers.FirstOrDefaultAsync(w => serialNumber.Equals(w.SerialNumber));
response.SerialNumber = entity.SerialNumber;
response.MaterialId = entity.MaterialId;
response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialId);
response.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, entity.MaterialId);
response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.MaterialId);
return new SerialNumbersResponse();
}
}
}