Compare commits
2 Commits
6cf4381c53
...
4623d4780e
Author | SHA1 | Date |
---|---|---|
liangzongpeng | 4623d4780e | |
liangzongpeng | 39f87ba916 |
|
@ -24,21 +24,21 @@ public class Invoice : EntityTenant
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[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]
|
[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]
|
[Required]
|
||||||
[SugarColumn(ColumnName = "Warehouse", ColumnDescription = "仓库", Length = 32)]
|
[SugarColumn(ColumnName = "Warehouse", ColumnDescription = "仓库", Length = 32)]
|
||||||
public string Warehouse { get; set; }
|
public string? Warehouse { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 部门
|
/// 部门
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
using Admin.NET.Core;
|
||||||
|
namespace Admin.NET.Application.Entity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("MaterialList","物料列表")]
|
||||||
|
public class MaterialList : EntityBaseId
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 物料ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "MaterialsId", ColumnDescription = "物料ID")]
|
||||||
|
public long? MaterialsId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "Unit", ColumnDescription = "单位", Length = 32)]
|
||||||
|
public string? Unit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "Count", ColumnDescription = "数量")]
|
||||||
|
public int? Count { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 来源ID
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "SourceId", ColumnDescription = "来源ID")]
|
||||||
|
public long? SourceId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "Remarks", ColumnDescription = "备注", Length = 32)]
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -21,17 +21,17 @@ public class InvoiceBaseInput
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 业务类型
|
/// 业务类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string BusinessType { get; set; }
|
public virtual string? BusinessType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 客户
|
/// 客户
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string Custom { get; set; }
|
public virtual string? Custom { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 仓库
|
/// 仓库
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string Warehouse { get; set; }
|
public virtual string? Warehouse { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 仓库ID
|
/// 仓库ID
|
||||||
|
@ -220,30 +220,16 @@ public class InvoiceInput : BasePageInput
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class AddInvoiceInput : InvoiceBaseInput
|
public class AddInvoiceInput : InvoiceBaseInput
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// 业务类型
|
|
||||||
/// </summary>
|
|
||||||
[Required(ErrorMessage = "业务类型不能为空")]
|
|
||||||
public override string BusinessType { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 客户
|
|
||||||
/// </summary>
|
|
||||||
[Required(ErrorMessage = "客户不能为空")]
|
|
||||||
public override string Custom { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 仓库
|
|
||||||
/// </summary>
|
|
||||||
[Required(ErrorMessage = "仓库不能为空")]
|
|
||||||
public override string Warehouse { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 软删除
|
/// 软删除
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required(ErrorMessage = "软删除不能为空")]
|
|
||||||
public override bool IsDelete { get; set; }
|
public override bool IsDelete { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表
|
||||||
|
/// </summary>
|
||||||
|
public List<AddMaterialListInput> TableData { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -264,6 +250,10 @@ public class UpdateInvoiceInput : InvoiceBaseInput
|
||||||
[Required(ErrorMessage = "主键Id不能为空")]
|
[Required(ErrorMessage = "主键Id不能为空")]
|
||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表
|
||||||
|
/// </summary>
|
||||||
|
public List<AddMaterialListInput> TableData { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -3,6 +3,7 @@ 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;
|
using NewLife.Reflection;
|
||||||
|
using Nest;
|
||||||
|
|
||||||
namespace Admin.NET.Application;
|
namespace Admin.NET.Application;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -18,13 +19,15 @@ public class InvoiceService : IDynamicApiController, ITransient
|
||||||
private readonly OutboundService _outboundService;
|
private readonly OutboundService _outboundService;
|
||||||
private readonly OutboundDetailService _outboundDetailService;
|
private readonly OutboundDetailService _outboundDetailService;
|
||||||
private readonly UserManager _userManager;
|
private readonly UserManager _userManager;
|
||||||
|
private readonly MaterialListService _materialListService;
|
||||||
public InvoiceService(SqlSugarRepository<Invoice> rep,
|
public InvoiceService(SqlSugarRepository<Invoice> rep,
|
||||||
UserManager userManager,
|
UserManager userManager,
|
||||||
PrintCodeDetailService codeDetailService,
|
PrintCodeDetailService codeDetailService,
|
||||||
ReportTableService reportTableService,
|
ReportTableService reportTableService,
|
||||||
OutboundService outboundService,
|
OutboundService outboundService,
|
||||||
OutboundDetailService outboundDetailService,
|
OutboundDetailService outboundDetailService,
|
||||||
ProductRetrospectService productRetrospect)
|
ProductRetrospectService productRetrospect,
|
||||||
|
MaterialListService materialListService)
|
||||||
{
|
{
|
||||||
_rep = rep;
|
_rep = rep;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
|
@ -33,6 +36,7 @@ public class InvoiceService : IDynamicApiController, ITransient
|
||||||
_reportTableService = reportTableService;
|
_reportTableService = reportTableService;
|
||||||
_outboundService = outboundService;
|
_outboundService = outboundService;
|
||||||
_outboundDetailService = outboundDetailService;
|
_outboundDetailService = outboundDetailService;
|
||||||
|
_materialListService = materialListService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -102,7 +106,16 @@ public class InvoiceService : IDynamicApiController, ITransient
|
||||||
{
|
{
|
||||||
var entity = input.Adapt<Invoice>();
|
var entity = input.Adapt<Invoice>();
|
||||||
await _rep.InsertAsync(entity);
|
await _rep.InsertAsync(entity);
|
||||||
return entity.Id;
|
var id = entity.Id;
|
||||||
|
if (input.TableData!=null&&input.TableData.Count>0)
|
||||||
|
{
|
||||||
|
foreach (var item in input.TableData)
|
||||||
|
{
|
||||||
|
item.SourceId = id;
|
||||||
|
await _materialListService.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -130,6 +143,22 @@ public class InvoiceService : IDynamicApiController, ITransient
|
||||||
{
|
{
|
||||||
var entity = input.Adapt<Invoice>();
|
var entity = input.Adapt<Invoice>();
|
||||||
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
||||||
|
if (input.TableData != null && input.TableData.Count > 0)
|
||||||
|
{
|
||||||
|
var list = await _materialListService.ListBySourceId(input.Id);
|
||||||
|
if (list!=null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < list.Count; i++)
|
||||||
|
{
|
||||||
|
await _materialListService.Delete(new DeleteMaterialListInput() { Id = list[i].Id });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (var item in input.TableData)
|
||||||
|
{
|
||||||
|
item.SourceId = input.Id;
|
||||||
|
await _materialListService.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -254,32 +283,34 @@ public class InvoiceService : IDynamicApiController, ITransient
|
||||||
foreach (var item in list)
|
foreach (var item in list)
|
||||||
{
|
{
|
||||||
var report = await GetReport(item.ReportTableId);
|
var report = await GetReport(item.ReportTableId);
|
||||||
var retrospect1 = new AddProductRetrospectInput()
|
//var retrospect1 = new AddProductRetrospectInput()
|
||||||
{
|
//{
|
||||||
BaseCount = item.BaseCount,
|
// BaseCount = item.BaseCount,
|
||||||
BaseUnit = item.BaseUnit,
|
// BaseUnit = item.BaseUnit,
|
||||||
//Batch = report.Batch,
|
// //Batch = report.Batch,
|
||||||
BusinessType = report.ProductType,
|
// BusinessType = report.ProductType,
|
||||||
CodeType = item.CodeName,
|
// CodeType = item.CodeName,
|
||||||
Location=addOutbound.Consignee,
|
// Location=addOutbound.Consignee,
|
||||||
Department = report.ProductionLine,
|
// Department = report.ProductionLine,
|
||||||
//WarehouseID = input.WarehouseId,
|
// //WarehouseID = input.WarehouseId,
|
||||||
WarehousingDate = DateTime.Now,
|
// WarehousingDate = DateTime.Now,
|
||||||
Count = 1,
|
// Count = 1,
|
||||||
CreateTime = DateTime.Now,
|
// CreateTime = DateTime.Now,
|
||||||
ScanCodeTime = DateTime.Now,
|
// ScanCodeTime = DateTime.Now,
|
||||||
CreateUserId = userId,
|
// CreateUserId = userId,
|
||||||
CreateUserName = userName,
|
// CreateUserName = userName,
|
||||||
MaterialsId = report.MaterialsId,
|
// MaterialsId = report.MaterialsId,
|
||||||
OddNumber = report.OddNumber,
|
// OddNumber = report.OddNumber,
|
||||||
Receipt = "发货通知单",
|
// Receipt = "发货通知单",
|
||||||
SourceId = outbound,
|
// SourceId = outbound,
|
||||||
Unit = item.Unit,
|
// Unit = item.Unit,
|
||||||
Name = item.CodeName,
|
// Name = item.CodeName,
|
||||||
Code = item.Code,
|
// Code = item.Code,
|
||||||
Destination = invoice.Consignee
|
// Destination = invoice.Consignee
|
||||||
};
|
//};
|
||||||
await _productRetrospect.Add(retrospect1);
|
//await _productRetrospect.Add(retrospect1);
|
||||||
|
|
||||||
|
await _productRetrospect.AddRetrospect(item.Adapt<PrintCodeDetail>(), report, "发货通知单", addOutbound.Consignee, outbound, input.WarehousingTableId);
|
||||||
}
|
}
|
||||||
|
|
||||||
//var report = await _reportTableService.GetBySource(input.WarehousingTableId);
|
//var report = await _reportTableService.GetBySource(input.WarehousingTableId);
|
||||||
|
@ -313,5 +344,16 @@ public class InvoiceService : IDynamicApiController, ITransient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取物料列表列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "MaterialListById")]
|
||||||
|
public async Task<List<MaterialListOutput>> MaterialListById(long? id)
|
||||||
|
{
|
||||||
|
return await _materialListService.ListBySourceId(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表输出参数
|
||||||
|
/// </summary>
|
||||||
|
public class MaterialListDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料ID
|
||||||
|
/// </summary>
|
||||||
|
public long? MaterialsId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位
|
||||||
|
/// </summary>
|
||||||
|
public string? Unit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
public int? Count { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 来源ID
|
||||||
|
/// </summary>
|
||||||
|
public long? SourceId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,108 @@
|
||||||
|
using Admin.NET.Core;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表基础输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class MaterialListBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 物料ID
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? MaterialsId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? Unit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
public virtual int? Count { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 来源ID
|
||||||
|
/// </summary>
|
||||||
|
public virtual long? SourceId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public virtual string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表分页查询输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class MaterialListInput : BasePageInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 关键字查询
|
||||||
|
/// </summary>
|
||||||
|
public string? SearchKey { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料ID
|
||||||
|
/// </summary>
|
||||||
|
public long? MaterialsId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位
|
||||||
|
/// </summary>
|
||||||
|
public string? Unit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
public int? Count { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 来源ID
|
||||||
|
/// </summary>
|
||||||
|
public long? SourceId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表增加输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class AddMaterialListInput : MaterialListBaseInput
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表删除输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class DeleteMaterialListInput : BaseIdInput
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表更新输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class UpdateMaterialListInput : MaterialListBaseInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "主键Id不能为空")]
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表主键查询输入参数
|
||||||
|
/// </summary>
|
||||||
|
public class QueryByIdMaterialListInput : DeleteMaterialListInput
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
namespace Admin.NET.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料列表输出参数
|
||||||
|
/// </summary>
|
||||||
|
public class MaterialListOutput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 主键Id
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料ID
|
||||||
|
/// </summary>
|
||||||
|
public long? MaterialsId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位
|
||||||
|
/// </summary>
|
||||||
|
public string? Unit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
public int? Count { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 来源ID
|
||||||
|
/// </summary>
|
||||||
|
public long? SourceId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? Remarks { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
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 MaterialListService : IDynamicApiController, ITransient
|
||||||
|
{
|
||||||
|
private readonly SqlSugarRepository<MaterialList> _rep;
|
||||||
|
public MaterialListService(SqlSugarRepository<MaterialList> rep)
|
||||||
|
{
|
||||||
|
_rep = rep;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询物料列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Page")]
|
||||||
|
public async Task<SqlSugarPagedList<MaterialListOutput>> Page(MaterialListInput input)
|
||||||
|
{
|
||||||
|
var query = _rep.AsQueryable()
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
|
||||||
|
u.Unit.Contains(input.SearchKey.Trim())
|
||||||
|
|| u.Remarks.Contains(input.SearchKey.Trim())
|
||||||
|
)
|
||||||
|
.WhereIF(input.MaterialsId>0, u => u.MaterialsId == input.MaterialsId)
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Unit), u => u.Unit.Contains(input.Unit.Trim()))
|
||||||
|
.WhereIF(input.Count>0, u => u.Count == input.Count)
|
||||||
|
.WhereIF(input.SourceId>0, u => u.SourceId == input.SourceId)
|
||||||
|
.WhereIF(!string.IsNullOrWhiteSpace(input.Remarks), u => u.Remarks.Contains(input.Remarks.Trim()))
|
||||||
|
.Select<MaterialListOutput>();
|
||||||
|
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(AddMaterialListInput input)
|
||||||
|
{
|
||||||
|
var entity = input.Adapt<MaterialList>();
|
||||||
|
await _rep.InsertAsync(entity);
|
||||||
|
return entity.Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除物料列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ApiDescriptionSettings(Name = "Delete")]
|
||||||
|
public async Task Delete(DeleteMaterialListInput 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(UpdateMaterialListInput input)
|
||||||
|
{
|
||||||
|
var entity = input.Adapt<MaterialList>();
|
||||||
|
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取物料列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "Detail")]
|
||||||
|
public async Task<MaterialList> Detail([FromQuery] QueryByIdMaterialListInput input)
|
||||||
|
{
|
||||||
|
return await _rep.GetFirstAsync(u => u.Id == input.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取物料列表列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "List")]
|
||||||
|
public async Task<List<MaterialListOutput>> List()
|
||||||
|
{
|
||||||
|
return await _rep.AsQueryable().Select<MaterialListOutput>().ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取物料列表列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "ListBySourceId")]
|
||||||
|
public async Task<List<MaterialListOutput>> ListBySourceId(long? sourceId)
|
||||||
|
{
|
||||||
|
return await _rep.AsQueryable().WhereIF(sourceId > 0, u => u.SourceId == sourceId).Select<MaterialListOutput>().ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -163,5 +163,6 @@ public class PrintCodeDetailService : IDynamicApiController, ITransient
|
||||||
{
|
{
|
||||||
return await _rep.GetFirstAsync(a => a.Code == productCode);
|
return await _rep.GetFirstAsync(a => a.Code == productCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -151,6 +151,7 @@ public class ProductRetrospectService : IDynamicApiController, ITransient
|
||||||
return await _rep.AsQueryable().Select<ProductRetrospectOutput>().Where(a => !a.IsDelete).ToListAsync();
|
return await _rep.AsQueryable().Select<ProductRetrospectOutput>().Where(a => !a.IsDelete).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取商品追溯列表
|
/// 获取商品追溯列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -163,7 +164,42 @@ public class ProductRetrospectService : IDynamicApiController, ITransient
|
||||||
return await _rep.AsQueryable().Where(u => !u.IsDelete && u.Code == productCode).Select<ProductRetrospectOutput>().ToListAsync();
|
return await _rep.AsQueryable().Where(u => !u.IsDelete && u.Code == productCode).Select<ProductRetrospectOutput>().ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task AddRetrospect(PrintCodeDetail item ,ReportTable report,string receipt, string location ,long? sourceId)
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询打印条码状态
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="productCode"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[ApiDescriptionSettings(Name = "CheckCodeStatus")]
|
||||||
|
public async Task<int> CheckCodeStatus(string? productCode)
|
||||||
|
{
|
||||||
|
var codeEnt = await _rep.AsQueryable().Where(u => !u.IsDelete && u.Code == productCode).Select<ProductRetrospectOutput>().ToListAsync();
|
||||||
|
if (codeEnt == null || codeEnt.Count<1)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
var last = codeEnt.OrderBy(a => a.WarehousingDate).FirstOrDefault();
|
||||||
|
var receipt = last.Receipt == null ? "" : last.Receipt;
|
||||||
|
if (receipt.Contains("汇报单"))
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else if (receipt.Contains("仓库"))
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
else if (receipt.Contains("发货"))
|
||||||
|
{
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
else if (receipt.Contains("分销"))
|
||||||
|
{
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
public async Task AddRetrospect(PrintCodeDetail item ,ReportTable report,string receipt, string location ,long? sourceId,long? warehousingId)
|
||||||
{
|
{
|
||||||
var userId = _userManager.UserId;
|
var userId = _userManager.UserId;
|
||||||
var userName = _userManager.RealName;
|
var userName = _userManager.RealName;
|
||||||
|
@ -176,7 +212,7 @@ public class ProductRetrospectService : IDynamicApiController, ITransient
|
||||||
CodeType = item.CodeName,
|
CodeType = item.CodeName,
|
||||||
Location = location,
|
Location = location,
|
||||||
Department = report.ProductionLine,
|
Department = report.ProductionLine,
|
||||||
//WarehouseID = input.WarehouseId,
|
WarehouseID = warehousingId,
|
||||||
WarehousingDate = DateTime.Now,
|
WarehousingDate = DateTime.Now,
|
||||||
Count = 1,
|
Count = 1,
|
||||||
CreateTime = DateTime.Now,
|
CreateTime = DateTime.Now,
|
||||||
|
|
|
@ -190,6 +190,40 @@ public class ReportDetailTableService : IDynamicApiController, ITransient
|
||||||
var userId = _userManager.UserId;
|
var userId = _userManager.UserId;
|
||||||
var userName = _userManager.RealName;
|
var userName = _userManager.RealName;
|
||||||
var topDatas = input.CodeDatas.FindAll(a => string.IsNullOrEmpty(a.FatherCode));
|
var topDatas = input.CodeDatas.FindAll(a => string.IsNullOrEmpty(a.FatherCode));
|
||||||
|
long reprotId = 0;
|
||||||
|
var report = await _reportTableService.GetBySource(input.WarehousingTableId);
|
||||||
|
if (report == null)
|
||||||
|
{
|
||||||
|
var newReport = new AddReportTableInput()
|
||||||
|
{
|
||||||
|
CreateTime = DateTime.Now,
|
||||||
|
IsDelete = false,
|
||||||
|
OddNumber = warehousing.OddNumber,
|
||||||
|
State = 0,
|
||||||
|
MaterialsId = warehousing.MaterialsId,
|
||||||
|
SourceId = input.WarehousingTableId,
|
||||||
|
ProductType = warehousing.ProductType,
|
||||||
|
ProductionLine = warehousing.ProductionLine,
|
||||||
|
BaseProductCount = repeatCodes.Count,
|
||||||
|
ProductCount = repeatCodes.Count,
|
||||||
|
Batch = warehousing.Batch,
|
||||||
|
CodeNum = materials.CodeNum,
|
||||||
|
Name = materials.Name,
|
||||||
|
CreateUserId = userId,
|
||||||
|
CreateUserName = userName,
|
||||||
|
StartDate = DateTime.Now,
|
||||||
|
SourceNumber = warehousing.SourceNumber,
|
||||||
|
Unit = warehousing.Unit,
|
||||||
|
Remarks = warehousing.Remarks
|
||||||
|
};
|
||||||
|
reprotId = await _reportTableService.Add(newReport);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reprotId = report.Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Dictionary<AddPrintCodeDetailInput, long> list = new Dictionary<AddPrintCodeDetailInput, long>();
|
Dictionary<AddPrintCodeDetailInput, long> list = new Dictionary<AddPrintCodeDetailInput, long>();
|
||||||
foreach (var item in topDatas)
|
foreach (var item in topDatas)
|
||||||
{
|
{
|
||||||
|
@ -199,7 +233,7 @@ public class ReportDetailTableService : IDynamicApiController, ITransient
|
||||||
|
|
||||||
var detail = new AddPrintCodeDetailInput()
|
var detail = new AddPrintCodeDetailInput()
|
||||||
{
|
{
|
||||||
ReportTableId = input.WarehousingTableId,
|
ReportTableId = reprotId,
|
||||||
Code = code,
|
Code = code,
|
||||||
CodeName = codeType,
|
CodeName = codeType,
|
||||||
ChildCount = unit.ChildUnitCount,
|
ChildCount = unit.ChildUnitCount,
|
||||||
|
@ -221,7 +255,7 @@ public class ReportDetailTableService : IDynamicApiController, ITransient
|
||||||
var unit2 = units.Find(a => a.Name == child.PackageName);
|
var unit2 = units.Find(a => a.Name == child.PackageName);
|
||||||
var detail2 = new AddPrintCodeDetailInput()
|
var detail2 = new AddPrintCodeDetailInput()
|
||||||
{
|
{
|
||||||
ReportTableId = input.WarehousingTableId,
|
ReportTableId = reprotId,
|
||||||
Code = code2,
|
Code = code2,
|
||||||
CodeName = codeType,
|
CodeName = codeType,
|
||||||
ChildCount = unit2.ChildUnitCount,
|
ChildCount = unit2.ChildUnitCount,
|
||||||
|
@ -245,7 +279,7 @@ public class ReportDetailTableService : IDynamicApiController, ITransient
|
||||||
var unit3 = units.Find(a => a.Name == child3.PackageName);
|
var unit3 = units.Find(a => a.Name == child3.PackageName);
|
||||||
var detail3 = new AddPrintCodeDetailInput()
|
var detail3 = new AddPrintCodeDetailInput()
|
||||||
{
|
{
|
||||||
ReportTableId = input.WarehousingTableId,
|
ReportTableId = reprotId,
|
||||||
Code = code3,
|
Code = code3,
|
||||||
CodeName = codeType,
|
CodeName = codeType,
|
||||||
ChildCount = unit3.ChildUnitCount,
|
ChildCount = unit3.ChildUnitCount,
|
||||||
|
@ -270,7 +304,7 @@ public class ReportDetailTableService : IDynamicApiController, ITransient
|
||||||
var unit4 = units.Find(a => a.Name == child4.PackageName);
|
var unit4 = units.Find(a => a.Name == child4.PackageName);
|
||||||
var detail4 = new AddPrintCodeDetailInput()
|
var detail4 = new AddPrintCodeDetailInput()
|
||||||
{
|
{
|
||||||
ReportTableId = input.WarehousingTableId,
|
ReportTableId = reprotId,
|
||||||
Code = code4,
|
Code = code4,
|
||||||
CodeName = codeType,
|
CodeName = codeType,
|
||||||
ChildCount = unit4.ChildUnitCount,
|
ChildCount = unit4.ChildUnitCount,
|
||||||
|
@ -295,7 +329,7 @@ public class ReportDetailTableService : IDynamicApiController, ITransient
|
||||||
var unit5 = units.Find(a => a.Name == child5.PackageName);
|
var unit5 = units.Find(a => a.Name == child5.PackageName);
|
||||||
var detail5 = new AddPrintCodeDetailInput()
|
var detail5 = new AddPrintCodeDetailInput()
|
||||||
{
|
{
|
||||||
ReportTableId = input.WarehousingTableId,
|
ReportTableId = reprotId,
|
||||||
Code = code5,
|
Code = code5,
|
||||||
CodeName = codeType,
|
CodeName = codeType,
|
||||||
ChildCount = unit5.ChildUnitCount,
|
ChildCount = unit5.ChildUnitCount,
|
||||||
|
@ -348,14 +382,7 @@ public class ReportDetailTableService : IDynamicApiController, ITransient
|
||||||
await _productRetrospect.Add(retrospect1);
|
await _productRetrospect.Add(retrospect1);
|
||||||
}
|
}
|
||||||
|
|
||||||
var report = await _reportTableService.GetBySource(input.WarehousingTableId);
|
|
||||||
if (report == null)
|
|
||||||
{
|
|
||||||
var newReport = new AddReportTableInput() { CreateTime = DateTime.Now, IsDelete = false, OddNumber = warehousing.OddNumber, State = 0, MaterialsId = warehousing.MaterialsId, SourceId = input.WarehousingTableId, ProductType = warehousing.ProductType, ProductionLine = warehousing.ProductionLine };
|
|
||||||
var addReport = await _reportTableService.Add(newReport);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//var details = await _warehouseDetails.List();
|
//var details = await _warehouseDetails.List();
|
||||||
//if (details != null && details.Any(a => a.MaterialsId == warehousing.MaterialsId && a.Unit == warehousing.Unit))
|
//if (details != null && details.Any(a => a.MaterialsId == warehousing.MaterialsId && a.Unit == warehousing.Unit))
|
||||||
//{
|
//{
|
||||||
|
|
|
@ -229,4 +229,5 @@ public class UpdateReportTableInput : ReportTableBaseInput
|
||||||
public class QueryByIdReportTableInput : DeleteReportTableInput
|
public class QueryByIdReportTableInput : DeleteReportTableInput
|
||||||
{
|
{
|
||||||
public string? Code { get; set; }
|
public string? Code { get; set; }
|
||||||
|
public long? SourceId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,7 +117,7 @@ public class ReportTableService : IDynamicApiController, ITransient
|
||||||
item.ReportTableId = entity.Id;
|
item.ReportTableId = entity.Id;
|
||||||
var ent = item.Adapt<PrintCodeDetail>();
|
var ent = item.Adapt<PrintCodeDetail>();
|
||||||
await _codeDetailService.UpdateByEntity(ent);
|
await _codeDetailService.UpdateByEntity(ent);
|
||||||
await _productRetrospectService.AddRetrospect(ent, entity, "汇报单", entity.ProductionLine, entity.Id);
|
await _productRetrospectService.AddRetrospect(ent, entity, "汇报单", entity.ProductionLine, entity.Id, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ public class ReportTableService : IDynamicApiController, ITransient
|
||||||
[ApiDescriptionSettings(Name = "Detail")]
|
[ApiDescriptionSettings(Name = "Detail")]
|
||||||
public async Task<ReportTable> Detail([FromQuery] QueryByIdReportTableInput input)
|
public async Task<ReportTable> Detail([FromQuery] QueryByIdReportTableInput input)
|
||||||
{
|
{
|
||||||
return await _rep.GetFirstAsync(u => u.Id == input.Id);
|
return await _rep.GetFirstAsync(u => u.Id == input.Id || (input.SourceId > 0 && u.SourceId == input.SourceId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -261,9 +261,9 @@ public class ReportTableService : IDynamicApiController, ITransient
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(unitGroup));
|
throw new ArgumentNullException(nameof(unitGroup));
|
||||||
}
|
}
|
||||||
var unit = units.Find(a => a.Name == input.Name);
|
var unit = units.Find(a => a.Name == input.Package);
|
||||||
if (unit == null)
|
if (unit == null)
|
||||||
throw new ArgumentNullException(nameof(unitGroup));
|
throw new ArgumentNullException(nameof(unit));
|
||||||
|
|
||||||
var newReport = new AddPrintRecordsInput() { CreateTime = DateTime.Now, Unit = input.Package, Name = input.Name, IsDelete = false, Batch = input.Batch, ProductDate = input.ProductDate, LoseDate = input.LoseDate, ProductCount = input.PrintDatas?.Count, MaterialsId = input.MaterialsId };
|
var newReport = new AddPrintRecordsInput() { CreateTime = DateTime.Now, Unit = input.Package, Name = input.Name, IsDelete = false, Batch = input.Batch, ProductDate = input.ProductDate, LoseDate = input.LoseDate, ProductCount = input.PrintDatas?.Count, MaterialsId = input.MaterialsId };
|
||||||
var addReport = await _printRecordsService.Add(newReport);
|
var addReport = await _printRecordsService.Add(newReport);
|
||||||
|
@ -292,6 +292,7 @@ public class ReportTableService : IDynamicApiController, ITransient
|
||||||
BaseUnit = baseUnit,
|
BaseUnit = baseUnit,
|
||||||
PrintCodeTime = DateTime.Now,
|
PrintCodeTime = DateTime.Now,
|
||||||
CreateUserId = userId,
|
CreateUserId = userId,
|
||||||
|
MaterialsId = input.MaterialsId,
|
||||||
CreateUserName = userName
|
CreateUserName = userName
|
||||||
};
|
};
|
||||||
var detailId = await _codeDetailService.Add(detail);
|
var detailId = await _codeDetailService.Add(detail);
|
||||||
|
@ -307,7 +308,7 @@ public class ReportTableService : IDynamicApiController, ITransient
|
||||||
foreach (var dt in printDatas)
|
foreach (var dt in printDatas)
|
||||||
{
|
{
|
||||||
var code2 = CodeHelper.GetCode(dt.BarCode, dt.QrCode);
|
var code2 = CodeHelper.GetCode(dt.BarCode, dt.QrCode);
|
||||||
var detail2 = new AddPrintCodeDetailInput() { TempListId = addReport, FatherCode = code, FatherId = detailId, Code = code2, ChildCount = currUnit.ChildUnitCount, CodeName = codeType, Count = 1, Unit = currUnit.Name, BaseCount = currUnit.Rate, BaseUnit = baseUnit, PrintCodeTime = DateTime.Now, CreateUserId = userId, CreateUserName = userName };
|
var detail2 = new AddPrintCodeDetailInput() { TempListId = addReport, FatherCode = code, FatherId = detailId, MaterialsId = input.MaterialsId, Code = code2, ChildCount = currUnit.ChildUnitCount, CodeName = codeType, Count = 1, Unit = currUnit.Name, BaseCount = currUnit.Rate, BaseUnit = baseUnit, PrintCodeTime = DateTime.Now, CreateUserId = userId, CreateUserName = userName };
|
||||||
var detailId2 = await _codeDetailService.Add(detail2);
|
var detailId2 = await _codeDetailService.Add(detail2);
|
||||||
var treeData2 = detail2.Adapt<PrintCodeTreeData>();
|
var treeData2 = detail2.Adapt<PrintCodeTreeData>();
|
||||||
if (tempUnits.Count > 1)
|
if (tempUnits.Count > 1)
|
||||||
|
@ -318,7 +319,7 @@ public class ReportTableService : IDynamicApiController, ITransient
|
||||||
foreach (var dt3 in printDatas3)
|
foreach (var dt3 in printDatas3)
|
||||||
{
|
{
|
||||||
var code3 = CodeHelper.GetCode(dt3.BarCode, dt3.QrCode);
|
var code3 = CodeHelper.GetCode(dt3.BarCode, dt3.QrCode);
|
||||||
var detail3 = new AddPrintCodeDetailInput() { TempListId = addReport, FatherCode = code2, FatherId = detailId2, Code = code3, ChildCount = currUnit3.ChildUnitCount, CodeName = codeType, Count = 1, Unit = currUnit3.Name, BaseCount = currUnit3.Rate, BaseUnit = baseUnit, PrintCodeTime = DateTime.Now, CreateUserId = userId, CreateUserName = userName };
|
var detail3 = new AddPrintCodeDetailInput() { TempListId = addReport, FatherCode = code2, FatherId = detailId2, MaterialsId = input.MaterialsId, Code = code3, ChildCount = currUnit3.ChildUnitCount, CodeName = codeType, Count = 1, Unit = currUnit3.Name, BaseCount = currUnit3.Rate, BaseUnit = baseUnit, PrintCodeTime = DateTime.Now, CreateUserId = userId, CreateUserName = userName };
|
||||||
var detailId3 = await _codeDetailService.Add(detail3);
|
var detailId3 = await _codeDetailService.Add(detail3);
|
||||||
var treeData3 = detail3.Adapt<PrintCodeTreeData>();
|
var treeData3 = detail3.Adapt<PrintCodeTreeData>();
|
||||||
if (tempUnits.Count > 2)
|
if (tempUnits.Count > 2)
|
||||||
|
@ -329,7 +330,7 @@ public class ReportTableService : IDynamicApiController, ITransient
|
||||||
foreach (var dt4 in printDatas4)
|
foreach (var dt4 in printDatas4)
|
||||||
{
|
{
|
||||||
var code4 = CodeHelper.GetCode(dt4.BarCode, dt4.QrCode);
|
var code4 = CodeHelper.GetCode(dt4.BarCode, dt4.QrCode);
|
||||||
var detail4 = new AddPrintCodeDetailInput() { TempListId = addReport, FatherCode = code3, FatherId = detailId3, Code = code4, ChildCount = currUnit4.ChildUnitCount, CodeName = codeType, Count = 1, Unit = currUnit4.Name, BaseCount = currUnit4.Rate, BaseUnit = baseUnit, PrintCodeTime = DateTime.Now, CreateUserId = userId, CreateUserName = userName };
|
var detail4 = new AddPrintCodeDetailInput() { TempListId = addReport, FatherCode = code3, FatherId = detailId3, MaterialsId = input.MaterialsId, Code = code4, ChildCount = currUnit4.ChildUnitCount, CodeName = codeType, Count = 1, Unit = currUnit4.Name, BaseCount = currUnit4.Rate, BaseUnit = baseUnit, PrintCodeTime = DateTime.Now, CreateUserId = userId, CreateUserName = userName };
|
||||||
var treeData4 = detail4.Adapt<PrintCodeTreeData>();
|
var treeData4 = detail4.Adapt<PrintCodeTreeData>();
|
||||||
treeData3.Children.Add(treeData4);
|
treeData3.Children.Add(treeData4);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 SqlSugar;
|
||||||
|
|
||||||
namespace Admin.NET.Application;
|
namespace Admin.NET.Application;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 调库出库服务
|
/// 调库出库服务
|
||||||
|
@ -130,7 +132,7 @@ public class WarehouseTransferService : IDynamicApiController, ITransient
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 商品出货
|
/// 商品调库
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input"></param>
|
/// <param name="input"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -227,34 +229,8 @@ public class WarehouseTransferService : IDynamicApiController, ITransient
|
||||||
foreach (var item in list)
|
foreach (var item in list)
|
||||||
{
|
{
|
||||||
var report = await GetReport(item.ReportTableId);
|
var report = await GetReport(item.ReportTableId);
|
||||||
var retrospect1 = new AddProductRetrospectInput()
|
await _productRetrospect.AddRetrospect(item.Adapt<PrintCodeDetail>(), report, "调库出库单", "", item.ReportTableId, input.WarehousingTableId);
|
||||||
{
|
|
||||||
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>();
|
static Dictionary<long, ReportTable> reportDic = new Dictionary<long, ReportTable>();
|
||||||
|
|
|
@ -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 Mapster;
|
||||||
|
|
||||||
namespace Admin.NET.Application;
|
namespace Admin.NET.Application;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 入库统计服务
|
/// 入库统计服务
|
||||||
|
@ -13,12 +15,12 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
private readonly WarehouseDetailsService _warehouseDetails;
|
private readonly WarehouseDetailsService _warehouseDetails;
|
||||||
private readonly MaterialsService _materialsService;
|
private readonly MaterialsService _materialsService;
|
||||||
private readonly SysUnitService _sysUnitService;
|
private readonly SysUnitService _sysUnitService;
|
||||||
private readonly MaterialClassifyService _materialClassifyService;
|
|
||||||
private readonly PrintCodeDetailService _codeDetailService;
|
private readonly PrintCodeDetailService _codeDetailService;
|
||||||
private readonly ProductRetrospectService _productRetrospect;
|
private readonly ProductRetrospectService _productRetrospect;
|
||||||
//private readonly ProductWarehousingService _productWarehousing;
|
|
||||||
private readonly ReportDetailTableService _reportDetailTable;
|
private readonly ReportDetailTableService _reportDetailTable;
|
||||||
private readonly UserManager _userManager;
|
private readonly UserManager _userManager;
|
||||||
|
private readonly ReportTableService _reportTableService;
|
||||||
|
private readonly WarehouseService _warehouseService;
|
||||||
|
|
||||||
public WarehousingStatisticsService(SqlSugarRepository<WarehousingStatistics> rep,
|
public WarehousingStatisticsService(SqlSugarRepository<WarehousingStatistics> rep,
|
||||||
UserManager userManager,
|
UserManager userManager,
|
||||||
|
@ -27,8 +29,9 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
SysUnitService sysUnitService,
|
SysUnitService sysUnitService,
|
||||||
PrintCodeDetailService codeDetailService,
|
PrintCodeDetailService codeDetailService,
|
||||||
ProductRetrospectService productRetrospect,
|
ProductRetrospectService productRetrospect,
|
||||||
MaterialClassifyService materialClassifyService,
|
ReportDetailTableService reportDetailTable,
|
||||||
ReportDetailTableService reportDetailTable)
|
ReportTableService reportTableService,
|
||||||
|
WarehouseService warehouseService)
|
||||||
{
|
{
|
||||||
_rep = rep;
|
_rep = rep;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
|
@ -37,9 +40,9 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
_sysUnitService = sysUnitService;
|
_sysUnitService = sysUnitService;
|
||||||
_codeDetailService = codeDetailService;
|
_codeDetailService = codeDetailService;
|
||||||
_productRetrospect = productRetrospect;
|
_productRetrospect = productRetrospect;
|
||||||
_materialClassifyService = materialClassifyService;
|
|
||||||
//_productWarehousing = productWarehousing;
|
|
||||||
_reportDetailTable = reportDetailTable;
|
_reportDetailTable = reportDetailTable;
|
||||||
|
_reportTableService = reportTableService;
|
||||||
|
_warehouseService = warehouseService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -176,7 +179,9 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
var details = await _warehouseDetails.List();
|
var details = await _warehouseDetails.List();
|
||||||
var userId = _userManager.UserId;
|
var userId = _userManager.UserId;
|
||||||
var userName = _userManager.RealName;
|
var userName = _userManager.RealName;
|
||||||
ReportDetailTable reportTable = null;
|
ReportTable reportTable = null;
|
||||||
|
var warehouse = await _warehouseService.Detail(new QueryByIdWarehouseInput() { Id = input.WarehouseId.Value });
|
||||||
|
var warehouseName = warehouse == null ? "" : warehouse.Name;
|
||||||
foreach (var item in input.CodeDatas)
|
foreach (var item in input.CodeDatas)
|
||||||
{
|
{
|
||||||
var product = await _codeDetailService.GetByProductCode(item);
|
var product = await _codeDetailService.GetByProductCode(item);
|
||||||
|
@ -185,16 +190,44 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//product.WarehouseID = input.WarehouseId;
|
//product.WarehouseID = input.WarehouseId;
|
||||||
reportTable = await _reportDetailTable.Detail(new QueryByIdReportDetailTableInput() { Id = product.ReportTableId.Value });
|
reportTable = await _reportTableService.Detail(new QueryByIdReportTableInput() { Id = product.ReportTableId.Value,SourceId=product.ReportTableId });
|
||||||
|
if (reportTable==null)
|
||||||
|
{
|
||||||
|
var table = await _reportDetailTable.Detail(new QueryByIdReportDetailTableInput() { Id = product.ReportTableId.Value });
|
||||||
|
if (table!=null)
|
||||||
|
{
|
||||||
|
reportTable = new ReportTable()
|
||||||
|
{
|
||||||
|
BaseProductCount = table.BaseProductCount,
|
||||||
|
Batch = table.Batch,
|
||||||
|
CodeNum = table.CodeNum,
|
||||||
|
CreateTime = table.CreateTime,
|
||||||
|
CreateUser = table.CreateUser,
|
||||||
|
CreateUserId = table.CreateUserId,
|
||||||
|
CreateUserName = table.CreateUserName,
|
||||||
|
MaterialsId = table.MaterialsId,
|
||||||
|
OddNumber = table.OddNumber,
|
||||||
|
ProductCount = table.ProductCount,
|
||||||
|
ProductionLine = table.ProductionLine,
|
||||||
|
ProductType = table.ProductType,
|
||||||
|
SourceNumber = table.SourceNumber,
|
||||||
|
StartDate = table.ProductDate,
|
||||||
|
Unit = table.Unit,
|
||||||
|
Remarks = table.Remarks
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
if (reportTable!=null)
|
if (reportTable!=null)
|
||||||
{
|
{
|
||||||
var materials = await _materialsService.GetById(reportTable.MaterialsId);
|
var materials = await _materialsService.GetById(reportTable.MaterialsId);
|
||||||
if (materials == null)
|
if (materials == null)
|
||||||
continue;
|
continue;
|
||||||
var units = await _sysUnitService.ListByGroupId(materials.UnitGroupId);
|
var units = await _sysUnitService.ListByGroupId(materials.UnitGroupId);
|
||||||
var baseUnit = units.LastOrDefault().Name;
|
var baseUnit = units.FirstOrDefault().Name;
|
||||||
|
|
||||||
var unit = units.Find(a => a.Name == reportTable.Unit);
|
var unit = units.Find(a => a.Name == reportTable.Unit);
|
||||||
|
if (unit == null)
|
||||||
|
unit = units.FirstOrDefault();
|
||||||
if (details != null && details.Any(a => a.MaterialsId == reportTable.MaterialsId && a.Unit == reportTable.Unit))
|
if (details != null && details.Any(a => a.MaterialsId == reportTable.MaterialsId && a.Unit == reportTable.Unit))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -214,36 +247,11 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
newEnt.BaseCount = unit.Rate;
|
newEnt.BaseCount = unit.Rate;
|
||||||
newEnt.WarehouseId = input.WarehouseId;
|
newEnt.WarehouseId = input.WarehouseId;
|
||||||
newEnt.GoodCode = item;
|
newEnt.GoodCode = item;
|
||||||
newEnt.MaterialsNum = reportTable.ProductCodeNum;
|
newEnt.MaterialsNum = materials.CodeNum;
|
||||||
var addId = await _warehouseDetails.Add(newEnt);
|
var addId = await _warehouseDetails.Add(newEnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await _productRetrospect.AddRetrospect(product, reportTable, "入库单", warehouseName, reportTable.Id, input.WarehouseId);
|
||||||
|
|
||||||
var retrospect1 = new AddProductRetrospectInput()
|
|
||||||
{
|
|
||||||
BaseCount = unit.Rate,
|
|
||||||
BaseUnit = baseUnit,
|
|
||||||
Batch = reportTable.Batch,
|
|
||||||
BusinessType = "入库单",
|
|
||||||
CodeType = input.WarehousingType,
|
|
||||||
Department = reportTable.ProductionLine,
|
|
||||||
//WarehouseID = input.WarehouseId,
|
|
||||||
WarehousingDate = DateTime.Now,
|
|
||||||
Count = 1,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ScanCodeTime = DateTime.Now,
|
|
||||||
CreateUserId = userId,
|
|
||||||
CreateUserName = userName,
|
|
||||||
MaterialsId = reportTable.MaterialsId,
|
|
||||||
OddNumber = reportTable.OddNumber,
|
|
||||||
Receipt = "汇报单",
|
|
||||||
SourceId = reportTable.Id,
|
|
||||||
Unit = unit.Name,
|
|
||||||
Name = materials.Name,
|
|
||||||
Code = item
|
|
||||||
};//Destination = warehousing.Supplier,
|
|
||||||
await _productRetrospect.Add(retrospect1);
|
|
||||||
|
|
||||||
var childs = codeDetails.FindAll(a => a.FatherCode == item);
|
var childs = codeDetails.FindAll(a => a.FatherCode == item);
|
||||||
if (childs.Count>0)
|
if (childs.Count>0)
|
||||||
|
@ -251,30 +259,7 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
var currentUnit = units.FirstOrDefault(a => a.Name == childs.FirstOrDefault().Unit);
|
var currentUnit = units.FirstOrDefault(a => a.Name == childs.FirstOrDefault().Unit);
|
||||||
foreach (var c1 in childs)
|
foreach (var c1 in childs)
|
||||||
{
|
{
|
||||||
var retrospect2 = new AddProductRetrospectInput()
|
await _productRetrospect.AddRetrospect(c1.Adapt<PrintCodeDetail>(), reportTable, "入库单", warehouseName, reportTable.Id, input.WarehouseId);
|
||||||
{
|
|
||||||
BaseCount = currentUnit.Rate,
|
|
||||||
BaseUnit = baseUnit,
|
|
||||||
Batch = reportTable.Batch,
|
|
||||||
BusinessType = "入库单",
|
|
||||||
CodeType = input.WarehousingType,
|
|
||||||
Department = reportTable.ProductionLine,
|
|
||||||
//WarehouseID = input.WarehouseId,
|
|
||||||
WarehousingDate = DateTime.Now,
|
|
||||||
Count = 1,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ScanCodeTime = DateTime.Now,
|
|
||||||
CreateUserId = userId,
|
|
||||||
CreateUserName = userName,
|
|
||||||
MaterialsId = reportTable.MaterialsId,
|
|
||||||
OddNumber = reportTable.OddNumber,
|
|
||||||
Receipt = "汇报单",
|
|
||||||
SourceId = reportTable.Id,
|
|
||||||
Unit = currentUnit.Name,
|
|
||||||
Name = materials.Name,
|
|
||||||
Code = c1.Code
|
|
||||||
};//Destination = warehousing.Supplier,
|
|
||||||
await _productRetrospect.Add(retrospect2);
|
|
||||||
|
|
||||||
var childs3 = codeDetails.FindAll(a => a.FatherCode == c1.Code);
|
var childs3 = codeDetails.FindAll(a => a.FatherCode == c1.Code);
|
||||||
if (childs3.Count > 0)
|
if (childs3.Count > 0)
|
||||||
|
@ -282,61 +267,14 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
var currentUnit3 = units.FirstOrDefault(a => a.Name == childs3.FirstOrDefault().Unit);
|
var currentUnit3 = units.FirstOrDefault(a => a.Name == childs3.FirstOrDefault().Unit);
|
||||||
foreach (var c3 in childs3)
|
foreach (var c3 in childs3)
|
||||||
{
|
{
|
||||||
var retrospect3 = new AddProductRetrospectInput()
|
await _productRetrospect.AddRetrospect(c3.Adapt<PrintCodeDetail>(), reportTable, "入库单", warehouseName, reportTable.Id, input.WarehouseId);
|
||||||
{
|
|
||||||
BaseCount = currentUnit3.Rate,
|
|
||||||
BaseUnit = baseUnit,
|
|
||||||
Batch = reportTable.Batch,
|
|
||||||
BusinessType = "入库单",
|
|
||||||
CodeType = input.WarehousingType,
|
|
||||||
Department = reportTable.ProductionLine,
|
|
||||||
//WarehouseID = input.WarehouseId,
|
|
||||||
WarehousingDate = DateTime.Now,
|
|
||||||
Count = 1,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ScanCodeTime = DateTime.Now,
|
|
||||||
CreateUserId = userId,
|
|
||||||
CreateUserName = userName,
|
|
||||||
MaterialsId = reportTable.MaterialsId,
|
|
||||||
OddNumber = reportTable.OddNumber,
|
|
||||||
Receipt = "汇报单",
|
|
||||||
SourceId = reportTable.Id,
|
|
||||||
Unit = currentUnit3.Name,
|
|
||||||
Name = materials.Name,
|
|
||||||
Code = c3.Code
|
|
||||||
};//Destination = warehousing.Supplier,
|
|
||||||
await _productRetrospect.Add(retrospect3);
|
|
||||||
|
|
||||||
var childs4 = codeDetails.FindAll(a => a.FatherCode == c3.Code);
|
var childs4 = codeDetails.FindAll(a => a.FatherCode == c3.Code);
|
||||||
if (childs4.Count > 0)
|
if (childs4.Count > 0)
|
||||||
{
|
{
|
||||||
var currentUnit4 = units.FirstOrDefault(a => a.Name == childs4.FirstOrDefault().Unit);
|
var currentUnit4 = units.FirstOrDefault(a => a.Name == childs4.FirstOrDefault().Unit);
|
||||||
foreach (var c4 in childs4)
|
foreach (var c4 in childs4)
|
||||||
{
|
{
|
||||||
var retrospect4 = new AddProductRetrospectInput()
|
await _productRetrospect.AddRetrospect(c4.Adapt<PrintCodeDetail>(), reportTable, "入库单", warehouseName, reportTable.Id, input.WarehouseId);
|
||||||
{
|
|
||||||
BaseCount = currentUnit4.Rate,
|
|
||||||
BaseUnit = baseUnit,
|
|
||||||
Batch = reportTable.Batch,
|
|
||||||
BusinessType = "入库单",
|
|
||||||
CodeType = input.WarehousingType,
|
|
||||||
Department = reportTable.ProductionLine,
|
|
||||||
//WarehouseID = input.WarehouseId,
|
|
||||||
WarehousingDate = DateTime.Now,
|
|
||||||
Count = 1,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ScanCodeTime = DateTime.Now,
|
|
||||||
CreateUserId = userId,
|
|
||||||
CreateUserName = userName,
|
|
||||||
MaterialsId = reportTable.MaterialsId,
|
|
||||||
OddNumber = reportTable.OddNumber,
|
|
||||||
Receipt = "汇报单",
|
|
||||||
SourceId = reportTable.Id,
|
|
||||||
Unit = currentUnit4.Name,
|
|
||||||
Name = materials.Name,
|
|
||||||
Code = c4.Code
|
|
||||||
};//Destination = warehousing.Supplier,
|
|
||||||
await _productRetrospect.Add(retrospect4);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -348,34 +286,11 @@ public class WarehousingStatisticsService : IDynamicApiController, ITransient
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//var warehousing = await Detail(new QueryByIdReportDetailTableInput() { Id = input.WarehousingTableId.Value });
|
|
||||||
//if (warehousing == null)
|
|
||||||
//{
|
|
||||||
// throw Oops.Oh(ErrorCodeEnum.xg1002);
|
|
||||||
//}
|
|
||||||
|
|
||||||
//var details = await _warehouseDetails.List();
|
|
||||||
//if (details != null && details.Any(a => a.MaterialsId == warehousing.MaterialsId && a.Unit == warehousing.Unit))
|
|
||||||
//{
|
|
||||||
// var unit = units.Find(a => a.Name == warehousing.Unit);
|
|
||||||
// var detail = details.Find(a => a.MaterialsId == warehousing.MaterialsId && a.Unit == warehousing.Unit);
|
|
||||||
// detail.Count += warehousing.Count;
|
|
||||||
// if (unit != null)
|
|
||||||
// {
|
|
||||||
// detail.BaseCount = detail.Count * unit.Rate;
|
|
||||||
// }
|
|
||||||
// await _warehouseDetails.UpdateByEntity(detail.Adapt<WarehouseDetails>());
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// var newEnt = warehousing.Adapt<AddWarehouseDetailsInput>();
|
|
||||||
// newEnt.SourceId = warehousing.Id;
|
|
||||||
// var addId = await _warehouseDetails.Add(newEnt);
|
|
||||||
//}
|
|
||||||
|
|
||||||
var newDetail = reportTable.Adapt<AddWarehousingStatisticsInput>();
|
var newDetail = reportTable.Adapt<AddWarehousingStatisticsInput>();
|
||||||
newDetail.SourceId = reportTable.Id;
|
if (reportTable!=null)
|
||||||
|
{
|
||||||
|
newDetail.SourceId = reportTable?.Id;
|
||||||
|
}
|
||||||
await Add(newDetail);
|
await Add(newDetail);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ enum Api {
|
||||||
PageMaterials = '/api/materials/page',
|
PageMaterials = '/api/materials/page',
|
||||||
DetailMaterials = '/api/materials/detail',
|
DetailMaterials = '/api/materials/detail',
|
||||||
ListMaterials = '/api/materials/list',
|
ListMaterials = '/api/materials/list',
|
||||||
|
MtListBySourceId = '/api/materialList/listBySourceId'
|
||||||
}
|
}
|
||||||
|
|
||||||
// 增加物料
|
// 增加物料
|
||||||
|
@ -56,3 +57,11 @@ export const listMaterials = () =>
|
||||||
data: { },
|
data: { },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// 附带的物料列表
|
||||||
|
export const materialListBySourceId = (sourceId: any) =>
|
||||||
|
request({
|
||||||
|
url: Api.MtListBySourceId,
|
||||||
|
method: 'get',
|
||||||
|
data: { sourceId },
|
||||||
|
});
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="invoice-container">
|
<div class="invoice-container">
|
||||||
<el-dialog v-model="isShowDialog" :width="800" draggable="">
|
<el-dialog v-model="isShowDialog" :width="860" draggable="">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div style="color: #fff">
|
<div style="color: #fff">
|
||||||
<!--<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>-->
|
<!--<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>-->
|
||||||
<span>{{ props.title }}</span>
|
<span>{{ props.title }}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
|
<el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" >
|
||||||
<el-row :gutter="35">
|
<el-row :gutter="35">
|
||||||
<el-form-item v-show="false">
|
<el-form-item v-show="false">
|
||||||
<el-input v-model="ruleForm.id" />
|
<el-input v-model="ruleForm.id" />
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
<el-form-item label="业务类型" prop="businessType">
|
<el-form-item label="业务类型" prop="businessType" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
|
||||||
<el-select v-model="ruleForm.businessType" placeholder="请选择" clearable>
|
<el-select v-model="ruleForm.businessType" placeholder="请选择" clearable>
|
||||||
<el-option label="销售出库" value="销售出库" />
|
<el-option label="销售出库" value="销售出库" />
|
||||||
<el-option label="其他出库" value="其他出库" />
|
<el-option label="其他出库" value="其他出库" />
|
||||||
|
@ -39,9 +39,9 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
<el-form-item label="仓库" prop="warehouse" :rules="[{ required: true, message: '仓库不能为空', trigger: 'blur' }]">
|
<el-form-item label="仓库" prop="warehouseId" :rules="[{ required: true, message: '仓库不能为空', trigger: 'blur' }]">
|
||||||
<el-select v-model="ruleForm.warehouse" placeholder="请选择" clearable >
|
<el-select v-model="ruleForm.warehouseId" placeholder="请选择" clearable @change="warehouseChange">
|
||||||
<el-option :label="item.name" :value="item.name" v-for="item, index in warehouses"
|
<el-option :label="item.name" :value="item.id" v-for="item, index in warehouses"
|
||||||
:key="index" />
|
:key="index" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -97,6 +97,52 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
|
||||||
|
<el-table
|
||||||
|
:data="ruleForm.tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
v-loading="loading"
|
||||||
|
tooltip-effect="light"
|
||||||
|
row-key="id"
|
||||||
|
border="">
|
||||||
|
<el-table-column prop="materialsId" label="物料" width="180" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-select v-model="scope.row.materialsId" placeholder="请选择" autocomplete="off" controls-position="right" clearable @change="materialsChange">
|
||||||
|
<el-option :label="item.name" :value="item.id" v-for="item, index in materials" :key="index" />
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="unit" label="单位" width="120" show-overflow-tooltip="" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-select v-model="scope.row.unit" placeholder="请选择" clearable autocomplete="off" >
|
||||||
|
<el-option :label="item.name" :value="item.name" v-for="item, index in units" :key="index" />
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="count" label="数量" width="100" show-overflow-tooltip="" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input-number v-model="scope.row.count" autocomplete="off" controls-position="right"/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="remarks" label="备注" width="140" show-overflow-tooltip="" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-model="scope.row.remarks" autocomplete="off" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip="" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button link type="primary" icon="el-icon-delete" @click.prevent="handleColDelete(scope.$index)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div style="text-align: left; margin-top: 10px">
|
||||||
|
<el-button icon="ele-Plus" @click="addColumn">新增物料</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<span class="dialog-footer">
|
<span class="dialog-footer">
|
||||||
|
@ -114,7 +160,7 @@
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref,onMounted } from "vue";
|
import { ref, onMounted, reactive } from 'vue';
|
||||||
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
|
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import type { FormRules } from "element-plus";
|
import type { FormRules } from "element-plus";
|
||||||
|
@ -122,6 +168,9 @@
|
||||||
import { listWarehouse } from '/@/api/main/warehouse';
|
import { listWarehouse } from '/@/api/main/warehouse';
|
||||||
import { listSupplier } from '/@/api/main/supplier';
|
import { listSupplier } from '/@/api/main/supplier';
|
||||||
import { listCustom } from '/@/api/main/custom';
|
import { listCustom } from '/@/api/main/custom';
|
||||||
|
import { listMaterials, detailMaterials, materialListBySourceId } from '/@/api/main/materials';
|
||||||
|
import { listUnitGroup } from '/@/api/main/unit';
|
||||||
|
import { getCurrentDate } from '/@/utils/formatTime';
|
||||||
|
|
||||||
//父级传递来的参数
|
//父级传递来的参数
|
||||||
var props = defineProps({
|
var props = defineProps({
|
||||||
|
@ -138,23 +187,36 @@
|
||||||
const warehouses = ref<any>([]);
|
const warehouses = ref<any>([]);
|
||||||
const suppliers = ref<any>([]);
|
const suppliers = ref<any>([]);
|
||||||
const customs = ref<any>([]);
|
const customs = ref<any>([]);
|
||||||
|
const loading = ref(false);
|
||||||
|
var colIndex = 0;
|
||||||
|
const materials = ref<any>([]);
|
||||||
|
const units = ref<any>([]);
|
||||||
|
const tableData = ref<any>([]);
|
||||||
|
|
||||||
//自行添加其他规则
|
//自行添加其他规则
|
||||||
const rules = ref<FormRules>({
|
const rules = ref<FormRules>({
|
||||||
businessType: [{required: true, message: '请输入业务类型!', trigger: 'blur',},],
|
// businessType: [{required: true, message: '请输入业务类型!', trigger: 'blur',},],
|
||||||
custom: [{required: true, message: '请输入客户!', trigger: 'blur',},],
|
// custom: [{required: true, message: '请输入客户!', trigger: 'blur',},],
|
||||||
warehouse: [{required: true, message: '请输入仓库!', trigger: 'blur',},],
|
// warehouse: [{required: true, message: '请输入仓库!', trigger: 'blur',},],
|
||||||
});
|
});
|
||||||
|
|
||||||
// 打开弹窗
|
// 打开弹窗
|
||||||
const openDialog = async (row: any) => {
|
const openDialog = async (row: any) => {
|
||||||
// ruleForm.value = JSON.parse(JSON.stringify(row));
|
// ruleForm = JSON.parse(JSON.stringify(row));
|
||||||
// 改用detail获取最新数据来编辑
|
// 改用detail获取最新数据来编辑
|
||||||
let rowData = JSON.parse(JSON.stringify(row));
|
let rowData = JSON.parse(JSON.stringify(row));
|
||||||
if (rowData.id)
|
if (rowData.id)
|
||||||
|
{
|
||||||
ruleForm.value = (await detailInvoice(rowData.id)).data.result;
|
ruleForm.value = (await detailInvoice(rowData.id)).data.result;
|
||||||
|
ruleForm.value.tableData = (await materialListBySourceId(rowData.id)).data.result;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
ruleForm.value = rowData;
|
ruleForm.value = rowData;
|
||||||
|
ruleForm.value.codeNum = getCurrentDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
materials.value = (await listMaterials()).data.result;
|
||||||
isShowDialog.value = true;
|
isShowDialog.value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -173,6 +235,7 @@
|
||||||
const submit = async () => {
|
const submit = async () => {
|
||||||
ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
|
ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
|
||||||
if (isValid) {
|
if (isValid) {
|
||||||
|
console.log('true');
|
||||||
let values = ruleForm.value;
|
let values = ruleForm.value;
|
||||||
if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
|
if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
|
||||||
await addInvoice(values);
|
await addInvoice(values);
|
||||||
|
@ -181,6 +244,7 @@
|
||||||
}
|
}
|
||||||
closeDialog();
|
closeDialog();
|
||||||
} else {
|
} else {
|
||||||
|
console.log('flase');
|
||||||
ElMessage({
|
ElMessage({
|
||||||
message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`,
|
message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`,
|
||||||
type: "error",
|
type: "error",
|
||||||
|
@ -189,11 +253,37 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料值变更
|
||||||
|
* @param clearBindUserId 是否清空
|
||||||
|
*/
|
||||||
|
const materialsChange = async (value : any) => {
|
||||||
|
//ruleForm.value.materialsId=value.id;
|
||||||
|
let material = (await detailMaterials(value)).data.result;
|
||||||
|
//console.log(material);
|
||||||
|
if(material.id){
|
||||||
|
var res = await listUnitGroup(material.unitGroupId ?? 0);
|
||||||
|
units.value = res.data.result ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 增加列
|
||||||
|
function addColumn() {
|
||||||
|
//console.log('object');
|
||||||
|
tableData.value.push({
|
||||||
|
materialsId: 0,
|
||||||
|
unit: '箱',
|
||||||
|
count:1,
|
||||||
|
remarks: '',
|
||||||
|
sourceId:0,
|
||||||
|
index: tableData.value.length+1,
|
||||||
|
});
|
||||||
|
|
||||||
|
ruleForm.value.tableData = tableData.value;
|
||||||
|
colIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
// 页面加载时
|
// 页面加载时
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
@ -202,6 +292,43 @@
|
||||||
customs.value = (await listCustom()).data.result;
|
customs.value = (await listCustom()).data.result;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const warehouseChange = async (value : any) => {
|
||||||
|
//ruleForm.value.materialsId=value.id;
|
||||||
|
let dir = warehouses.value.find((item) => item.id === value);
|
||||||
|
// console.log(dir.name);
|
||||||
|
ruleForm.value.warehouse = dir.name;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function handleColDelete(index: number) {
|
||||||
|
tableData.value.splice(index, 1);
|
||||||
|
ruleForm.value.tableData = tableData.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上移
|
||||||
|
function handleColUp(record: any, index: number) {
|
||||||
|
if (record) {
|
||||||
|
var data1 = ChangeExForArray(index, index - 1, ruleForm.value.tableData);
|
||||||
|
return data1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 下移
|
||||||
|
function handleColDown(record: any, index: number) {
|
||||||
|
if (record) {
|
||||||
|
return ChangeExForArray(index, index + 1, ruleForm.value.tableData);
|
||||||
|
}
|
||||||
|
//console.log(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ChangeExForArray(index1: number, index2: number, array: Array<any>) {
|
||||||
|
//console.log(array);
|
||||||
|
let temp = array[index1];
|
||||||
|
array[index1] = array[index2];
|
||||||
|
array[index2] = temp;
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
//将属性或者函数暴露给父组件
|
//将属性或者函数暴露给父组件
|
||||||
defineExpose({ openDialog });
|
defineExpose({ openDialog });
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue