Sp_System_ReplaceField.md 2.63 KB

Sp_System_ReplaceField (procedure)

公式语言转换成sql

  • Type: PROCEDURE
  • Deterministic: NO
  • SQL data access: CONTAINS SQL

Parameters

# Mode Name Type
1 IN sAllGuid longtext
2 IN sAllTbName longtext
3 IN sAllType longtext
4 IN sFormulaGuid varchar(100)
5 OUT sReturn longtext
6 IN sTmpValue varchar(100)
7 OUT sDetail text
8 IN sLoginId varchar(100)
9 IN sBrId varchar(100)
10 IN sSuId varchar(100)
11 OUT sCode int

Body

Body is not pre-cached. To inspect: mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURESpSystem_ReplaceField'._

Narrative

Business context: 生产管理 / 计价 → 公式解析 — formula-language → SQL transpiler (label "公式语言转换成sql"), the engine behind 公式 fields on 工单/排产/计件/报价 rows. Given a formula id and a set of (table, id, tag) triples, substitutes each #{tag.column} placeholder in the formula's body with the actual value from the named table+row, then evaluates the resulting SQL.

What it does: Reads SysSystemSettings (CbxLanguage, CbxMaterialsUnit, CbxMachineUnit, NetConversionRate, CkxMinColorCalculation) into a JSON env, loads language-specific constants from gdsformconst sParentId='100', then walks the formula text stored in eleformula/eleformulaslave keyed by sFormulaGuid. For each token in sAllType (billMaster, billSlave, billControl, billMaterial, billProcedure, baseProcedure, baseMaterial, baseProduct, baseMachine, baseCustomer, baseSupply, baseTax, baseSalesMan, basePayment, billemployee, billreportemployee, billParam, etc.) it reads the column from the matching table in sAllTbName keyed by the matching id in sAllGuid and splices the value into the SQL string. Assembled SQL is run via PREPARE/EXECUTE; numeric result returned in sReturn, per-step audit trail in sDetail.

Invocation: Called by Java BtnCalculationServiceImpl (the doSetTimeCalcMachineHour flow that recomputes 机台 dHour after a 排产 row is locked) — the Java code builds p_sAllTbName="mftworkordermaster,MftWorkOrderSlave,MftWorkOrderControl,…,elemachine", p_sAllType="billMaster,billSlave,billControl,…,baseMachine", then issues the procedure call. xly-src also ships install scripts at script/标版/30100101/Sp_System_ReplaceField.sql and references the name from several Sp_Check_* / Sp_Calc_* install scripts. Many DB sites embed Sp_System_ReplaceField calls inline at the SQL layer.