fix: 档口入库码按货运单号直查顺运宝 (#245)

This commit is contained in:
chengma
2026-08-15 16:27:03 +08:00
parent 4d8434b499
commit b47e7ed9a9
5 changed files with 412 additions and 111 deletions
-37
View File
@@ -21,12 +21,6 @@ var ErrInnerCodeRestoreConflict = errors.New("已回写或需核对的删除记
// ErrInnerCodeDeleteConflict 表示批量删除时记录已经不可见或不存在,整批不会部分删除。
var ErrInnerCodeDeleteConflict = errors.New("部分档口入库码记录已删除或不存在")
// InnerCodeSybSnapshot 是本地顺运宝明细用于解析货运单 stock id 的最小快照。
type InnerCodeSybSnapshot struct {
OrderNumber string
SybData string
}
// InnerCodeListFilter 是独立页面可组合的查询条件。
type InnerCodeListFilter struct {
BusinessDate string
@@ -265,37 +259,6 @@ func ListInnerCodePlanningContext(q Execer, businessDate string, orderNumbers []
return result, nil
}
// ListInnerCodeSybSnapshots 查询订单号对应的本地 SYB 原始快照。
func ListInnerCodeSybSnapshots(q Execer, orderNumbers []string) ([]InnerCodeSybSnapshot, error) {
if len(orderNumbers) == 0 {
return nil, nil
}
placeholders := make([]string, len(orderNumbers))
args := make([]any, len(orderNumbers))
for index, orderNumber := range orderNumbers {
placeholders[index] = "?"
args[index] = orderNumber
}
rows, err := q.Query(`SELECT order_no,syb_data FROM syb_orders WHERE order_no IN (`+
strings.Join(placeholders, ",")+`) ORDER BY order_no,syb_id`, args...)
if err != nil {
return nil, fmt.Errorf("查询档口入库码对应顺运宝快照失败: %w", err)
}
defer rows.Close()
result := make([]InnerCodeSybSnapshot, 0)
for rows.Next() {
var row InnerCodeSybSnapshot
if err := rows.Scan(&row.OrderNumber, &row.SybData); err != nil {
return nil, fmt.Errorf("读取顺运宝快照失败: %w", err)
}
result = append(result, row)
}
if err := rows.Err(); err != nil {
return nil, fmt.Errorf("遍历顺运宝快照失败: %w", err)
}
return result, nil
}
// SaveInnerCodePlans 在同一事务中保存一批只读规划结果。
func SaveInnerCodePlans(db *sql.DB, plans []model.InnerCodeRecord, plannedAt string) error {
tx, err := db.Begin()