实现lsfx-mock全命中SQL对齐

This commit is contained in:
wkc
2026-03-25 10:05:30 +08:00
parent f217d59f09
commit 5eea3c66ff
9 changed files with 523 additions and 24 deletions

View File

@@ -10,6 +10,7 @@ class Phase2BaselineService:
SUPPLIER_PURCHASE_ID = "LSFXMOCKP2PUR001"
SUPPLIER_NAME = "兰溪市联调供应链有限公司"
LOW_INCOME_RELATIVE_RULE_CODE = "LOW_INCOME_RELATIVE_LARGE_TRANSACTION"
ASSET_IDENTIFIERS = {
"HOUSE_REGISTRATION_MISMATCH": "LSFX Mock P2 HOUSE_REGISTRATION_MISMATCH",
"PROPERTY_FEE_REGISTRATION_MISMATCH": "LSFX Mock P2 PROPERTY_FEE_REGISTRATION_MISMATCH",
@@ -207,6 +208,63 @@ class Phase2BaselineService:
).strip(),
]
def _build_low_income_family_baseline_sql(
self,
staff_id_card: str,
family_id_cards: List[str],
) -> List[str]:
target_family_id_card = next((card for card in family_id_cards if card), None)
if not target_family_id_card:
return []
return [
dedent(
f"""
INSERT INTO ccdi_staff_fmy_relation (
person_id,
relation_type,
relation_name,
gender,
relation_cert_type,
relation_cert_no,
relation_desc,
status,
effective_date,
remark,
data_source,
is_emp_family,
is_cust_family,
created_by,
updated_by,
annual_income
)
VALUES (
{self._sql_quote(staff_id_card)},
'父亲',
'LSFX低收入亲属',
'M',
'身份证',
{self._sql_quote(target_family_id_card)},
'用于命中 LOW_INCOME_RELATIVE_LARGE_TRANSACTION 真实规则',
1,
NOW(),
'LSFX Mock 低收入亲属基线',
'SYSTEM',
1,
0,
'admin',
'admin',
0.00
)
ON DUPLICATE KEY UPDATE
annual_income = 0.00,
status = 1,
updated_by = 'admin',
update_time = CURRENT_TIMESTAMP;
"""
).strip()
]
def build_sql_plan(
self,
staff_id_card: str,
@@ -228,6 +286,13 @@ class Phase2BaselineService:
for rule_code in selected_rule_codes:
if rule_code == "SUPPLIER_CONCENTRATION":
sql_plan.extend(self._build_supplier_concentration_sql(staff_id_card))
elif rule_code == self.LOW_INCOME_RELATIVE_RULE_CODE:
sql_plan.extend(
self._build_low_income_family_baseline_sql(
staff_id_card=staff_id_card,
family_id_cards=family_id_cards or [],
)
)
elif rule_code in self.ASSET_IDENTIFIERS:
family_id, person_id = asset_owner_ids[rule_code]
sql_plan.extend(