assembly-rest-backfill-example.sql 1.3 KB

123456789101112131415161718192021222324252627
  1. -- 由数据库管理员核实后,替换四个值,再整体执行。日期使用现场/数据库一致时区。
  2. -- 不可用create_date/update_date/piecework_date直接批量推算。
  3. SET @assembly_record_id = 'REPLACE_WITH_RECORD_ID';
  4. SET @verified_completed_at = '2000-01-01 00:00:00';
  5. SET @verified_operator = 'REPLACE_WITH_OPERATOR';
  6. SET @verified_reason = 'REPLACE_WITH_EVIDENCE';
  7. START TRANSACTION;
  8. SELECT id, sn, oprno, content, assembly_completed_at
  9. FROM mes_product_record WHERE id = @assembly_record_id FOR UPDATE;
  10. INSERT INTO mes_assembly_clock_audit
  11. (record_id, old_completed_at, new_completed_at, operator_name, reason)
  12. SELECT id, assembly_completed_at, @verified_completed_at, @verified_operator, @verified_reason
  13. FROM mes_product_record
  14. WHERE id = @assembly_record_id AND craft = '100000' AND content = 'OK'
  15. AND oprno REGEXP '^OP200[A-Za-z]?$' AND assembly_completed_at IS NULL
  16. AND @verified_completed_at <= CURRENT_TIMESTAMP
  17. AND @assembly_record_id != 'REPLACE_WITH_RECORD_ID'
  18. AND @verified_operator != 'REPLACE_WITH_OPERATOR'
  19. AND @verified_reason != 'REPLACE_WITH_EVIDENCE'
  20. AND @verified_completed_at != '2000-01-01 00:00:00';
  21. SET @clock_audit_inserted = ROW_COUNT();
  22. UPDATE mes_product_record SET assembly_completed_at = @verified_completed_at
  23. WHERE id = @assembly_record_id AND @clock_audit_inserted = 1;
  24. COMMIT;