| 12345678910111213141516171819202122232425262728293031 |
- using SqlSugar;
- using Yitter.IdGenerator;
- namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting.Receipt;
- /// <summary>
- /// C7 移动任务 upsert 的原始 SQL 工具(**不管理事务**;由调用方在既有事务内使用)。
- /// 幂等:DB UNIQUE (tenant_id, domain_code, task_id) + `INSERT … ON DUPLICATE KEY UPDATE`
- /// (复刻 LIVE `exists(TaskID)→UPDATE 否则 INSERT`,避免先查后插竞态)。**Phase 5B 未实库验证。**
- /// </summary>
- public static class MobileTaskSqlWriter
- {
- public static Task UpsertAsync(ISqlSugarClient db, MobileTaskCommand t)
- {
- if (t == null) throw new ArgumentNullException(nameof(t));
- var now = DateTime.Now;
- return db.Ado.ExecuteCommandAsync(
- """
- INSERT INTO ado_inventory_mobile_task
- (id,tenant_id,domain_code,posting_id,fbillno,task_id,type_id,name,description,executer,executer_type_id,plan_date,status,receiver,rct_qc_nbr,create_time,create_user)
- VALUES (@id,@t,@d,@pid,@fb,@tid,@ty,@nm,@ds,@ex,@et,@now,@st,@rcv,@qc,@now,@u)
- ON DUPLICATE KEY UPDATE executer=@ex, plan_date=@now, executer_type_id=@et, description=@ds, status=@st, update_time=@now, update_user=@u
- """,
- new SugarParameter("@id", YitIdHelper.NextId()), new SugarParameter("@t", t.TenantId), new SugarParameter("@d", t.DomainCode ?? ""),
- new SugarParameter("@pid", t.PostingId), new SugarParameter("@fb", t.Fbillno), new SugarParameter("@tid", t.TaskId ?? ""),
- new SugarParameter("@ty", t.TypeId), new SugarParameter("@nm", t.Name), new SugarParameter("@ds", t.Description),
- new SugarParameter("@ex", t.Executer), new SugarParameter("@et", t.ExecuterTypeId), new SugarParameter("@now", now),
- new SugarParameter("@st", t.Status), new SugarParameter("@rcv", t.Receiver), new SugarParameter("@qc", t.RctQcNbr),
- new SugarParameter("@u", t.User ?? ""));
- }
- }
|