63 lines
2.4 KiB
Plaintext
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
|