[CLAUDE] PurchaseEvaluation: cây Duyệt NCC node Dự án hiện mã dự án thay tên dài (anh Kiệt FDC)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m23s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m23s
Anh Kiệt FDC (Zalo + screenshot): node 📁 Dự án trong cây "Năm > Dự án > Hạng mục > Phiếu" hiện TÊN dài ("Phân xưởng homecare 75 tấn/ngày và các hạng mục") → user thấy vướng → "bắt mã dự án nhé". BE: thread ProjectCode vào PurchaseEvaluationListItemDto + 3 projection (list + inbox + approved-from-evaluation) + search khớp thêm mã dự án. FE 2 app (SHA-mirror): PeListItem +projectCode; tree node 📁 render Code (fallback Name nếu rỗng) + tooltip=tên đầy đủ + sort theo mã. Verify: dotnet build 0/0 - npm build x2 PASS - test 434 (45D+389I). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -177,7 +177,7 @@ public class ListApprovedPurchaseEvaluationsQueryHandler(IApplicationDbContext d
|
||||
orderby e.CreatedAt descending
|
||||
select new PurchaseEvaluationListItemDto(
|
||||
e.Id, e.MaPhieu, e.TenGoiThau, e.Type, e.Phase,
|
||||
e.ProjectId, p.Name,
|
||||
e.ProjectId, p.Name, p.Code,
|
||||
e.WorkItemId, wi != null ? wi.Name : null, wi != null ? wi.Code : null,
|
||||
e.SelectedSupplierId, s != null ? s.Name : null,
|
||||
e.ContractId, e.SlaDeadline, e.CreatedAt, e.UpdatedAt,
|
||||
|
||||
@ -11,6 +11,8 @@ public record PurchaseEvaluationListItemDto(
|
||||
PurchaseEvaluationPhase Phase,
|
||||
Guid ProjectId,
|
||||
string ProjectName,
|
||||
// [S93 anh Kiệt FDC] Mã dự án — tree node 📁 Dự án hiện CODE (ngắn) thay tên dài.
|
||||
string ProjectCode,
|
||||
// [Mig 49 S57bis] Hạng mục công việc — loose-Guid resolve LEFT join WorkItems
|
||||
// (mirror ProjectName). Nullable cho 4 phiếu cũ chưa gắn hạng mục.
|
||||
Guid? WorkItemId,
|
||||
|
||||
@ -604,7 +604,8 @@ public class ListPurchaseEvaluationsQueryHandler(
|
||||
q = q.Where(x =>
|
||||
(x.e.MaPhieu != null && x.e.MaPhieu.Contains(s)) ||
|
||||
x.e.TenGoiThau.Contains(s) ||
|
||||
x.p.Name.Contains(s));
|
||||
x.p.Name.Contains(s) ||
|
||||
x.p.Code.Contains(s));
|
||||
}
|
||||
|
||||
// S23 t2 UAT: sort theo "phiếu vừa update" — UpdatedAt fallback CreatedAt
|
||||
@ -620,7 +621,7 @@ public class ListPurchaseEvaluationsQueryHandler(
|
||||
.Skip((request.Page - 1) * request.PageSize).Take(request.PageSize)
|
||||
.Select(x => new PurchaseEvaluationListItemDto(
|
||||
x.e.Id, x.e.MaPhieu, x.e.TenGoiThau, x.e.Type, x.e.Phase,
|
||||
x.e.ProjectId, x.p.Name,
|
||||
x.e.ProjectId, x.p.Name, x.p.Code,
|
||||
x.e.WorkItemId, x.wi != null ? x.wi.Name : null, x.wi != null ? x.wi.Code : null,
|
||||
x.e.SelectedSupplierId, x.s != null ? x.s.Name : null,
|
||||
x.e.ContractId, x.e.SlaDeadline, x.e.CreatedAt, x.e.UpdatedAt,
|
||||
@ -737,7 +738,7 @@ public class GetMyPurchaseEvaluationInboxQueryHandler(
|
||||
.OrderByDescending(x => x.e.UpdatedAt ?? x.e.CreatedAt)
|
||||
.Select(x => new PurchaseEvaluationListItemDto(
|
||||
x.e.Id, x.e.MaPhieu, x.e.TenGoiThau, x.e.Type, x.e.Phase,
|
||||
x.e.ProjectId, x.p.Name,
|
||||
x.e.ProjectId, x.p.Name, x.p.Code,
|
||||
x.e.WorkItemId, x.wi != null ? x.wi.Name : null, x.wi != null ? x.wi.Code : null,
|
||||
x.e.SelectedSupplierId, x.s != null ? x.s.Name : null,
|
||||
x.e.ContractId, x.e.SlaDeadline, x.e.CreatedAt, x.e.UpdatedAt,
|
||||
|
||||
Reference in New Issue
Block a user