docs(员工代收款): 补充审批中通过后撤销兜底语义并清理死参数
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m24s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m24s
- spec.md 增补「审批中收到通过后撤销」场景与规范条文:释放该次尝试全部审批中预占、转异常终态并记录原因、保留审计、禁止自动重提 - design.md「企业微信审批结果消费」补充审批中命中该决策的兜底处理与理由(避免申请永久停在审批中且预占永久占用账单) - query/employeecollection 删除 approvalStatusOfAttempts 恒为 true 的 withOpinion 形参、修正失真注释,行为不变 OpenSpec Change: add-employee-collection-bills
This commit is contained in:
@@ -196,7 +196,7 @@ func (q *ApplicationQuery) applicationAttemptList(
|
||||
Order("attempt_no ASC, id ASC").Find(&attempts).Error; err != nil {
|
||||
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询核销审批尝试记录失败")
|
||||
}
|
||||
approvalStatus, approvalOpinions, err := approvalStatusOfAttempts(ctx, q.db, attempts, true)
|
||||
approvalStatus, approvalOpinions, err := approvalStatusOfAttempts(ctx, q.db, attempts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -365,7 +365,7 @@ func (q *BillQuery) applicationAttempts(
|
||||
Order("application_id ASC, attempt_no ASC").Find(&attempts).Error; err != nil {
|
||||
return nil, nil, nil, errors.Wrap(errors.CodeDatabaseError, err, "查询审批尝试记录失败")
|
||||
}
|
||||
approvalStatus, approvalOpinions, err := approvalStatusOfAttempts(ctx, q.db, attempts, true)
|
||||
approvalStatus, approvalOpinions, err := approvalStatusOfAttempts(ctx, q.db, attempts)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
@@ -376,13 +376,11 @@ func (q *BillQuery) applicationAttempts(
|
||||
return grouped, approvalStatus, approvalOpinions, nil
|
||||
}
|
||||
|
||||
// approvalStatusOfAttempts 批量读取审批尝试记录关联的通用审批实例状态。
|
||||
// withOpinion 为真时同时读取终态决策快照并提取审批意见;列表路径传 false,避免批量加载渠道快照。
|
||||
// approvalStatusOfAttempts 批量读取审批尝试记录关联的通用审批实例状态与终态审批意见。
|
||||
func approvalStatusOfAttempts(
|
||||
ctx context.Context,
|
||||
db *gorm.DB,
|
||||
attempts []model.EmployeeCollectionApplicationAttempt,
|
||||
withOpinion bool,
|
||||
) (map[uint]int, map[uint]string, error) {
|
||||
instanceIDs := make([]uint, 0, len(attempts))
|
||||
for index := range attempts {
|
||||
@@ -395,10 +393,7 @@ func approvalStatusOfAttempts(
|
||||
if len(instanceIDs) == 0 {
|
||||
return approvalStatus, approvalOpinions, nil
|
||||
}
|
||||
columns := []string{"id", "status"}
|
||||
if withOpinion {
|
||||
columns = append(columns, "decision_snapshot")
|
||||
}
|
||||
columns := []string{"id", "status", "decision_snapshot"}
|
||||
var instances []model.ApprovalInstance
|
||||
if err := db.WithContext(ctx).Select(columns).
|
||||
Where("id IN ?", instanceIDs).Find(&instances).Error; err != nil {
|
||||
|
||||
Reference in New Issue
Block a user