Báo cáo chuyển đổi warehouse-service

rsinoutward · rsinoutward/get-all-transactions · api

GET/api/page/rs-inoutward/get-all-transactions

Vòng
2
Cổng G1–G6
PENDING_SONAR
Bước
sonar-check
Nhánh đích
feat/thongpd/migrate-get-rs

Phân tích luồng sau chuyển — rsinoutward/get-all-transactions — vòng 2 (thu hẹp)

logic-reviewer viết dựa trên code đã implement, đối chiếu với code cũ. Vòng 2: fix.diff chỉ sửa test (RsInoutwardTransactionQueryServiceTest — phần count R-08/R-14 thuộc F-01; RsInoutwardTransactionRelationalRepositoryTest — câu tổng R-11 thuộc F-02). Code src/main không đổi; đã mở lại các dòng trích dẫn bên dưới và xác nhận số dòng như vòng 1. Đường dẫn mới tính từ C:/Projects/warehouse-service-wt/ws1/src/main/java/com/softdreams/easypos/warehouse/. backend: = easyposbackend1:src/main/java/vn/softdreams/easypos/.

F-01 Kiểm đầu vào, dựng điều kiện, đếm + đọc trang

  • Điểm vào: cũ backend:web/rest/RsInoutWardManagementResource.java:66-93 → mới presentation/web/rsinoutward/RsInoutwardQueryController.java:47-72
  • Quy tắc: R-01..R-09, R-14..R-17 (vòng này đối chiếu lại R-08, R-14)

Sơ đồ luồng mới (theo code thực tế)

sequenceDiagram
    participant Ctl as RsInoutwardQueryController
    participant S as RsInoutwardTransactionQueryService.getAllTransactions (readOnly tx)
    participant R as RsInoutwardTransactionRelationalRepository.findPage
    participant B as RsInoutwardTransactionSqlBuilder.pageSql
    Ctl->>S: RsInoutwardTransactionQuery(offset, pageSize)
    S->>S: checkCompany, checkFormat x2, reasonOf, findPpuIds, TransactionDateRange.of
    S->>R: findPage(filter, offset, pageSize)
    R->>B: pageSql (COUNT + SELECT, ORDER BY r.norm_date DESC, r.id DESC)
    R->>R: COUNT(DISTINCT r.id); 0 → trang rỗng, total 0
    R->>R: setFirstResult((int) offset), setMaxResults(size); total = PageImpl(rows, PageRequest(offset/size,size), total)
    S->>S: count = (int) total
    alt trang rỗng
        S-->>Ctl: Result(reason, count, null, null, null, ZERO, null)
    else có dòng
        S->>S: F-02 (countAll = (long) count), F-03
        S-->>Ctl: Result(reason, count, comId, fromDate, toDate, totals|ZERO, items)
    end

Đối chiếu từng bước

# Luồng cũ (repo:path:dòng) Luồng mới (path:dòng) Kết luận
1-8 Bước 1-8 vòng 1 (bind, interceptor, token, ngày, reason, ppu, parse lần 2, dựng điều kiện) không đổi như verify/round-1/flow-analysis.md F-01 bước 1-8
9 COUNT(DISTINCT r.id); 0 → PageImpl rỗng — backend:repository/impl/RsInoutWardRepositoryImpl.java:230-238 infrastructure/relational/rsinoutward/adapter/RsInoutwardTransactionRelationalRepository.java:76-81 KHỚP
10 setParamsWithPageable ép (int) offset, new PageImpl(list, pageable, total) — RsInoutWardRepositoryImpl.java:240-243 RsInoutwardTransactionRelationalRepository.java:82-94 KHỚP (offset 4294968000 → 704, tổng 4294968003; offset âm sau ép → 500 EXCEPTION_ERROR, cũ 417 — D-03)
11 ORDER BY cố định — RsInoutWardRepositoryImpl.java:223 RsInoutwardTransactionSqlBuilder.java:53,125 KHỚP
12 size = (int) totalElements; trang rỗng trả response mặc định; BaseResultDTO(..., size) — backend:service/impl/RsInoutWardManagementServiceImpl.java:485-488,558-564 application/rsinoutward/RsInoutwardTransactionQueryService.java:97-108,116-124 KHỚP (tổng 4294968003 → count 707)
13-15 Bước 13-15 vòng 1 (scale mapper, vỏ response, replica) không đổi như vòng 1 (D-02, D-08)

Dữ liệu và side effect

Bảng / topic / cache Cũ (đọc/ghi, điều kiện) Mới (đọc/ghi, điều kiện) Ghi chú
rs_inoutward (+ rs_inoutward_detail r2) đọc COUNT + SELECT trang như cũ không đổi so với vòng 1

Transaction, khoá, idempotency, tenant

  • Không đổi so với vòng 1: một transaction readOnly ở service (RsInoutwardTransactionQueryService.java:75), chỉ đọc, có com_id.

Lệch so với luồng mới đã duyệt (spec mục 6)

Không.

Dev cần chú ý khi review

Vị trí Vì sao
RsInoutwardTransactionRelationalRepository.java:85-94 Ép (int) offset và dựng lại PageRequest để PageImpl cho cùng tổng như cũ (K-09); test TC-36 khoá cả phần repository và phần count ở service.

F-02 Bổ sung dòng và tổng (trang có dòng)

  • Điểm vào: cũ backend:service/impl/RsInoutWardManagementServiceImpl.java:488-543 → mới application/rsinoutward/RsInoutwardTransactionQueryService.java:109-124
  • Quy tắc: R-10, R-11 (vòng này đối chiếu lại R-11)

Sơ đồ luồng mới (theo code thực tế)

sequenceDiagram
    participant S as RsInoutwardTransactionQueryService
    participant R as RsInoutwardTransactionRelationalRepository
    participant B as RsInoutwardTransactionSqlBuilder.totalsSql
    S->>S: loadLookups (business type, customer code2, đếm SP; countAll = (long) count)
    S->>R: sumTotals(filter)
    R->>B: TOTALS_HEAD + " AND " + quý/ngày + type/keyword/paymentStatus + " ) r "
    B->>B: nếu cần chi tiết: JOIN r2 ON r2.rs_inoutward_id = r.id + ppu + r2.from_warehouse_id + " and r2.batch_id"
    R-->>S: totals | null (không có dòng)
    S->>S: totals == null → ZERO

Đối chiếu từng bước

# Luồng cũ (repo:path:dòng) Luồng mới (path:dòng) Kết luận
1-5 Bước 1-5 vòng 1 (business type, rids/cids/countAll, customer code2, đếm SP, gán) không đổi như verify/round-1/flow-analysis.md F-02 bước 1-5
6 Subquery lọc phiếu — backend:repository/impl/RsInoutWardRepositoryImpl.java:293-326 RsInoutwardTransactionSqlBuilder.java:66-79,134-141 KHỚP
7 JOIN chi tiết không DISTINCT; ppu AND, kho AND r2.from_warehouse_id, lô and r2.batch_id (chữ thường) — RsInoutWardRepositoryImpl.java:328-340,258-261 RsInoutwardTransactionSqlBuilder.java:80-81,142-153,50,223-228 KHỚP (nhân theo dòng chi tiết — D-06)
8 Không có dòng → null; null → giữ mặc định 0 — RsInoutWardRepositoryImpl.java:348, RsInoutWardManagementServiceImpl.java:539-543 RsInoutwardTransactionRelationalRepository.java:128-136, RsInoutwardTransactionQueryService.java:110,122 KHỚP

Dữ liệu và side effect

Bảng / topic / cache Cũ (đọc/ghi, điều kiện) Mới (đọc/ghi, điều kiện) Ghi chú
rs_inoutward + rs_inoutward_detail đọc SUM tổng, com_id trong subquery như cũ khớp

Transaction, khoá, idempotency, tenant

  • Không đổi so với vòng 1: cùng transaction readOnly, chỉ đọc; câu tổng lọc com_id trong subquery.

Lệch so với luồng mới đã duyệt (spec mục 6)

Không.

Dev cần chú ý khi review

Vị trí Vì sao
RsInoutwardTransactionSqlBuilder.java:134-155 Câu tổng JOIN chi tiết không DISTINCT, không norm_quarter — cố ý theo D-06; test TC-45 giờ so nguyên văn chữ hoa/thường.

F-03 Liên thông dược (Mongo + Redis) — không đổi so với vòng 1: xem verify/round-1/flow-analysis.md

Nguồn của trang này

  • Phân tích luồng migrations/rsinoutward/get-all-transactions/verify/round-2/flow-analysis.md vòng 2 · sha256 28eb4310d632

v1 dựng 2026-11-09 14:46 · base commit đích 661efe9b8c