From 6b6489af02170b43fd8d2af6b1f2b86d68ae9fc6 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 3 Jul 2026 15:40:11 +0800 Subject: [PATCH] fix: back to sor.C with simple param cleaning --- wwwroot/api/supply_contracts_create.dspy | 39 +++++++++++------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/wwwroot/api/supply_contracts_create.dspy b/wwwroot/api/supply_contracts_create.dspy index f44638c..d646dbe 100644 --- a/wwwroot/api/supply_contracts_create.dspy +++ b/wwwroot/api/supply_contracts_create.dspy @@ -1,23 +1,16 @@ - user_id = await get_user() user_orgid = (await get_userorgid()) or '0' dbname = get_module_dbname('supplychain') -# Only keep known table columns -known_cols = {'contract_name', 'sign_date', 'start_date', 'end_date', 'status', 'default_discount', 'remark', 'supplier_id', 'contract_code'} -data = {} -for k, v in params_kw.items(): - if k in known_cols and v is not None and v != '': - data[k] = v - -data['id'] = getID() -data['resellerid'] = user_orgid -data['created_by'] = user_id -data['created_at'] = timestampstr() -data['updated_at'] = timestampstr() +ns = params_kw.copy() +ns['id'] = getID() +ns['resellerid'] = user_orgid +ns['created_by'] = user_id +ns['created_at'] = timestampstr() +ns['updated_at'] = timestampstr() # Auto-generate contract_code -if not data.get('contract_code'): +if not ns.get('contract_code'): today = curDateString().replace('-', '') prefix = f'SC-{today}' db = DBPools() @@ -27,12 +20,14 @@ if not data.get('contract_code'): {"rid": user_orgid, "p": prefix + "%"} ) seq = (recs[0].cnt if recs else 0) + 1 - data['contract_code'] = f'{prefix}-{seq:04d}' + ns['contract_code'] = f'{prefix}-{seq:04d}' -try: - db = DBPools() - async with db.sqlorContext(dbname) as sor: - await sor.I(data) - return json.dumps({'widgettype':'Message','options':{'title':'Success','message':'供应合同创建成功'}}, ensure_ascii=False) -except Exception as e: - return json.dumps({'widgettype':'Error','options':{'title':'Error','message':f'创建失败: {e}'}}, ensure_ascii=False) +# Clean non-column keys +for k in list(ns.keys()): + if k.endswith('_text') or k.startswith('_') or k in ('page', 'rows', 'pagerows', 'data_filter', 'referer_widget'): + ns.pop(k, None) + +db = DBPools() +async with db.sqlorContext(dbname) as sor: + await sor.C('supply_contracts', ns) +return json.dumps({'widgettype':'Message','options':{'title':'Success','message':'供应合同创建成功'}}, ensure_ascii=False)