移箱支持多个

This commit is contained in:
18942506660
2023-11-15 15:28:39 +08:00
parent b5af69bb1a
commit 1736096743
13 changed files with 224 additions and 27 deletions

View File

@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WMS.Web.Core;
namespace WMS.Web.Domain.Entitys
{
/// <summary>
/// erp原始数据表
/// </summary>
public class ErpOutStockSync:EntityBase
{
public ErpOutStockSync() { }
/// <summary>
/// 主键 订单编号
/// </summary>
[Column("Id")]
public override int Id { get; set; }
/// <summary>
/// 来源单号
///</summary>
[Column("SourceBillNo")]
public string SourceBillNo { get; set; }
/// <summary>
/// 同步成功或者失败 null 就是未同步
/// </summary>
[Column("SuccessSync")]
public bool? SuccessSync { get; set; } = null;
/// <summary>
/// 备注
/// </summary>
[Column("Remark")]
public string Remark { get; set; }
/// <summary>
/// 明细
/// </summary>
public List<ErpOutStockSyncDetails> Details { get; set; } = new List<ErpOutStockSyncDetails>();
}
}

View File

@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WMS.Web.Core;
namespace WMS.Web.Domain.Entitys
{
/// <summary>
/// erp原始数据表明细
/// </summary>
public class ErpOutStockSyncDetails : EntityBase
{
public ErpOutStockSyncDetails() { }
/// <summary>
/// 主键 订单编号
/// </summary>
[Column("Id")]
public override int Id { get; set; }
/// <summary>
/// 单据头Id
/// </summary>
[Column("Fid")]
public int Fid { get; set; }
/// <summary>
/// 物料Id
///</summary>
[Column("MaterialId")]
public int MaterialId { get; set; }
/// <summary>
/// 应出库数量
///</summary>
[Column("AccruedQty")]
public decimal AccruedQty { get; set; }
/// <summary>
/// 已出库数量
///</summary>
[Column("RealityQty")]
public decimal RealityQty { get; set; }
/// <summary>
/// 当前最新一次出库数量(用来做再次同步)
///</summary>
[Column("NewQty")]
public decimal NewQty { get; set; }
}
}

View File

@@ -19,7 +19,7 @@ namespace WMS.Web.Domain.IService
//改箱保存
Task<Result> ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction=true);
//移箱保存
Task<Result> MoveBoxSave(SaveMoveBoxRecordRequest dto,bool IsUp, LoginInDto loginInfo);
Task<Result> MoveBoxSave(List<SaveMoveBoxRecordRequest> dto,bool IsUp, LoginInDto loginInfo);
}
}

View File

@@ -17,7 +17,7 @@ namespace WMS.Web.Domain.IService
/// 改箱
Task<Result> ChangeBox(List<ChangeBoxRecord> changeBoxRecords, LoginInDto loginInfo, bool isTransaction = true);
/// 移箱
Task<Result> MoveBox(MoveBoxRecord moveBoxRecord, LoginInDto loginInfo, bool isTransaction = true);
Task<Result> MoveBox(List<MoveBoxRecord> moveBoxRecords, LoginInDto loginInfo, bool isTransaction = true);
/// 出库
Task<Result> OutStock(OutStock outStock, LoginInDto loginInfo, bool isTransaction = true);
/// 入库

View File

@@ -11,6 +11,8 @@ namespace WMS.Web.Domain.Infrastructure
{
// 新增
Task<MoveBoxRecord> Add(MoveBoxRecord entity, bool isTransaction = true);
/// 批量添加
Task<bool> AddRange(List<MoveBoxRecord> entitys, bool isTransaction = true);
// 获取列表
Task<(List<MoveBoxRecordQueryInfoResponse> list, int total)> GetListAsync(MoveBoxRecordQueryRequest dto);
}

View File

@@ -25,7 +25,8 @@ namespace WMS.Web.Domain.Mappers
CreateMap<OutStockTaskDetails, GetOutStockTaskByNoDetailsResponse>();
CreateMap<ErpDeliveryNoticeOutStockResultDto, OutStockTaskDetails>()
.ForPath(x => x.SourceBillNos, ops => ops.MapFrom(x =>new List<string>() { x.SourceBillNo }));
.ForPath(x => x.SourceBillNos, ops => ops.MapFrom(x =>new List<string>() { x.SourceBillNo }))
.ForPath(x => x.SaleBillNos, ops => ops.MapFrom(x => new List<string>() { x.SaleBillNo }));
}
}
}

View File

@@ -109,19 +109,24 @@ namespace WMS.Web.Domain.Services
/// <param name="dto"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
public async Task<Result> MoveBoxSave(SaveMoveBoxRecordRequest dto, bool IsUp, LoginInDto loginInfo)
public async Task<Result> MoveBoxSave(List<SaveMoveBoxRecordRequest> dto, bool IsUp, LoginInDto loginInfo)
{
var entity = new MoveBoxRecord();
entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, dto.BoxId, dto.SubStockId, loginInfo.UserInfo.StaffId);
List<MoveBoxRecord> entityList = new List<MoveBoxRecord>();
foreach (var d in dto)
{
var entity = new MoveBoxRecord();
entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.SubStockId, loginInfo.UserInfo.StaffId);
entityList.Add(entity);
}
//需要填写规格型号
//需要修改库存
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
bool isRollback = false;
bool isSuccess = true;
entity = await _moveBoxRecordRepositories.Add(entity, true);
if (entity == null) isRollback = true;
var res_change = await _serialNumberService.MoveBox(entity, loginInfo, false);
isSuccess = await _moveBoxRecordRepositories.AddRange(entityList, true);
if (!isSuccess) isRollback = true;
var res_change = await _serialNumberService.MoveBox(entityList, loginInfo, false);
if (!res_change.IsSuccess) isRollback = true;
//提交事务
isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);

View File

@@ -133,14 +133,14 @@ namespace WMS.Web.Domain.Services
foreach (var item in billNos)
{
var e = erp_list.FirstOrDefault(f => f.SourceBillNo == item);
var dto = new OutStockTask();
dto.Create((OutStockType)e.Type, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime);
var entity = new OutStockTask();
entity.Create((OutStockType)e.Type, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime);
//找到当前对应来源单据编号的集合数据
var current_erp_details = erp_list.Where(x => x.SourceBillNo == item).ToList();
//给到dto的实体明细中
dto.Details = _mapper.Map<List<OutStockTaskDetails>>(current_erp_details);
add_entitys.Add(dto);
entity.Details = _mapper.Map<List<OutStockTaskDetails>>(current_erp_details);
add_entitys.Add(entity);
}
//3.1提交新增
isSuccess = await _outStockTaskRepositories.AddRange(add_entitys, isTransaction);

View File

@@ -104,15 +104,16 @@ namespace WMS.Web.Domain.Services
/// <summary>
/// 移箱
/// </summary>
/// <param name="moveBoxRecord"></param>
/// <param name="moveBoxRecords"></param>
/// <param name="loginInfo"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<Result> MoveBox(MoveBoxRecord moveBoxRecord, LoginInDto loginInfo, bool isTransaction = true)
public async Task<Result> MoveBox(List<MoveBoxRecord> moveBoxRecords, LoginInDto loginInfo, bool isTransaction = true)
{
//获取序列号信息
var entityList = await _serialNumbersRepositories.GetEntityListByBoxId(moveBoxRecord.BoxId);
var box = await _boxRepositories.Get(moveBoxRecord.BoxId);
var boxids = moveBoxRecords.Select(s => s.BoxId).ToList();
var entityList = await _serialNumbersRepositories.GetEntityListByBoxIds(boxids);
var boxList = await _boxRepositories.GetEntityList(boxids);
var userName = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, loginInfo.UserInfo.StaffId);
IDbContextTransaction _transaction = null;
@@ -123,8 +124,10 @@ namespace WMS.Web.Domain.Services
List<SerialNumberOperate> sList = new List<SerialNumberOperate>();
foreach (var entity in entityList)
{
var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId);
var moveBoxRecord = moveBoxRecords.FirstOrDefault(f => f.BoxId == entity.BoxId);
//修改序列号和箱绑定关系
entity.Bind(moveBoxRecord.BoxId);
//entity.Bind(moveBoxRecord.BoxId);
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
@@ -201,7 +204,7 @@ namespace WMS.Web.Domain.Services
OperateTime = DateTime.Now,
OperateType = OutStockTypeConvert(outStock.Type),
OperateUser = userName,
Remark = "来源单号:" + string.Join(",",outstockDetail.SourceBillNos) + "\r\n" + "出库单号:" + outStock.BillNo
Remark = "来源单号:" + string.Join(",", outstockDetail.SourceBillNos) + "\r\n" + "出库单号:" + outStock.BillNo
};
if (outStock.Type == OutStockType.Sal)
{