0614
parent
45150bfe78
commit
7281564696
|
@ -0,0 +1,46 @@
|
||||||
|
using Admin.NET.Core;
|
||||||
|
namespace Admin.NET.Application.Entity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("DistributorInvoice","分销出库")]
|
||||||
|
public class DistributorInvoice : EntityTenant
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "WarehouseId", ColumnDescription = "仓库ID")]
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "TargetWarehouseId", ColumnDescription = "目标仓库ID")]
|
||||||
|
public long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "DistributorId", ColumnDescription = "分销商ID")]
|
||||||
|
public long? DistributorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "Distributor", ColumnDescription = "分销商", Length = 32)]
|
||||||
|
public string? Distributor { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "StartDate", ColumnDescription = "业务日期")]
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "Remarks", ColumnDescription = "备注", Length = 32)]
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ namespace Admin.NET.Application.Entity;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 发货通知单
|
/// 发货通知单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarTable("Invoice","发货通知单")]
|
[SugarTable("invoice","发货通知单")]
|
||||||
public class Invoice : EntityTenant
|
public class Invoice : EntityTenant
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -22,18 +22,21 @@ public class Invoice : EntityTenant
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 业务类型
|
/// 业务类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Required]
|
||||||
[SugarColumn(ColumnName = "BusinessType", ColumnDescription = "业务类型", Length = 32)]
|
[SugarColumn(ColumnName = "BusinessType", ColumnDescription = "业务类型", Length = 32)]
|
||||||
public string BusinessType { get; set; }
|
public string BusinessType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 客户
|
/// 客户
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Required]
|
||||||
[SugarColumn(ColumnName = "Custom", ColumnDescription = "客户", Length = 32)]
|
[SugarColumn(ColumnName = "Custom", ColumnDescription = "客户", Length = 32)]
|
||||||
public string Custom { get; set; }
|
public string Custom { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 仓库
|
/// 仓库
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Required]
|
||||||
[SugarColumn(ColumnName = "Warehouse", ColumnDescription = "仓库", Length = 32)]
|
[SugarColumn(ColumnName = "Warehouse", ColumnDescription = "仓库", Length = 32)]
|
||||||
public string Warehouse { get; set; }
|
public string Warehouse { get; set; }
|
||||||
|
|
||||||
|
@ -97,4 +100,10 @@ public class Invoice : EntityTenant
|
||||||
[SugarColumn(ColumnName = "SendOutExpand", ColumnDescription = "发货拓展", Length = 32)]
|
[SugarColumn(ColumnName = "SendOutExpand", ColumnDescription = "发货拓展", Length = 32)]
|
||||||
public string? SendOutExpand { get; set; }
|
public string? SendOutExpand { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "WarehouseId", ColumnDescription = "仓库ID")]
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ namespace Admin.NET.Application.Entity;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 出库单
|
/// 出库单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarTable("Outbound","出库单")]
|
[SugarTable("outbound","出库单")]
|
||||||
public class Outbound : EntityTenant
|
public class Outbound : EntityTenant
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -16,15 +16,10 @@ public class Outbound : EntityTenant
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 来源单号
|
/// 来源单号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Required]
|
||||||
[SugarColumn(ColumnName = "SourceCodeNum", ColumnDescription = "来源单号", Length = 32)]
|
[SugarColumn(ColumnName = "SourceCodeNum", ColumnDescription = "来源单号", Length = 32)]
|
||||||
public string SourceCodeNum { get; set; }
|
public string SourceCodeNum { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 业务日期
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "StartDate", ColumnDescription = "业务日期", Length = 32)]
|
|
||||||
public string? StartDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 状态
|
/// 状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -40,15 +35,10 @@ public class Outbound : EntityTenant
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 收货单位
|
/// 收货单位
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Required]
|
||||||
[SugarColumn(ColumnName = "Consignee", ColumnDescription = "收货单位", Length = 32)]
|
[SugarColumn(ColumnName = "Consignee", ColumnDescription = "收货单位", Length = 32)]
|
||||||
public string Consignee { get; set; }
|
public string Consignee { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 仓库
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "Warehouse", ColumnDescription = "仓库")]
|
|
||||||
public string? Warehouse { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 审核人ID
|
/// 审核人ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -67,4 +57,22 @@ public class Outbound : EntityTenant
|
||||||
[SugarColumn(ColumnName = "OutboundExpandString", ColumnDescription = "出库单字符串拓展字段", Length = 64)]
|
[SugarColumn(ColumnName = "OutboundExpandString", ColumnDescription = "出库单字符串拓展字段", Length = 64)]
|
||||||
public string? OutboundExpandString { get; set; }
|
public string? OutboundExpandString { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "Warehouse", ColumnDescription = "仓库", Length = 255)]
|
||||||
|
public string? Warehouse { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "StartDate", ColumnDescription = "业务日期")]
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "WarehouseId", ColumnDescription = "仓库ID")]
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
using Admin.NET.Core;
|
||||||
|
namespace Admin.NET.Application.Entity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("OutboundDetail","出库详细")]
|
||||||
|
public class OutboundDetail : EntityBaseId
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 出库单ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "OutboundId", ColumnDescription = "出库单ID")]
|
||||||
|
public long? OutboundId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 条码ID列表
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "CodeTableIds", ColumnDescription = "条码ID列表", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||||
|
[Required]
|
||||||
|
public string? CodeTableIds { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ namespace Admin.NET.Application.Entity;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 打印条码详情
|
/// 打印条码详情
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarTable("PrintCodeDetail","打印条码详情")]
|
[SugarTable("printcodedetail","打印条码详情")]
|
||||||
public class PrintCodeDetail : EntityBase
|
public class PrintCodeDetail : EntityBase
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -97,4 +97,10 @@ public class PrintCodeDetail : EntityBase
|
||||||
[SugarColumn(ColumnName = "FatherId", ColumnDescription = "父节点ID")]
|
[SugarColumn(ColumnName = "FatherId", ColumnDescription = "父节点ID")]
|
||||||
public long? FatherId { get; set; }
|
public long? FatherId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "MaterialsId", ColumnDescription = "物料ID")]
|
||||||
|
public long? MaterialsId { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
using Admin.NET.Core;
|
||||||
|
namespace Admin.NET.Application.Entity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("warehousetransfer","调库出库")]
|
||||||
|
public class WarehouseTransfer : EntityTenant
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 原仓库ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "WarehouseId", ColumnDescription = "原仓库ID")]
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "TargetWarehouseId", ColumnDescription = "目标仓库ID")]
|
||||||
|
public long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "StartDate", ColumnDescription = "业务日期")]
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "Remarks", ColumnDescription = "备注", Length = 32)]
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -114,10 +114,12 @@ public class DistributorService : IDynamicApiController, ITransient
|
||||||
[ApiDescriptionSettings(Name = "List")]
|
[ApiDescriptionSettings(Name = "List")]
|
||||||
public async Task<List<DistributorOutput>> List()
|
public async Task<List<DistributorOutput>> List()
|
||||||
{
|
{
|
||||||
return await _rep.AsQueryable().Where(a => !a.IsDelete).Select<DistributorOutput>().ToListAsync();
|
return await _rep.AsQueryable().Select<DistributorOutput>().Where(a => !a.IsDelete).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,286 @@
|
||||||
|
using Admin.NET.Core.Service;
|
||||||
|
using Admin.NET.Application.Const;
|
||||||
|
using Admin.NET.Application.Entity;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库服务
|
||||||
|
/// </summary>
|
||||||
|
[ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)]
|
||||||
|
public class DistributorInvoiceService : IDynamicApiController, ITransient
|
||||||
|
{
|
||||||
|
private readonly SqlSugarRepository<DistributorInvoice> _rep;
|
||||||
|
private readonly PrintCodeDetailService _codeDetailService;
|
||||||
|
private readonly ProductRetrospectService _productRetrospect;
|
||||||
|
private readonly ReportTableService _reportTableService;
|
||||||
|
private readonly OutboundService _outboundService;
|
||||||
|
private readonly OutboundDetailService _outboundDetailService;
|
||||||
|
private readonly UserManager _userManager;
|
||||||
|
public DistributorInvoiceService(SqlSugarRepository<DistributorInvoice> rep,
|
||||||
|
UserManager userManager,
|
||||||
|
PrintCodeDetailService codeDetailService,
|
||||||
|
ReportTableService reportTableService,
|
||||||
|
OutboundService outboundService,
|
||||||
|
OutboundDetailService outboundDetailService,
|
||||||
|
ProductRetrospectService productRetrospect)
|
||||||
|
{
|
||||||
|
_rep = rep;
|
||||||
|
_userManager = userManager;
|
||||||
|
_codeDetailService = codeDetailService;
|
||||||
|
_productRetrospect = productRetrospect;
|
||||||
|
_reportTableService = reportTableService;
|
||||||
|
_outboundService = outboundService;
|
||||||
|
_outboundDetailService = outboundDetailService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询分销出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Page")]
|
||||||
|
public async Task<SqlSugarPagedList<DistributorInvoiceOutput>> Page(DistributorInvoiceInput input)
|
||||||
|
{
|
||||||
|
var query = _rep.AsQueryable().Where(a => !a.IsDelete)
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
|
||||||
|
u.Distributor.Contains(input.SearchKey.Trim())
|
||||||
|
|| u.Remarks.Contains(input.SearchKey.Trim())
|
||||||
|
)
|
||||||
|
.WhereIF(input.WarehouseId>0, u => u.WarehouseId == input.WarehouseId)
|
||||||
|
.WhereIF(input.TargetWarehouseId>0, u => u.TargetWarehouseId == input.TargetWarehouseId)
|
||||||
|
.WhereIF(input.DistributorId>0, u => u.DistributorId == input.DistributorId)
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Distributor), u => u.Distributor.Contains(input.Distributor.Trim()))
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Remarks), u => u.Remarks.Contains(input.Remarks.Trim()))
|
||||||
|
.Select<DistributorInvoiceOutput>();
|
||||||
|
if(input.StartDateRange != null && input.StartDateRange.Count >0)
|
||||||
|
{
|
||||||
|
DateTime? start= input.StartDateRange[0];
|
||||||
|
query = query.WhereIF(start.HasValue, u => u.StartDate > start);
|
||||||
|
if (input.StartDateRange.Count >1 && input.StartDateRange[1].HasValue)
|
||||||
|
{
|
||||||
|
var end = input.StartDateRange[1].Value.AddDays(1);
|
||||||
|
query = query.Where(u => u.StartDate < end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 增加分销出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Add")]
|
||||||
|
public async Task<long> Add(AddDistributorInvoiceInput input)
|
||||||
|
{
|
||||||
|
var entity = input.Adapt<DistributorInvoice>();
|
||||||
|
await _rep.InsertAsync(entity);
|
||||||
|
return entity.Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除分销出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Delete")]
|
||||||
|
public async Task Delete(DeleteDistributorInvoiceInput input)
|
||||||
|
{
|
||||||
|
var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
||||||
|
await _rep.FakeDeleteAsync(entity); //假删除
|
||||||
|
//await _rep.DeleteAsync(entity); //真删除
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新分销出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Update")]
|
||||||
|
public async Task Update(UpdateDistributorInvoiceInput input)
|
||||||
|
{
|
||||||
|
var entity = input.Adapt<DistributorInvoice>();
|
||||||
|
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取分销出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "Detail")]
|
||||||
|
public async Task<DistributorInvoice> Detail([FromQuery] QueryByIdDistributorInvoiceInput input)
|
||||||
|
{
|
||||||
|
return await _rep.GetFirstAsync(u => u.Id == input.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取分销出库列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "List")]
|
||||||
|
public async Task<List<DistributorInvoiceOutput>> List()
|
||||||
|
{
|
||||||
|
return await _rep.AsQueryable().Select<DistributorInvoiceOutput>().Where(a => !a.IsDelete).ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 商品出货
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "ShipmentProduct")]
|
||||||
|
public async Task ShipmentProduct(AddProductCodeInput input)
|
||||||
|
{
|
||||||
|
if (input == null || input.WarehousingTableId == null || input.CodeDatas == null || input.CodeDatas.Count == 0)
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var invoice = await Detail(new QueryByIdDistributorInvoiceInput() { Id = input.WarehousingTableId.Value });
|
||||||
|
if (invoice == null)
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
|
}
|
||||||
|
var codes = string.IsNullOrEmpty(input.CodeDatas[0].BarCode) ? input.CodeDatas.ConvertAll(a => a.QrCode) : input.CodeDatas.ConvertAll(a => a.BarCode);
|
||||||
|
var details = (await _codeDetailService.List()).FindAll(a => !string.IsNullOrEmpty(a.FatherCode));
|
||||||
|
var repeatCodes = details.Where(a => !a.IsDelete && codes.Any(b => b == a.Code)).ToList();
|
||||||
|
if (repeatCodes == null || repeatCodes.Count < 1)
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
|
}
|
||||||
|
|
||||||
|
var userId = _userManager.UserId;
|
||||||
|
var userName = _userManager.RealName;
|
||||||
|
var addOutbound = new AddOutboundInput()
|
||||||
|
{
|
||||||
|
//BusinessType = invoice.BusinessType,
|
||||||
|
//CodeNum = invoice.CodeNum,
|
||||||
|
//Consignee = invoice.Consignee,
|
||||||
|
CreateTime = invoice.CreateTime,
|
||||||
|
CreateUserId = userId,
|
||||||
|
CreateUserName = userName,
|
||||||
|
SourceCodeNum = invoice.Id.ToString(),
|
||||||
|
StartDate = invoice.StartDate,
|
||||||
|
State = 0,
|
||||||
|
//Warehouse = invoice.Warehouse,
|
||||||
|
WarehouseId = invoice.WarehouseId,
|
||||||
|
TenantId = invoice.TenantId,
|
||||||
|
};
|
||||||
|
var outbound = await _outboundService.Add(addOutbound);
|
||||||
|
|
||||||
|
|
||||||
|
var codeIds = new List<long>();
|
||||||
|
var list = new List<PrintCodeDetailOutput>();
|
||||||
|
foreach (var c1 in repeatCodes)
|
||||||
|
{
|
||||||
|
codeIds.Add(c1.Id);
|
||||||
|
c1.WarehouseID = null;
|
||||||
|
//c1.FatherCode = null;
|
||||||
|
//c1.FatherId = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(c1.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(c1);
|
||||||
|
var child1 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child1 != null)
|
||||||
|
{
|
||||||
|
child1.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child1.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child1);
|
||||||
|
|
||||||
|
var child2 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child2 != null)
|
||||||
|
{
|
||||||
|
child2.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child2.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child2);
|
||||||
|
|
||||||
|
var child3 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child3 != null)
|
||||||
|
{
|
||||||
|
child3.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child3.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child3);
|
||||||
|
|
||||||
|
var child4 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child4 != null)
|
||||||
|
{
|
||||||
|
child4.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child4.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var addOutboundDetail = new AddOutboundDetailInput() { CodeTableIds = string.Join(",", codeIds), OutboundId = outbound };
|
||||||
|
await _outboundDetailService.Add(addOutboundDetail);
|
||||||
|
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
var report = await GetReport(item.ReportTableId);
|
||||||
|
var retrospect1 = new AddProductRetrospectInput()
|
||||||
|
{
|
||||||
|
BaseCount = item.BaseCount,
|
||||||
|
BaseUnit = item.BaseUnit,
|
||||||
|
//Batch = report.Batch,
|
||||||
|
BusinessType = report.ProductType,
|
||||||
|
CodeType = item.CodeName,
|
||||||
|
Location = addOutbound.Consignee,
|
||||||
|
Department = report.ProductionLine,
|
||||||
|
//WarehouseID = input.WarehouseId,
|
||||||
|
WarehousingDate = DateTime.Now,
|
||||||
|
Count = 1,
|
||||||
|
CreateTime = DateTime.Now,
|
||||||
|
ScanCodeTime = DateTime.Now,
|
||||||
|
CreateUserId = userId,
|
||||||
|
CreateUserName = userName,
|
||||||
|
MaterialsId = report.MaterialsId,
|
||||||
|
OddNumber = report.OddNumber,
|
||||||
|
Receipt = "分销出库单",
|
||||||
|
SourceId = outbound,
|
||||||
|
Unit = item.Unit,
|
||||||
|
Name = item.CodeName,
|
||||||
|
Code = item.Code,
|
||||||
|
//Destination = invoice.Consignee
|
||||||
|
};
|
||||||
|
await _productRetrospect.Add(retrospect1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static Dictionary<long, ReportTable> reportDic = new Dictionary<long, ReportTable>();
|
||||||
|
private async Task<ReportTable> GetReport(long? reportId)
|
||||||
|
{
|
||||||
|
if (reportId == null)
|
||||||
|
{
|
||||||
|
return new ReportTable();
|
||||||
|
}
|
||||||
|
if (reportDic.ContainsKey(reportId.Value))
|
||||||
|
{
|
||||||
|
return reportDic[reportId.Value];
|
||||||
|
}
|
||||||
|
var report = await _reportTableService.GetBySource(reportId);
|
||||||
|
if (report == null)
|
||||||
|
{
|
||||||
|
return new ReportTable();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库输出参数
|
||||||
|
/// </summary>
|
||||||
|
public class DistributorInvoiceDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商ID
|
||||||
|
/// </summary>
|
||||||
|
public long? DistributorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商
|
||||||
|
/// </summary>
|
||||||
|
public string? Distributor { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 租户Id
|
||||||
|
/// </summary>
|
||||||
|
public long? TenantId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CreateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? UpdateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者Id
|
||||||
|
/// </summary>
|
||||||
|
public long? CreateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者姓名
|
||||||
|
/// </summary>
|
||||||
|
public string? CreateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者Id
|
||||||
|
/// </summary>
|
||||||
|
public long? UpdateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者姓名
|
||||||
|
/// </summary>
|
||||||
|
public string? UpdateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 软删除
|
||||||
|
/// </summary>
|
||||||
|
public bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,168 @@
|
||||||
|
using Admin.NET.Core;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库基础输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class DistributorInvoiceBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商ID
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? DistributorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? Distributor { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
public virtual DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 租户Id
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? TenantId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public virtual DateTime? CreateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新时间
|
||||||
|
/// </summary>
|
||||||
|
public virtual DateTime? UpdateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者Id
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? CreateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者姓名
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? CreateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者Id
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? UpdateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者姓名
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? UpdateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 软删除
|
||||||
|
/// </summary>
|
||||||
|
public virtual bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库分页查询输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class DistributorInvoiceInput : BasePageInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 关键字查询
|
||||||
|
/// </summary>
|
||||||
|
public string? SearchKey { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商ID
|
||||||
|
/// </summary>
|
||||||
|
public long? DistributorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商
|
||||||
|
/// </summary>
|
||||||
|
public string? Distributor { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期范围
|
||||||
|
/// </summary>
|
||||||
|
public List<DateTime?> StartDateRange { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库增加输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class AddDistributorInvoiceInput : DistributorInvoiceBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 软删除
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "软删除不能为空")]
|
||||||
|
public override bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库删除输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class DeleteDistributorInvoiceInput : BaseIdInput
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库更新输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class UpdateDistributorInvoiceInput : DistributorInvoiceBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "主键Id不能为空")]
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库主键查询输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class QueryByIdDistributorInvoiceInput : DeleteDistributorInvoiceInput
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销出库输出参数
|
||||||
|
/// </summary>
|
||||||
|
public class DistributorInvoiceOutput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商ID
|
||||||
|
/// </summary>
|
||||||
|
public long? DistributorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分销商
|
||||||
|
/// </summary>
|
||||||
|
public string? Distributor { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 租户Id
|
||||||
|
/// </summary>
|
||||||
|
public long? TenantId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CreateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? UpdateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者Id
|
||||||
|
/// </summary>
|
||||||
|
public long? CreateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者姓名
|
||||||
|
/// </summary>
|
||||||
|
public string? CreateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者Id
|
||||||
|
/// </summary>
|
||||||
|
public long? UpdateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者姓名
|
||||||
|
/// </summary>
|
||||||
|
public string? UpdateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 软删除
|
||||||
|
/// </summary>
|
||||||
|
public bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,12 @@
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Warehouse { get; set; }
|
public string Warehouse { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 部门
|
/// 部门
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -33,6 +33,11 @@ namespace Admin.NET.Application;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string Warehouse { get; set; }
|
public virtual string Warehouse { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 部门
|
/// 部门
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -164,6 +169,11 @@ namespace Admin.NET.Application;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Warehouse { get; set; }
|
public string? Warehouse { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 部门
|
/// 部门
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -35,6 +35,11 @@ public class InvoiceOutput
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Warehouse { get; set; }
|
public string Warehouse { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 部门
|
/// 部门
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
using Admin.NET.Application.Const;
|
using Admin.NET.Application.Const;
|
||||||
using Admin.NET.Application.Entity;
|
using Admin.NET.Application.Entity;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using NewLife.Reflection;
|
||||||
|
|
||||||
namespace Admin.NET.Application;
|
namespace Admin.NET.Application;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 发货通知单服务
|
/// 发货通知单服务
|
||||||
|
@ -10,27 +12,27 @@ namespace Admin.NET.Application;
|
||||||
public class InvoiceService : IDynamicApiController, ITransient
|
public class InvoiceService : IDynamicApiController, ITransient
|
||||||
{
|
{
|
||||||
private readonly SqlSugarRepository<Invoice> _rep;
|
private readonly SqlSugarRepository<Invoice> _rep;
|
||||||
private readonly MaterialsService _materialsService;
|
|
||||||
private readonly SysUnitService _sysUnitService;
|
|
||||||
private readonly PrintCodeDetailService _codeDetailService;
|
private readonly PrintCodeDetailService _codeDetailService;
|
||||||
private readonly ProductRetrospectService _productRetrospect;
|
private readonly ProductRetrospectService _productRetrospect;
|
||||||
private readonly ReportTableService _reportTableService;
|
private readonly ReportTableService _reportTableService;
|
||||||
|
private readonly OutboundService _outboundService;
|
||||||
|
private readonly OutboundDetailService _outboundDetailService;
|
||||||
private readonly UserManager _userManager;
|
private readonly UserManager _userManager;
|
||||||
public InvoiceService(SqlSugarRepository<Invoice> rep,
|
public InvoiceService(SqlSugarRepository<Invoice> rep,
|
||||||
UserManager userManager,
|
UserManager userManager,
|
||||||
MaterialsService materialsService,
|
|
||||||
SysUnitService sysUnitService,
|
|
||||||
PrintCodeDetailService codeDetailService,
|
PrintCodeDetailService codeDetailService,
|
||||||
ReportTableService reportTableService,
|
ReportTableService reportTableService,
|
||||||
|
OutboundService outboundService,
|
||||||
|
OutboundDetailService outboundDetailService,
|
||||||
ProductRetrospectService productRetrospect)
|
ProductRetrospectService productRetrospect)
|
||||||
{
|
{
|
||||||
_rep = rep;
|
_rep = rep;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
_materialsService = materialsService;
|
|
||||||
_sysUnitService = sysUnitService;
|
|
||||||
_codeDetailService = codeDetailService;
|
_codeDetailService = codeDetailService;
|
||||||
_productRetrospect = productRetrospect;
|
_productRetrospect = productRetrospect;
|
||||||
_reportTableService = reportTableService;
|
_reportTableService = reportTableService;
|
||||||
|
_outboundService = outboundService;
|
||||||
|
_outboundDetailService = outboundDetailService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -168,50 +170,117 @@ public class InvoiceService : IDynamicApiController, ITransient
|
||||||
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
}
|
}
|
||||||
|
|
||||||
var repeatCodes = await _codeDetailService.GetRepeat(input.CodeDatas);
|
|
||||||
|
|
||||||
var invoice = await Detail(new QueryByIdInvoiceInput() { Id = input.WarehousingTableId.Value });
|
var invoice = await Detail(new QueryByIdInvoiceInput() { Id = input.WarehousingTableId.Value });
|
||||||
if (invoice == null)
|
if (invoice == null)
|
||||||
{
|
{
|
||||||
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
}
|
}
|
||||||
|
var codes = string.IsNullOrEmpty(input.CodeDatas[0].BarCode) ? input.CodeDatas.ConvertAll(a => a.QrCode) : input.CodeDatas.ConvertAll(a => a.BarCode);
|
||||||
|
var details = (await _codeDetailService.List()).FindAll(a => !string.IsNullOrEmpty(a.FatherCode));
|
||||||
|
var repeatCodes = details.Where(a => !a.IsDelete && codes.Any(b => b == a.Code)).ToList();
|
||||||
|
if (repeatCodes == null || repeatCodes.Count < 1)
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
|
}
|
||||||
|
|
||||||
|
var userId = _userManager.UserId;
|
||||||
|
var userName = _userManager.RealName;
|
||||||
|
var addOutbound = new AddOutboundInput()
|
||||||
|
{
|
||||||
|
BusinessType = invoice.BusinessType,
|
||||||
|
CodeNum = invoice.CodeNum,
|
||||||
|
Consignee = invoice.Consignee,
|
||||||
|
CreateTime = invoice.CreateTime,
|
||||||
|
CreateUserId = userId,
|
||||||
|
CreateUserName = userName,
|
||||||
|
SourceCodeNum = invoice.Id.ToString(),
|
||||||
|
StartDate = invoice.StartDate,
|
||||||
|
State = 0,
|
||||||
|
Warehouse = invoice.Warehouse,
|
||||||
|
WarehouseId = invoice.WarehouseId,
|
||||||
|
TenantId = invoice.TenantId,
|
||||||
|
};
|
||||||
|
var outbound = await _outboundService.Add(addOutbound);
|
||||||
|
|
||||||
|
|
||||||
|
var codeIds = new List<long>();
|
||||||
|
var list = new List<PrintCodeDetailOutput>();
|
||||||
|
foreach (var c1 in repeatCodes)
|
||||||
|
{
|
||||||
|
codeIds.Add(c1.Id);
|
||||||
|
c1.WarehouseID = null;
|
||||||
|
//c1.FatherCode = null;
|
||||||
|
//c1.FatherId = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(c1.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(c1);
|
||||||
|
var child1 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child1!=null)
|
||||||
|
{
|
||||||
|
child1.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child1.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child1);
|
||||||
|
|
||||||
//var units = await _sysUnitService.ListByGroupId(materials.UnitGroupId);
|
var child2 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
//var baseUnit = units.FirstOrDefault().Name;
|
if (child2 != null)
|
||||||
//var userId = _userManager.UserId;
|
{
|
||||||
//var userName = _userManager.RealName;
|
child2.WarehouseID = null;
|
||||||
//var topDatas = input.CodeDatas.FindAll(a => string.IsNullOrEmpty(a.FatherCode));
|
await _codeDetailService.UpdateByEntity(child2.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child2);
|
||||||
|
|
||||||
//foreach (var dic in list)
|
var child3 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
//{
|
if (child3 != null)
|
||||||
// var item = dic.Key;
|
{
|
||||||
// var retrospect1 = new AddProductRetrospectInput()
|
child3.WarehouseID = null;
|
||||||
// {
|
await _codeDetailService.UpdateByEntity(child3.Adapt<PrintCodeDetail>());
|
||||||
// BaseCount = item.BaseCount,
|
list.Add(child3);
|
||||||
// BaseUnit = baseUnit,
|
|
||||||
// Batch = warehousing.Batch,
|
var child4 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
// BusinessType = "生产任务单",
|
if (child4 != null)
|
||||||
// CodeType = item.CodeName,
|
{
|
||||||
// Department = warehousing.ProductionLine,
|
child4.WarehouseID = null;
|
||||||
// //WarehouseID = input.WarehouseId,
|
await _codeDetailService.UpdateByEntity(child4.Adapt<PrintCodeDetail>());
|
||||||
// WarehousingDate = DateTime.Now,
|
list.Add(child4);
|
||||||
// Count = 1,
|
}
|
||||||
// CreateTime = DateTime.Now,
|
}
|
||||||
// ScanCodeTime = DateTime.Now,
|
}
|
||||||
// CreateUserId = userId,
|
}
|
||||||
// CreateUserName = userName,
|
|
||||||
// MaterialsId = dic.Value,
|
}
|
||||||
// OddNumber = warehousing.OddNumber,
|
|
||||||
// Receipt = "汇报单",
|
var addOutboundDetail = new AddOutboundDetailInput() { CodeTableIds = string.Join(",", codeIds), OutboundId = outbound };
|
||||||
// SourceId = warehousing.Id,
|
await _outboundDetailService.Add(addOutboundDetail);
|
||||||
// Unit = item.Unit,
|
|
||||||
// Name = materials.Name,
|
foreach (var item in list)
|
||||||
// Code = item.Code
|
{
|
||||||
// };//Destination = warehousing.Supplier,
|
var report = await GetReport(item.ReportTableId);
|
||||||
// await _productRetrospect.Add(retrospect1);
|
var retrospect1 = new AddProductRetrospectInput()
|
||||||
//}
|
{
|
||||||
|
BaseCount = item.BaseCount,
|
||||||
|
BaseUnit = item.BaseUnit,
|
||||||
|
//Batch = report.Batch,
|
||||||
|
BusinessType = report.ProductType,
|
||||||
|
CodeType = item.CodeName,
|
||||||
|
Location=addOutbound.Consignee,
|
||||||
|
Department = report.ProductionLine,
|
||||||
|
//WarehouseID = input.WarehouseId,
|
||||||
|
WarehousingDate = DateTime.Now,
|
||||||
|
Count = 1,
|
||||||
|
CreateTime = DateTime.Now,
|
||||||
|
ScanCodeTime = DateTime.Now,
|
||||||
|
CreateUserId = userId,
|
||||||
|
CreateUserName = userName,
|
||||||
|
MaterialsId = report.MaterialsId,
|
||||||
|
OddNumber = report.OddNumber,
|
||||||
|
Receipt = "发货通知单",
|
||||||
|
SourceId = outbound,
|
||||||
|
Unit = item.Unit,
|
||||||
|
Name = item.CodeName,
|
||||||
|
Code = item.Code,
|
||||||
|
Destination = invoice.Consignee
|
||||||
|
};
|
||||||
|
await _productRetrospect.Add(retrospect1);
|
||||||
|
}
|
||||||
|
|
||||||
//var report = await _reportTableService.GetBySource(input.WarehousingTableId);
|
//var report = await _reportTableService.GetBySource(input.WarehousingTableId);
|
||||||
//if (report == null)
|
//if (report == null)
|
||||||
|
@ -222,8 +291,27 @@ public class InvoiceService : IDynamicApiController, ITransient
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Dictionary<long, ReportTable> reportDic = new Dictionary<long, ReportTable>();
|
||||||
|
private async Task<ReportTable> GetReport(long? reportId)
|
||||||
|
{
|
||||||
|
if (reportId == null)
|
||||||
|
{
|
||||||
|
return new ReportTable();
|
||||||
|
}
|
||||||
|
if (reportDic.ContainsKey(reportId.Value))
|
||||||
|
{
|
||||||
|
return reportDic[reportId.Value];
|
||||||
|
}
|
||||||
|
var report = await _reportTableService.GetBySource(reportId);
|
||||||
|
if (report == null)
|
||||||
|
{
|
||||||
|
return new ReportTable();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 业务日期
|
/// 业务日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? StartDate { get; set; }
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 状态
|
/// 状态
|
||||||
|
@ -100,4 +100,8 @@
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Warehouse { get; set; }
|
public string? Warehouse { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Admin.NET.Application;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 业务日期
|
/// 业务日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string? StartDate { get; set; }
|
public virtual DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 状态
|
/// 状态
|
||||||
|
@ -98,6 +98,10 @@ namespace Admin.NET.Application;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string? Warehouse { get; set; }
|
public virtual string? Warehouse { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -123,7 +127,7 @@ namespace Admin.NET.Application;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 业务日期
|
/// 业务日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? StartDate { get; set; }
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 状态
|
/// 状态
|
||||||
|
|
|
@ -23,7 +23,7 @@ public class OutboundOutput
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 业务日期
|
/// 业务日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? StartDate { get; set; }
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 状态
|
/// 状态
|
||||||
|
@ -100,6 +100,11 @@ public class OutboundOutput
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Warehouse { get; set; }
|
public string? Warehouse { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
using Admin.NET.Application.Const;
|
using Admin.NET.Application.Const;
|
||||||
using Admin.NET.Application.Entity;
|
using Admin.NET.Application.Entity;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Nest;
|
||||||
|
|
||||||
namespace Admin.NET.Application;
|
namespace Admin.NET.Application;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 出库单服务
|
/// 出库单服务
|
||||||
|
@ -10,9 +12,13 @@ namespace Admin.NET.Application;
|
||||||
public class OutboundService : IDynamicApiController, ITransient
|
public class OutboundService : IDynamicApiController, ITransient
|
||||||
{
|
{
|
||||||
private readonly SqlSugarRepository<Outbound> _rep;
|
private readonly SqlSugarRepository<Outbound> _rep;
|
||||||
public OutboundService(SqlSugarRepository<Outbound> rep)
|
private readonly OutboundDetailService _outboundDetailService;
|
||||||
|
private readonly PrintCodeDetailService _codeDetailService;
|
||||||
|
public OutboundService(SqlSugarRepository<Outbound> rep, OutboundDetailService outboundDetailService, PrintCodeDetailService codeDetailService)
|
||||||
{
|
{
|
||||||
_rep = rep;
|
_rep = rep;
|
||||||
|
_outboundDetailService = outboundDetailService;
|
||||||
|
_codeDetailService = codeDetailService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -28,13 +34,11 @@ public class OutboundService : IDynamicApiController, ITransient
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
|
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
|
||||||
u.CodeNum.Contains(input.SearchKey.Trim())
|
u.CodeNum.Contains(input.SearchKey.Trim())
|
||||||
|| u.SourceCodeNum.Contains(input.SearchKey.Trim())
|
|| u.SourceCodeNum.Contains(input.SearchKey.Trim())
|
||||||
|| u.StartDate.Contains(input.SearchKey.Trim())
|
|
||||||
|| u.BusinessType.Contains(input.SearchKey.Trim())
|
|| u.BusinessType.Contains(input.SearchKey.Trim())
|
||||||
|| u.Consignee.Contains(input.SearchKey.Trim())
|
|| u.Consignee.Contains(input.SearchKey.Trim())
|
||||||
)
|
)
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(input.CodeNum), u => u.CodeNum.Contains(input.CodeNum.Trim()))
|
.WhereIF(!string.IsNullOrWhiteSpace(input.CodeNum), u => u.CodeNum.Contains(input.CodeNum.Trim()))
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(input.SourceCodeNum), u => u.SourceCodeNum.Contains(input.SourceCodeNum.Trim()))
|
.WhereIF(!string.IsNullOrWhiteSpace(input.SourceCodeNum), u => u.SourceCodeNum.Contains(input.SourceCodeNum.Trim()))
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(input.StartDate), u => u.StartDate.Contains(input.StartDate.Trim()))
|
|
||||||
.WhereIF(input.State>0, u => u.State == input.State)
|
.WhereIF(input.State>0, u => u.State == input.State)
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(input.BusinessType), u => u.BusinessType.Contains(input.BusinessType.Trim()))
|
.WhereIF(!string.IsNullOrWhiteSpace(input.BusinessType), u => u.BusinessType.Contains(input.BusinessType.Trim()))
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(input.Consignee), u => u.Consignee.Contains(input.Consignee.Trim()))
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Consignee), u => u.Consignee.Contains(input.Consignee.Trim()))
|
||||||
|
@ -108,7 +112,74 @@ public class OutboundService : IDynamicApiController, ITransient
|
||||||
return await _rep.AsQueryable().Where(a => !a.IsDelete).Select<OutboundOutput>().ToListAsync();
|
return await _rep.AsQueryable().Where(a => !a.IsDelete).Select<OutboundOutput>().ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取出库单
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "GetOutboundDetail")]
|
||||||
|
public async Task<List<PrintCodeTreeData>> GetOutboundDetail([FromQuery] QueryByIdOutboundInput input)
|
||||||
|
{
|
||||||
|
var outbound = await _outboundDetailService.GetByOutboundId(input.Id);
|
||||||
|
if (string.IsNullOrEmpty(outbound.CodeTableIds))
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
|
}
|
||||||
|
var result = new List<PrintCodeTreeData>();
|
||||||
|
var details = await _codeDetailService.List();
|
||||||
|
if (details == null || details.Count < 1)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
var ids = outbound.CodeTableIds.Split(',').Select(a => Convert.ToInt64(a)).ToList();
|
||||||
|
//var printDetails = details.FindAll(a => ids.Contains(a.Id));
|
||||||
|
//if (printDetails.Count < 1)
|
||||||
|
//{
|
||||||
|
// return result;
|
||||||
|
//}
|
||||||
|
var father = details.FindAll(a => ids.Contains(a.Id));
|
||||||
|
foreach (var item in father)
|
||||||
|
{
|
||||||
|
var treeData1 = item.Adapt<PrintCodeTreeData>();
|
||||||
|
var list1 = details.FindAll(a => a.FatherId == item.Id);
|
||||||
|
if (list1.Count > 0)
|
||||||
|
{
|
||||||
|
treeData1.Children = new List<PrintCodeTreeData>();
|
||||||
|
treeData1.HasChildren = false;
|
||||||
|
foreach (var dt in list1)
|
||||||
|
{
|
||||||
|
var list2 = details.FindAll(a => a.FatherId == dt.Id);
|
||||||
|
var treeData2 = dt.Adapt<PrintCodeTreeData>();
|
||||||
|
if (list2.Count > 0)
|
||||||
|
{
|
||||||
|
treeData2.Children = new List<PrintCodeTreeData>();
|
||||||
|
treeData2.HasChildren = false;
|
||||||
|
foreach (var dt3 in list2)
|
||||||
|
{
|
||||||
|
var list3 = details.FindAll(a => a.FatherId == dt3.Id);
|
||||||
|
var treeData3 = dt3.Adapt<PrintCodeTreeData>();
|
||||||
|
if (list3.Count > 0)
|
||||||
|
{
|
||||||
|
treeData3.Children = new List<PrintCodeTreeData>();
|
||||||
|
treeData3.HasChildren = false;
|
||||||
|
foreach (var dt4 in list3)
|
||||||
|
{
|
||||||
|
var treeData4 = dt4.Adapt<PrintCodeTreeData>();
|
||||||
|
treeData3.Children.Add(treeData4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
treeData2.Children.Add(treeData3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
treeData1.Children.Add(treeData2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Add(treeData1);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细输出参数
|
||||||
|
/// </summary>
|
||||||
|
public class OutboundDetailDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库单ID
|
||||||
|
/// </summary>
|
||||||
|
public long? OutboundId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 条码ID列表
|
||||||
|
/// </summary>
|
||||||
|
public string? CodeTableIds { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
using Admin.NET.Core;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细基础输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class OutboundDetailBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 出库单ID
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? OutboundId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 条码ID列表
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? CodeTableIds { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细分页查询输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class OutboundDetailInput : BasePageInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 关键字查询
|
||||||
|
/// </summary>
|
||||||
|
public string? SearchKey { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库单ID
|
||||||
|
/// </summary>
|
||||||
|
public long? OutboundId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 条码ID列表
|
||||||
|
/// </summary>
|
||||||
|
public string? CodeTableIds { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细增加输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class AddOutboundDetailInput : OutboundDetailBaseInput
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细删除输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class DeleteOutboundDetailInput : BaseIdInput
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细更新输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class UpdateOutboundDetailInput : OutboundDetailBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "主键Id不能为空")]
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细主键查询输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class QueryByIdOutboundDetailInput : DeleteOutboundDetailInput
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细输出参数
|
||||||
|
/// </summary>
|
||||||
|
public class OutboundDetailOutput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库单ID
|
||||||
|
/// </summary>
|
||||||
|
public long? OutboundId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 条码ID列表
|
||||||
|
/// </summary>
|
||||||
|
public string? CodeTableIds { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,117 @@
|
||||||
|
using Admin.NET.Core.Service;
|
||||||
|
using Admin.NET.Application.Const;
|
||||||
|
using Admin.NET.Application.Entity;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
/// <summary>
|
||||||
|
/// 出库详细服务
|
||||||
|
/// </summary>
|
||||||
|
[ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)]
|
||||||
|
public class OutboundDetailService : IDynamicApiController, ITransient
|
||||||
|
{
|
||||||
|
private readonly SqlSugarRepository<OutboundDetail> _rep;
|
||||||
|
public OutboundDetailService(SqlSugarRepository<OutboundDetail> rep)
|
||||||
|
{
|
||||||
|
_rep = rep;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询出库详细
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Page")]
|
||||||
|
public async Task<SqlSugarPagedList<OutboundDetailOutput>> Page(OutboundDetailInput input)
|
||||||
|
{
|
||||||
|
var query = _rep.AsQueryable()
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
|
||||||
|
u.CodeTableIds.Contains(input.SearchKey.Trim())
|
||||||
|
)
|
||||||
|
.WhereIF(input.OutboundId>0, u => u.OutboundId == input.OutboundId)
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.CodeTableIds), u => u.CodeTableIds.Contains(input.CodeTableIds.Trim()))
|
||||||
|
.Select<OutboundDetailOutput>();
|
||||||
|
return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 增加出库详细
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Add")]
|
||||||
|
public async Task<long> Add(AddOutboundDetailInput input)
|
||||||
|
{
|
||||||
|
var entity = input.Adapt<OutboundDetail>();
|
||||||
|
await _rep.InsertAsync(entity);
|
||||||
|
return entity.Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除出库详细
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Delete")]
|
||||||
|
public async Task Delete(DeleteOutboundDetailInput input)
|
||||||
|
{
|
||||||
|
var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
||||||
|
//await _rep.FakeDeleteAsync(entity); //假删除
|
||||||
|
await _rep.DeleteAsync(entity); //真删除
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新出库详细
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Update")]
|
||||||
|
public async Task Update(UpdateOutboundDetailInput input)
|
||||||
|
{
|
||||||
|
var entity = input.Adapt<OutboundDetail>();
|
||||||
|
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取出库详细
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "Detail")]
|
||||||
|
public async Task<OutboundDetail> Detail([FromQuery] QueryByIdOutboundDetailInput input)
|
||||||
|
{
|
||||||
|
return await _rep.GetFirstAsync(u => u.Id == input.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取出库详细列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "List")]
|
||||||
|
public async Task<List<OutboundDetailOutput>> List()
|
||||||
|
{
|
||||||
|
return await _rep.AsQueryable().Select<OutboundDetailOutput>().ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取出库详细
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="outboundId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "GetByOutboundId")]
|
||||||
|
public async Task<OutboundDetail> GetByOutboundId(long? outboundId)
|
||||||
|
{
|
||||||
|
return await _rep.GetFirstAsync(u => u.OutboundId == outboundId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -70,6 +70,11 @@ public class PrintCodeDetailOutput
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public long? FatherId { get; set; }
|
public long? FatherId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料ID
|
||||||
|
/// </summary>
|
||||||
|
public long? MaterialsId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 打码时间
|
/// 打码时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -10,9 +10,18 @@ namespace Admin.NET.Application;
|
||||||
public class WarehouseDetailsService : IDynamicApiController, ITransient
|
public class WarehouseDetailsService : IDynamicApiController, ITransient
|
||||||
{
|
{
|
||||||
private readonly SqlSugarRepository<WarehouseDetails> _rep;
|
private readonly SqlSugarRepository<WarehouseDetails> _rep;
|
||||||
public WarehouseDetailsService(SqlSugarRepository<WarehouseDetails> rep)
|
private readonly PrintCodeDetailService _codeDetailService;
|
||||||
|
private readonly MaterialsService _materialsService;
|
||||||
|
private readonly SysUnitService _sysUnitService;
|
||||||
|
public WarehouseDetailsService(SqlSugarRepository<WarehouseDetails> rep,
|
||||||
|
PrintCodeDetailService codeDetailService,
|
||||||
|
MaterialsService materialsService,
|
||||||
|
SysUnitService sysUnitService)
|
||||||
{
|
{
|
||||||
_rep = rep;
|
_rep = rep;
|
||||||
|
_codeDetailService = codeDetailService;
|
||||||
|
_materialsService = materialsService;
|
||||||
|
_sysUnitService = sysUnitService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -153,6 +162,21 @@ public class WarehouseDetailsService : IDynamicApiController, ITransient
|
||||||
return await _rep.AsQueryable().Select<WarehouseDetailsOutput>().ToListAsync();
|
return await _rep.AsQueryable().Select<WarehouseDetailsOutput>().ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取仓库库存
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "GetInventory")]
|
||||||
|
public async Task<Warehousing> GetInventory([FromQuery] QueryByIdWarehousingInput input)
|
||||||
|
{
|
||||||
|
var codeDetails = await _codeDetailService.List();
|
||||||
|
var warehousingCodes = codeDetails.FindAll(a => a.WarehouseID == null || a.WarehouseID < 1);
|
||||||
|
|
||||||
|
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库输出参数
|
||||||
|
/// </summary>
|
||||||
|
public class WarehouseTransferDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 原仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 租户Id
|
||||||
|
/// </summary>
|
||||||
|
public long? TenantId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CreateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? UpdateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者Id
|
||||||
|
/// </summary>
|
||||||
|
public long? CreateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者姓名
|
||||||
|
/// </summary>
|
||||||
|
public string? CreateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者Id
|
||||||
|
/// </summary>
|
||||||
|
public long? UpdateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者姓名
|
||||||
|
/// </summary>
|
||||||
|
public string? UpdateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 软删除
|
||||||
|
/// </summary>
|
||||||
|
public bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,148 @@
|
||||||
|
using Admin.NET.Core;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库基础输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class WarehouseTransferBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 原仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
public virtual DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 租户Id
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? TenantId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public virtual DateTime? CreateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新时间
|
||||||
|
/// </summary>
|
||||||
|
public virtual DateTime? UpdateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者Id
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? CreateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者姓名
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? CreateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者Id
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? UpdateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者姓名
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? UpdateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 软删除
|
||||||
|
/// </summary>
|
||||||
|
public virtual bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库分页查询输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class WarehouseTransferInput : BasePageInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 关键字查询
|
||||||
|
/// </summary>
|
||||||
|
public string? SearchKey { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 原仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期范围
|
||||||
|
/// </summary>
|
||||||
|
public List<DateTime?> StartDateRange { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库增加输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class AddWarehouseTransferInput : WarehouseTransferBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 软删除
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "软删除不能为空")]
|
||||||
|
public override bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库删除输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class DeleteWarehouseTransferInput : BaseIdInput
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库更新输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class UpdateWarehouseTransferInput : WarehouseTransferBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "主键Id不能为空")]
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库主键查询输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class QueryByIdWarehouseTransferInput : DeleteWarehouseTransferInput
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库输出参数
|
||||||
|
/// </summary>
|
||||||
|
public class WarehouseTransferOutput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 原仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? WarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标仓库ID
|
||||||
|
/// </summary>
|
||||||
|
public long? TargetWarehouseId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 租户Id
|
||||||
|
/// </summary>
|
||||||
|
public long? TenantId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CreateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? UpdateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者Id
|
||||||
|
/// </summary>
|
||||||
|
public long? CreateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建者姓名
|
||||||
|
/// </summary>
|
||||||
|
public string? CreateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者Id
|
||||||
|
/// </summary>
|
||||||
|
public long? UpdateUserId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改者姓名
|
||||||
|
/// </summary>
|
||||||
|
public string? UpdateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 软删除
|
||||||
|
/// </summary>
|
||||||
|
public bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,284 @@
|
||||||
|
using Admin.NET.Core.Service;
|
||||||
|
using Admin.NET.Application.Const;
|
||||||
|
using Admin.NET.Application.Entity;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
/// <summary>
|
||||||
|
/// 调库出库服务
|
||||||
|
/// </summary>
|
||||||
|
[ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)]
|
||||||
|
public class WarehouseTransferService : IDynamicApiController, ITransient
|
||||||
|
{
|
||||||
|
private readonly SqlSugarRepository<WarehouseTransfer> _rep;
|
||||||
|
private readonly PrintCodeDetailService _codeDetailService;
|
||||||
|
private readonly ProductRetrospectService _productRetrospect;
|
||||||
|
private readonly ReportTableService _reportTableService;
|
||||||
|
private readonly OutboundService _outboundService;
|
||||||
|
private readonly OutboundDetailService _outboundDetailService;
|
||||||
|
private readonly UserManager _userManager;
|
||||||
|
public WarehouseTransferService(SqlSugarRepository<WarehouseTransfer> rep,
|
||||||
|
UserManager userManager,
|
||||||
|
PrintCodeDetailService codeDetailService,
|
||||||
|
ReportTableService reportTableService,
|
||||||
|
OutboundService outboundService,
|
||||||
|
OutboundDetailService outboundDetailService,
|
||||||
|
ProductRetrospectService productRetrospect)
|
||||||
|
{
|
||||||
|
_rep = rep;
|
||||||
|
_userManager = userManager;
|
||||||
|
_codeDetailService = codeDetailService;
|
||||||
|
_productRetrospect = productRetrospect;
|
||||||
|
_reportTableService = reportTableService;
|
||||||
|
_outboundService = outboundService;
|
||||||
|
_outboundDetailService = outboundDetailService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询调库出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Page")]
|
||||||
|
public async Task<SqlSugarPagedList<WarehouseTransferOutput>> Page(WarehouseTransferInput input)
|
||||||
|
{
|
||||||
|
var query = _rep.AsQueryable().Where(a => !a.IsDelete)
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
|
||||||
|
u.Remarks.Contains(input.SearchKey.Trim())
|
||||||
|
)
|
||||||
|
.WhereIF(input.WarehouseId>0, u => u.WarehouseId == input.WarehouseId)
|
||||||
|
.WhereIF(input.TargetWarehouseId>0, u => u.TargetWarehouseId == input.TargetWarehouseId)
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Remarks), u => u.Remarks.Contains(input.Remarks.Trim()))
|
||||||
|
.Select<WarehouseTransferOutput>();
|
||||||
|
if(input.StartDateRange != null && input.StartDateRange.Count >0)
|
||||||
|
{
|
||||||
|
DateTime? start= input.StartDateRange[0];
|
||||||
|
query = query.WhereIF(start.HasValue, u => u.StartDate > start);
|
||||||
|
if (input.StartDateRange.Count >1 && input.StartDateRange[1].HasValue)
|
||||||
|
{
|
||||||
|
var end = input.StartDateRange[1].Value.AddDays(1);
|
||||||
|
query = query.Where(u => u.StartDate < end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 增加调库出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Add")]
|
||||||
|
public async Task<long> Add(AddWarehouseTransferInput input)
|
||||||
|
{
|
||||||
|
var entity = input.Adapt<WarehouseTransfer>();
|
||||||
|
await _rep.InsertAsync(entity);
|
||||||
|
return entity.Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除调库出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Delete")]
|
||||||
|
public async Task Delete(DeleteWarehouseTransferInput input)
|
||||||
|
{
|
||||||
|
var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
||||||
|
await _rep.FakeDeleteAsync(entity); //假删除
|
||||||
|
//await _rep.DeleteAsync(entity); //真删除
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新调库出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Update")]
|
||||||
|
public async Task Update(UpdateWarehouseTransferInput input)
|
||||||
|
{
|
||||||
|
var entity = input.Adapt<WarehouseTransfer>();
|
||||||
|
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取调库出库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "Detail")]
|
||||||
|
public async Task<WarehouseTransfer> Detail([FromQuery] QueryByIdWarehouseTransferInput input)
|
||||||
|
{
|
||||||
|
return await _rep.GetFirstAsync(u => u.Id == input.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取调库出库列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "List")]
|
||||||
|
public async Task<List<WarehouseTransferOutput>> List()
|
||||||
|
{
|
||||||
|
return await _rep.AsQueryable().Select<WarehouseTransferOutput>().Where(a => !a.IsDelete).ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 商品出货
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "ShipmentProduct")]
|
||||||
|
public async Task ShipmentProduct(AddProductCodeInput input)
|
||||||
|
{
|
||||||
|
if (input == null || input.WarehousingTableId == null || input.CodeDatas == null || input.CodeDatas.Count == 0)
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var invoice = await Detail(new QueryByIdWarehouseTransferInput() { Id = input.WarehousingTableId.Value });
|
||||||
|
if (invoice == null)
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
|
}
|
||||||
|
var codes = string.IsNullOrEmpty(input.CodeDatas[0].BarCode) ? input.CodeDatas.ConvertAll(a => a.QrCode) : input.CodeDatas.ConvertAll(a => a.BarCode);
|
||||||
|
var details = (await _codeDetailService.List()).FindAll(a => !string.IsNullOrEmpty(a.FatherCode));
|
||||||
|
var repeatCodes = details.Where(a => !a.IsDelete && codes.Any(b => b == a.Code)).ToList();
|
||||||
|
if (repeatCodes == null || repeatCodes.Count < 1)
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCodeEnum.xg1002);
|
||||||
|
}
|
||||||
|
|
||||||
|
var userId = _userManager.UserId;
|
||||||
|
var userName = _userManager.RealName;
|
||||||
|
var addOutbound = new AddOutboundInput()
|
||||||
|
{
|
||||||
|
//BusinessType = invoice.BusinessType,
|
||||||
|
//CodeNum = invoice.CodeNum,
|
||||||
|
//Consignee = invoice.Consignee,
|
||||||
|
CreateTime = invoice.CreateTime,
|
||||||
|
CreateUserId = userId,
|
||||||
|
CreateUserName = userName,
|
||||||
|
SourceCodeNum = invoice.Id.ToString(),
|
||||||
|
StartDate = invoice.StartDate,
|
||||||
|
State = 0,
|
||||||
|
//Warehouse = invoice.Warehouse,
|
||||||
|
WarehouseId = invoice.WarehouseId,
|
||||||
|
TenantId = invoice.TenantId,
|
||||||
|
};
|
||||||
|
var outbound = await _outboundService.Add(addOutbound);
|
||||||
|
|
||||||
|
|
||||||
|
var codeIds = new List<long>();
|
||||||
|
var list = new List<PrintCodeDetailOutput>();
|
||||||
|
foreach (var c1 in repeatCodes)
|
||||||
|
{
|
||||||
|
codeIds.Add(c1.Id);
|
||||||
|
c1.WarehouseID = null;
|
||||||
|
//c1.FatherCode = null;
|
||||||
|
//c1.FatherId = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(c1.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(c1);
|
||||||
|
var child1 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child1 != null)
|
||||||
|
{
|
||||||
|
child1.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child1.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child1);
|
||||||
|
|
||||||
|
var child2 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child2 != null)
|
||||||
|
{
|
||||||
|
child2.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child2.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child2);
|
||||||
|
|
||||||
|
var child3 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child3 != null)
|
||||||
|
{
|
||||||
|
child3.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child3.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child3);
|
||||||
|
|
||||||
|
var child4 = details.Find(a => a.FatherCode == c1.Code);
|
||||||
|
if (child4 != null)
|
||||||
|
{
|
||||||
|
child4.WarehouseID = null;
|
||||||
|
await _codeDetailService.UpdateByEntity(child4.Adapt<PrintCodeDetail>());
|
||||||
|
list.Add(child4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var addOutboundDetail = new AddOutboundDetailInput() { CodeTableIds = string.Join(",", codeIds), OutboundId = outbound };
|
||||||
|
await _outboundDetailService.Add(addOutboundDetail);
|
||||||
|
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
var report = await GetReport(item.ReportTableId);
|
||||||
|
var retrospect1 = new AddProductRetrospectInput()
|
||||||
|
{
|
||||||
|
BaseCount = item.BaseCount,
|
||||||
|
BaseUnit = item.BaseUnit,
|
||||||
|
//Batch = report.Batch,
|
||||||
|
BusinessType = report.ProductType,
|
||||||
|
CodeType = item.CodeName,
|
||||||
|
Location = addOutbound.Consignee,
|
||||||
|
Department = report.ProductionLine,
|
||||||
|
//WarehouseID = input.WarehouseId,
|
||||||
|
WarehousingDate = DateTime.Now,
|
||||||
|
Count = 1,
|
||||||
|
CreateTime = DateTime.Now,
|
||||||
|
ScanCodeTime = DateTime.Now,
|
||||||
|
CreateUserId = userId,
|
||||||
|
CreateUserName = userName,
|
||||||
|
MaterialsId = report.MaterialsId,
|
||||||
|
OddNumber = report.OddNumber,
|
||||||
|
Receipt = "调库出库单",
|
||||||
|
SourceId = outbound,
|
||||||
|
Unit = item.Unit,
|
||||||
|
Name = item.CodeName,
|
||||||
|
Code = item.Code,
|
||||||
|
//Destination = invoice.Consignee
|
||||||
|
};
|
||||||
|
await _productRetrospect.Add(retrospect1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static Dictionary<long, ReportTable> reportDic = new Dictionary<long, ReportTable>();
|
||||||
|
private async Task<ReportTable> GetReport(long? reportId)
|
||||||
|
{
|
||||||
|
if (reportId == null)
|
||||||
|
{
|
||||||
|
return new ReportTable();
|
||||||
|
}
|
||||||
|
if (reportDic.ContainsKey(reportId.Value))
|
||||||
|
{
|
||||||
|
return reportDic[reportId.Value];
|
||||||
|
}
|
||||||
|
var report = await _reportTableService.GetBySource(reportId);
|
||||||
|
if (report == null)
|
||||||
|
{
|
||||||
|
return new ReportTable();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -105,7 +105,6 @@ public class WarehousingService : IDynamicApiController, ITransient
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取入库单列表
|
/// 获取入库单列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input"></param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[ApiDescriptionSettings(Name = "List")]
|
[ApiDescriptionSettings(Name = "List")]
|
||||||
|
@ -116,7 +115,5 @@ public class WarehousingService : IDynamicApiController, ITransient
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
ENV = development
|
ENV = development
|
||||||
|
|
||||||
# 本地环境接口地址http://localhost:5005 http://139.199.191.197:9005
|
# 本地环境接口地址http://localhost:5005 http://139.199.191.197:9005
|
||||||
VITE_API_URL = http://139.199.191.197:9005
|
VITE_API_URL = http://localhost:5005
|
|
@ -5,6 +5,7 @@ enum Api {
|
||||||
UpdateDistributor = '/api/distributor/update',
|
UpdateDistributor = '/api/distributor/update',
|
||||||
PageDistributor = '/api/distributor/page',
|
PageDistributor = '/api/distributor/page',
|
||||||
DetailDistributor = '/api/distributor/detail',
|
DetailDistributor = '/api/distributor/detail',
|
||||||
|
ListDistributor = '/api/distributor/list',
|
||||||
}
|
}
|
||||||
|
|
||||||
// 增加分销商
|
// 增加分销商
|
||||||
|
@ -39,6 +40,14 @@ export const pageDistributor = (params?: any) =>
|
||||||
data: params,
|
data: params,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 列表分销商
|
||||||
|
export const listDistributor = () =>
|
||||||
|
request({
|
||||||
|
url: Api.ListDistributor,
|
||||||
|
method: 'get',
|
||||||
|
data: { },
|
||||||
|
});
|
||||||
|
|
||||||
// 详情分销商
|
// 详情分销商
|
||||||
export const detailDistributor = (id: any) =>
|
export const detailDistributor = (id: any) =>
|
||||||
request({
|
request({
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
import request from '/@/utils/request';
|
||||||
|
enum Api {
|
||||||
|
AddDistributorInvoice = '/api/distributorInvoice/add',
|
||||||
|
DeleteDistributorInvoice = '/api/distributorInvoice/delete',
|
||||||
|
UpdateDistributorInvoice = '/api/distributorInvoice/update',
|
||||||
|
PageDistributorInvoice = '/api/distributorInvoice/page',
|
||||||
|
DetailDistributorInvoice = '/api/distributorInvoice/detail',
|
||||||
|
ListDistributorInvoice = '/api/distributorInvoice/list',
|
||||||
|
}
|
||||||
|
|
||||||
|
// 增加分销出库
|
||||||
|
export const addDistributorInvoice = (params?: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.AddDistributorInvoice,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 删除分销出库
|
||||||
|
export const deleteDistributorInvoice = (params?: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.DeleteDistributorInvoice,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 编辑分销出库
|
||||||
|
export const updateDistributorInvoice = (params?: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.UpdateDistributorInvoice,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 分页查询分销出库
|
||||||
|
export const pageDistributorInvoice = (params?: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.PageDistributorInvoice,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 列表分销出库
|
||||||
|
export const listDistributorInvoice = () =>
|
||||||
|
request({
|
||||||
|
url: Api.ListDistributorInvoice,
|
||||||
|
method: 'get',
|
||||||
|
data: { },
|
||||||
|
});
|
||||||
|
|
||||||
|
// 详情分销出库
|
||||||
|
export const detailDistributorInvoice = (id: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.DetailDistributorInvoice,
|
||||||
|
method: 'get',
|
||||||
|
data: { id },
|
||||||
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
import request from '/@/utils/request';
|
||||||
|
enum Api {
|
||||||
|
AddWarehouseTransfer = '/api/warehouseTransfer/add',
|
||||||
|
DeleteWarehouseTransfer = '/api/warehouseTransfer/delete',
|
||||||
|
UpdateWarehouseTransfer = '/api/warehouseTransfer/update',
|
||||||
|
PageWarehouseTransfer = '/api/warehouseTransfer/page',
|
||||||
|
DetailWarehouseTransfer = '/api/warehouseTransfer/detail',
|
||||||
|
ListWarehouseTransfer = '/api/warehouseTransfer/list',
|
||||||
|
}
|
||||||
|
|
||||||
|
// 增加调库出库
|
||||||
|
export const addWarehouseTransfer = (params?: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.AddWarehouseTransfer,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 删除调库出库
|
||||||
|
export const deleteWarehouseTransfer = (params?: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.DeleteWarehouseTransfer,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 编辑调库出库
|
||||||
|
export const updateWarehouseTransfer = (params?: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.UpdateWarehouseTransfer,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 分页查询调库出库
|
||||||
|
export const pageWarehouseTransfer = (params?: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.PageWarehouseTransfer,
|
||||||
|
method: 'post',
|
||||||
|
data: params,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 列表调库出库
|
||||||
|
export const listWarehouseTransfer = () =>
|
||||||
|
request({
|
||||||
|
url: Api.ListWarehouseTransfer,
|
||||||
|
method: 'get',
|
||||||
|
data: { },
|
||||||
|
});
|
||||||
|
|
||||||
|
// 详情调库出库
|
||||||
|
export const detailWarehouseTransfer = (id: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.DetailWarehouseTransfer,
|
||||||
|
method: 'get',
|
||||||
|
data: { id },
|
||||||
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,156 @@
|
||||||
|
<template>
|
||||||
|
<div class="distributorInvoice-container">
|
||||||
|
<el-dialog v-model="isShowDialog" :width="800" draggable="">
|
||||||
|
<template #header>
|
||||||
|
<div style="color: #fff">
|
||||||
|
<!--<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>-->
|
||||||
|
<span>{{ props.title }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
|
||||||
|
<el-row :gutter="35">
|
||||||
|
<el-form-item v-show="false">
|
||||||
|
<el-input v-model="ruleForm.id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="仓库ID" prop="warehouseId">
|
||||||
|
<el-input v-model="ruleForm.warehouseId" placeholder="请输入仓库ID" maxlength="20" show-word-limit clearable />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="目标仓库ID" prop="targetWarehouseId">
|
||||||
|
<el-input v-model="ruleForm.targetWarehouseId" placeholder="请输入目标仓库ID" maxlength="20" show-word-limit clearable />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="分销商ID" prop="distributorId">
|
||||||
|
<el-input v-model="ruleForm.distributorId" placeholder="请输入分销商ID" maxlength="20" show-word-limit clearable />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="分销商" prop="distributor">
|
||||||
|
<el-input v-model="ruleForm.distributor" placeholder="请输入分销商" maxlength="32" show-word-limit clearable />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="业务日期" prop="startDate">
|
||||||
|
<el-date-picker v-model="ruleForm.startDate" type="date" placeholder="业务日期" />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="备注" prop="remarks">
|
||||||
|
<el-input v-model="ruleForm.remarks" placeholder="请输入备注" maxlength="32" show-word-limit clearable />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submit">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<style scoped>
|
||||||
|
:deep(.el-select),
|
||||||
|
:deep(.el-input-number) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref,onMounted } from "vue";
|
||||||
|
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import type { FormRules } from "element-plus";
|
||||||
|
import { addDistributorInvoice, updateDistributorInvoice, detailDistributorInvoice } from "/@/api/main/distributorInvoice";
|
||||||
|
|
||||||
|
//父级传递来的参数
|
||||||
|
var props = defineProps({
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
//父级传递来的函数,用于回调
|
||||||
|
const emit = defineEmits(["reloadTable"]);
|
||||||
|
const ruleFormRef = ref();
|
||||||
|
const isShowDialog = ref(false);
|
||||||
|
const ruleForm = ref<any>({});
|
||||||
|
//自行添加其他规则
|
||||||
|
const rules = ref<FormRules>({
|
||||||
|
});
|
||||||
|
|
||||||
|
// 打开弹窗
|
||||||
|
const openDialog = async (row: any) => {
|
||||||
|
// ruleForm.value = JSON.parse(JSON.stringify(row));
|
||||||
|
// 改用detail获取最新数据来编辑
|
||||||
|
let rowData = JSON.parse(JSON.stringify(row));
|
||||||
|
if (rowData.id)
|
||||||
|
ruleForm.value = (await detailDistributorInvoice(rowData.id)).data.result;
|
||||||
|
else
|
||||||
|
ruleForm.value = rowData;
|
||||||
|
isShowDialog.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 关闭弹窗
|
||||||
|
const closeDialog = () => {
|
||||||
|
emit("reloadTable");
|
||||||
|
isShowDialog.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 取消
|
||||||
|
const cancel = () => {
|
||||||
|
isShowDialog.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 提交
|
||||||
|
const submit = async () => {
|
||||||
|
ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
|
||||||
|
if (isValid) {
|
||||||
|
let values = ruleForm.value;
|
||||||
|
if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
|
||||||
|
await addDistributorInvoice(values);
|
||||||
|
} else {
|
||||||
|
await updateDistributorInvoice(values);
|
||||||
|
}
|
||||||
|
closeDialog();
|
||||||
|
} else {
|
||||||
|
ElMessage({
|
||||||
|
message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`,
|
||||||
|
type: "error",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 页面加载时
|
||||||
|
onMounted(async () => {
|
||||||
|
});
|
||||||
|
|
||||||
|
//将属性或者函数暴露给父组件
|
||||||
|
defineExpose({ openDialog });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,212 @@
|
||||||
|
<template>
|
||||||
|
<div class="distributorInvoice-container">
|
||||||
|
<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
|
||||||
|
<el-form :model="queryParams" ref="queryForm" labelWidth="90">
|
||||||
|
<el-row>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
||||||
|
<el-form-item label="关键字">
|
||||||
|
<el-input v-model="queryParams.searchKey" clearable="" placeholder="请输入模糊查询关键字"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="仓库ID">
|
||||||
|
<el-input v-model="queryParams.warehouseId" clearable="" placeholder="请输入仓库ID"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="目标仓库ID">
|
||||||
|
<el-input v-model="queryParams.targetWarehouseId" clearable="" placeholder="请输入目标仓库ID"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="分销商ID">
|
||||||
|
<el-input v-model="queryParams.distributorId" clearable="" placeholder="请输入分销商ID"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="分销商">
|
||||||
|
<el-input v-model="queryParams.distributor" clearable="" placeholder="请输入分销商"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="业务日期">
|
||||||
|
<el-date-picker placeholder="请选择业务日期" value-format="YYYY/MM/DD" type="daterange" v-model="queryParams.startDateRange" />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="queryParams.remarks" clearable="" placeholder="请输入备注"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb10">
|
||||||
|
<el-form-item>
|
||||||
|
<el-button-group style="display: flex; align-items: center;">
|
||||||
|
<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'distributorInvoice:page'"> 查询 </el-button>
|
||||||
|
<el-button icon="ele-Refresh" @click="() => queryParams = {}"> 重置 </el-button>
|
||||||
|
<el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUI" v-if="!showAdvanceQueryUI" style="margin-left:5px;"> 高级查询 </el-button>
|
||||||
|
<el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUI" v-if="showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button>
|
||||||
|
<el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddDistributorInvoice" v-auth="'distributorInvoice:add'"> 新增 </el-button>
|
||||||
|
|
||||||
|
</el-button-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
v-loading="loading"
|
||||||
|
tooltip-effect="light"
|
||||||
|
row-key="id"
|
||||||
|
@sort-change="sortChange"
|
||||||
|
border="">
|
||||||
|
<el-table-column type="index" label="序号" width="55" align="center"/>
|
||||||
|
<el-table-column prop="warehouseId" label="仓库ID" width="140" show-overflow-tooltip="" />
|
||||||
|
<el-table-column prop="targetWarehouseId" label="目标仓库ID" width="90" show-overflow-tooltip="" />
|
||||||
|
<el-table-column prop="distributorId" label="分销商ID" width="140" show-overflow-tooltip="" />
|
||||||
|
<el-table-column prop="distributor" label="分销商" width="140" show-overflow-tooltip="" />
|
||||||
|
<el-table-column prop="startDate" label="业务日期" width="140" show-overflow-tooltip="" />
|
||||||
|
<el-table-column prop="remarks" label="备注" width="140" show-overflow-tooltip="" />
|
||||||
|
<el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('distributorInvoice:update') || auth('distributorInvoice:delete')">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditDistributorInvoice(scope.row)" v-auth="'distributorInvoice:update'"> 编辑 </el-button>
|
||||||
|
<el-button icon="ele-Delete" size="small" text="" type="primary" @click="delDistributorInvoice(scope.row)" v-auth="'distributorInvoice:delete'"> 删除 </el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
v-model:currentPage="tableParams.page"
|
||||||
|
v-model:page-size="tableParams.pageSize"
|
||||||
|
:total="tableParams.total"
|
||||||
|
:page-sizes="[10, 20, 50, 100, 200, 500]"
|
||||||
|
small=""
|
||||||
|
background=""
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
/>
|
||||||
|
<printDialog
|
||||||
|
ref="printDialogRef"
|
||||||
|
:title="printDistributorInvoiceTitle"
|
||||||
|
@reloadTable="handleQuery" />
|
||||||
|
<editDialog
|
||||||
|
ref="editDialogRef"
|
||||||
|
:title="editDistributorInvoiceTitle"
|
||||||
|
@reloadTable="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup="" name="distributorInvoice">
|
||||||
|
import { ref } from "vue";
|
||||||
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
|
import { auth } from '/@/utils/authFunction';
|
||||||
|
|
||||||
|
|
||||||
|
import printDialog from '/@/views/labelPrinting/print/component/hiprint/preview.vue'
|
||||||
|
import editDialog from '/@/views/distributionManagement/distributorInvoice/component/editDialog.vue'
|
||||||
|
import { pageDistributorInvoice, deleteDistributorInvoice } from '/@/api/main/distributorInvoice';
|
||||||
|
|
||||||
|
|
||||||
|
const showAdvanceQueryUI = ref(false);
|
||||||
|
const printDialogRef = ref();
|
||||||
|
const editDialogRef = ref();
|
||||||
|
const loading = ref(false);
|
||||||
|
const tableData = ref<any>([]);
|
||||||
|
const queryParams = ref<any>({});
|
||||||
|
const tableParams = ref({
|
||||||
|
page: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
total: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
const printDistributorInvoiceTitle = ref("");
|
||||||
|
const editDistributorInvoiceTitle = ref("");
|
||||||
|
|
||||||
|
// 改变高级查询的控件显示状态
|
||||||
|
const changeAdvanceQueryUI = () => {
|
||||||
|
showAdvanceQueryUI.value = !showAdvanceQueryUI.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 查询操作
|
||||||
|
const handleQuery = async () => {
|
||||||
|
loading.value = true;
|
||||||
|
var res = await pageDistributorInvoice(Object.assign(queryParams.value, tableParams.value));
|
||||||
|
tableData.value = res.data.result?.items ?? [];
|
||||||
|
tableParams.value.total = res.data.result?.total;
|
||||||
|
loading.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 列排序
|
||||||
|
const sortChange = async (column: any) => {
|
||||||
|
queryParams.value.field = column.prop;
|
||||||
|
queryParams.value.order = column.order;
|
||||||
|
await handleQuery();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开新增页面
|
||||||
|
const openAddDistributorInvoice = () => {
|
||||||
|
editDistributorInvoiceTitle.value = '添加分销出库';
|
||||||
|
editDialogRef.value.openDialog({});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开打印页面
|
||||||
|
const openPrintDistributorInvoice = async (row: any) => {
|
||||||
|
printDistributorInvoiceTitle.value = '打印分销出库';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打开编辑页面
|
||||||
|
const openEditDistributorInvoice = (row: any) => {
|
||||||
|
editDistributorInvoiceTitle.value = '编辑分销出库';
|
||||||
|
editDialogRef.value.openDialog(row);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const delDistributorInvoice = (row: any) => {
|
||||||
|
ElMessageBox.confirm(`确定要删除吗?`, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
|
await deleteDistributorInvoice(row);
|
||||||
|
handleQuery();
|
||||||
|
ElMessage.success("删除成功");
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 改变页面容量
|
||||||
|
const handleSizeChange = (val: number) => {
|
||||||
|
tableParams.value.pageSize = val;
|
||||||
|
handleQuery();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 改变页码序号
|
||||||
|
const handleCurrentChange = (val: number) => {
|
||||||
|
tableParams.value.page = val;
|
||||||
|
handleQuery();
|
||||||
|
};
|
||||||
|
|
||||||
|
handleQuery();
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
:deep(.el-ipnut),
|
||||||
|
:deep(.el-select),
|
||||||
|
:deep(.el-input-number) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -0,0 +1,142 @@
|
||||||
|
<template>
|
||||||
|
<div class="warehouseTransfer-container">
|
||||||
|
<el-dialog v-model="isShowDialog" :width="800" draggable="">
|
||||||
|
<template #header>
|
||||||
|
<div style="color: #fff">
|
||||||
|
<!--<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>-->
|
||||||
|
<span>{{ props.title }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
|
||||||
|
<el-row :gutter="35">
|
||||||
|
<el-form-item v-show="false">
|
||||||
|
<el-input v-model="ruleForm.id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="原仓库ID" prop="warehouseId">
|
||||||
|
<el-input v-model="ruleForm.warehouseId" placeholder="请输入原仓库ID" maxlength="20" show-word-limit clearable />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="目标仓库ID" prop="targetWarehouseId">
|
||||||
|
<el-input v-model="ruleForm.targetWarehouseId" placeholder="请输入目标仓库ID" maxlength="20" show-word-limit clearable />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="业务日期" prop="startDate">
|
||||||
|
<el-date-picker v-model="ruleForm.startDate" type="date" placeholder="业务日期" />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
|
<el-form-item label="备注" prop="remarks">
|
||||||
|
<el-input v-model="ruleForm.remarks" placeholder="请输入备注" maxlength="32" show-word-limit clearable />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submit">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<style scoped>
|
||||||
|
:deep(.el-select),
|
||||||
|
:deep(.el-input-number) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref,onMounted } from "vue";
|
||||||
|
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import type { FormRules } from "element-plus";
|
||||||
|
import { addWarehouseTransfer, updateWarehouseTransfer, detailWarehouseTransfer } from "/@/api/main/warehouseTransfer";
|
||||||
|
|
||||||
|
//父级传递来的参数
|
||||||
|
var props = defineProps({
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
//父级传递来的函数,用于回调
|
||||||
|
const emit = defineEmits(["reloadTable"]);
|
||||||
|
const ruleFormRef = ref();
|
||||||
|
const isShowDialog = ref(false);
|
||||||
|
const ruleForm = ref<any>({});
|
||||||
|
//自行添加其他规则
|
||||||
|
const rules = ref<FormRules>({
|
||||||
|
});
|
||||||
|
|
||||||
|
// 打开弹窗
|
||||||
|
const openDialog = async (row: any) => {
|
||||||
|
// ruleForm.value = JSON.parse(JSON.stringify(row));
|
||||||
|
// 改用detail获取最新数据来编辑
|
||||||
|
let rowData = JSON.parse(JSON.stringify(row));
|
||||||
|
if (rowData.id)
|
||||||
|
ruleForm.value = (await detailWarehouseTransfer(rowData.id)).data.result;
|
||||||
|
else
|
||||||
|
ruleForm.value = rowData;
|
||||||
|
isShowDialog.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 关闭弹窗
|
||||||
|
const closeDialog = () => {
|
||||||
|
emit("reloadTable");
|
||||||
|
isShowDialog.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 取消
|
||||||
|
const cancel = () => {
|
||||||
|
isShowDialog.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 提交
|
||||||
|
const submit = async () => {
|
||||||
|
ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
|
||||||
|
if (isValid) {
|
||||||
|
let values = ruleForm.value;
|
||||||
|
if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
|
||||||
|
await addWarehouseTransfer(values);
|
||||||
|
} else {
|
||||||
|
await updateWarehouseTransfer(values);
|
||||||
|
}
|
||||||
|
closeDialog();
|
||||||
|
} else {
|
||||||
|
ElMessage({
|
||||||
|
message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`,
|
||||||
|
type: "error",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 页面加载时
|
||||||
|
onMounted(async () => {
|
||||||
|
});
|
||||||
|
|
||||||
|
//将属性或者函数暴露给父组件
|
||||||
|
defineExpose({ openDialog });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,198 @@
|
||||||
|
<template>
|
||||||
|
<div class="warehouseTransfer-container">
|
||||||
|
<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
|
||||||
|
<el-form :model="queryParams" ref="queryForm" labelWidth="90">
|
||||||
|
<el-row>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
||||||
|
<el-form-item label="关键字">
|
||||||
|
<el-input v-model="queryParams.searchKey" clearable="" placeholder="请输入模糊查询关键字"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="原仓库ID">
|
||||||
|
<el-input v-model="queryParams.warehouseId" clearable="" placeholder="请输入原仓库ID"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="目标仓库ID">
|
||||||
|
<el-input v-model="queryParams.targetWarehouseId" clearable="" placeholder="请输入目标仓库ID"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="业务日期">
|
||||||
|
<el-date-picker placeholder="请选择业务日期" value-format="YYYY/MM/DD" type="daterange" v-model="queryParams.startDateRange" />
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="queryParams.remarks" clearable="" placeholder="请输入备注"/>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb10">
|
||||||
|
<el-form-item>
|
||||||
|
<el-button-group style="display: flex; align-items: center;">
|
||||||
|
<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'warehouseTransfer:page'"> 查询 </el-button>
|
||||||
|
<el-button icon="ele-Refresh" @click="() => queryParams = {}"> 重置 </el-button>
|
||||||
|
<el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUI" v-if="!showAdvanceQueryUI" style="margin-left:5px;"> 高级查询 </el-button>
|
||||||
|
<el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUI" v-if="showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button>
|
||||||
|
<el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWarehouseTransfer" v-auth="'warehouseTransfer:add'"> 新增 </el-button>
|
||||||
|
|
||||||
|
</el-button-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
v-loading="loading"
|
||||||
|
tooltip-effect="light"
|
||||||
|
row-key="id"
|
||||||
|
@sort-change="sortChange"
|
||||||
|
border="">
|
||||||
|
<el-table-column type="index" label="序号" width="55" align="center"/>
|
||||||
|
<el-table-column prop="warehouseId" label="原仓库ID" width="140" show-overflow-tooltip="" />
|
||||||
|
<el-table-column prop="targetWarehouseId" label="目标仓库ID" width="90" show-overflow-tooltip="" />
|
||||||
|
<el-table-column prop="startDate" label="业务日期" width="140" show-overflow-tooltip="" />
|
||||||
|
<el-table-column prop="remarks" label="备注" width="140" show-overflow-tooltip="" />
|
||||||
|
<el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('warehouseTransfer:update') || auth('warehouseTransfer:delete')">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWarehouseTransfer(scope.row)" v-auth="'warehouseTransfer:update'"> 编辑 </el-button>
|
||||||
|
<el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWarehouseTransfer(scope.row)" v-auth="'warehouseTransfer:delete'"> 删除 </el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
v-model:currentPage="tableParams.page"
|
||||||
|
v-model:page-size="tableParams.pageSize"
|
||||||
|
:total="tableParams.total"
|
||||||
|
:page-sizes="[10, 20, 50, 100, 200, 500]"
|
||||||
|
small=""
|
||||||
|
background=""
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
/>
|
||||||
|
<printDialog
|
||||||
|
ref="printDialogRef"
|
||||||
|
:title="printWarehouseTransferTitle"
|
||||||
|
@reloadTable="handleQuery" />
|
||||||
|
<editDialog
|
||||||
|
ref="editDialogRef"
|
||||||
|
:title="editWarehouseTransferTitle"
|
||||||
|
@reloadTable="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup="" name="warehouseTransfer">
|
||||||
|
import { ref } from "vue";
|
||||||
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
|
import { auth } from '/@/utils/authFunction';
|
||||||
|
|
||||||
|
|
||||||
|
import printDialog from '/@/views/labelPrinting/print/component/hiprint/preview.vue'
|
||||||
|
import editDialog from '/@/views/inventoryManagement/warehouseTransfer/component/editDialog.vue'
|
||||||
|
import { pageWarehouseTransfer, deleteWarehouseTransfer } from '/@/api/main/warehouseTransfer';
|
||||||
|
|
||||||
|
|
||||||
|
const showAdvanceQueryUI = ref(false);
|
||||||
|
const printDialogRef = ref();
|
||||||
|
const editDialogRef = ref();
|
||||||
|
const loading = ref(false);
|
||||||
|
const tableData = ref<any>([]);
|
||||||
|
const queryParams = ref<any>({});
|
||||||
|
const tableParams = ref({
|
||||||
|
page: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
total: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
const printWarehouseTransferTitle = ref("");
|
||||||
|
const editWarehouseTransferTitle = ref("");
|
||||||
|
|
||||||
|
// 改变高级查询的控件显示状态
|
||||||
|
const changeAdvanceQueryUI = () => {
|
||||||
|
showAdvanceQueryUI.value = !showAdvanceQueryUI.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 查询操作
|
||||||
|
const handleQuery = async () => {
|
||||||
|
loading.value = true;
|
||||||
|
var res = await pageWarehouseTransfer(Object.assign(queryParams.value, tableParams.value));
|
||||||
|
tableData.value = res.data.result?.items ?? [];
|
||||||
|
tableParams.value.total = res.data.result?.total;
|
||||||
|
loading.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 列排序
|
||||||
|
const sortChange = async (column: any) => {
|
||||||
|
queryParams.value.field = column.prop;
|
||||||
|
queryParams.value.order = column.order;
|
||||||
|
await handleQuery();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开新增页面
|
||||||
|
const openAddWarehouseTransfer = () => {
|
||||||
|
editWarehouseTransferTitle.value = '添加调库出库';
|
||||||
|
editDialogRef.value.openDialog({});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开打印页面
|
||||||
|
const openPrintWarehouseTransfer = async (row: any) => {
|
||||||
|
printWarehouseTransferTitle.value = '打印调库出库';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打开编辑页面
|
||||||
|
const openEditWarehouseTransfer = (row: any) => {
|
||||||
|
editWarehouseTransferTitle.value = '编辑调库出库';
|
||||||
|
editDialogRef.value.openDialog(row);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const delWarehouseTransfer = (row: any) => {
|
||||||
|
ElMessageBox.confirm(`确定要删除吗?`, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
|
await deleteWarehouseTransfer(row);
|
||||||
|
handleQuery();
|
||||||
|
ElMessage.success("删除成功");
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 改变页面容量
|
||||||
|
const handleSizeChange = (val: number) => {
|
||||||
|
tableParams.value.pageSize = val;
|
||||||
|
handleQuery();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 改变页码序号
|
||||||
|
const handleCurrentChange = (val: number) => {
|
||||||
|
tableParams.value.page = val;
|
||||||
|
handleQuery();
|
||||||
|
};
|
||||||
|
|
||||||
|
handleQuery();
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
:deep(.el-ipnut),
|
||||||
|
:deep(.el-select),
|
||||||
|
:deep(.el-input-number) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -183,8 +183,6 @@
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
import { ElMessageBox, ElMessage } from "element-plus";
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
import { auth } from '/@/utils/authFunction';
|
import { auth } from '/@/utils/authFunction';
|
||||||
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
|
|
||||||
import { formatDate } from '/@/utils/formatTime';
|
|
||||||
|
|
||||||
|
|
||||||
import printDialog from '/@/views/labelPrinting/print/component/hiprint/preview.vue'
|
import printDialog from '/@/views/labelPrinting/print/component/hiprint/preview.vue'
|
||||||
|
|
Loading…
Reference in New Issue