indexcalculation/Indicators/Capital/OperatingIncome.py

64 lines
2.6 KiB
Python
Raw Normal View History

2022-10-25 11:20:22 +08:00
"""
营业收入亿元
"""
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from Common.schemas import IndicatorDescription
router = APIRouter()
# 指标描述
ENAME = "operating_income"
CNAME = "营业收入(亿元)"
NATURE = "定量"
CATEGORY = "资本结构"
DESCRIPTION = "建筑行业竞争激烈,规模较大的建筑施工企业一般具有较强的施工资质,且在施工设备、施工技术、施工经验、管理能力、人力资源、资金" \
"等方面能力较强,使得其在项目承揽、原材料采购、获取外部资源等方面均具有明显优势。规模领先的企业有能力以工程总承包商的身份承" \
"揽工程项目,特别是规模大、技术水平要求高、盈利水平较高的大型项目。此外,有施工总承包资质的大型建筑施工企业在日常业务中累积" \
"了一定规模的分包商网络,总承包企业可仅承担合同中较少的施工业务而由各专业分包商承担大部分业务,使其盈利能力和竞争优势更强。" \
"建筑企业的综合实力在很大程度上依赖于企业规模,企业规模是决定建筑企业在行业内竞争力的关键因素之一。规模用营业收入指标来衡量" \
",采用最近一年营业收入。"
# 参数描述
PARAM1_ENAME = "operating_income"
PARAM1_CNAME = "营业收入"
PARAM1_DESCR = "营业收入Operating revenue 是从事主营业务或其他业务所取得的收入。指在一定时期内,商业企业销售商品或提供劳务所获得的" \
"货币收入。分为主营业务收入和其他业务收入。"
# 输入参数
class Parameter(BaseModel):
operating_income: float = "营业收入"
# 计算接口
@router.post("/{}/".format(ENAME), tags=[CATEGORY], summary=CNAME, description=DESCRIPTION)
def calculation(parameter: Parameter):
try:
result = parameter.operating_income / 100000000
return round(result, 6)
except Exception:
raise HTTPException(status_code=400, detail="Calculate Failed")
# 描述接口
@router.get("/{}/description".format(ENAME),
response_model=IndicatorDescription,
tags=[CATEGORY], summary=CNAME, description=DESCRIPTION)
def description():
body = {
"ename": ENAME,
"cname": CNAME,
"nature": NATURE,
"category": CATEGORY,
"description": DESCRIPTION,
"parameters": [
{"ename": PARAM1_ENAME, "cname": PARAM1_CNAME, "description": PARAM1_DESCR}
],
}
return body