This updates the REV004 writtenoff evidence with a fresh post-patch smoke run covering submit, detail/page query, approve/reject, DB writeback, cleanup, and runtime shutdown on port 48094. Constraint: Evidence must reflect the final backend patch set actually pushed for PR #77 Rejected: Leave the earlier pre-patch smoke as the last evidence point | weaker proof for the final transaction/fail-fast tightening Confidence: high Scope-risk: narrow Reversibility: clean Directive: If writtenoff smoke is rerun again, append a new dated subsection instead of overwriting this verification trail Tested: Fresh jar smoke on 48094 plus direct psql cleanup/readback verification on 2026-04-17 Not-tested: No separate document export/render pipeline run for this evidence refresh
5.0 KiB
5.0 KiB
REV004 writtenoff formal-table 已应用到 application-dev 测试库(2026-04-17)
目标库
依据:
sw-business/sw-business-server/src/main/resources/application-dev.yaml
解析结果:
- Host:
192.168.10.130 - Port:
5436 - DB:
sw_system - User:
sw_system
已执行脚本
sql/rev004/REV004_writtenoff_formal_tables_deploy.sql
DDL 执行结果
结果:PASS
已确认存在:
biz_writtenoff_adjustbiz_writtenoff_adjust_detailbiz_writtenoff_adjust_seqbiz_writtenoff_adjust_detail_seq
已确认幂等重放通过:
- second apply 输出
already exists, skipping - 无重复约束/重复索引异常
代码验证
compile
mvn -pl sw-business/sw-business-server -DskipTests compile
结果:PASS
targeted tests
mvn -pl sw-business/sw-business-server \
-Dtest=AccountingAdjustSoldProcessServiceImplTest,AccountingAdjustActionServiceImplTest,AccountingAdjustProcessServiceImplTest,AccountingAdjustQueryServiceImplTest,WrittenoffFormalizationServiceTest test
结果:PASS
- Tests run: 41
- Failures: 0
- Errors: 0
HTTP smoke(fresh jar, port 48093)
submit
sold-submiton charge992005→REV004-SLD-992005-20260417143622sold-submiton charge992006→REV004-SLD-992006-20260417143623- 返回统一为:
objectType = WRITTENOFF_ADJUSTapprovalStatus = PENDING_APPROVALresultStatus = PENDING_APPROVALwriteBackStatus = PENDING
DB 回读
biz_writtenoff_adjust_detail:
- submit 后 detail 进入
PENDING_APPROVAL / SUBMIT
query
GET /admin-api/business/accounting-adjust/get?adjustmentNo=...对 writtenoff 已返回 formal detailGET /admin-api/business/accounting-adjust/page?...objectType=WRITTENOFF_ADJUST已返回 formal-first 列表
approve / reject
- approve:
/admin-api/business/accounting-adjust/approve- 返回
APPROVED/SUCCESS/UPDATED - 账单
extended_amount归零、discount_money累加、pay_state=SETTLED(2)
- 返回
- reject:
/admin-api/business/accounting-adjust/reject- 返回
REJECTED/FAIL/SKIPPED - 账单保持原值,不执行核销回写
- 返回
测试数据清理
smoke 完成后已删除:
biz_operat_log / detail(identify_value =992005,992006)biz_writtenoff_adjust / detailbiz_charge(992005,992006)biz_cust(REV004_WO_SMOKE_A,REV004_WO_SMOKE_B)
回读结果:
writtenoff_main_left=0operat_log_left=0charge_left=0cust_left=0
运行态清理
用于 fresh-jar HTTP smoke 的临时实例:
- port
48093
已停止,当前无残留 LISTEN 进程。
当前结论
本轮 writtenoff formal-table 已达到:
- DDL 可落库且可幂等重放;
- sold submit 能落 pending formal main/detail;
- approve/reject 会同步 formal 状态;
- detail/page 对
WRITTENOFF_ADJUST已能返回 formal-first 结果; - sold submit 已补事务边界,避免 operat_log 与 formal-table 半成功;
- 审批/驳回缺失 formal 主记录时将显式报错,避免静默漏更新。
当前未完成
- writtenoff formal-first 目前仍是最小实现,后续仍可优化 page 查询性能(避免 listAll + getView N+1);
- 若需要更细的 charge_detail 差异映射到 formal 明细,可在后续补强。
最终补丁后复核(2026-04-17 14:57 +08:00)
针对本轮补加的两个可靠性修正再次执行 fresh-jar smoke:
createSoldAction(...)补@Transactional,确保 syntheticoperat_log与 formal pending 记录同事务提交;- writtenoff approve/reject 缺失 formal 主记录时改为显式报错,避免静默跳过 formal 状态更新。
fresh jar
- 端口:
48094 - 启动方式:
/usr/bin/java -jar sw-business/sw-business-server/target/sw-business-server.jar --spring.profiles.active=dev --server.port=48094 GET /actuator/health返回:{"status":"UP"}
smoke 数据
- charge
992105(approve) - charge
992106(reject) - submit 返回调整单:
REV004-SLD-992105-20260417145725REV004-SLD-992106-20260417145726
HTTP 结果
sold-submit:两笔均返回PENDING_APPROVAL / PENDINGget?adjustmentNo=REV004-SLD-992105-20260417145725:可返回 formal detail(核销金额、账务年月等)page?objectType=WRITTENOFF_ADJUST:可返回两笔 fresh smoke formal 记录approve:返回APPROVED / SUCCESS / UPDATEDreject:返回REJECTED / FAIL / SKIPPED
DB 回读
biz_writtenoff_adjust:
REV004-SLD-992105-20260417145725 -> APPROVED | UPDATED | SUCCESSREV004-SLD-992106-20260417145726 -> REJECTED | SKIPPED | FAIL
biz_writtenoff_adjust_detail:
- approve 明细:
SUCCESS | APPROVE_EXECUTE | approve final smoke - reject 明细:
REJECTED | REJECT | reject final smoke
biz_charge:
992105 -> pay_state=2, extended_amount=0, discount_money=120, original_money=120992106 -> pay_state=1, extended_amount=88, discount_money=0, original_money=88
说明:最终补丁后,writtenoff submit / get / page / approve / reject 主链路再次通过,且回写结果与预期一致。