调整盘点结构
This commit is contained in:
@@ -41,51 +41,6 @@ namespace WMS.Web.Domain.Entitys
|
||||
[Column("SuccessSync")]
|
||||
public SyncStatus SuccessSync { get; set; } = SyncStatus.Fail;
|
||||
/// <summary>
|
||||
/// 箱Id
|
||||
/// </summary>
|
||||
[Column("BoxId")]
|
||||
public int BoxId { get; set; }
|
||||
/// <summary>
|
||||
/// 物料ID
|
||||
/// </summary>
|
||||
[Column("MaterialId")]
|
||||
public int MaterialId { get; set; }
|
||||
/// <summary>
|
||||
/// 组织编码
|
||||
/// </summary>
|
||||
[Column("OrgCode")]
|
||||
public string OrgCode { get; set; }
|
||||
/// <summary>
|
||||
/// 仓库
|
||||
/// </summary>
|
||||
[Column("StockCode")]
|
||||
public string StockCode { get; set; }
|
||||
/// <summary>
|
||||
/// 仓位
|
||||
/// </summary>
|
||||
[Column("SubStockId")]
|
||||
public int SubStockId { get; set; }
|
||||
/// <summary>
|
||||
/// 子仓库(跟金蝶交互字段)
|
||||
/// </summary>
|
||||
[Column("Erp_SubStockId")]
|
||||
public int Erp_SubStockId { get; set; }
|
||||
/// <summary>
|
||||
/// 系统库存
|
||||
/// </summary>
|
||||
[Column("BeforeQty")]
|
||||
public decimal BeforeQty { get; set; }
|
||||
/// <summary>
|
||||
/// 盘点数量
|
||||
/// </summary>
|
||||
[Column("AfterQty")]
|
||||
public decimal AfterQty { get; set; }
|
||||
/// <summary>
|
||||
/// 盈亏数量
|
||||
/// </summary>
|
||||
[Column("FinalQty")]
|
||||
public decimal FinalQty { get; set; }
|
||||
/// <summary>
|
||||
/// 盘点结果类型:1为盘盈,2位盘亏
|
||||
/// 盘点数量-系统库存 大于0为盘盈 小于0为盘亏
|
||||
/// </summary>
|
||||
@@ -102,16 +57,16 @@ namespace WMS.Web.Domain.Entitys
|
||||
[Column("ErpSyncId")]
|
||||
public string ErpSyncId { get; set; }
|
||||
/// <summary>
|
||||
/// 序列号
|
||||
/// 明细
|
||||
/// </summary>
|
||||
[Column("SerialNumbers")]
|
||||
public List<string> SerialNumbers { get; set; } = new List<string>();
|
||||
public List<TakeStockDetails> Details { get; set; } = new List<TakeStockDetails>();
|
||||
/// <summary>
|
||||
/// 创建
|
||||
/// </summary>
|
||||
/// <param name="creatorId"></param>
|
||||
public void Create(int creatorId)
|
||||
public void Create(int creatorId, TakeStockType resultType)
|
||||
{
|
||||
this.ResultType = resultType;
|
||||
this.CreatorId = creatorId;
|
||||
this.Date = DateTime.Now;
|
||||
}
|
||||
|
||||
@@ -36,39 +36,44 @@ namespace WMS.Web.Domain.Entitys
|
||||
[Column("MaterialId")]
|
||||
public int MaterialId { get; set; }
|
||||
/// <summary>
|
||||
/// 仓库ID
|
||||
/// 组织编码
|
||||
/// </summary>
|
||||
[Column("StockId")]
|
||||
public int StockId { get; set; }
|
||||
[Column("OrgCode")]
|
||||
public string OrgCode { get; set; }
|
||||
/// <summary>
|
||||
/// 仓位ID
|
||||
/// 仓库
|
||||
/// </summary>
|
||||
[Column("StockCode")]
|
||||
public string StockCode { get; set; }
|
||||
/// <summary>
|
||||
/// 仓位
|
||||
/// </summary>
|
||||
[Column("SubStockId")]
|
||||
public int SubStockId { get; set; }
|
||||
/// <summary>
|
||||
/// 盘点前数量(wms系统数量)
|
||||
/// 子仓库(跟金蝶交互字段)
|
||||
/// </summary>
|
||||
[Column("Erp_SubStockId")]
|
||||
public int Erp_SubStockId { get; set; }
|
||||
/// <summary>
|
||||
/// 系统库存
|
||||
/// </summary>
|
||||
[Column("BeforeQty")]
|
||||
public decimal BeforeQty { get; set; }
|
||||
/// <summary>
|
||||
/// 盘点实际数量(实际仓库数量)
|
||||
/// 盘点数量
|
||||
/// </summary>
|
||||
[Column("AfterQty")]
|
||||
public decimal AfterQty { get; set; }
|
||||
/// <summary>
|
||||
/// 盘点后数量
|
||||
/// 盈亏数量
|
||||
/// </summary>
|
||||
[Column("FinalQty")]
|
||||
public decimal FinalQty { get; set; }
|
||||
/// <summary>
|
||||
/// 盘点结果类型:1为盘盈,2位盘亏
|
||||
/// 序列号
|
||||
/// </summary>
|
||||
[Column("ResultType")]
|
||||
public TakeStockType ResultType { get; set; } = TakeStockType.Profit;
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
[Column("Remark")]
|
||||
public string Remark { get; set; }
|
||||
[Column("SerialNumbers")]
|
||||
public List<string> SerialNumbers { get; set; } = new List<string>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,12 +15,9 @@ namespace WMS.Web.Domain.Mappers
|
||||
CreateMap<TakeStock, TakeStock>();
|
||||
|
||||
CreateMap<SaveTakeStockRequest, TakeStockDetails>()
|
||||
.ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss))
|
||||
.ForMember(x => x.FinalQty, ops => ops.MapFrom(x => Math.Abs(x.AfterQty - x.BeforeQty)));
|
||||
CreateMap<SaveTakeStockRequest, TakeStock>()
|
||||
.ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss))
|
||||
.ForMember(x => x.FinalQty, ops => ops.MapFrom(x => Math.Abs(x.AfterQty - x.BeforeQty)))
|
||||
.ForMember(x => x.Erp_SubStockId, ops => ops.MapFrom(x => x.Erp_SubStockId ?? 0));
|
||||
.ForMember(x => x.FinalQty, ops => ops.MapFrom(x => Math.Abs(x.AfterQty - x.BeforeQty)))
|
||||
.ForMember(x => x.Erp_SubStockId, ops => ops.MapFrom(x => x.Erp_SubStockId ?? 0));
|
||||
CreateMap<SaveTakeStockRequest, TakeStock>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,14 +64,36 @@ namespace WMS.Web.Domain.Services
|
||||
/// <returns></returns>
|
||||
public async Task<Result> Save(List<SaveTakeStockRequest> dto, LoginInDto loginInfo)
|
||||
{
|
||||
_logger.LogInformation($"盘点保存:{JsonConvert.SerializeObject(dto)} 盘点人:{loginInfo.UserInfo.StaffId}" );
|
||||
List<TakeStock> list = _mapper.Map<List<TakeStock>>(dto);
|
||||
foreach (var entity in list)
|
||||
_logger.LogInformation($"盘点保存:{JsonConvert.SerializeObject(dto)} 盘点人:{loginInfo.UserInfo.StaffId}");
|
||||
List<TakeStock> list = new List<TakeStock>();
|
||||
var profitList = dto.Where(w => w.AfterQty >= w.BeforeQty).ToList();//盘盈
|
||||
var lossList = dto.Where(w => w.AfterQty < w.BeforeQty).ToList();//盘亏
|
||||
|
||||
if (profitList.Count() > 0)
|
||||
{
|
||||
var subStock = await _transactionRepositories.GetSubUcStockAsync(entity.SubStockId, loginInfo.UserInfo.CompanyId);
|
||||
entity.Create(loginInfo.UserInfo.StaffId);
|
||||
entity.OrgCode = subStock?.ErpOrgCode;
|
||||
entity.StockCode = subStock?.StockCode;
|
||||
TakeStock takeStock = new TakeStock();
|
||||
takeStock.Create(loginInfo.UserInfo.StaffId, TakeStockType.Profit);
|
||||
takeStock.Details = _mapper.Map<List<TakeStockDetails>>(dto);
|
||||
foreach(var d in takeStock.Details)
|
||||
{
|
||||
var subStock = await _transactionRepositories.GetSubUcStockAsync(d.SubStockId, loginInfo.UserInfo.CompanyId);
|
||||
d.OrgCode = subStock?.ErpOrgCode;
|
||||
d.StockCode = subStock?.StockCode;
|
||||
}
|
||||
list.Add(takeStock);
|
||||
}
|
||||
if (lossList.Count() > 0)
|
||||
{
|
||||
TakeStock takeStock = new TakeStock();
|
||||
takeStock.Create(loginInfo.UserInfo.StaffId, TakeStockType.Loss);
|
||||
takeStock.Details = _mapper.Map<List<TakeStockDetails>>(dto);
|
||||
foreach (var d in takeStock.Details)
|
||||
{
|
||||
var subStock = await _transactionRepositories.GetSubUcStockAsync(d.SubStockId, loginInfo.UserInfo.CompanyId);
|
||||
d.OrgCode = subStock?.ErpOrgCode;
|
||||
d.StockCode = subStock?.StockCode;
|
||||
}
|
||||
list.Add(takeStock);
|
||||
}
|
||||
|
||||
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
|
||||
@@ -125,33 +147,38 @@ namespace WMS.Web.Domain.Services
|
||||
{
|
||||
//获取金蝶仓库仓位编码
|
||||
//var stockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.StockId);
|
||||
var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.SubStockId);
|
||||
//var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.SubStockId);
|
||||
var materials_result = await _erpService.BillQueryForMaterial();
|
||||
var materials = materials_result.Data.ToList();
|
||||
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, entity.MaterialId);
|
||||
|
||||
var res = await _erpService.BillQueryForStock();
|
||||
var resSub = await _erpService.BillQueryForSubStock();
|
||||
var stock = res.Data.FirstOrDefault(f => f.Code == entity.StockCode);//需要根据单点code搜索
|
||||
var subStock = resSub.Data.FirstOrDefault(f => f.Code == subStockCode);//需要根据单点code搜索
|
||||
var stock = res.Data.FirstOrDefault(f => f.Code == entity.Details[0].StockCode);//需要根据单点code搜索
|
||||
if (stock == null) return Result.ReFailure(ResultCodes.ErpStockNoData);
|
||||
//组装dto
|
||||
#region 组装dto
|
||||
//子仓库 ORICO_JD:1000008 GD:1000005 HD:1000007 AD:1000004
|
||||
List<ErpTakeStockDetailsSaveDto> detils = new List<ErpTakeStockDetailsSaveDto>();
|
||||
detils.Add(new ErpTakeStockDetailsSaveDto()
|
||||
foreach (var d in entity.Details)
|
||||
{
|
||||
FOwnerid = new ErpNumberDto(stock.OrgCode.ToString()),
|
||||
FKeeperId = new ErpNumberDto(stock.OrgCode.ToString()),
|
||||
MaterialId = new ErpNumberDto(_erpBasicDataExtendService.GetMaterialNumber(materials, entity.MaterialId)),
|
||||
UnitId = new ErpNumberDto(unitNumber), //物料带出来
|
||||
StockId = new ErpNumberDto(stock.Code),
|
||||
SubStockId = new ErpSubStockDto(stock.Code, resSub.Data.FirstOrDefault(f => f.Id == entity.Erp_SubStockId)?.Code),
|
||||
BeforeQty = entity.BeforeQty,
|
||||
AfterQty = entity.AfterQty,
|
||||
FinalQty = entity.ResultType == TakeStockType.Profit ? entity.FinalQty : 0,
|
||||
LossQty = entity.ResultType == TakeStockType.Loss ? entity.FinalQty : 0,
|
||||
Fnote = entity.ResultType == TakeStockType.Loss ? "wms盘亏单同步" : "wms盘盈单同步"
|
||||
});
|
||||
var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, d.SubStockId);
|
||||
var subStock = resSub.Data.FirstOrDefault(f => f.Code == subStockCode);//需要根据单点code搜索
|
||||
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId);
|
||||
detils.Add(new ErpTakeStockDetailsSaveDto()
|
||||
{
|
||||
FOwnerid = new ErpNumberDto(stock.OrgCode.ToString()),
|
||||
FKeeperId = new ErpNumberDto(stock.OrgCode.ToString()),
|
||||
MaterialId = new ErpNumberDto(_erpBasicDataExtendService.GetMaterialNumber(materials, d.MaterialId)),
|
||||
UnitId = new ErpNumberDto(unitNumber), //物料带出来
|
||||
StockId = new ErpNumberDto(stock.Code),
|
||||
SubStockId = new ErpSubStockDto(stock.Code, resSub.Data.FirstOrDefault(f => f.Id == d.Erp_SubStockId)?.Code),
|
||||
BeforeQty = d.BeforeQty,
|
||||
AfterQty = d.AfterQty,
|
||||
FinalQty = entity.ResultType == TakeStockType.Profit ? d.FinalQty : 0,
|
||||
LossQty = entity.ResultType == TakeStockType.Loss ? d.FinalQty : 0,
|
||||
Fnote = entity.ResultType == TakeStockType.Loss ? "wms盘亏单同步" : "wms盘盈单同步"
|
||||
});
|
||||
}
|
||||
ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto()
|
||||
{
|
||||
BillNo = entity.BillNo,
|
||||
|
||||
Reference in New Issue
Block a user