This commit is contained in:
tongfei
2023-11-11 15:55:49 +08:00
9 changed files with 251 additions and 30 deletions

View File

@@ -1110,6 +1110,24 @@
入库单号/采购单号 入库单号/采购单号
</summary> </summary>
</member> </member>
<member name="M:WMS.Web.Domain.Entitys.SerialNumbers.Operate(System.Int32)">
<summary>
移箱
</summary>
<param name="destBoxId">目标箱号</param>
</member>
<member name="M:WMS.Web.Domain.Entitys.SerialNumbers.OutStock(System.String)">
<summary>
出库
</summary>
<param name="outStockBillNo">出库单号</param>
</member>
<member name="M:WMS.Web.Domain.Entitys.SerialNumbers.InStock(System.String)">
<summary>
出库
</summary>
<param name="inStockBillNo">出库单号</param>
</member>
<member name="T:WMS.Web.Domain.Entitys.TakeStock"> <member name="T:WMS.Web.Domain.Entitys.TakeStock">
<summary> <summary>
wms盘点单 wms盘点单
@@ -1376,6 +1394,9 @@
<param name="isTransaction"></param> <param name="isTransaction"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Domain.Infrastructure.IBoxRepositories.GetEntityList(System.Collections.Generic.List{System.Int32})">
查询实体集合
</member>
<member name="T:WMS.Web.Domain.Infrastructure.IErpOpsSyncDateRepositories"> <member name="T:WMS.Web.Domain.Infrastructure.IErpOpsSyncDateRepositories">
<summary> <summary>
定时任务最新一次时间管理 定时任务最新一次时间管理
@@ -1782,6 +1803,29 @@
序列号服务 序列号服务
</summary> </summary>
</member> </member>
<member name="M:WMS.Web.Domain.IService.ISerialNumberService.ChangeBox(System.Collections.Generic.List{WMS.Web.Domain.Entitys.ChangeBoxRecord},WMS.Web.Core.Dto.Login.LoginInDto,System.Boolean)">
<summary>
操作序列号(移箱等)
</summary>
<param name="changeBoxRecords"></param>
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.IService.ISerialNumberService.OutStock(System.Collections.Generic.List{System.String},System.Boolean)">
<summary>
操作序列号(出库操作)
</summary>
<param name="serialNumbers">序列号</param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.IService.ISerialNumberService.SerialNumberOperate(System.Collections.Generic.List{WMS.Web.Domain.Entitys.SerialNumberOperate},System.Boolean)">
<summary>
序列号操作记录
</summary>
<param name="list"></param>
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.IService.ITakeStockService"> <member name="T:WMS.Web.Domain.IService.ITakeStockService">
<summary> <summary>
盘点单服务 盘点单服务
@@ -2523,14 +2567,6 @@
箱服务信息 箱服务信息
</summary> </summary>
</member> </member>
<member name="M:WMS.Web.Domain.Services.BoxService.SerialNumberOperate(System.Collections.Generic.List{WMS.Web.Domain.Entitys.SerialNumberOperate},System.Boolean)">
<summary>
序列号操作记录日志
</summary>
<param name="list"></param>
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.Services.ChangeMoveBoxService"> <member name="T:WMS.Web.Domain.Services.ChangeMoveBoxService">
改箱 移箱服务 改箱 移箱服务
</member> </member>
@@ -3370,6 +3406,29 @@
序列号服务 序列号服务
</summary> </summary>
</member> </member>
<member name="M:WMS.Web.Domain.Services.SerialNumberService.ChangeBox(System.Collections.Generic.List{WMS.Web.Domain.Entitys.ChangeBoxRecord},WMS.Web.Core.Dto.Login.LoginInDto,System.Boolean)">
<summary>
改箱
</summary>
<param name="changeBoxRecords"></param>
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.SerialNumberService.OutStock(System.Collections.Generic.List{System.String},System.Boolean)">
<summary>
操作序列号(出库操作)
</summary>
<param name="serialNumbers"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.SerialNumberService.SerialNumberOperate(System.Collections.Generic.List{WMS.Web.Domain.Entitys.SerialNumberOperate},System.Boolean)">
<summary>
序列号操作记录日志
</summary>
<param name="list"></param>
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.Services.TakeStockService"> <member name="T:WMS.Web.Domain.Services.TakeStockService">
<summary> <summary>
盘点单服务 盘点单服务

View File

@@ -68,5 +68,31 @@ namespace WMS.Web.Domain.Entitys
///</summary> ///</summary>
[Column("InStockBillNo")] [Column("InStockBillNo")]
public string InStockBillNo { get; set; } public string InStockBillNo { get; set; }
/// <summary>
/// 移箱
/// </summary>
/// <param name="destBoxId">目标箱号</param>
public void Operate(int destBoxId)
{
this.BoxId = destBoxId;
}
/// <summary>
/// 出库
/// </summary>
/// <param name="outStockBillNo">出库单号</param>
public void OutStock(string outStockBillNo)
{
this.BoxId = 0;
this.OutStockBillNo = outStockBillNo;
}
/// <summary>
/// 出库
/// </summary>
/// <param name="inStockBillNo">出库单号</param>
public void InStock(string inStockBillNo)
{
this.InStockBillNo = inStockBillNo;
}
} }
} }

View File

@@ -12,6 +12,5 @@ namespace WMS.Web.Domain.IService
{ {
// 同步老Ops箱信息 // 同步老Ops箱信息
Task<Result> Sync(); Task<Result> Sync();
Task<Result> SerialNumberOperate(List<SerialNumberOperate> list, bool isTransaction = true);
} }
} }

View File

@@ -1,6 +1,11 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Values;
namespace WMS.Web.Domain.IService namespace WMS.Web.Domain.IService
{ {
@@ -9,5 +14,25 @@ namespace WMS.Web.Domain.IService
/// </summary> /// </summary>
public interface ISerialNumberService public interface ISerialNumberService
{ {
/// <summary>
/// 操作序列号(移箱等)
/// </summary>
/// <param name="changeBoxRecords"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
Task<Result> ChangeBox(List<ChangeBoxRecord> changeBoxRecords, LoginInDto loginInfo, bool isTransaction = true);
/// <summary>
/// 操作序列号(出库操作)
/// </summary>
/// <param name="serialNumbers">序列号</param>
/// <returns></returns>
Task<Result> OutStock(List<string> serialNumbers, bool isTransaction = true);
/// <summary>
/// 序列号操作记录
/// </summary>
/// <param name="list"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
Task<Result> SerialNumberOperate(List<SerialNumberOperate> list, bool isTransaction = true);
} }
} }

View File

@@ -27,5 +27,7 @@ namespace WMS.Web.Domain.Infrastructure
/// <param name="isTransaction"></param> /// <param name="isTransaction"></param>
/// <returns></returns> /// <returns></returns>
Task<bool> AddRange(List<Box> entitys, bool isTransaction = true); Task<bool> AddRange(List<Box> entitys, bool isTransaction = true);
/// 查询实体集合
Task<List<Box>> GetEntityList(List<int> ids);
} }
} }

View File

@@ -25,13 +25,13 @@ namespace WMS.Web.Domain.Services
public readonly IBasicsRepositories _transactionRepositories; public readonly IBasicsRepositories _transactionRepositories;
private readonly IBoxRepositories _boxRepositories; private readonly IBoxRepositories _boxRepositories;
private readonly IOpsService _opsService; private readonly IOpsService _opsService;
private readonly ISerialNumberOperateRepositories _serialNumberOperateRepositories; private readonly ISerialNumberService _serialNumberService;
private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories; private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories;
private readonly ISerialNumbersRepositories _serialNumbersRepositories; 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, ISerialNumberService serialNumberService,
IErpOpsSyncDateRepositories erpOpsSyncDateRepositories, IErpOpsSyncDateRepositories erpOpsSyncDateRepositories,
ISerialNumbersRepositories serialNumbersRepositories) ISerialNumbersRepositories serialNumbersRepositories)
{ {
@@ -40,7 +40,7 @@ namespace WMS.Web.Domain.Services
_transactionRepositories = transactionRepositories; _transactionRepositories = transactionRepositories;
_boxRepositories = boxRepositories; _boxRepositories = boxRepositories;
_opsService = opsService; _opsService = opsService;
_serialNumberOperateRepositories = serialNumberOperateRepositories; _serialNumberService = serialNumberService;
_erpOpsSyncDateRepositories = erpOpsSyncDateRepositories; _erpOpsSyncDateRepositories = erpOpsSyncDateRepositories;
_serialNumbersRepositories = serialNumbersRepositories; _serialNumbersRepositories = serialNumbersRepositories;
} }
@@ -96,7 +96,7 @@ namespace WMS.Web.Domain.Services
isSuccess = await _serialNumbersRepositories.AddRange(sList, false); isSuccess = await _serialNumbersRepositories.AddRange(sList, false);
if (!isSuccess) isRollback = true; if (!isSuccess) isRollback = true;
//序列号操作记录 //序列号操作记录
var res = await this.SerialNumberOperate(soList, false); var res = await _serialNumberService.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);
@@ -108,17 +108,5 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess(); return Result.ReSuccess();
} }
/// <summary>
/// 序列号操作记录日志
/// </summary>
/// <param name="list"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<Result> SerialNumberOperate(List<SerialNumberOperate> list, bool isTransaction = true)
{
var isSuccess = await _serialNumberOperateRepositories.AddRange(list, isTransaction);
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
return Result.ReSuccess();
}
} }
} }

View File

@@ -26,9 +26,11 @@ namespace WMS.Web.Domain.Services
public readonly IBasicsRepositories _transactionRepositories; public readonly IBasicsRepositories _transactionRepositories;
private readonly IMoveBoxRecordRepositories _moveBoxRecordRepositories; private readonly IMoveBoxRecordRepositories _moveBoxRecordRepositories;
private readonly IBoxRepositories _boxRepositories; private readonly IBoxRepositories _boxRepositories;
private readonly ISerialNumberService _serialNumberService;
public ChangeMoveBoxService(IMapper mapper, ILoginService loginService, public ChangeMoveBoxService(IMapper mapper, ILoginService loginService,
IChangeBoxRecordRepositories changeBoxRecordRepositories, IBasicsRepositories transactionRepositories, IChangeBoxRecordRepositories changeBoxRecordRepositories, IBasicsRepositories transactionRepositories,
IMoveBoxRecordRepositories moveBoxRecordRepositories, IBoxRepositories boxRepositories) IMoveBoxRecordRepositories moveBoxRecordRepositories, IBoxRepositories boxRepositories,
ISerialNumberService serialNumberService)
{ {
_mapper = mapper; _mapper = mapper;
_loginService = loginService; _loginService = loginService;
@@ -36,6 +38,7 @@ namespace WMS.Web.Domain.Services
_transactionRepositories = transactionRepositories; _transactionRepositories = transactionRepositories;
_moveBoxRecordRepositories = moveBoxRecordRepositories; _moveBoxRecordRepositories = moveBoxRecordRepositories;
_boxRepositories = boxRepositories; _boxRepositories = boxRepositories;
_serialNumberService = serialNumberService;
} }
/// <summary> /// <summary>
/// 改箱保存 /// 改箱保存
@@ -85,11 +88,11 @@ namespace WMS.Web.Domain.Services
bool isSuccess = true; bool isSuccess = true;
isSuccess = await _changeBoxRecordRepositories.AddRange(list, false); isSuccess = await _changeBoxRecordRepositories.AddRange(list, false);
if (!isSuccess) isRollback = true; if (!isSuccess) isRollback = true;
var res_change = await _serialNumberService.ChangeBox(list, loginInfo, false);
if(!res_change.IsSuccess) isRollback = true;
isSuccess = await _boxRepositories.EditEntityList(boxList, false); isSuccess = await _boxRepositories.EditEntityList(boxList, false);
if (!isSuccess) isRollback = true; if (!isSuccess) isRollback = true;
//提交事务 //提交事务
if (isTransaction) if (isTransaction)
{ {

View File

@@ -1,14 +1,119 @@
using System; using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.Login;
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;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Values;
using WMS.Web.Domain.Values.Single;
namespace WMS.Web.Domain.Services namespace WMS.Web.Domain.Services
{ {
/// <summary> /// <summary>
/// 序列号服务 /// 序列号服务
/// </summary> /// </summary>
public class SerialNumberService: ISerialNumberService public class SerialNumberService : ISerialNumberService
{ {
private readonly ISerialNumberOperateRepositories _serialNumberOperateRepositories;
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
public readonly IBasicsRepositories _transactionRepositories;
public readonly IBoxRepositories _boxRepositories;
private readonly ISingleDataService _singleDataService;
public SerialNumberService(ISerialNumberOperateRepositories serialNumberOperateRepositories,
ISerialNumbersRepositories serialNumbersRepositories, IBasicsRepositories transactionRepositories,
IBoxRepositories boxRepositories, ISingleDataService singleDataService)
{
_serialNumberOperateRepositories = serialNumberOperateRepositories;
_serialNumbersRepositories = serialNumbersRepositories;
_transactionRepositories = transactionRepositories;
_boxRepositories = boxRepositories;
_singleDataService = singleDataService;
}
/// <summary>
/// 改箱
/// </summary>
/// <param name="changeBoxRecords"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<Result> ChangeBox(List<ChangeBoxRecord> changeBoxRecords, LoginInDto loginInfo, bool isTransaction = true)
{
//获取序列号信息
var serialNumbers = changeBoxRecords.SelectMany(s => s.SerialNumbers).ToList();
var entityList = await _serialNumbersRepositories.GetEntityList(serialNumbers);
var boxIds = changeBoxRecords.Select(s => s.DestBoxId).ToList();
var boxList = await _boxRepositories.GetEntityList(boxIds);
var userName = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, loginInfo.UserInfo.StaffId);
IDbContextTransaction _transaction = null;
if (isTransaction)
_transaction = _transactionRepositories.GetTransaction();
bool isRollback = false;
bool isSuccess = true;
List<SerialNumberOperate> sList = new List<SerialNumberOperate>();
foreach (var entity in entityList)
{
var destBoxId = changeBoxRecords.FirstOrDefault(f => f.SerialNumbers.Contains(entity.SerialNumber)).DestBoxId;
//修改序列号和箱绑定关系
entity.Operate(destBoxId);
var box = boxList.FirstOrDefault(f=>f.Id==destBoxId);
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
MaterialId = entity.MaterialId,
SerialNumber = entity.SerialNumber,
OrgId = box.OrgId,
SupplierId = box.SupplierId,
OperateTime = DateTime.Now,
OperateType = SerialNumberOperateType.ChangeBox,
OperateUser = userName,
Remark = "箱号:" + box.BoxBillNo
};
sList.Add(op);
}
isSuccess = await _serialNumbersRepositories.EditEntityList(entityList, false);
//序列号操作记录
var res = await this.SerialNumberOperate(sList, false);
//提交事务
if (isTransaction)
{
if (!isSuccess) isRollback = true;
if (!res.Success) isRollback = true;
isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError);
}
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
if (!res.Success) return Result.ReFailure(ResultCodes.DateWriteError);
return Result.ReSuccess();
}
/// <summary>
/// 操作序列号(出库操作)
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
public Task<Result> OutStock(List<string> serialNumbers, bool isTransaction = true)
{
throw new NotImplementedException();
}
/// <summary>
/// 序列号操作记录日志
/// </summary>
/// <param name="list"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<Result> SerialNumberOperate(List<SerialNumberOperate> list, bool isTransaction = true)
{
var isSuccess = await _serialNumberOperateRepositories.AddRange(list, isTransaction);
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
return Result.ReSuccess();
}
} }
} }

View File

@@ -158,5 +158,19 @@ namespace WMS.Web.Repositories
return false; return false;
} }
} }
/// <summary>
/// 获取箱集合
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public async Task<List<Box>> GetEntityList(List<int> ids)
{
var res = await _context.Box
.Include(s => s.Details)
.Where(f => ids.Contains(f.Id))
.ToListAsync();
return res.Clone();
}
} }
} }