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

63 lines
2.4 KiB
Plaintext

from PDAPI import *
CATEGORY_MAP = {"bug": "缺陷", "feature": "功能", "question": "疑问", "account": "账号", "other": "其他"}
PRIORITY_MAP = {0: "低", 1: "中", 2: "高", 3: "紧急"}
STATUS_MAP = {0: "待处理", 1: "处理中", 2: "已解决", 3: "已关闭", -1: "已拒绝"}
__metadata__ = {
"methods": ["GET"],
"blueprint": "GERP",
"permission": 1.0,
"attributes": ["admin:workorder_read"],
"limit": "30 per minute",
"route": "{DEFAULT_ROUTE}/<order_uuid>",
"args": []
}
def HandleRequest(_CleanedData):
current_user = UGM.GetELTUser()
if not current_user:
return {"code": 401, "msg": "未登录"}, 401
order_uuid_str = _CleanedData["params"].get("order_uuid", "").strip()
if not order_uuid_str:
return {"code": 1, "msg": "缺少工单ID"}, 400
try:
order_uuid = UUIDObj(order_uuid_str)
except:
return {"code": 1, "msg": "无效的工单ID"}, 400
order = GERPWorkOrder.query.filter(GERPWorkOrder.OrderUUID == order_uuid).first()
if not order:
return {"code": 1, "msg": "工单不存在"}, 404
creator_name = order.Creator.UserName if order.Creator else ""
assignee_name = ""
if order.AssigneeUUID:
assignee_user = GERPUser.query.filter(GERPUser.UserUUID == order.AssigneeUUID).first()
if assignee_user:
assignee_name = assignee_user.UserName
return {
"code": 0,
"data": {
"orderUUID": UUIDObj(order.OrderUUID).UpperStr,
"title": order.Title,
"description": order.Description,
"category": order.Category,
"categoryDisplay": CATEGORY_MAP.get(order.Category, order.Category),
"priority": order.Priority,
"priorityDisplay": PRIORITY_MAP.get(order.Priority, "低"),
"status": order.Status,
"statusDisplay": STATUS_MAP.get(order.Status, "未知"),
"creatorName": creator_name,
"assigneeName": assignee_name,
"assigneeUUID": UUIDObj(order.AssigneeUUID).UpperStr if order.AssigneeUUID else None,
"resolution": order.Resolution,
"createTime": order.CreateTime.strftime("%Y-%m-%d %H:%M:%S") if order.CreateTime else None,
"updateTime": order.UpdateTime.strftime("%Y-%m-%d %H:%M:%S") if order.UpdateTime else None,
"closeTime": order.CloseTime.strftime("%Y-%m-%d %H:%M:%S") if order.CloseTime else None,
}
}, 200