跳到主要内容

后端

为后端开发提供统一的公共模块、错误码体系、常量定义和全局组件支持。错误码、常量、枚举等位于官方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

可用常量表

常量名说明
TRUE1布尔真值
FALSE0布尔假值
SUCCESS_RETURN1操作成功
FAIL_RETURN0操作失败
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")

行业类型字典

KeyValue
internetOrSoftware互联网/软件
consultingCorporateServices咨询和企业服务
industrialManufacturing工业制造
constructionalEngineering建筑工程
equipmentEngineering设备工程
scientificResearchInstitution科研机构
governmentalAgencies政府机构
socialOrganization社会组织
electronicCommerce电商贸易
realty房地产
energyMineralResource能源矿产
culturalMedium文化传媒
DurableLuxuryGoods耐用品和奢侈品
financialInvestment金融投资
transportation交通运输
FMCG快速消费品
travel旅游
medicalHealth医疗健康
educationalTraining教育培训
homeDecoration家居装饰
other其他

职务类型字典

KeyValue
CEO法人/CEO/老板
HRManager人事主管
FinanceManager财务主管
SalesManager销售主管
AdministrationManager行政主管
ITManagerIT主管
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_TIME86400手写签名缓存时间(秒)
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类型
xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.document
pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentation
pdfapplication/pdf
txttext/plain
jpgimage/jpeg
pngimage/png
gifimage/gif
mp4video/mp4
mp3audio/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.no0
PublicEnum.yes1
SwitchEnum.off0关闭
SwitchEnum.on1开启
SpaceDeleteEnum.off0未删除
SpaceDeleteEnum.on1已删除

数据库字段类型

枚举值说明
FieldType.IntField整数类型
FieldType.CharField字符类型(有长度限制)
FieldType.TextField文本类型
FieldType.DateField日期类型
FieldType.DatetimeField日期时间类型
FieldType.TimeField时间类型
FieldType.DecimalField数字类型
FieldType.JsonFieldJSON类型
FieldType.BooleanField布尔类型

查询比较操作

枚举值操作符说明
CompareNameEnum.EQ=等于
CompareNameEnum.NE!=不等于
CompareNameEnum.GT>大于
CompareNameEnum.GTE>=大于等于
CompareNameEnum.LT<小于
CompareNameEnum.LTE<=小于等于
CompareNameEnum.INin包含
CompareNameEnum.NINnin不包含
CompareNameEnum.LIKElike模糊匹配
CompareNameEnum.NLIKEnlike不匹配
CompareNameEnum.RANGErange范围查询
CompareNameEnum.ISNULLisnull空值判断

排序类型

枚举值说明
SortTypeEnum.asc1升序
SortTypeEnum.desc0降序
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

可用周期时间变量

周期类型本期上期下期
thisWeeklastWeeknextWeek
thisMonthlastMonthnextMonth
季度thisQuarterlastQuarternextQuarter
thisYearlastYearnextYear

用户相关变量

用户变量使用
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("异常信息") # 自动记录堆栈信息

日志级别说明

级别方法用途
DEBUGlog.debug()详细调试信息
INFOlog.info()一般流程信息
WARNINGlog.warning()警告信息
ERRORlog.error()错误信息
EXCEPTIONlog.exception()异常信息(含堆栈)

使用场景

场景推荐方法示例
函数开始执行log.info()"开始处理用户请求"
参数验证失败log.error()"参数验证失败"
捕获异常log.exception()"处理过程中发生异常"
调试输出log.debug()"查询结果: {result}"