|
|
@@ -56,11 +56,13 @@ public class OutsourceOrderService : IDynamicApiController, ITransient
|
|
|
pars.Add(new SugarParameter("@Supp", input.Supp.Trim()));
|
|
|
}
|
|
|
|
|
|
+ var tenantJoin = _userManager.TenantId > 0 ? " AND s.tenant_id=p.tenant_id" : "";
|
|
|
var fromSql = $"""
|
|
|
FROM PurOrdMaster p
|
|
|
- LEFT JOIN SuppMaster s ON p.Supp=s.Supp
|
|
|
- LEFT JOIN DepartmentMaster d ON p.Department=d.Department
|
|
|
- LEFT JOIN EmployeeMaster e ON p.Buyer=e.Employee
|
|
|
+ LEFT JOIN SuppMaster s ON p.Supp=s.Supp{tenantJoin}
|
|
|
+ LEFT JOIN DepartmentMaster d ON p.Department=d.Department{(_userManager.TenantId > 0 ? " AND d.tenant_id=p.tenant_id" : "")}
|
|
|
+ LEFT JOIN EmployeeMaster e ON p.Buyer=e.Employee{(_userManager.TenantId > 0 ? " AND e.tenant_id=p.tenant_id" : "")}
|
|
|
+ LEFT JOIN (SELECT DISTINCT PurOrd FROM PurOrdDetail WHERE IFNULL(RctQty,0)>0) pdhr ON pdhr.PurOrd=p.PurOrd
|
|
|
WHERE {string.Join(" AND ", where)}
|
|
|
""";
|
|
|
|
|
|
@@ -87,7 +89,7 @@ public class OutsourceOrderService : IDynamicApiController, ITransient
|
|
|
p.Department AS Department,
|
|
|
p.`Usage` AS `Usage`,
|
|
|
p.Remark AS Remark,
|
|
|
- (CASE WHEN EXISTS(SELECT 1 FROM PurOrdDetail pd WHERE pd.PurOrd=p.PurOrd AND IFNULL(pd.RctQty,0)>0) THEN 1 ELSE 0 END) AS HasReceived
|
|
|
+ CASE WHEN pdhr.PurOrd IS NOT NULL THEN 1 ELSE 0 END AS HasReceived
|
|
|
{fromSql}
|
|
|
ORDER BY {BuildOrderBy(input.SortField, input.SortOrder)}
|
|
|
LIMIT {pageSize} OFFSET {offset}
|
|
|
@@ -102,6 +104,9 @@ public class OutsourceOrderService : IDynamicApiController, ITransient
|
|
|
public async Task<object> GetOrderDetail(int id)
|
|
|
{
|
|
|
var tenantWhere = _userManager.TenantId > 0 ? " AND p.tenant_id=@TenantId" : string.Empty;
|
|
|
+ var tenantJoin = _userManager.TenantId > 0 ? " AND s.tenant_id=p.tenant_id" : string.Empty;
|
|
|
+ var tenantJoinD = _userManager.TenantId > 0 ? " AND d.tenant_id=p.tenant_id" : string.Empty;
|
|
|
+ var tenantJoinE = _userManager.TenantId > 0 ? " AND e.tenant_id=p.tenant_id" : string.Empty;
|
|
|
var detailPars = _userManager.TenantId > 0
|
|
|
? new[] { new SugarParameter("@Id", id), new SugarParameter("@TenantId", _userManager.TenantId) }
|
|
|
: new[] { new SugarParameter("@Id", id) };
|
|
|
@@ -125,9 +130,9 @@ public class OutsourceOrderService : IDynamicApiController, ITransient
|
|
|
p.`Usage` AS `Usage`,
|
|
|
p.Remark AS Remark
|
|
|
FROM PurOrdMaster p
|
|
|
- LEFT JOIN SuppMaster s ON p.Supp=s.Supp
|
|
|
- LEFT JOIN DepartmentMaster d ON p.Department=d.Department
|
|
|
- LEFT JOIN EmployeeMaster e ON p.Buyer=e.Employee
|
|
|
+ LEFT JOIN SuppMaster s ON p.Supp=s.Supp{tenantJoin}
|
|
|
+ LEFT JOIN DepartmentMaster d ON p.Department=d.Department{tenantJoinD}
|
|
|
+ LEFT JOIN EmployeeMaster e ON p.Buyer=e.Employee{tenantJoinE}
|
|
|
WHERE p.RecID=@Id{tenantWhere}
|
|
|
LIMIT 1
|
|
|
""",
|
|
|
@@ -616,12 +621,15 @@ public class OutsourceOrderService : IDynamicApiController, ITransient
|
|
|
[HttpGet("outsource-order/options/buyers")]
|
|
|
public async Task<object> GetBuyerOptions()
|
|
|
{
|
|
|
+ var (where, pars) = BuildTenantFilter();
|
|
|
var list = await _db.Ado.SqlQueryAsync<OptionRow>(
|
|
|
- """
|
|
|
+ $"""
|
|
|
SELECT Employee AS Value, CONCAT(TRIM(Employee),' ',TRIM(IFNULL(Name,''))) AS Label
|
|
|
FROM EmployeeMaster
|
|
|
+ WHERE 1=1{where}
|
|
|
ORDER BY Employee
|
|
|
- """);
|
|
|
+ """,
|
|
|
+ pars);
|
|
|
return new { list };
|
|
|
}
|
|
|
|
|
|
@@ -629,12 +637,15 @@ public class OutsourceOrderService : IDynamicApiController, ITransient
|
|
|
[HttpGet("outsource-order/options/suppliers")]
|
|
|
public async Task<object> GetSupplierOptions()
|
|
|
{
|
|
|
+ var (where, pars) = BuildTenantFilter();
|
|
|
var list = await _db.Ado.SqlQueryAsync<OptionRow>(
|
|
|
- """
|
|
|
+ $"""
|
|
|
SELECT Supp AS Value, CONCAT(TRIM(Supp),' ',TRIM(IFNULL(SortName,''))) AS Label
|
|
|
FROM SuppMaster
|
|
|
+ WHERE 1=1{where}
|
|
|
ORDER BY Supp
|
|
|
- """);
|
|
|
+ """,
|
|
|
+ pars);
|
|
|
return new { list };
|
|
|
}
|
|
|
|
|
|
@@ -642,12 +653,15 @@ public class OutsourceOrderService : IDynamicApiController, ITransient
|
|
|
[HttpGet("outsource-order/options/departments")]
|
|
|
public async Task<object> GetDepartmentOptions()
|
|
|
{
|
|
|
+ var (where, pars) = BuildTenantFilter();
|
|
|
var list = await _db.Ado.SqlQueryAsync<OptionRow>(
|
|
|
- """
|
|
|
+ $"""
|
|
|
SELECT Department AS Value, CONCAT(TRIM(Department),' ',TRIM(IFNULL(Descr,''))) AS Label
|
|
|
FROM DepartmentMaster
|
|
|
+ WHERE 1=1{where}
|
|
|
ORDER BY Department
|
|
|
- """);
|
|
|
+ """,
|
|
|
+ pars);
|
|
|
return new { list };
|
|
|
}
|
|
|
|
|
|
@@ -655,16 +669,26 @@ public class OutsourceOrderService : IDynamicApiController, ITransient
|
|
|
[HttpGet("outsource-order/options/locations")]
|
|
|
public async Task<object> GetLocationOptions()
|
|
|
{
|
|
|
+ var (where, pars) = BuildTenantFilter();
|
|
|
var list = await _db.Ado.SqlQueryAsync<OptionRow>(
|
|
|
- """
|
|
|
+ $"""
|
|
|
SELECT location AS Value, CONCAT(TRIM(location),' ',TRIM(IFNULL(descr,''))) AS Label
|
|
|
FROM LocationMaster
|
|
|
- WHERE IFNULL(typed,'')<>'Supp'
|
|
|
+ WHERE IFNULL(typed,'')<>'Supp'{where}
|
|
|
ORDER BY location
|
|
|
- """);
|
|
|
+ """,
|
|
|
+ pars);
|
|
|
return new { list };
|
|
|
}
|
|
|
|
|
|
+ private (string Where, List<SugarParameter> Pars) BuildTenantFilter()
|
|
|
+ {
|
|
|
+ var tenantId = _userManager.TenantId;
|
|
|
+ if (tenantId > 0)
|
|
|
+ return (" AND tenant_id = @TenantId", new List<SugarParameter> { new("@TenantId", tenantId) });
|
|
|
+ return ("", new List<SugarParameter>());
|
|
|
+ }
|
|
|
+
|
|
|
[DisplayName("BOM组件查询")]
|
|
|
[HttpGet("outsource-order/options/bom")]
|
|
|
public async Task<object> GetBomComponents([FromQuery] string itemNum)
|