using Admin.NET.Plugin.AiDOP.FinishedWarehouse.Dto;
namespace Admin.NET.Plugin.AiDOP.FinishedWarehouse;
///
/// S7 生产入库单列表 只读 list 服务。
///
/// 数据源:aidopdev.NbrMaster ⋈ NbrDetail(Type='WOI' 生产入库、IsActive=1),忠实复刻证据 sql.txt:
/// LEFT JOIN DepartmentMaster(部门)、ItemMaster(名称/规格/单位),明细粒度(一行一 NbrDetail)。
/// 口径由 SQL 内定义:单据号=Nbr;入库日期=Date;状态=Status;入库类型=Remark;入库数量=QtyRec;
/// ERP工单号=Address;相关单号=OrdNbr。排序 Nbr DESC, Line。
/// Domain 由 GeneralizedCodeMaster(SystemConfig/CompanyCode) 解析,默认 8010。
///
/// 本服务仅 SELECT:无新增/编辑/删除/入库写入/库存事务/状态流转;NbrMaster 无 tenant_id,不做租户过滤。
///
[ApiDescriptionSettings(Order = 310, Description = "生产入库单列表")]
[Route("api/S7ProductionInbound")]
[AllowAnonymous]
[NonUnify]
public class ProductionInboundService : IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
public ProductionInboundService(ISqlSugarClient db)
{
_db = db;
}
/// 解析公司域(GeneralizedCodeMaster SystemConfig/CompanyCode,默认 8010)。
private async Task ResolveDomainAsync()
{
var list = await _db.Ado.SqlQueryAsync(
"SELECT Domain FROM GeneralizedCodeMaster WHERE FldName='SystemConfig' AND Val='CompanyCode' ORDER BY RecID LIMIT 1");
var domain = list.FirstOrDefault();
return string.IsNullOrWhiteSpace(domain) ? "8010" : domain;
}
///
/// 生产入库单列表(只读分页查询)。
///
[DisplayName("生产入库单列表")]
[HttpGet("list")]
public async Task