Files
SMANAGE/_api_backup/TempLateAPI/GERP/API/FormAPI/CompanySearch.api
T
2026-06-16 11:55:14 +08:00

54 lines
1.5 KiB
Plaintext

from PDAPI import *
import TempLateAPI.GERP.API.FormAPI.FormData as FormData
from Utils.Models import GERPCompany
def fuzzy_search_companies(keyword, limit=5):
if not keyword or len(keyword.strip()) < 1:
return []
pattern = f"%{keyword.strip()}%"
companies = GERPCompany.query.filter(
db.or_(
GERPCompany.CompanyName.like(pattern),
GERPCompany.CompanyShort.like(pattern)
)
).limit(limit).all()
results = []
for company in companies:
matched_by = "name"
if keyword.strip().lower() in (company.CompanyShort or "").lower():
matched_by = "short"
results.append({
"CompanyUUID": FormData.GetTable("Company").KeyToUUIDConversion("CompanyUUID", company.CompanyUUID, str),
"CompanyName": company.CompanyName,
"CompanyShort": company.CompanyShort or "",
"CompanyStatus": company.CompanyStatus,
"MatchedBy": matched_by,
})
return results
__metadata__ = {
"route": "{DEFAULT_ROUTE}",
"methods": ["GET"],
"blueprint": "GERP",
"permission": 1.0,
"attributes": [],
"limit": "10 per second"
}
def HandleRequest(_CleanedData):
keyword = flask.request.args.get("keyword", "").strip()
limit = min(max(int(flask.request.args.get("limit", 5)), 1), 20)
results = fuzzy_search_companies(keyword, limit)
return {
"code": 0,
"data": results,
"total": len(results)
}, 200