From 813882ff717fb34dec9dd884d914d00d38a3d872 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 3 Jul 2026 14:30:35 +0800 Subject: [PATCH] fix: supply_contracts_create generates contract_code automatically --- wwwroot/api/supply_contracts_create.dspy | 49 +++++++++++-------- .../add_supply_contracts.dspy | 4 +- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/wwwroot/api/supply_contracts_create.dspy b/wwwroot/api/supply_contracts_create.dspy index 0006684..03279eb 100644 --- a/wwwroot/api/supply_contracts_create.dspy +++ b/wwwroot/api/supply_contracts_create.dspy @@ -1,23 +1,32 @@ -result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid', 'type': 'error'}} + +user_id = await get_user() +user_orgid = (await get_userorgid()) or '0' +dbname = get_module_dbname('supplychain') + +data = dict(params_kw) +data['id'] = getID() +data['resellerid'] = user_orgid +data['created_by'] = user_id +data['created_at'] = timestampstr() +data['updated_at'] = timestampstr() + +# Auto-generate contract_code +if not data.get('contract_code'): + today = curDateString().replace('-', '') + prefix = f'SC-{today}' + db = DBPools() + async with db.sqlorContext(dbname) as sor: + recs = await sor.sqlExe( + "SELECT COUNT(*) as cnt FROM supply_contracts WHERE resellerid = ${rid}$ AND contract_code LIKE ${p}$", + {"rid": user_orgid, "p": prefix + "%"} + ) + seq = (recs[0].cnt if recs else 0) + 1 + data['contract_code'] = f'{prefix}-{seq:04d}' try: - user_id = await get_user() - user_orgid = (await get_userorgid()) or '0' - dbname = get_module_dbname('supplychain') - - data = dict(params_kw) - data['id'] = getID() - data['resellerid'] = user_orgid - data['created_by'] = user_id - data['created_at'] = timestampstr() - data['updated_at'] = timestampstr() - - async with DBPools().sqlorContext(dbname) as sor: - await sor.C('supply_contracts', data) - - result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '供应合同创建成功', 'type': 'success'}} - + db = DBPools() + async with db.sqlorContext(dbname) as sor: + await sor.C('supply_contracts', data) + return json.dumps({'widgettype':'Message','options':{'title':'Success','message':'供应合同创建成功'}}, ensure_ascii=False) except Exception as e: - result['options'] = {'title': 'Error', 'message': '创建失败: ' + str(e), 'type': 'error'} - -return json.dumps(result, ensure_ascii=False) + return json.dumps({'widgettype':'Error','options':{'title':'Error','message':f'创建失败: {e}'}}, ensure_ascii=False) diff --git a/wwwroot/supply_contracts_list/add_supply_contracts.dspy b/wwwroot/supply_contracts_list/add_supply_contracts.dspy index bfceae1..998d9d8 100644 --- a/wwwroot/supply_contracts_list/add_supply_contracts.dspy +++ b/wwwroot/supply_contracts_list/add_supply_contracts.dspy @@ -26,8 +26,8 @@ ns['resellerid'] = userorgid # Auto-generate contract_code if not provided if not ns.get('contract_code'): - from datetime import datetime as _dt - _prefix = f"SC-{_dt.now().strftime('%Y%m%d')}" + _today = curDateString().replace('-', '') + _prefix = f"SC-{_today}" async with DBPools().sqlorContext(get_module_dbname('supplychain')) as _sor: _recs = await _sor.sqlExe( "SELECT COUNT(*) as cnt FROM supply_contracts WHERE resellerid = ${rid}$ AND contract_code LIKE ${p}$",