后端
为后端开发提供统一的公共模块、错误码体系、常量定义和全局组件支持。错误码、常量、枚举等位于官方JitCommonsApp中的commons目录,开发者可直接导包使用,开发者也可以在自己的App中创建自己的commons目录(仅后端),以实现自己的封装。
globals.Calc是官方内置的公共模块元素,提供数学、逻辑、文本、日期时间、高级统计和地址处理等80+个计算函数。globals.Calc元素层级结构为Meta(globals.Meta) → Type(globals.Calc),开发者可以使用app.getElement("globals.Calc")
获取并直接使用。
当然,开发者也可以创建自己的公共模块元素,或者在自己的App中改写JitAi官方提供的globals.Calc元素,以实现自己的封装。后端实现应位于globals.Calc的backend子目录下。
计算组件
基本用法
计算组件基本使用
# 获取计算组件
calc = app.getElement("globals.Calc")
# 调用计算函数
result = calc.SUM(10, 20, 30) # 数学计算
text = calc.CONCAT("Hello", "World") # 文本处理
now = calc.NOW() # 日期时间
数学计算函数
函数名 | 参数 | 功能描述 |
---|---|---|
SUM | (*numbers) | 求和 |
AVG | (*numbers) | 平均值 |
MAX | (*numbers) | 最大值 |
MIN | (*numbers) | 最小值 |
ABS | (number) | 绝对值 |
ROUND | (number, digits) | 四舍五入 |
TRUNCATE | (number, digits) | 截断小数位 |
POWER | (base, exponent) | 幂运算 |
MOD | (dividend, divisor) | 取余 |
RANDOM | (min, max, decimal) | 生成随机数 |
CHINESEUPPER | (number) | 数字转中文大写 |
ENGLISHUPPER | (number) | 数字转英文大写 |
文本处理函数
函数名 | 参数 | 功能描述 |
---|---|---|
CONCAT | (*texts) | 连接文本 |
LEN | (text) | 文本长度 |
LEFT | (text, length) | 左侧截取 |
RIGHT | (text, length) | 右侧截取 |
MID | (text, start, length) | 中间截取 |
TRIM | (text) | 去除首尾空格 |
REPLACE | (text, old, new) | 替换文本 |
INSERT | (text, position, insert_text) | 在指定位置插入文本 |
LOCATE | (search_text, text) | 查找文本位置 |
TONUMBER | (text) | 文本转数字 |
TOSTRING | (value) | 值转文本 |
逻辑运算函数
函数名 | 参数 | 功能描述 |
---|---|---|
IF | (condition, true_val, false_val) | 条件判断 |
IFS | (condition1, value1, ...) | 多条件判断 |
AND | (*conditions) | 逻辑与 |
OR | (*conditions) | 逻辑或 |
ISEMPTY | (value) | 判断是否为空 |
ISNOTEMPTY | (value) | 判断是否非空 |
EMPTY | () | 空值 |
EMPTYSTR | () | 空字符串 |
DEFAULTVALUE | (value, default) | 默认值 |
日期时间函数
函数名 | 参数 | 功能描述 |
---|---|---|
NOW | () | 当前时间 |
TODAY | () | 今天日期 |
DATEADD | (date, number, unit) | 日期加减 |
DATEDELTA | (date1, date2, unit) | 日期差值 |
YEAR | (date) | 转换为年初 |
YEARMONTH | (date) | 转换为月初 |
YEARMONTHDAY | (date) | 转换为日初 |
YEARQUARTER | (date) | 转换为季度初 |
YEARWEEK | (date) | 转换为周初 |
EXTRACT | (date, unit) | 提取日期部分 |
DATE | (year, month, day) | 创建日期 |
DATESTR | (date) | 日期转字符串 |
MONTHSTART | (date) | 月初 |
MONTHEND | (date) | 月末 |
MONTHDAYS | (date) | 该月天数 |
DAYOFYEAR | (date) | 一年中第几天 |
WEEKOFYEAR | (date) | 一年中第几周 |
WEEKDAYNUM | (date) | 星期几(数字) |
WEEKDAYSTR | (date) | 星期几(中文) |
WORKDAY | (date, days) | 工作日计算 |
NETWORKDAYS | (start_date, end_date) | 两日期间工作日数 |
TIMESTAMPFORMAT | (timestamp, timezone) | 时间戳格式化 |
统计分析函数
函数名 | 参数 | 功能描述 |
---|---|---|
ACC | (*args) | 累计值 |
GROUPACC | (*args) | 分组累计值 |
RANK | (*args) | 排名 |
GROUPRANK | (*args) | 组内排名 |
MEDIAN | (*args) | 中位数 |
STDDEV | (*args) | 标准差 |
VARIANCE | (*args) | 方差 |
CHAINRATIO | (*args) | 环比增长率 |
CHAININCREASE | (*args) | 环比增长 |
CHAINPERIOD | (*args) | 环比期间 |
SAMERATIO | (*args) | 同比增长率 |
SAMEINCREASE | (*args) | 同比增长 |
SAMEPERIOD | (*args) | 同比期间 |
数据处理函数
函数名 | 参数 | 功能描述 |
---|---|---|
COUNT | (*args) | 计数 |
COLAVG | (*args) | 列平均值 |
COLMAX | (*args) | 列最大值 |
COLMIN | (*args) | 列最小值 |
COLSUM | (*args) | 列求和 |
DISTINCT | (*args) | 去重 |
FILL | (*args) | 已填写计数 |
NOTFILL | (*args) | 未填写计数 |
SELECTED | (*args) | 选中计数 |
NOTSELECTED | (*args) | 未选中计数 |
FIRSTROW | (*args) | 首行 |
LASTROW | (*args) | 末行 |
ROWID | (*args) | 行号 |
地址处理函数
函数名 | 参数 | 功能描述 |
---|---|---|
PROVINCE | (address) | 提取省份 |
PROVINCECITY | (address) | 提取省市 |
PROVINCECITYDISTRICT | (address) | 提取省市区 |
身份证处理函数
函数名 | 参数 | 功能描述 |
---|---|---|
IDCARDBIRTHDAY | (id_card) | 从身份证提取生日 |
IDCARDSEX | (id_card) | 从身份证提取性别 |
错误码
错误码定义模块,提供统一的错误处理机制。
如何定义
错误码定义方法
from jit.errcode import Code
# 定义错误码
CUSTOM_ERROR = Code(code=9000001, reason="自定义错误:{message}")
# 使用错误码
try:
raise CUSTOM_ERROR.formatReason(message="用户ID不能为空")
except Code as error:
print(f"错误码: {error.code}")
print(f"错误信息: {error.reason}")
常量定义
常量定义模块,提供系统级常量和业务常量。
当然,开发者也可以创建自己的常量定义元素,或者在自己的App中改写JitAi官方提供的commons.consts元素,以实现自己的封装。
基础常量
基础常量使用
from commons.consts import TRUE, FALSE, SUCCESS_RETURN
# 使用基础常量
status = TRUE
result = SUCCESS_RETURN
可用常量表
常量名 | 值 | 说明 |
---|---|---|
TRUE | 1 | 布尔真值 |
FALSE | 0 | 布尔假值 |
SUCCESS_RETURN | 1 | 操作成功 |
FAIL_RETURN | 0 | 操作失败 |
SUCCESS_RESPONSE | {"status": "ok"} | 成功响应格式 |
业务字典常量
业务字典使用
from commons.consts import INDUSTRY_TYPE_DICT, POSITION_TYPE_DICT
# 使用业务字典
industry = INDUSTRY_TYPE_DICT.get("internetOrSoftware")
position = POSITION_TYPE_DICT.get("CEO")
行业类型字典
Key | Value |
---|---|
internetOrSoftware | 互联网/软件 |
consultingCorporateServices | 咨询和企业服务 |
industrialManufacturing | 工业制造 |
constructionalEngineering | 建筑工程 |
equipmentEngineering | 设备工程 |
scientificResearchInstitution | 科研机构 |
governmentalAgencies | 政府机构 |
socialOrganization | 社会组织 |
electronicCommerce | 电商贸易 |
realty | 房地产 |
energyMineralResource | 能源矿产 |
culturalMedium | 文化传媒 |
DurableLuxuryGoods | 耐用品和奢侈品 |
financialInvestment | 金融投资 |
transportation | 交通运输 |
FMCG | 快速消费品 |
travel | 旅游 |
medicalHealth | 医疗健康 |
educationalTraining | 教育培训 |
homeDecoration | 家居装饰 |
other | 其他 |
职务类型字典
Key | Value |
---|---|
CEO | 法人/CEO/老板 |
HRManager | 人事主管 |
FinanceManager | 财务主管 |
SalesManager | 销售主管 |
AdministrationManager | 行政主管 |
ITManager | IT主管 |
MarketingManager | 市场主管 |
OperationsManager | 运营主管 |
Employee | 普通员工 |
工作流模板常量
工作流模板使用
from commons.consts import START_TMPL, APPROVE_TMPL, CC_TMPL
# 使用工作流模板
start_node = START_TMPL
approve_node = APPROVE_TMPL
可用模板常量
常量名 | 说明 |
---|---|
START_TMPL | 发起节点模板 |
APPROVE_TMPL | 审批节点模板 |
CC_TMPL | 抄送节点模板 |
SUB_TMPL | 子流程节点模板 |
BRANCH_TMPL | 分支节点模板 |
PARALLEL_START_TMPL | 并行开始节点模板 |
PARALLEL_END_TMPL | 并行结束节点模板 |
END_TMPL | 结束节点模板 |
缓存Key常量
缓存Key使用
from commons.consts import WORKFLOW_ESIGN_KEY_FORMATTER, WORKFLOW_ESIGN_CACHE_TIME
# 使用缓存Key格式化
key = WORKFLOW_ESIGN_KEY_FORMATTER.format(cacheData="user123")
cache_time = WORKFLOW_ESIGN_CACHE_TIME
可用缓存Key常量
常量名 | 值 | 说明 |
---|---|---|
WORKFLOW_ESIGN_KEY_FORMATTER | "WF_ESIGN_{cacheData}" | 手写签名缓存Key |
WORKFLOW_ESIGN_CACHE_TIME | 86400 | 手写签名缓存时间(秒) |
WORKFLOW_TIME_LIMIT_KEY_FORMATTER | "WF_TIME_LIMIT_{appid}_{cacheData}" | 超时处理缓存Key |
WORKFLOW_AGENT_TIMER_KEY_FORMATTER | "WF_AGENT_TIME_LIMIT_{appid}_{cacheData}" | 代理定时器缓存Key |
文件类型常量
文件类型使用
from commons.consts import FILE_SUFFIX_MIME_TYPE
# 使用文件类型映射
mime_type = FILE_SUFFIX_MIME_TYPE.get("xlsx")
文件后缀MIME类型映射
文件后缀 | MIME类型 |
---|---|
xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
pptx | application/vnd.openxmlformats-officedocument.presentationml.presentation |
application/pdf | |
txt | text/plain |
jpg | image/jpeg |
png | image/png |
gif | image/gif |
mp4 | video/mp4 |
mp3 | audio/mpeg |
事件常量
事件常量使用
from commons.consts import DELETE_MEMBER_EVENT_KEY, RESET_MODEL_EVENT_KEY
# 使用系统事件Key
delete_event = DELETE_MEMBER_EVENT_KEY
reset_event = RESET_MODEL_EVENT_KEY
系统事件Key
常量名 | 值 | 说明 |
---|---|---|
DELETE_MEMBER_EVENT_KEY | "JIT_INNER:deleteMember" | 删除成员事件 |
RESET_MODEL_EVENT_KEY | "JIT_INNER:resetModelData" | 重置模型数据事件 |
元素名称常量
元素名称使用
from commons.consts import ElemName
# 使用元素全名常量
storage_model = ElemName.ComponentStorageModel
event_log = ElemName.EventLogModel
元素fullName常量
常量名 | 值 | 说明 |
---|---|---|
ComponentStorageModel | "pages.models.ComponentStorageModel" | 组件存储模型 |
UpdateProcessType | "events.UpdateProcessType" | 更新流程类型 |
NormalType | "events.NormalType" | 普通事件类型 |
ModelType | "events.ModelType" | 模型事件类型 |
WorkflowType | "events.WorkflowType" | 工作流事件类型 |
EventLogModel | "events.models.EventLogModel" | 事件日志模型 |
枚举定义
枚举定义模块,提供类型安全的枚举常量。
基本用法
枚举基本使用
from commons.enums import FieldType, CompareNameEnum, SortTypeEnum
# 使用字段类型枚举
field_type = FieldType.CharField
# 使用比较操作枚举
compare_op = CompareNameEnum.EQ
# 使用排序类型枚举
sort_type = SortTypeEnum.asc
基础枚举类型
枚举类 | 值 | 说明 |
---|---|---|
PublicEnum.no | 0 | 否 |
PublicEnum.yes | 1 | 是 |
SwitchEnum.off | 0 | 关闭 |
SwitchEnum.on | 1 | 开启 |
SpaceDeleteEnum.off | 0 | 未删除 |
SpaceDeleteEnum.on | 1 | 已删除 |
数据库字段类型
枚举值 | 说明 |
---|---|
FieldType.IntField | 整数类型 |
FieldType.CharField | 字符类型(有长度限制) |
FieldType.TextField | 文本类型 |
FieldType.DateField | 日期类型 |
FieldType.DatetimeField | 日期时间类型 |
FieldType.TimeField | 时间类型 |
FieldType.DecimalField | 数字类型 |
FieldType.JsonField | JSON类型 |
FieldType.BooleanField | 布尔类型 |
查询比较操作
枚举值 | 操作符 | 说明 |
---|---|---|
CompareNameEnum.EQ | = | 等于 |
CompareNameEnum.NE | != | 不等于 |
CompareNameEnum.GT | > | 大于 |
CompareNameEnum.GTE | >= | 大于等于 |
CompareNameEnum.LT | < | 小于 |
CompareNameEnum.LTE | <= | 小于等于 |
CompareNameEnum.IN | in | 包含 |
CompareNameEnum.NIN | nin | 不包含 |
CompareNameEnum.LIKE | like | 模糊匹配 |
CompareNameEnum.NLIKE | nlike | 不匹配 |
CompareNameEnum.RANGE | range | 范围查询 |
CompareNameEnum.ISNULL | isnull | 空值判断 |
排序类型
枚举值 | 值 | 说明 |
---|---|---|
SortTypeEnum.asc | 1 | 升序 |
SortTypeEnum.desc | 0 | 降序 |
SqlSortTypeEnum.asc | "ASC" | SQL升序 |
SqlSortTypeEnum.desc | "DESC" | SQL降序 |
表连接类型
枚举值 | 值 | 说明 |
---|---|---|
JoinType.inner | "INNER_JOIN" | 内连接 |
JoinType.left | "LEFT_JOIN" | 左连接 |
JoinType.right | "RIGHT_JOIN" | 右连接 |
JoinType.full | "FULL_JOIN" | 全连接 |
JoinType.outer | "OUTER_JOIN" | 外连接 |
默认配置
默认元素配置模块,提供获取默认配置、缓存和Shell的工具类。
基本用法
默认配置基本使用
from commons.default import DefaultElement
# 获取默认配置
config = DefaultElement.getConfig()
# 获取默认缓存
cache = DefaultElement.getCache()
# 获取默认Shell名称
shell_name = DefaultElement.getShellName()
可用方法
方法名 | 返回值 | 功能描述 |
---|---|---|
getConfig() | dict | 获取settings.defaultElement配置 |
getCache() | Cache对象 | 获取默认缓存组件实例 |
getShellName() | str | 获取默认Shell名称 |
全局变量
全局变量组件,提供系统级全局变量和时间相关的动态变量。
时间相关变量
时间变量使用
# 获取全局变量组件
global_var = app.getElement("globals.GlobalVar")
# 使用时间变量
current_time = global_var.currentTime
last_30_days = global_var.last30Days
today = global_var.today
基础时间变量
变量名 | 说明 | 返回值类型 |
---|---|---|
currentTime | 当前时间 | systemDate.now |
now | 当前时间 | 时间对象 |
today | 今天 | 日期对象 |
yesterday | 昨天 | 日期对象 |
tomorrow | 明天 | 日期对象 |
动态天数范围变量
变量名模式 | 说明 | 示例 |
---|---|---|
lastXDays | 最近X天 | last7Days, last30Days, last90Days |
last24Hours | 最近24小时 | 特殊处理的1天 |
周期时间变量
周期时间使用
# 使用周期时间变量
this_week = global_var.thisWeek
this_month = global_var.thisMonth
this_year = global_var.thisYear
可用周期时间变量
周期类型 | 本期 | 上期 | 下期 |
---|---|---|---|
周 | thisWeek | lastWeek | nextWeek |
月 | thisMonth | lastMonth | nextMonth |
季度 | thisQuarter | lastQuarter | nextQuarter |
年 | thisYear | lastYear | nextYear |
用户相关变量
用户变量使用
from globals.GlobalVar import currentUser
# 获取当前用户
user = currentUser
可用用户变量
变量名 | 说明 | 使用方式 |
---|---|---|
currentUser | 当前登录用户 | 直接导入使用 |
日志记录
基本用法
日志基本使用
from jit.commons.utils.logger import log
# 记录不同级别的日志
log.debug("调试信息")
log.info("一般信息")
log.warning("警告信息")
log.error("错误信息")
log.exception("异常信息") # 自动记录堆栈信息
日志级别说明
级别 | 方法 | 用途 |
---|---|---|
DEBUG | log.debug() | 详细调试信息 |
INFO | log.info() | 一般流程信息 |
WARNING | log.warning() | 警告信息 |
ERROR | log.error() | 错误信息 |
EXCEPTION | log.exception() | 异常信息(含堆栈) |
使用场景
场景 | 推荐方法 | 示例 |
---|---|---|
函数开始执行 | log.info() | "开始处理用户请求" |
参数验证失败 | log.error() | "参数验证失败" |
捕获异常 | log.exception() | "处理过程中发生异常" |
调试输出 | log.debug() | "查询结果: {result}" |