Compare commits

...
314 Commits
Author SHA1 Message Date
PIGCLOUD a6d0705e40 fix(upms): validate department switch authorization
Restrict department switching to the current user department list and reuse the localized access-denied message. Add regression coverage for valid switching and unauthorized or missing departments.

Refs #298

(cherry picked from commit b897c6a34f5f0ff3a4670eb9881e058b56de376d)
2026-11-06 15:19:40 +08:00
PIGCLOUD c0034f3799 Merge branch 'master' of github.com:pig-dev-team/pigx 2026-11-05 16:40:28 +08:00
PIGCLOUD db23fd2d0c feat(SysUserServiceImpl): 添加短信验证码校验逻辑,防止重复使用确保验证码一次性消费
- 更新用户注册和找回密码逻辑,使用新的验证码校验方法
- 添加 SysUserSmsCodeTests 测试类,验证验证码消费行为
2026-11-05 16:36:32 +08:00
PIGCLOUD fd5cd572a4 feat(SysRegisterController): 添加找回密码功能开关控制
- 在 SysRegisterController 中添加对找回密码功能的开关控制
- 如果系统已关闭找回密码功能,则返回失败信息
2026-11-05 16:36:04 +08:00
PIGCLOUD ab91447941 fix(flow): 转义 process.settings 列名,修复 jsqlparser 5.4 解析异常
jsqlparser 5.4 将 settings 视为关键字,TenantLineInnerInterceptor
解析含该列的 SQL 时抛出 ParseException。
2026-11-05 15:18:47 +08:00
PIGCLOUD e3440353ae fix(flow): 转义 process.settings 列名,修复 jsqlparser 5.4 解析异常
jsqlparser 5.4 将 settings 视为关键字,TenantLineInnerInterceptor
解析含该列的 SQL 时抛出 ParseException。
2026-11-05 15:18:43 +08:00
PIGCLOUD ff98dcc3fb chore(deps): 升级积木报表至 2.5.6.1 并覆盖 fastjson 版本 2026-11-05 13:05:57 +08:00
PIGCLOUD 467a1fea1b build(deps): 升级 MyBatis Plus 并适配新版 API
(cherry picked from commit 290764e739fa093eb8187ecd0f9a30062af95f8e)
2026-11-04 21:01:49 +08:00
PIGCLOUD 8d37e48d1f feat(flow): 删除旧的流程通知表和合并表的迁移脚本
- 删除了 `20261014_flow_first_batch.sql` 和 `20261014_flow_merge_tables.sql` 文件
- 更新 `FlowNoticeStatusEnum`,新增 REMOVING 状态
- 修改 `FlowNotice` 实体,确保在插入时保留 userId 值
- 在 `FlowDurableConfiguration` 中添加事务提交后撤销失效通知的逻辑
- 更新 `IFlowNoticeService` 接口,调整通知事件的处理逻辑
- 实现 `FlowNoticeServiceImpl` 中的通知撤销逻辑,确保不误删新通知
- 新增 `FlowMessageRemovalDTO` 数据传输对象,处理通知撤销请求
- 更新 `SysMessageService` 和 `SysMessageController`,支持内部调用撤销流程通知
- 添加 `SysMessageDeletionTests` 测试用例,验证撤销逻辑的正确性
2026-11-03 18:57:11 +08:00
PIGCLOUD 589d17f0d3 fix(db): 补齐国际化与导出权限并同步 Vue 生成模板 2026-11-03 16:50:12 +08:00
PIGCLOUD 5f4d9d6621 style(db): remove trailing blank line after flow sync 2026-11-03 15:24:25 +08:00
PIGCLOUD d6adbfa36e fix(build): upgrade Maven Surefire to 3.6.1
(cherry picked from commit 54dc3b330c245fc79428e4e216b66e405bd47e3f)
2026-11-03 15:22:56 +08:00
PIGCLOUD b003a1b444 fix(auth): 隔离验证码缓存并强制校验短信登录凭据
(cherry picked from commit 9468a3efae7c9b678d074697eced50a175bea1f6)
2026-11-03 14:56:26 +08:00
PIGCLOUD 0974a56294 feat(flow): 优化拒绝处理逻辑,支持多实例结束后重定向到发起人
- 更新 ApproveServiceTask 中拒绝处理逻辑,支持多实例结束后当前执行流尚未落库的情况
- 增加对 CommandContextUtil 的使用,确保执行流迁移的正确性
- 添加 ModelUtilMultiMatchTests 中的单元测试,验证拒绝到发起人的逻辑

(cherry picked from commit 9e37864b02b14a2c980b74e01e126b5d38d10b09)
2026-11-03 14:56:21 +08:00
PIGCLOUD 2f089f029f feat(flow): 条件分支支持多选(包容网关)
- 条件分支节点新增 multiMatch,开启后分叉与合并网关改为 InclusiveGateway,未开启保持排他网关
- 驳回到发起人时收回实例下全部执行流,修复并行、多选分支内驳回后兄弟分支残留导致汇聚异常
- 新增 H2 引擎测试覆盖命中多条、兜底、空分支、嵌套条件及分支内驳回

(cherry picked from commit b982714e1875632fde3338bc69f27052cad98a9d)
2026-11-03 14:56:21 +08:00
PIGCLOUD 93c52e41dc feat(flow): 添加打印模板导入逻辑
- 仅在导入流程时携带打印模板,编辑或复制时保留原模板

(cherry picked from commit ebb2cf463da55efa9ac64bc011ed7ffc8606578a)
2026-11-03 14:56:21 +08:00
PIGCLOUD 2053cc5766 feat(flow): 更新超时任务和通知扫描的延迟时间
- 将 scanReminders 和 scanNotices 方法的扫描延迟时间从 10000ms 修改为 60000ms
- 提高了超时任务和通知的处理频率,优化了系统性能

(cherry picked from commit 71c5177913e5eaf452f62387947be13a6f9cfcc6)
2026-11-03 14:56:21 +08:00
PIGCLOUD ddfc2b41d9 feat(flow): 支持节点 REST 表单权限解析
(cherry picked from commit 80459350acfcd41351497959884307dfa6bbf9c0)
2026-11-03 14:56:21 +08:00
PIGCLOUD 14cb5dfe0a feat(pigx-common): 更新 nacos 版本至 3.3.0
- 将 pigx-common 模块中的 nacos.client.version 更新至 3.3.0
- 将 pigx-register 模块中的 nacos.version 更新至 3.3.0

(cherry picked from commit a25fcc1dedd49b73808fd4c3345da220b2bc50d8)
2026-11-03 14:56:21 +08:00
PIGCLOUD f8742f5e69 fix(flow): 移除回调持久化重试并限制单次通知并发
(cherry picked from commit f7cd6724ee5e5a2fbb7a677f386e582ba9d92610)
2026-11-03 14:56:16 +08:00
PIGCLOUD e0d43f41a1 refactor(flow): migrate durable workspace services to MyBatis Plus
(cherry picked from commit 1b0f4b664cb310fe236dfb046bef9c8248543d71)
2026-11-03 14:56:16 +08:00
PIGCLOUD b04588ffae fix: 修复安全过滤链顺序并清理构建告警
(cherry picked from commit 7dfeb3b7ed6b44b12f72cc82aed92a38e9d39af0)
2026-11-03 14:55:55 +08:00
PIGCLOUD fbb5bd121c feat(api): 删除不再使用的 ConnectConstants、SysDeptRelation、CpUserExcelVo、RoleVO 和 SysSystemSmsConfigVO 类文件
- 移除 ConnectConstants 接口及其相关常量定义
- 删除 SysDeptRelation 类,涉及部门关系表的定义
- 移除 CpUserExcelVo 类,涉及企业微信用户导入的定义
- 删除 RoleVO 类,涉及角色表的定义
- 移除 SysSystemSmsConfigVO 类,涉及系统短信配置的定义

(cherry picked from commit 7ef91170320ae5920458b6e0d64c97e0c6422f62)
2026-11-03 14:55:48 +08:00
PIGCLOUD 72ac720fb6 feat(codegen): 删除不再使用的 GenConfig、TableEntity、SqlDto、PayErrorCodes 等类文件
- 移除冗余的代码文件以简化项目结构
- 清理旧的工具类和实体类,提升代码可维护性

(cherry picked from commit f6eb09a169a2a1bd52501b543018aef15f74e21e)
2026-11-03 14:55:43 +08:00
PIGCLOUD cf917b5988 feat(flow): 新增流程回调投递、草稿存储及流程可靠性服务
- 新增 FlowCallbackDelivery 类,实现 HTTP 回调的至少一次投递机制
- 新增 FlowDraftService 类,支持个人流程草稿的保存、读取和删除
- 新增 FlowReliabilityService 类,处理流程通知、催办与回调的持久化
- 删除 FlowWorkspaceTests 测试类,整合测试逻辑至其他模块

(cherry picked from commit 07c8ccc0e845d30dcfaeeb6d01c999460093c8ac)
2026-11-03 14:55:33 +08:00
PIGCLOUD d0aa3a7284 fix(flow): unify workflow notices and draft reliability
(cherry picked from commit 1632fbb83d24be1523e6fa809ed2ad0ca3e6cb0b)
2026-11-03 14:55:33 +08:00
PIGCLOUD 4f6e796c55 chore(deps): upgrade dynamic-datasource to 4.6.0
(cherry picked from commit 7ff6b91a41cda697f52c3560b4202dab0626e0f9)
2026-11-03 14:55:20 +08:00
PIGCLOUD 085235710b feat(flow): 持久化流程草稿提醒与可靠回调
(cherry picked from commit f6871bee7c5cddaaa5650a284ac3cc3fec16dd18)
2026-11-03 14:55:15 +08:00
PIGCLOUD 749931b53e fix(flow): 按发布版本隔离流程节点配置
(cherry picked from commit 86ae98ad5b29a6d20b7e44283549d7337bb961df)
2026-11-03 14:55:00 +08:00
PIGCLOUD a177f3073a feat(app-article, app-article-category, sys-post): 添加文章和分类拖拽排序功能
- 在 AppArticleController 和 AppArticleCategoryController 中新增排序接口
- 在 AppArticleService 和 AppArticleCategoryService 中添加排序方法
- 在 SysPostController 和 SysPostService 中实现岗位排序功能
- 所有排序功能支持按传入 ID 顺序调整,保留未选中记录位置

(cherry picked from commit 0ba00ddcaba9a042bf082c10230042ba0ecf84d2)
2026-11-03 14:54:51 +08:00
PIGCLOUD d927a5b984 feat(pom): 更新 aws.sdk.version 和 git.commit.version 依赖版本
- 将 aws.sdk.version 从 2.44.14 更新至 2.55.3
- 将 git.commit.version 从 4.9.9 更新至 10.0.1

(cherry picked from commit 9072124412e5961d5ff87adc8d3d8839704b5c05)
2026-11-03 14:54:45 +08:00
PIGCLOUD daad35902e feat(pigx-codegen): 新增JDBC URL安全校验器,防止危险参数注入
- 新增JdbcUrlSecurityValidator,支持MySQL、PostgreSQL、HighGo、SQL Server、Oracle、DB2、DM的JDBC URL危险参数检测
- 在GenDatasourceConfServiceImpl中保存数据源配置时进行安全校验,拒绝包含不安全参数的连接
- 新增GenDatasourceConfServiceImplTests测试用例,覆盖安全与安全的URL场景
- 更新AGENTS.md,调整构建命令描述

(cherry picked from commit cabe0775957e6274cf3c31760724a5ee87fdd743)
2026-11-03 14:54:37 +08:00
PIGCLOUD e4bda833bc docs(db): remove unavailable workflow migration reference 2026-11-03 14:51:50 +08:00
PIGCLOUD cbdd0e202c fix(xss): adapt safelist override to updated jsoup 2026-11-03 14:51:50 +08:00
PIGCLOUD ccdbde5229 fix(pigx-common-security): 修复内部请求校验可被伪造 IP 绕过的问题
- 改用 request.getRemoteAddr() 获取客户端地址,避免从可自定义的转发头提取 IP
- 仅放行 IPv4 回环地址,未携带内部标记的外部请求交由后续认证鉴权处理

(cherry picked from commit b5e5b837ef3e82c4d8231be0bcbd6641c3de7516)
2026-11-03 14:49:33 +08:00
PIGCLOUD 3b15ea4235 fix(auth): 限制表单登录仅使用密码认证
(cherry picked from commit d3c470a848b5369459cd2acc9662276ed52b0e15)
2026-11-03 14:49:32 +08:00
PIGCLOUD 3fd14644cd fix(sentinel): 脱敏数据访问异常并保留异常上报
(cherry picked from commit 194b2d10a8210e93874ad4d1789cf0a4fa4889bd)
2026-11-03 14:49:29 +08:00
PIGCLOUD 4471c363cb feat(controller): 为获取客户端详情和导出功能添加权限控制
- 在 getByClientId 方法上添加 @HasPermission 注解,限制访问权限
- 在 export 方法上添加 @HasPermission 注解,限制访问权限

(cherry picked from commit b84bbffd6e4e74c129d5d02bc2fa3809340dddb7)
2026-11-03 14:49:29 +08:00
PIGCLOUD c0a2b97679 feat(pom): 更新 Spring Boot 和 Spring Cloud 版本
- 将 spring-boot.version 更新至 4.1.2
- 将 spring-cloud.version 更新至 2025.1.4

(cherry picked from commit be2fcf39c253c81826a2bb6266b9de6516d22680)
2026-11-03 14:49:28 +08:00
PIGCLOUD 45250841a5 fix: 调整 sys_route_conf 表 route_id 字段长度为 64
- 将 route_id 字段由 varchar(30) 调整为 varchar(64),避免路由 ID 超长导致存储异常

(cherry picked from commit f681502a5badfbc6bf73ee3c34423241c3b14337)
2026-11-03 14:49:28 +08:00
PIGCLOUD 57877b951f fix(flow): 将查询索引维护到原有初始化 SQL
(cherry picked from commit 88f042d1812902938bdcc0186466e43cc99c13da)
2026-11-03 14:49:27 +08:00
PIGCLOUD 618a29be52 perf(flow): 补充工作流列表查询索引
(cherry picked from commit 51d9242b291efd0ee4f4de329f2e6ccf88389014)
2026-11-03 14:49:27 +08:00
PIGCLOUD 67608f76ba fix(dependabot): 禁止 IJPay 自动升级
(cherry picked from commit efd55dffa7b9e826d894862cb466cf8837ce4e95)
2026-11-03 14:49:24 +08:00
PIGCLOUD 22f55b8ba3 fix(db): 更新初始化脚本注释以指明用途
- 添加注释说明工作流新装/存量升级入口
- 确保初始化脚本不用于升级已有数据库

(cherry picked from commit e2a00ee9c1264d25be641089f3729cac60e0f37f)
2026-11-03 14:49:24 +08:00
PIGCLOUD 9d5ff9c022 fix(message): allow users to delete their own notifications
(cherry picked from commit ea051ea5d76ee9e553754f027e6d3c5ce3aec2b1)
2026-11-03 14:49:23 +08:00
PIGCLOUD ec93f78417 feat(dependabot): 增加对 IJPay 小版本升级的支持
- 更新 dependabot 配置,允许 IJPay 依赖的小版本升级
- 修改注释以反映对 LangChain4j 和 IJPay 的支持

(cherry picked from commit 1b3df5325a1ae6516572e8937c5a56031fcd22ad)
2026-11-03 14:49:23 +08:00
PIGCLOUD 65f184ace6 fix(upms): 保存网站配置时保留各终端验证码开关
移除网站验证码模式变更时对所有 OAuth 终端 captcha_flag 的批量同步,保留前端对默认登录终端的同步行为。

Refs: pig/pigx#7631
(cherry picked from commit 836c2ea5e22f9e9a88f60d8a699e4a66e88979b9)
2026-11-03 14:49:22 +08:00
PIGCLOUD ca84985d63 feat(pigx-mp-platform): 新增按wxUserId精确过滤微信消息查询
- 分页查询新增 wxUserId 精确匹配条件,字段为空时不参与过滤
- 更新接口注释,明确各过滤字段的匹配规则
- 新增 WxFansMsgControllerTests 单元测试,验证按公众号和粉丝维度过滤

(cherry picked from commit 66870cc38f44ccc6c116a09c5e5620ac4b43f9b3)
2026-11-03 14:49:20 +08:00
PIGCLOUD b8fda524f8 fix(pigx-codegen): 修改代码生成默认分支为 master
- 将默认分支从 202601 调整为 master,避免生成代码时指向不存在的分支

(cherry picked from commit 0a86a2d9d012198c55ae77a423396ce709498703)
2026-11-03 14:49:20 +08:00
dependabot[bot] dc663491b6 chore(deps): bump org.jsoup:jsoup in /pigx-common/pigx-common-bom
Bumps [org.jsoup:jsoup](https://github.com/jhy/jsoup) from 1.15.4 to 1.23.2.
- [Release notes](https://github.com/jhy/jsoup/releases)
- [Changelog](https://github.com/jhy/jsoup/blob/master/CHANGES.md)
- [Commits](https://github.com/jhy/jsoup/compare/jsoup-1.15.4...jsoup-1.23.2)

---
updated-dependencies:
- dependency-name: org.jsoup:jsoup
  dependency-version: 1.23.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 7e3fd60373145503a28dc998f44b9467d3d7edc4)
2026-11-03 14:49:19 +08:00
PIGCLOUD cca41756c8 chore(deps): upgrade hutool to 5.8.48
(cherry picked from commit cc59d9bf0736cdc75affb25c4e070808da9ae0fd)
2026-11-03 14:49:19 +08:00
PIGCLOUD cb08f11a5d feat(wx-account-fans): 添加粉丝导出功能及数据脱敏处理
- 新增 WxAccountFansExcelVO 类用于粉丝数据的 Excel 导出
- 在 WxAccountFansController 中实现导出接口,支持按条件筛选粉丝
- 更新 WxAccountFansServiceImpl 中的粉丝更新逻辑,确保数据同步至微信
- 对粉丝的 OpenID 进行脱敏处理,确保隐私安全

(cherry picked from commit a277413d3d7681407daca46bbb635f57a032b25f)
2026-11-03 14:49:18 +08:00
PIGCLOUD e63dc8678e feat(excel-converters): 增加 WRITE_INSTANCE 的文档注释
- 为 WRITE_INSTANCE 添加了详细的文档注释,说明其在未指定目标单元格类型时的用途和返回值。

(cherry picked from commit 8bcff3a8a1879eac50527c25bb99ddc4b35b757d)
2026-11-03 14:49:17 +08:00
PIGCLOUD abf10a2a19 feat(excel-converters): 增强内置转换器功能,添加 StringArrayConverter.WRITE_INSTANCE
- 注册 StringArrayConverter.WRITE_INSTANCE 到 Excel 写构造器
- 优化代码格式,保持一致性

(cherry picked from commit 3800300f7f101560674dacc6a0840e279b753a2e)
2026-11-03 14:49:17 +08:00
PIGCLOUD 1db9bdc636 feat(pom): 添加跳过测试的配置
- 在项目属性中添加 `<skipTests>true</skipTests>` 配置,以便在构建时跳过测试。

(cherry picked from commit 1f1126001d2177aac7a3990d42f6c048f701d536)
2026-11-03 14:49:16 +08:00
PIGCLOUD 60babcbc3d fix: 为 JDK 25+ 添加 Byte Buddy 版本覆盖 profile
- 新增 jdk25-byte-buddy profile,在 JDK 25 及以上环境显式指定
  Byte Buddy 版本为 1.18.11,避免 Sentinel BOM 引入的旧版不兼容

(cherry picked from commit 07a61ad7e3a4b5f1f6e166557bbc6a36638d485b)
2026-11-03 14:49:16 +08:00
PIGCLOUD 2bc231f1bf feat(idempotent): 更新 IdempotentAutoConfiguration 和 IdempotentAutoConfigurationTests
- 移除冗余代码,简化 KeyResolver 和 RedissonClient 的配置
- 增强对 Redis 集群和哨兵模式的支持
- 更新测试用例以验证新的配置逻辑

(cherry picked from commit 0064a36a79cbd17c287eef358def60ea58bc9fbd)
2026-11-03 14:49:14 +08:00
PIGCLOUD 464c6df5b8 feat(sql): 更新 chat2bi_table_meta 表结构,调整字符集为 utf8mb4_general_ci
- 修改 chat2bi_table_meta 表的字符集和排序规则为 utf8mb4_general_ci
- 确保数据源相关字段的字符集一致性
2026-09-23 08:38:49 +08:00
PIGCLOUD 7720ea8547 feat(sql): 新增 chat2bi_table_meta 表结构,支持多数据源表元数据管理
- 包含数据源类型、ID、Schema名、表名等字段
- 提供表注释和列定义的 JSON 格式存储
- 增加多租户支持和同步时间字段

(cherry picked from commit f911168762486715c2c061134416c229462744ed)
2026-09-22 23:06:45 +08:00
PIGCLOUD ee27036339 chore: 统一 PIGX 项目版本为 6.2.0 2026-09-22 22:17:22 +08:00
PIGCLOUD db60b48f6c feat(db): 删除用户社交身份表及相关迁移脚本
- 删除 `20260922_user_social.sql` 文件及其内容
- 更新 `README.md`,移除关于用户社交身份迁移的说明
- 删除 `2026-03-18-flow-withdraw-design.md` 和 `2026-03-19-flow-withdraw-resubmit-design.md` 文档,清理与撤回和重新提交流程相关的设计文档
2026-09-22 22:14:02 +08:00
PIGCLOUD 7712a1bb3c fix(db): 补齐旧社交凭据迁移及升级说明 2026-09-22 22:09:47 +08:00
PIGCLOUD 816a63f0c2 fix(db): 对齐商业版初始化与增量升级表结构
参考 ai-dev-next c0b8a966b 的非 AI 表定义,统一单体与分库结构及内置 OAuth 客户端默认授权。保留 AI 表、菜单与路由排除边界。
2026-09-22 22:09:46 +08:00
PIGCLOUD 545b0a4642 refactor(pigx-upms-biz): 重构租户菜单缓存清理逻辑
- 将缩进从4个空格统一替换为Tab,并调整链式调用换行格式
- 重构 updateTenant 方法中菜单缓存清理逻辑,移除 RedisUtils 依赖,改用 Spring Cache 的 Cache.evict 按角色ID清除缓存
- 移除未使用的 RedisUtils 导入,增加 Cache 导入
- 微调日志格式和数组字面量格式

(cherry picked from commit b368a80a83a7d7efb34a63cda26e4ad64e99dfd0)
2026-09-22 21:52:17 +08:00
PIGCLOUD 1dc58c60cf feat(pigx-upms-biz): 增加飞书用户身份绑定功能
- 在 SysUserMapper.xml 中添加对飞书用户的查询支持
- 新增 FeishuLoginHandlerTests 测试类,验证飞书登录处理逻辑
- 测试覆盖飞书身份的代码交换和用户信息查询功能

(cherry picked from commit 2a0796cce45efd4e0444b0e2a6ef0a9e530dd226)
2026-09-22 21:52:04 +08:00
PIGCLOUD 75ec99389c fix(flow): 保留撤回终止原因
(cherry picked from commit ca125bd0ec08472c02c04356a5c4dd22965e3c78)
2026-09-22 21:51:48 +08:00
PIGCLOUD b6681ed578 fix(flow): 修正拒绝结束状态
(cherry picked from commit 5158476c3ff652f6a97256497074ba9cbd448ff5)
2026-09-22 21:51:48 +08:00
PIGCLOUD 53e7a6c2eb feat: 更新配置文件,增加openfeign请求压缩最小请求大小限制
(cherry picked from commit 0d6f12a2b934abe67eb7952e22ca7cdeddbd848f)
2026-09-22 21:51:48 +08:00
PIGCLOUD a810bf8f0b refactor(codegen): 移除 vform 无用代码
(cherry picked from commit 1bf57b916a66d61c6cfe52fdba827bb3c748c296)
2026-09-22 21:51:23 +08:00
PIGCLOUD 840732c52d refactor(pigx-upms): 重构社交登录,社交凭据迁移至独立表并移除码云/开源中国支持
- 将微信、企微、钉钉等社交登录凭据从 sys_user 字段迁移至独立的 sys_user_social 表
- 删除 Gitee 和 OSC 登录处理器及相关常量、枚举和字典项
- 更新绑定/解绑逻辑,使用 sys_user_social Mapper 进行增删改查
- 修改用户查询 SQL,通过 JOIN sys_user_social 表按社交标识查询用户
- 企业微信导入时自动写入社交绑定关系,并处理社交标识冲突异常
- 新增查询当前用户已绑定社交类型接口

(cherry picked from commit 2181b3311d62f980aecd6e144dbe7bce4e8dd8d2)
2026-09-22 21:49:55 +08:00
PIGCLOUD 6a4b8b1f1d Revert "fix(flow): 修正拒绝结束状态"
This reverts commit 4023b142d1.
2026-09-22 21:44:11 +08:00
PIGCLOUD 3f4d1dbf6e feat(sql): 新增 SqlSortUtils 工具类,提供排序字段校验功能
- 实现 isValidColumn 方法,校验前端传入的排序字段是否合法
- 更新 SqlFilterArgumentResolver,使用 SqlSortUtils 进行排序字段校验

(cherry picked from commit 1833847cd835d9972c2237cb804f00fd8075d4e8)
2026-09-22 21:43:41 +08:00
PIGCLOUD 39ea9a6eae feat(idempotent): 增强幂等配置,支持 Redis 集群和哨兵模式
- 新增对 Redis 集群和哨兵模式的支持
- 更新 Redisson 客户端配置逻辑
- 添加 IdempotentAutoConfigurationTests 测试类,验证新配置的正确性

(cherry picked from commit b836af6dc0dfbe17b20740cfda9e417deae1967d)
2026-09-22 21:43:41 +08:00
PIGCLOUD c80d5bc44a upgrade(jimu): 升级依赖版本并清理Nacos配置中的冗余项
- 升级 jimu 版本从 2.5.0 至 2.5.2,fastjson 版本从 2.0.58 至 2.0.65
- 清理 Nacos 配置(pigx-codegen-dev、pigx-daemon-quartz-dev、pigx-mp-platform-dev、pigx-jimu-platform-dev)中多余的 resources 配置项

(cherry picked from commit ad1b4945b9c1624217eee10d331a91a5004970f5)
2026-09-22 21:43:40 +08:00
PIGCLOUD 50b68563a6 feat: 更新nacos版本至3.2.4以增强功能和稳定性
(cherry picked from commit 52745112879f562cc745b3a8ec65603437c018c4)
2026-09-22 21:43:40 +08:00
PIGCLOUD 2a6ce673f5 fix(param): 将前端注册开关的默认值修改为关闭
(cherry picked from commit 4b94ca3fd4d7e2a5c69afbeb18fff8d336459c9d)
2026-09-22 21:43:39 +08:00
PIGCLOUD 08c081304a feat: 支持 JDK 25+ 显式声明 Lombok 注解处理器
- 添加 `jdk25-annotation-processor` profile,解决 JDK 25+ 下注解处理器自动发现关闭的问题

(cherry picked from commit 852cb195aa36425b3f0c512727a4f04b01da410a)
2026-09-22 21:43:39 +08:00
PIGCLOUD bca999535c feat: 更新 Spring Boot 和 Spring Cloud 版本至 4.1.1 和 2025.1.3
(cherry picked from commit 2d0eb6822807eaff80a491ddcaa0e584c0c197d6)
2026-09-22 21:43:39 +08:00
PIGCLOUD d46af13a2e feat(auth): 优化图形验证码生成逻辑,新增自定义颜色支持
(cherry picked from commit af900df10d6e9df4b9812332f126c2e96474722e)
2026-09-22 21:43:38 +08:00
PIGCLOUD 4023b142d1 fix(flow): 修正拒绝结束状态
(cherry picked from commit 5158476c3ff652f6a97256497074ba9cbd448ff5)
2026-09-22 21:43:38 +08:00
PIGCLOUD 269d7fe5e4 fix(quartz): 增加 REST 任务 URL 白名单校验
(cherry picked from commit ad6cd0600641ce916a09efe6affb56db97ad6890)
2026-09-22 21:43:37 +08:00
PIGCLOUD 2edc478f73 fix(codegen): 拦截非法表名
(cherry picked from commit 4e441f50473a4c3c5222002f23de6afdb5c70588)
2026-09-22 21:43:36 +08:00
PIGCLOUD cbb68a0e5b Merge remote-tracking branch 'origin/dev' into dev 2026-09-22 21:30:00 +08:00
PIGCLOUD 9c63820b53 fix: 修复Nacos配置中never-refreshable和endpoint.restart.access配置项,防止数据源死循环
- 将`spring.cloud.refresh.never-refreshable`从`datasource`改为`dataSource`,避免动态刷新导致数据源循环依赖
- 将`management.endpoint.restart.access`从`unrestricted`改为`none`,限制重启端点访问
2026-08-12 23:23:31 +08:00
PIGCLOUD 4ed36c5559 fix(pigx-common-log): 修复Nacos配置修改导致数据源死循环的问题
- 移除 `excludeFields` 字段的 `@Value` 注解注入,改为直接初始化默认值列表,避免动态配置刷新引发循环依赖
2026-08-07 10:12:24 +08:00
PIGCLOUD c3b336aad4 fix(config): 更新配置文件内容,修复nacos 配置修改数据源陷入死循环而down 2026-08-06 17:42:41 +08:00
PIGCLOUD d46e42d51d chore(upms-tests): 删除多个测试文件以清理代码库 2026-08-03 08:30:05 +08:00
PIGCLOUD fe9ee4d1e6 fix(upms): 更新上传文件方法文档,增加路径校验说明 2026-08-03 08:28:06 +08:00
PIGCLOUD 0aaaee14fb fix(upms): 收紧客户端详情查询接口权限 2026-08-03 08:28:06 +08:00
PIGCLOUD a043c4f19e fix(upms): 收紧客户端详情查询接口权限
将 Feign 查询接口改为仅内部调用,并新增带权限的 /client/details 供管理端使用。
2026-08-03 08:27:40 +08:00
PIGCLOUD d1876914d2 fix(upms): 本地文件存储增加路径穿越防护
上传/读取/删除前校验路径位于存储根目录内,统一错误文案,并修复无扩展名时多余的点号。
2026-08-03 08:27:00 +08:00
PIGCLOUD 6248d60e62 refactor(pigx-monitor): 移除 fastjson 依赖,改用 hutool-json 处理 JSON 序列化与反序列化 2026-08-03 08:25:55 +08:00
PIGCLOUD 7461394f99 refactor(pigx-flow): 移除测试文件并禁用 JimuReport 模块
- 删除 `MultiInstanceHandlerTests`、`ProcessNodeRecordServiceImplTests`、`ProcessTaskControllerTests`、`TaskServiceDelegateParticipationTests`、`TaskServiceImplTests` 五个测试类
- 注释 `pigx-visual/pom.xml` 中的 `pigx-jimu-platform` 模块,并添加启用说明注释
2026-08-01 17:24:24 +08:00
PIGCLOUD 55df29df99 feat(pigx-boot): 报表表添加多sheet标识字段
- 在 `jimu_report` 表中新增 `is_multi_sheet` 字段,用于标识是否多sheet报表
- 更新已有数据记录的 `is_multi_sheet` 字段值
2026-08-01 16:56:44 +08:00
PIGCLOUD 0601ed01ed chore(flow): remove temporary add-sign docs 2026-08-01 13:32:20 +08:00
PIGCLOUD 2b6a4d2e85 feat(flow): support dynamic countersign add-sign 2026-08-01 13:32:20 +08:00
PIGCLOUD 5931a5d6d7 feat(upms): support umami analytics 2026-08-01 13:31:35 +08:00
PIGCLOUD 83ee6144b3 chore(menu): 统一导航授权名称 2026-08-01 12:59:24 +08:00
PIGCLOUD 08a82ee09c fix(boot): randomize MyBatis-Plus snowflake node IDs 2026-08-01 12:00:43 +08:00
PIGCLOUD 1dad386954 chore(gitignore): 移除对 docs 目录及其子目录的忽略规则 2026-08-01 12:00:03 +08:00
PIGCLOUD 02cfe26922 chore(deps): ignore MyBatis upgrades 2026-08-01 11:59:35 +08:00
PIGCLOUD 87911c87d0 fix app page empty state 2026-08-01 11:59:35 +08:00
PIGCLOUD 75f426deb3 fix(swagger): 使用相对地址避免跨域 2026-08-01 11:59:35 +08:00
PIGCLOUD 41f20b2db3 fix(data): 延迟初始化数据权限 Feign 客户端 2026-08-01 11:59:35 +08:00
PIGCLOUD d9130d4fbf fix(pigx-upms-api): 调整社交登录敏感字段脱敏策略,缩短掩码显示长度
- 将 SysSocialDetails 中 appId 和 appSecret 的 @Sensitive 脱敏长度从 4/4 和 9/9 统一调整为 2/2,增强敏感信息保护
2026-08-01 11:59:35 +08:00
PIGCLOUD ea6940378c feat(syslog): 增加对不同数据库的日志汇总查询支持 2026-08-01 11:59:35 +08:00
leng leng ce07c9dcb9 feat(area): 重构行政区划管理接口 (#72) 2026-08-01 11:59:35 +08:00
PIGCLOUD fb5e1bdf6e fix(sequence): 发号器自动建表兼容 PostgreSQL 等非 MySQL 方言
Table.from 推导的列缺少 originType,DDL 阶段无法按目标库转换类型,
PostgreSQL 下 DATETIME 原样输出导致建表失败(type "datetime" does not exist)。
补全 originType 使 anyline 方言别名转换(DATETIME -> TIMESTAMP)生效。

同时显式命名主键约束:anyline 随机生成的约束名约 16% 概率以数字开头,
未加引号时为 SQL 语法错误。

MySQL 差分验证建表行为不变;本地 PostgreSQL 实测建表成功。
2026-08-01 11:59:35 +08:00
PIGCLOUD 2ab4d66f28 fix(feign): 修复首次并发请求转换器竞态 2026-08-01 11:59:35 +08:00
PIGCLOUD d3afca673e fix(upms): aggregate log statistics in database (#7568) 2026-08-01 11:59:35 +08:00
PIGCLOUD 0a15577761 fix log multipart serialization 2026-08-01 11:59:35 +08:00
PIGCLOUD 2bc5fb5f24 feat(datasource): 支持通过 query-ds-enabled 关闭数据库配置表加载扩展数据源
新增 spring.datasource.druid.query-ds-enabled 配置项,默认开启;显式设为
false 时跳过从 gen_datasource_conf 表加载扩展数据源,便于不依赖该表的部署
场景关闭此行为。
2026-08-01 11:59:35 +08:00
PIGCLOUD 76ea7f45ac feat(pigx-upms-biz): 小程序登录支持手机号不存在时自动注册
- 当用户不存在且系统注册功能开启时,自动以手机号注册新用户并返回用户信息
- 初始密码使用10位随机数字,注册逻辑与SysRegisterController保持一致
2026-08-01 11:59:35 +08:00
PIGCLOUD 8062730ec3 fix sequence range update name condition 2026-08-01 11:59:35 +08:00
PIGCLOUD 15fb0df080 fix(upms): restrict user list by ids to inner calls 2026-08-01 11:59:35 +08:00
PIGCLOUD 1e74a8e4b2 fix(job): set default XXL-Job access token 2026-08-01 11:59:35 +08:00
PIGCLOUD 194e3e0f99 fix(service): 使用 JakartaMailUtil 替换 MailUtil 发送邮件 2026-08-01 11:59:35 +08:00
PIGCLOUD 4f79671c94 chore(deps): upgrade xxl-job to 3.4.2 2026-08-01 11:58:31 +08:00
PIGCLOUD 91b5d27347 upgrade(xxl-job): 升级 3.4.1 2026-08-01 11:58:10 +08:00
PIGCLOUD d6ef8e4e98 upgrade(xxl-job): 升级 3.4.1 2026-08-01 11:58:02 +08:00
PIGCLOUD 87489ed353 chore(deps): align non-AI platform with 6.1.0 2026-08-01 11:57:32 +08:00
PIGCLOUD e883e64a65 chore(deps): upgrade jasypt to 4.0.4 2026-08-01 11:53:16 +08:00
PIGCLOUD 00a4b30ecb chore(deps): upgrade spring boot admin to 4.1.1 2026-08-01 11:53:16 +08:00
PIGCLOUD 82743a0375 fix(pom): 升级 spring-boot-admin 版本至 4.1.0 2026-08-01 11:52:59 +08:00
PIGCLOUD a8437aacad fix: 升级 spring-cloud 版本至 2025.1.2
- 升级 spring-cloud 版本至 2025.1.2
2026-08-01 11:52:42 +08:00
PIGCLOUD 74fb06e3ea feat(deps): 升级 Spring Boot 4.1.0 并迁移 Redis 监听到 @RedisListener
- spring-boot.version 4.0.6 -> 4.1.0
- 共享容器 Bean 改名为 redisMessageListenerContainer,适配 Boot 4.1 按名称回退的自动配置
- ClientDetailsInitRunner/DynamicRouteInitRunner 移除 InitializingBean 手工注册,改用 @RedisListener
- WxMpInitConfigRunner 移除自定义 redisContainer Bean,改用 @RedisListener
- 注意:需配合 Nacos 共享配置关闭 spring.cloud.compatibility-verifier(SC 2025.1.1 官方仅声明兼容 Boot 4.0.x)
2026-08-01 11:52:42 +08:00
PIGCLOUD bdeba4ce3d fix(core): avoid replacing projecting jackson converter 2026-06-18 22:51:49 +08:00
PIGCLOUD a6af889ccf fix(upms): validate password reset result 2026-06-18 08:33:11 +08:00
PIGCLOUD 9236384ce6 refactor(pigx-register): 添加 hessian 依赖并移除 jraft-core 的排除配置 2026-06-15 13:26:47 +08:00
PIGCLOUD 53bf0dbcb1 fix(db): 将多个表的 tenant_id 字段长度从 10 增加到 64 2026-06-13 19:21:33 +08:00
PIGCLOUD dda210e91a fix: 修复 YungouosMergePayOrderHandler 中的参数传递问题 2026-06-13 19:21:19 +08:00
PIGCLOUD 783c688b6c fix(pigx-gateway):添加命名异步查询订阅服务配置 2026-06-13 19:21:13 +08:00
PIGCLOUD 2c2a9a3bd7 fix(config): 更新 pigx-daemon-elastic-job-dev.yml 配置,添加 XXL-Job 配置
(cherry picked from commit a0d855e01faf89aeb952718150f1220e351ec724)
2026-06-08 12:28:15 +08:00
PIGCLOUD d7c4ab10b3 fix(visual): align xxl_job schema with xxl-job 3.4.0 (add token, sha256 admin) 2026-06-08 11:20:24 +08:00
PIGCLOUD a5d3dff3fc fix(codegen): 加固 Velocity 模板渲染 2026-06-04 18:32:16 +08:00
PIGCLOUD d3966d64f5 chore(deps): 升级依赖版本 2026-06-04 17:20:20 +08:00
PIGCLOUD fef648a8cf refactor(pigx-upms-api): 将 SiteConfigDTO 迁移至 pigx-upms-api 模块
- 移动 SiteConfigDTO 类从 pigx-upms-biz 的 dto 包到 pigx-upms-api 的 api.dto 包
- 更新业务模块中所有对该类的 import 引用
2026-06-04 00:06:54 +08:00
PIGCLOUD 28c16ac730 fix: 默认关闭反调试保护功能
- 将 `SITE_ANTI_DEBUG_ENABLE` 参数默认值从 `1` 改为 `0`
2026-06-03 23:40:01 +08:00
PIGCLOUD b82721c293 feat(codegen): add generator path check
(cherry picked from commit 11dd892078e9b4f5dabf5df1d2c75d61df6823bd)
2026-06-03 20:58:01 +08:00
PIGCLOUD ace1e560f7 feat(pigx-xxl-job-admin): 新增 XXL-Job Admin 微服务配置 2026-06-03 12:59:08 +08:00
PIGCLOUD e3287e3d8a feat(pigx-common-bom): 新增 mybatis-spring-boot-starter 依赖管理
- 添加 mybatis-spring-boot-starter 依赖并配置版本属性 4.0.1
2026-06-03 12:59:05 +08:00
PIGCLOUD 778e795d9d chore: update version from 6.0.0-SNAPSHOT to 6.0.0 in pom.xml 2026-06-01 09:12:29 +08:00
PIGCLOUD 45c7ceec17 chore(pigx-register): 更新 nacos 版本从 3.2.1 到 3.2.2
- 升级 nacos 依赖版本至 3.2.2
2026-06-01 09:05:29 +08:00
PIGCLOUD 5d561bee33 feat(pigx-codegen): 支持实体生成到独立 api 模块
- 新增 DataModelConstants 定义 API_PATH、ENTITY_PATH 等实体路径常量
- 实现 setEntityModel 方法,自动识别 `-biz` 模块同级 `-api` 模块,将实体生成路径和包名切换到 api 模块
- 更新 gen_template.sql 代码生成模板,使用 entityClassName、entityPath 等动态变量替代硬编码包路径
- 扩展 isSpringBoot3 判断逻辑,兼容 SpringBoot 4.x 主版本
2026-05-28 15:57:50 +08:00
PIGCLOUD f172154800 feat(pigx-codegen): 支持实体生成到独立 api 模块
- 新增 DataModelConstants 定义 API_PATH、ENTITY_PATH 等实体路径常量
- 实现 setEntityModel 方法,自动识别 `-biz` 模块同级 `-api` 模块,将实体生成路径和包名切换到 api 模块
- 更新 gen_template.sql 代码生成模板,使用 entityClassName、entityPath 等动态变量替代硬编码包路径
- 扩展 isSpringBoot3 判断逻辑,兼容 SpringBoot 4.x 主版本
2026-05-28 14:41:17 +08:00
PIGCLOUD f3c0b2034c feat(pigx-upms-biz): 重构微信小程序登录,由 openid 改为手机号登录
- 修改 `MiniAppLoginHandler` 登录流程:使用前端 `getPhoneNumber` 返回的 code 换取手机号,并通过手机号获取用户信息;绑定逻辑改为写入手机号字段
- 引入微信接口调用凭证(access_token)的获取与 Redis 缓存机制,减少重复请求
- 新增 `SecurityConstants` 中 `MINI_APP_ACCESS_TOKEN_URL` 和 `MINI_APP_PHONE_NUMBER_URL` 常量
- 移除自动创建小程序用户逻辑,未绑定时直接返回 null
- 提取微信响应校验、缓存读取/写入、HTTP 请求等方法,便于单元测试覆盖
2026-05-28 14:41:15 +08:00
PIGCLOUD dd49790ceb refactor: 更新 XXL-Job Admin 配置
- 重写 `pigx-xxl-job-admin-dev.yml` 配置内容,增加 Web 服务、Actuator 监控、HikariCP 连接池、邮箱服务及 XXL-SSO 单点登录等详细配置
2026-05-26 07:41:17 +08:00
PIGCLOUD 3b6c63dd64 feat(pigx-register): 禁用Nacos AI扩展功能与广告展示
- 添加配置 `nacos.extension.ai.enabled=false` 关闭AI扩展功能
- 添加配置 `nacos.console.ad.enabled=false` 关闭控制台广告展示
2026-05-26 07:40:59 +08:00
PIGCLOUD b19c1c2f0f feat(docs): add behavioral guidelines for coding practices in AGENTS.md and CLAUDE.md 2026-05-13 09:46:38 +08:00
PIGCLOUD 21127c11b5 chore(db): sync non-ai database scripts 2026-05-25 17:31:39 +08:00
PIGCLOUD 5eff0d71df feat: add new models and update application structure for job scheduling 2026-05-01 23:59:12 +08:00
PIGCLOUD 124a2547dd refactor(xxl-job): replace xxl-job-admin for boot4 2026-05-25 17:31:39 +08:00
PIGCLOUD 3132cc3784 feat(pigx-upms-biz): 新增密码规则预设功能 2026-05-21 17:21:03 +08:00
PIGCLOUD 1b87ae9787 refactor(pigx-common-datasource): 重构数据源类型枚举,新增 AnyLine 解析适配器字段及插件状态查询 2026-05-24 18:49:20 +08:00
PIGCLOUD 0fca2924d4 refactor(pigx-common-data): 解耦 pigx-common-data 对 pigx-common-security 的依赖 2026-05-21 10:39:50 +08:00
PIGCLOUD 5ad4dfb711 refactor(pigx-common-security): 统一验证码校验逻辑并新增短信验证码前置校验 2026-05-20 23:24:23 +08:00
PIGCLOUD c796af6c5f refactor(pigx-common-oss): 将OSS操作从S3AsyncClient迁移至同步S3Client 2026-05-18 19:03:23 +08:00
PIGCLOUD 87a1ea1ae0 refactor(pigx-common-excel): 重构 Excel 模块,引入内置转换器注册机制并优化 Excel 读写流程 2026-05-18 15:56:20 +08:00
PIGCLOUD 1d9bfd866f feat(pigx-common-audit): 重构审计模块,支持通过主键自动获取对象进行比对 2026-05-18 14:19:08 +08:00
PIGCLOUD 836fc04a26 refactor(pigx-common-websocket): 优化 WebSocket 缓冲区配置并移除 Undertow 依赖 2026-05-14 14:13:54 +08:00
PIGCLOUD 5f3bff90e1 feat(pigx-flow-biz): 支持分组ID为空时查询所有未隐藏流程 2026-05-11 17:33:12 +08:00
PIGCLOUD 26efa7acbf feat(pigx-pay-platform): 支持微信支付 APIV3 回调与下单, 2026-05-11 11:19:16 +08:00
PIGCLOUD a1edbfcc6e feat(app): 重构APP模块支持TOB 添加角色底部导航管理功能,更新相关接口和实体 2026-05-10 10:57:59 +08:00
PIGCLOUD c48d5f753c feat(pigx-auth): 增加 SM4 国密算法支持并优化密码解密逻辑 2026-05-03 21:25:09 +08:00
PIGCLOUD 32c6e81b3a feat(encrypt): 优化解密逻辑,重构 AES 加解密实现,增加 SM4 密钥校验 2026-05-03 19:40:22 +08:00
PIGCLOUD 7613f72673 feat(pigx-common-core): 降级 Jackson 3 到 Jackson 2 并重构配置 2026-05-02 13:42:11 +08:00
PIGCLOUD e80b4f0b28 fix(feign): 修复 HttpMessageConverterCustomizer 的 UnsupportedOperationException 2026-05-01 22:14:18 +08:00
PIGCLOUD e88b2818fd chore(pom): update parent version to 6.0.0-SNAPSHOT and adjust dependencies fix: correct import paths for Spring Boot components and update Jackson configuration 2026-05-01 22:20:52 +08:00
PIGCLOUD f68327b857 ci: configure build and dependency automation 2026-04-30 16:06:54 +08:00
PIGCLOUD 66e55f3258 refactor(pigx-common-datasource): 简化动态数据源配置逻辑
- 移除 DEFAULT_QUERY_DS_SQL 常量定义
- 直接使用传入的 queryDsSql 参数,简化条件判断逻辑
- 优化构造函数参数初始化方式
2026-03-20 11:32:36 +08:00
PIGCLOUD 9d198266d7 fix(db): 更新 config_info 表中的配置内容和 MD5 值 2026-03-20 11:28:17 +08:00
PIGCLOUD fe64bf38c2 refactor(pigx-common-datasource): 重构动态数据源配置
- 移除 DruidDataSourceProperties 配置类,直接使用 DruidDataSourceWrapper
- 移除冗余的配置属性和创建逻辑,提升代码简洁性
2026-03-20 11:28:11 +08:00
PIGCLOUD f759865202 feat(pigx-flow-biz): 新增流程撤回功能
- 在 ITaskService 接口中添加 withdrawProcessInstance 方法用于撤回流程实例
- 实现 TaskServiceImpl 中的撤回逻辑,包括权限校验和流程状态更新
- 新增 terminateProcessInstance 私有方法统一处理流程终止和撤回操作
- 在 ProcessInstanceRecordVo 中添加撤回相关字段 canWithdraw 和 withdrawDisabledReason
- 优化 ProcessInstanceServiceImpl 查询逻辑,批量处理驳回状态和撤回状态判断
- 在 ProcessTaskController 中添加撤回流程实例的接口端点
- 定义流程撤回相关的常量,包括结束原因和执行人状态
2026-03-19 08:41:55 +08:00
PIGCLOUD b553787cfd docs(flow): add withdraw resubmit design 2026-03-19 08:39:53 +08:00
PIGCLOUD 2c70387ace docs(flow): add starter withdraw design 2026-03-18 23:57:10 +08:00
PIGCLOUD 9d6515d8fa fix(sql): 移除无用的AI菜单插入语句 2026-03-18 08:55:45 +08:00
PIGCLOUD c3f757e38c fix(db): 删除无用的 SQL 2026-03-09 11:20:07 +08:00
PIGCLOUD 61adedf902 fix(pigx-common-data): 添加 SQL 注入检查并移除自定义转义方法
- 在数据权限拦截器中添加 SQL 注入检查,使用 MyBatis-Plus 的 SqlInjectionUtils 工具类
- 移除原有的 escapeSql 自定义转义方法,直接使用原始 username 参数
- 在生成条件表达式和查询语句时增加注入检查逻辑,发现注入风险时返回空结果集
2026-03-09 10:46:07 +08:00
PIGCLOUD 0198431ffa docs(pigx-common-bom): 升级 spring-boot-admin 版本从 3.5.7 到 3.5.8 2026-03-08 18:03:20 +08:00
PIGCLOUD ed60e69d07 docs(pigx-common-bom): 清理过期的依赖项
- 移除 pigx-common-milvus、pigx-common-mcp、pigx-common-neo4j 依赖项
- 删除不再使用的分支合并设计文档文件
- 清理项目中的过期配置和文档
2026-03-08 18:02:14 +08:00
PIGCLOUD e646321d15 docs: 删除过期的分支合并设计文档
- 移除 2026-03-08-merge-aiflow-branch-design.md 文件
- 移除 2026-03-08-merge-aiflow-non-ai-plan.md 文件
- 清理不再使用的分支合并计划和实施方案
2026-03-08 17:57:17 +08:00
PIGCLOUD 40977fbc56 fix(pigx-flow-api): 修复 RemoteFlowApiFlowService 常量引用
将 FLOW_ENGINE_SERVER 改为 FLOW_SERVER 以匹配 ServiceNameConstants 中的定义。
2026-03-08 15:31:40 +08:00
PIGCLOUD 13b8984769 fix: 移除根 pom.xml 中的 pigx-aigc 模块引用和 pigx-boot 中的 aigc-biz 依赖
dev 分支不含 pigx-aigc 目录,移除对不存在模块的引用以确保编译通过。
2026-03-08 15:29:43 +08:00
PIGCLOUD cb8e426855 chore: 更新 boot 开发配置
从 2bb41b75f 提取非 AI 部分。application-dev.yml 添加 Redis database 配置。
2026-03-08 15:23:18 +08:00
PIGCLOUD 7e005eabd0 feat(pigx-upms-biz): 优化 SysTenantServiceImpl 租户处理逻辑
从 19b3e3ba3 提取非 AI 部分。
2026-03-08 15:20:44 +08:00
PIGCLOUD 7070b9f3d2 feat: 增强租户上下文处理 (非 AI 部分)
从 60b4aca0f 提取 db/0pigxx_boot.sql 和 pigx-boot/pom.xml 变更。
2026-03-08 15:19:28 +08:00
PIGCLOUD 57d1d03a6c feat(pigx-common-core): 更新 ServiceNameConstants 添加 AIGC 服务常量
从 b63758c9f 提取非 AI 文件部分。
2026-03-08 15:18:17 +08:00
PIGCLOUD 98656e4af3 chore: upgrade version to 5.12.0 (non-AI modules only)
Cherry-picked from 799188b31, excluding pigx-aigc and AI-related common modules.
2026-03-08 15:15:12 +08:00
PIGCLOUD 96361c21ec feat(pigx-flow-biz): 增加触发器异常终止处理,确保在事务外安全终止流程
- 在 TriggerServiceTask 中重构异常处理逻辑,将直接终止流程改为抛出特定异常
- 在 TaskServiceImpl 中增加触发器异常终止处理,确保在事务外安全终止流程
- 优化任务参数设置逻辑,提前获取 processInstanceId 确保终止流程可用
- 统一流程终止状态管理,使用 NodeStatusEnum.YZZ 表示已终止状态
- 调整代码格式,提高可读性和一致性

feat(pigx-flow-api): 扩展节点状态枚举

- 在 NodeStatusEnum 中新增 YZZ(9, "已终止") 状态,用于标识流程异常终止情况
2026-03-08 15:07:18 +08:00
PIGCLOUD cd2ec46f82 feat(pigx-flow-biz): 优化任务服务参数传递
- 将taskResultDto.getTaskNode()替换为node变量,简化参数设置逻辑
- 保持其他参数设置不变,提高代码可读性
2026-03-08 15:07:13 +08:00
PIGCLOUD 3acab393c4 feat(pigx-boot): 优化模块依赖配置 1.12.1
- 更新 langchain4j 相关依赖版本至 1.12.1
2026-03-08 15:07:09 +08:00
PIGCLOUD 410a869db2 feat(pigx-flow-biz): 新增流程打印模板功能
- 在 Process 实体类中新增 printTemplate 字段,用于存储 HTML 格式的打印模板
- 新增数据库表字段 print_template,支持流程定义的打印模板存储
- 在 ProcessController 中新增获取和保存打印模板的 REST API 接口
- 在 ProcessInstanceRecordVo 中新增 hasPrintTemplate 字段,标识流程是否配置打印模板
- 优化流程实例列表查询,批量检查打印模板配置状态
- 修复 ProcessInstanceServiceImpl 中重复设置 formData 的问题
2026-03-08 15:06:59 +08:00
PIGCLOUD 3c05364e12 feat(pigx-flow-biz): 实现触发器节点功能
- 在 ModelUtil 中新增 TRIGGER 节点类型处理逻辑,调用 buildTriggerNode 方法
- 重构 buildSimpleServiceTaskNode 通用方法,支持构建服务任务节点
- 新增 buildTriggerNode 方法,使用 TriggerServiceTask 处理触发器逻辑
- 新增 TriggerServiceTask 组件,支持调用外部 HTTP 接口并处理返回值映射
- 支持配置请求头、请求体和返回值映射到表单字段
- 提供异常处理机制,支持抛出异常或终止流程两种策略
2026-03-08 15:06:40 +08:00
PIGCLOUD 325f58996d feat(pigx-flow-biz): 实现触发器节点功能
- 在 NodeFormatUtil 中新增 TRIGGER 节点类型处理逻辑
- 重构 ModelUtil 中的 buildSimpleServiceTaskNode 通用方法,支持构建服务任务节点
- 新增 buildTriggerNode 方法,使用 TriggerServiceTask 处理触发器逻辑
- 新增 TriggerServiceTask 组件,支持调用外部 HTTP 接口并处理返回值映射
- 支持配置请求头、请求体和返回值映射到表单字段
- 提供异常处理机制,支持抛出异常或终止流程两种策略
2026-03-08 15:06:36 +08:00
PIGCLOUD b28d86cb59 feat(pigx-flow-api): 新增延时器节点支持
- 新增 TimerConfig 和 TimerDuration DTO 类,用于配置延时器参数
- 在 Node 类中增加 timerConfig 字段,支持延时器配置
- 新增 TIMER 节点类型枚举值

feat(pigx-flow-biz): 实现延时器节点功能

- 在 ModelUtil 中新增 buildTimerNode 方法,支持构建延时器节点
- 新增 TimerHandler 组件,处理表单字段日期格式转换
- 支持三种延时模式:固定时长、指定日期时间、表单字段日期
- 优化连线名称生成逻辑,避免重复设置
2026-03-08 15:06:17 +08:00
PIGCLOUD ecdbfaca68 feat(pigx-flow-biz): 优化流程创建逻辑
- 在创建流程时增加对空节点用户列表的检查,避免空指针异常
- 当 nodeUserList 为空时直接返回成功结果,跳过后续处理步骤
2026-03-08 15:06:12 +08:00
PIGCLOUD 1b27c695d8 feat(pigx-codegen): 优化数据源密码更新逻辑
- 密码为空时自动从数据库查询并解密原始密码用于连接校验
- 简化密码加密逻辑,移除冗余的条件判断
2026-03-08 15:06:08 +08:00
PIGCLOUD 650d791222 feat(pigx-flow-biz): 扩展抄送任务支持角色和岗位类型
- 在 CopyServiceTask 中新增对角色和岗位类型的抄送人员支持
- 新增 addUserIds 工具方法用于用户ID去重合并
- 优化表单数据处理逻辑,避免重复序列化操作
- 更新注释说明支持用户、部门、角色、岗位四种类型
2026-03-08 15:05:50 +08:00
PIGCLOUD ef13df4f79 feat: 优化文件上传配置,统一使用 undertow 服务器设置
- 在 server 配置中新增 undertow.max-http-post-size 参数
- 将 multipart 文件上传大小限制改为引用 undertow 服务器配置
- 保持文件上传大小限制为 100MB,提高配置一致性
2026-03-08 15:05:45 +08:00
PIGCLOUD 191efaad40 feat(pigx-boot): 添加可选模块依赖支持
- 新增 pigx-codegen、pigx-app-server-biz、pigx-daemon-quartz、pigx-flow-biz、pigx-mp-platform、pigx-pay-platform 等可选模块依赖
- 添加注释说明可选模块可根据 AI 能力需求进行删除以提升启动速度
2026-03-08 15:05:36 +08:00
PIGCLOUD 88d057f081 feat(pigx-flow-api): 为 BizFlowBaseDto 添加 ExcelIgnore 注解
- 在 BizFlowBaseDto 的 flowParamMap 字段上添加 @ExcelIgnore 注解
- 导入 cn.idev.excel.annotation.ExcelIgnore 包
2026-03-08 15:05:32 +08:00
PIGCLOUD d70d741e50 refactor: 升级 Spring Boot 版本至 3.5.11
- 更新 pom.xml 中 spring-boot.version 属性为 3.5.11
2026-03-08 15:05:28 +08:00
PIGCLOUD 2efe58556a refactor(pigx-upms-biz): 简化文件上传逻辑,简化文件名编码转换处理逻辑
- 移除 WebUtils 和 StandardCharsets 相关导入
- 删除微服务环境判断逻辑,直接使用 file.getOriginalFilename()
-
2026-03-08 15:03:34 +08:00
PIGCLOUD 583fca8611 fix(codegen): 修复生成模板导出参数的queryForm污染 2026-03-08 15:03:30 +08:00
PIGCLOUD d11856d3f0 refactor(pigx-common-core): 重命名异步任务执行器方法
- 将 applicationTaskExecutor 方法重命名为 applicationAsyncTaskExecutor
- 更新 AsyncSupportConfigurer 配置以使用新的方法名
- 保持线程池配置参数不变
2026-03-08 15:03:27 +08:00
PIGCLOUD 11b6faf6f8 feat(WebCommonConfiguration): 更新异步任务执行器配置,支持Flowable异步任务 2026-03-08 15:03:08 +08:00
PIGCLOUD 84041ed7ce feat(pigx-flow-api): 新增流程状态事件注册与校验功能
- 在FlowStatusEventPublisher中添加流程ID注册和校验方法,使用Redis Set存储已注册的flowId
- 更新FlowStatusEventAutoConfiguration,在启动时自动注册所有本地flowId到Redis
- 重构ProcessServiceImpl中的validateFlowId方法,改为通过Redis查询flowId注册状态
- 优化BpmOaLeaveServiceImpl中的流程参数设置逻辑,使用Dict构建root用户信息
2026-03-08 15:02:49 +08:00
PIGCLOUD 618f3ff1d5 feat(pigx-common-core): 优化WebCommonConfiguration配置类
- 添加@ConditionalOnWebApplication条件注解确保仅在Servlet环境下生效
- 重命名applicationTaskExecutor方法为applicationAsyncTaskExecutor以明确异步执行器用途
- 移除priorityHeaderInitBinder方法上的重复条件注解
- 更新configureAsyncSupport方法使用新的执行器名称
2026-03-08 15:02:45 +08:00
PIGCLOUD 2754607924 feat(pigx-flow-api): 新增流程状态事件发布订阅机制
- 新增 FlowStatusEventPublisher 用于发布流程状态变更事件到 Redis Channel
- 新增 FlowStatusEventListener 用于监听 Redis 消息并分发给匹配的事件服务
- 新增 IProcessInstanceStatusEventService 接口定义流程状态事件处理规范
- 新增 FlowStatusEventAutoConfiguration 自动配置类,实现事件发布者和监听器的 Bean 注册
- 重构 NodeTaskCompleteNotify 服务,使用事件发布机制替代直接调用事件服务
- 将 IProcessInstanceStatusEventService 接口移动到 flow-api 模块的 event 包下
- 在 pigx-flow-api 模块添加 spring-boot-starter-data-redis 依赖支持
- 更新相关服务的包引用和日期注释
2026-03-08 15:02:40 +08:00
PIGCLOUD d1858d5844 feat(pigx-flow-biz): 条件表达式新增角色和岗位选择器条件处理功能
- 新增SelectRoleNodeConditionStrategy类,处理角色选择器类型条件表达式
- 新增SelectPostNodeConditionStrategy类,处理岗位选择器类型条件表达式
- 在ExpressionHandler中新增roleCompare和postCompare方法,支持角色和岗位比较逻辑
- 更新SysUserService接口及实现,新增根据岗位ID列表获取用户ID列表功能
- 在SysUserController中新增根据岗位ID列表获取用户ID列表接口
- 更新RemoteUserService Feign客户端,新增岗位查询方法
- 更新相关文件版权信息和日期注释
- 删除无用的IProcessInstanceStatusEventService接口
- 在数据库中新增bpm_oa_leave请假申请表结构
2026-03-08 15:02:15 +08:00
PIGCLOUD b7631ddeaf feat(pigx-common-core): 增强Web配置支持异步任务处理
- 在WebCommonConfiguration中新增异步任务执行器配置
- 实现WebMvcConfigurer接口并配置AsyncSupportConfigurer
- 添加ThreadPoolTaskExecutor支持Spring MVC异步请求处理
- 通过TaskExecutionProperties配置线程池参数
2026-03-08 15:02:11 +08:00
PIGCLOUD e60a28a17e feat(pigx-upms-api): 新增站内消息/公告发送功能
- 新增MessageNoticeDTO用于站内消息/公告数据传输
- 在RemoteMessageService中添加sendNotice接口
- 在SysMessageService及其实现类中新增sendNotice方法
- 在SysMessageController中新增sendNotice接口并添加权限控制
- 完善消息保存逻辑,支持站内消息/公告的发送
2026-03-08 15:02:04 +08:00
PIGCLOUD 7015e4704c feat(pigx-boot): 在 Dockerfile 中添加中文字体支持
- 安装 wqy-microhei-fonts 以解决词云中文显示问题
- 清理 yum 缓存以优化镜像大小
2026-03-08 15:01:46 +08:00
PIGCLOUD 4868f0d213 fix(pigx-upms-biz): 修复租户用户移除时的租户切换问题
- 在removeTenantUser方法添加@Transactional注解确保事务性
- 增加用户当前租户检查逻辑
- 当用户当前租户是被移除租户时自动切换到其他可用租户
- 更新用户租户信息后清除用户缓存
2026-03-08 15:01:27 +08:00
PIGCLOUD a44319f898 feat(pigx-knowledge): 移除知识库路由配置
- 从 sys_route_conf 表中删除知识库模块的路由配置记录
2026-03-08 15:01:23 +08:00
PIGCLOUD 0187d93912 fix: 更新 spring-boot 版本至 3.5.10,修正 spring-boot-admin 版本至 3.5.7 2026-03-08 15:01:04 +08:00
PIGCLOUD c19c0f1ed4 feat(pigx-mp-platform): 重构 WxMpInitConfigRunner 类,添加详细文档注释
- 优化消息路由规则配置,支持多种微信事件处理
- 增加 Redis 监听机制,支持运行时动态重新加载配置
- 完善多租户支持,缓存 appid 与租户的映射关系
2026-03-08 15:00:56 +08:00
akhan 7e78541763 🐞 fix: 修复当不同租户appid重复时导致的mpservice初始化失败 2026-03-08 14:59:00 +08:00
PIGCLOUD 4d9093c851 fix(pigx-common-bom): 更新依赖版本
- 将 flowable.version 从 7.0.0 升级到 7.2.0
2026-03-08 14:58:55 +08:00
PIGCLOUD f312f1b229 fix(pigx-common-core): #7229 登录时调用 getUserInfo 获取用户权限,但此时租户上下文还没设置(或设置为默认租户 1),导致 findMenuByRoleId 查询的是错误租户的菜单数据。 @786556226 2026-03-08 14:58:51 +08:00
PIGCLOUD 70334d3c11 fix(pigx-common-bom): 更新MyBatis-Plus版本至3.5.16
- 将mybatis-plus.version从3.5.15升级到3.5.16
2026-03-08 14:58:45 +08:00
PIGCLOUD 23287b77ea fix(pigx-common-security): 添加token过期错误提示
- 在messages_en.properties中添加OAuth2ResourceOwnerBaseAuthenticationProvider.tokenExpired错误消息
2026-03-08 14:58:21 +08:00
PIGCLOUDandClaude Opus 4.5 d2f49723d6 feat(upms): 重构连接器导入功能,支持钉钉和企业微信Excel导入
- 优化钉钉部门同步逻辑,提取常量到 ConnectConstants
- 新增企业微信部门及用户Excel导入功能
- 实现钉钉部门和用户Excel导入功能
- 移除API同步功能,统一使用导入方式

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 14:58:10 +08:00
PIGCLOUD 31ad1fbeb8 fix(pigx-common-security): 修复用户密码修改时间处理逻辑
- 修改 PigxUserDetailsService 中密码修改时间的处理逻辑
- 当 passwordModifyTime 为 null 时使用 createTime 作为替代值
2026-03-08 14:57:45 +08:00
PIGCLOUD 27898142ac fix(pigx-common-datasource): 修正动态数据源查询中的 del_flag 参数值
- 将 JdbcDynamicDataSourceProvider 中的 del_flag 参数从 YES 改为 NO
- 确保查询未删除的数据源记录
2026-03-08 14:57:02 +08:00
PIGCLOUD bf2ed2f9f7 fix: 修复 sys_dict_item 表数据中新增的 NULL 字段
- 在 sys_dict_item 表的 INSERT 语句中新增了 NULL 字段
- 修改了 0pigxx_boot.sql、2pigxx.sql 和 9pigxx_ai.sql 三个数据库脚本文件
2026-03-08 14:56:37 +08:00
PIGCLOUD fefbc25f45 feat(pigx-upms-api): 为 SysDictItem 添加 listClass 字段用于标签类型
- 在 SysDictItem 实体类中新增 listClass 字段用于标签类型
- 更新数据库表结构,在 sys_dict_item 表中添加 list_class 列
2026-03-08 14:56:12 +08:00
PIGCLOUD 6fc0a3de36 feat(pigx-upms-biz): 增强区域树查询功能
- 在 SysAreaServiceImpl 中添加 areaType 过滤条件
- 重构查询条件构建逻辑,使用 LambdaQueryWrapper
- 保持原有 areaStatus 和 areaSort 排序条件
2026-03-08 14:56:08 +08:00
PIGCLOUD 2acdceac2a feat(i18n): set default locale to China for message sources 2026-03-08 14:56:04 +08:00
PIGCLOUD b59765f927 fix(ai-register-user): 跳过外部 AI 注册短信验证
- 添加 SecurityConstants 导入
- 使用 WebUtils 获取 请求头
- 当 header 为 FROM_IN 时跳过 短信验证
- 保持内部注册验证逻辑
2026-03-08 14:55:44 +08:00
PIGCLOUD 79dd2471ad docs: 添加 aiflow 分支非 AI 代码合并设计方案和实施计划 2026-03-08 14:53:45 +08:00
PIGCLOUD f56a63beba refactor(pigx-common-data): 重构数据权限拦截器实现,使用 JSqlParser 直接操作 AST 修改 WHERE 条件,避免子查询包装导致索引失效
- 支持复杂 SQL 解析失败时自动回退到子查询包装方案
- 优化表引用处理逻辑,优先使用别名限定列名
- 增加 SQL 注入防护,对字符串值进行转义处理
- 重构条件构建逻辑,支持 AND/OR 逻辑组合
- 完善日志记录和异常处理机制
2026-03-08 13:59:39 +08:00
202312111133 173bc6853d 更新 'pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeInnerInterceptor.java'
这样修改之后sql会走索引,数据量大的时候不至于查询超时
2026-03-05 16:17:32 +08:00
PIGCLOUD b9268e4393 Merge branch 'dev' 2026-01-03 23:06:51 +08:00
PIGCLOUD c36ef5fdf5 refactor(copyright): 更新版权年份至 2026
- 统一更新所有源文件、LICENSE、pom.xml 等的版权年份至 2026
2026-01-03 22:55:26 +08:00
PIGCLOUD 25e16f5dd6 feat(upms): 优化密码验证逻辑,返回布尔值以指示验证结果 2026-01-03 11:30:51 +08:00
PIGCLOUD 7bdf9e1d8c feat(upms): 增强租户管理功能并优化用户租户信息处理
- 在UserInfo DTO中新增tenantName字段用于返回租户名称
- 重构SysTenantService.getOrUpdateTenant方法返回完整租户对象
- 更新用户登录逻辑以包含租户名称信息
- 修改默认租户名称为PIGX ADMIN
- 优化租户切换逻辑确保缓存一致性
2025-12-30 21:42:42 +08:00
PIGCLOUD 36620c05ad feat(upms): 移除DingTalk SDK中冲突的mail依赖
- 在pom.xml中为alibaba-dingtalk-service-sdk添加exclusions配置
- 排除javax.mail依赖以避免与其他模块的版本冲突
2025-12-30 21:41:49 +08:00
PIGCLOUD 85a1d609e3 feat(tenant): 添加租户上下文过滤器的描述和执行顺序 2025-12-30 14:49:47 +08:00
PIGCLOUD 13d17923e4 feat(upms): 增强短信验证码注册功能和安全机制
- 在RegisterUserDTO中新增短信验证码字段
- 用户注册时增加短信验证码校验逻辑
- 合并短信验证码发送接口为单一API
- 增加IP频率限制防止短信轰炸攻击
- 优化验证码校验失败的错误返回类型
2025-12-30 10:46:02 +08:00
PIGCLOUD e959811fa2 feat(codegen): 支持动态数据源切换功能
- 在GenTableController的export方法中添加DynamicDataSourceContextHolder支持
- 实现根据table参数动态切换数据源功能
2025-12-29 14:53:41 +08:00
PIGCLOUD 5a324b75c9 refactor(build): 移除多个模块中spring-boot-maven-plugin的CLASSIC配置
- 统一清理pigx-flow/pigx-app-server等模块的冗余loaderImplementation配置
- 简化各模块pom.xml中的spring-boot-maven-plugin配置项
2025-12-28 16:38:52 +08:00
PIGCLOUD 6743d8d7ab feat(version): 升级项目版本至5.11.0
- 更新所有模块的pom.xml中version字段
- 同步更新CLAUDE.md文档中的版本信息
2025-12-28 16:33:51 +08:00
PIGCLOUD bfd64bbd47 feat(pay): 升级yungouos-pay-sdk版本并优化依赖配置
- 将yungouos-pay-sdk版本从2.0.37升级至2.0.39
- 排除hutool-all依赖以避免与系统已有依赖冲突
- 在YungouosMergePayOrderHandler中新增pay参数配置
2025-12-28 11:28:02 +08:00
PIGCLOUD 77ebb4fe37 fix(pom): update spring-boot and dynamic-ds versions 2025-12-28 11:27:57 +08:00
PIGCLOUD aaab895655 fix(pom): 更新spring-cloud版本至2025.0.1 2025-12-28 11:27:21 +08:00
PIGCLOUD f30b32a28a feat(upms): 重构国际化消息和错误码模块化架构
- 移除全局ErrorCodes接口,按模块拆分Auth/Upms/App错误码定义
- 新增模块化i18n消息文件,支持多JAR包扫描加载机制
- 重构MsgUtils支持LocaleContextHolder动态区域解析
- 统一OAuthClientException异常处理支持错误码和描述参数
- 优化企业微信/钉钉同步错误消息国际化支持
2025-12-28 11:27:03 +08:00
PIGCLOUD 7911761653 refactor(RemoteUserService): 优化方法参数注解格式以提高可读性 2025-12-28 11:26:23 +08:00
PIGCLOUD 825b9a147b feat(data-permission): 新增数据权限逻辑组合模式支持
- 新增DataScopeLogicEnum枚举类定义AND/OR逻辑组合模式
- 在DataScope类中添加logicMode字段控制权限组合方式
- 修改DataScopeInnerInterceptor支持动态组合权限条件
- 默认保持OR逻辑以向后兼容现有功能
2025-12-28 11:25:42 +08:00
PIGCLOUD 16a7f9309f feat(flow): 新增驳回到发起人功能
- 在ModelUtil重构开始节点结构,添加root UserTask节点
- 新增RootTaskCreateListener处理驳回到发起人场景
- 新增RootTaskHandler解析发起人执行人
- 在ApproveServiceTask添加TO_START驳回处理逻辑
- 新增ProcessInstanceRecordVo包含驳回状态信息
- 在TaskService添加resubmitTask接口处理重新提交
- 在ProcessTaskController添加resubmitTask接口
2025-12-28 11:25:38 +08:00
PIGCLOUD 0ad5864476 feat(process): 新增流程ID有效性验证功能
- 在IProcessService接口添加validateFlowId方法声明
- 在ProcessServiceImpl实现流程ID验证逻辑
- 在ProcessController添加validateFlowId接口供前端调用
- 支持检查流程ID是否在IProcessInstanceStatusEventService实现类中注册
2025-12-28 11:25:36 +08:00
PIGCLOUD d6c1a0aad1 feat(task): completeTask时同步更新主表单数据
- 扩展queryTask接口支持选择主表单数据源
-
- 优化已完成任务的数据获取逻辑
- 保持原有节点快照数据作为备选方案
2025-12-28 11:25:33 +08:00
PIGCLOUD ab97082cd8 feat(menu): 优化removeMenuById方法实现递归删除子菜单 2025-12-28 11:25:26 +08:00
PIGCLOUD 65297a5574 feat(deps): 升级mybatis-plus至3.5.15版本 、升级hutool至5.8.42版本 2025-12-28 11:23:21 +08:00
PIGCLOUD 2716c65170 feat(oss): 优化OssTemplate 在afterPropertiesSet方法中禁用AWS v1弃用公告
- 统一调整代码缩进为4个空格提升可读性
-
- 保持原有功能逻辑不变
2025-12-28 11:21:56 +08:00
PIGCLOUD 87d1162c45 feat(build): 升级Spring Boot版本至3.5.8
- 更新pom.xml中的spring-boot.version属性至3.5.8版本
- 保持其他依赖版本不变
2025-12-28 11:21:41 +08:00
PIGCLOUD 4adc7b00de feat(auth): 重构FormIdentityLoginConfigurer的handler依赖结构
- 将SsoLogoutSuccessHandler移动到common-security模块中统一管理
- 使用TenantSavedRequestAwareAuthenticationSuccessHandler替代原有success handler
- 保持FormAuthenticationFailureHandler作为默认failure handler
2025-12-28 11:21:24 +08:00
PIGCLOUD f181712cf2 feat(pay): 增强支付回调接口的XSS防护功能
- 在aliCallbak和mergeCallbak接口中添加Content-Type和X-Content-Type-Options安全头
- 在mergeBuy接口中设置安全响应头防止XSS攻击
- 统一使用MediaType.TEXT_PLAIN作为响应内容类型
2025-12-28 11:21:20 +08:00
PIGCLOUD e1ac291a1e feat(auth): 增强XSS防护功能
- 在confirm.ftl模板中对principalName等变量添加?html转义
- 在login.ftl模板中对tenant.id和error变量添加防护处理
- 移除冗余的SsoLogoutSuccessHandler实现类
- 在PigxTokenEndpoint中添加XSS防护注释说明
2025-12-28 11:21:18 +08:00
PIGCLOUD 1268e9d604 refactor(pigx-common-sentinel): 添加hutool-extra依赖
- 新增hutool-extra工具库依赖以增强sentinel模块功能
2025-12-28 11:21:08 +08:00
PIGCLOUD 437970b926 feat(SentinelParser): 更新请求来源解析逻辑,基于客户端 IP 地址 2025-12-28 11:21:08 +08:00
pig666 5ce0abdcd6 Merge branch 'dev' of 202504296/pigx into dev 2025-11-18 16:58:17 +08:00
kukinghan 71a6f5c2d7 fix(sql): 修正参数查看菜单的操作标识为'sys_syspublicparam_view' 2025-11-18 16:23:50 +08:00
PIGCLOUD efd195ae37 feat(RemoteDataScopeService): 修改getRoleList参数类型为List<String>以支持字符串类型roleId
- 将getRoleList方法的roleIdList参数类型从List<Long>改为List<String>
- 保持getDescendantList方法的deptId参数类型仍为Long不变
2025-11-18 09:54:56 +08:00
PIGCLOUD 0b939f3d57 feat(gen-table): 批量代码生成支持复用单表的配置信息 2025-11-18 09:39:57 +08:00
PIGCLOUD 5123e3f116 feat(security): 新增单体一键 CORS跨域配置支持 security.cors.enabled
- 新增PigxBootCorsProperties配置类用于管理CORS跨域参数
- 在AuthorizationServer和ResourceServer中集成CORS配置逻辑
- 支持通过security.cors.enabled开关控制跨域功能
- 提供allowedOriginPatterns等细粒度跨域参数配置
2025-11-18 09:39:53 +08:00
PIGCLOUD 470f5e7fdb feat(db): 在sys_user表新增dept_id字段
- 添加主部门ID字段用于关联用户与部门关系
- 更新admin用户的初始化数据包含dept_id值
2025-11-18 09:39:46 +08:00
PIGCLOUD c88762a433 fix(SysUserDept): 修正用户ID和部门ID的Schema描述为正确的格式 2025-11-18 09:39:40 +08:00
PIGCLOUD 6d837c6f1c fix(ImageCodeEndpoint): 修改验证码类型为动态参数,支持多种验证码类型
fix(ValidateCodeFilter): 更新验证码校验逻辑,支持滑块和点击文字验证码
2025-11-18 09:39:37 +08:00
PIGCLOUD 1a8d0c0898 fix(SysDeptMapper): 移除查询结果的排序条件 2025-11-18 09:39:21 +08:00
PIGCLOUD c0112af189 fix(nacos): 更新nacos版本为3.1.0-bugfix以修复已知问题
(cherry picked from commit 99daf9db95)
2025-11-18 09:39:16 +08:00
PIGCLOUD 6de57dfab1 fix(upms): 修复用户登录失败次数缓存清理问题
- 在用户登录成功时清理对应的登录失败次数缓存
- 使用RedisUtils删除格式化的缓存key
- 防止因缓存残留导致用户被错误锁定
2025-11-18 09:39:05 +08:00
PIGCLOUD a25963323b feat(security): 增强OAuth2 token验证的用户状态检查
- 在PigxCustomOpaqueTokenIntrospector中增加用户账号状态检查逻辑
- 当用户账号被锁定或过期时拒绝访问并抛出InvalidBearerTokenException
- 完善账号异常状态的日志记录和错误处理机制
- 保持原有客户端信息注入功能不变
2025-11-18 09:38:55 +08:00
PIGCLOUD 15f28dcd35 feat(personal): 修改手机号,新增短信验证码校验功能
- 在UserDTO中增加验证码字段用于手机号修改校验
- 修改用户信息时增加短信验证码校验逻辑
- 新增验证码错误提示信息到i18n配置
- 扩展SysMessageService支持区分已注册/未注册手机号验证
2025-11-18 09:38:38 +08:00
PIGCLOUD 45146adec1 refactor(dependencies): 升级log4j2版本至2.25.2
- 更新log4j2依赖版本以修复潜在安全漏洞
- 保持与其他依赖版本的兼容性
2025-11-18 09:38:33 +08:00
PIGCLOUD 646859625b refactor(ConnectServiceImpl): 优化第三方API集成代码结构
- 提取DingTalk/WeChat API字段名为常量
- 统一语言代码为常量LANGUAGE_ZH_CN
- 优化JSON字段访问方式避免硬编码
- 重构企业微信配置获取逻辑
- 增强代码可读性与维护性
2025-11-18 09:38:28 +08:00
PIGCLOUD b7c4132765 feat(security): 优化Feign token传递逻辑
- 重构PigxOAuthRequestInterceptor的token获取流程
- 优先从Web请求中解析token,失败后从NonWebTokenContextHolder获取
- 增加Objects.nonNull检查确保request不为空
- 优化token传递逻辑,支持消息队列等非Web场景
2025-11-18 09:38:04 +08:00
PIGCLOUD 74110199e2 fix(login): 增加登录参数空值校验
- 在OscChinaLoginHandler中增加identify空值校验
- 在WeChatCPLoginHandler中增加userid空值校验
- 在CasLoginHandler中增加username空值校验
- 在MiniAppLoginHandler中增加openId空值校验
- 在SmsLoginHandler中增加identify空值校验
- 在GiteeLoginHandler中增加identify空值校验
- 在WeChatLoginHandler中增加openId空值校验
- 在DingTalkLoginHandler中增加openId空值校验
2025-11-18 09:37:57 +08:00
PIGCLOUD 6117c47d7c feat(user): 支持用户多部门关联及主部门切换功能
- 在SysUser实体类中新增deptId字段标识主部门
- 扩展UserDTO支持多部门ID列表传递
- 重构用户部门关联逻辑,支持设置主部门
- 新增获取用户部门列表和切换主部门接口
- 优化部门查询SQL确保主部门排序优先
- 调整用户详情查询逻辑适配多部门场景
2025-11-18 09:37:43 +08:00
PIGCLOUD 99daf9db95 fix(nacos): 更新nacos版本为3.1.0-bugfix以修复已知问题 2025-11-07 15:37:03 +08:00
PIGCLOUD 16dcbef197 feat(pom): 移除不再使用的pigx-common-milvus、pigx-common-mcp和pigx-common-neo4j依赖 2025-10-29 22:22:13 +08:00
PIGCLOUD dc3ad69a38 reset(build): 添加release参数支持JDK新特性编译,避免非Java25
- 在maven-compiler-plugin配置中新增release参数
- 移除过时的annotationProcessorPaths配置
- 保持与source参数一致的JDK版本兼容性
2025-10-28 16:45:00 +08:00
claudecode 92d9b403c0 feat(flowable): 升级Flowable版本至7.2.0并合并flow模块
- 将Flowable依赖版本从7.0.0升级至7.2.0
- 合并pigx-flow-engine-biz和pigx-flow-task-biz模块为pigx-flow-biz
- 简化pom.xml依赖配置结构
2025-10-26 22:37:03 +08:00
claudecode f4508ac412 feat(flowable): 升级Flowable版本至7.2.0并重构数据库工具类
- 将Flowable依赖版本从7.0.0升级至7.2.0
- 提取AbstractEngineConfiguration中的数据库类型映射逻辑到独立工具类DbUtil
- 新增DbUtil工具类封装数据库类型检测和映射功能
- 删除过时的AbstractEngineConfiguration实现类
2025-10-26 22:36:48 +08:00
claudecode 1bb0af7b52 feat(quartz): 新增Job安全验证机制
- 新增JobSecurityValidator类用于防止RCE漏洞
- 在SysJobServiceImpl中集成安全验证逻辑
- 为JavaClassTaskInvok和SpringBeanTaskInvok添加安全验证
- 在quartz-config.yml中新增安全验证开关配置
2025-10-26 21:32:32 +08:00
claudecode 99d295bfa8 feat(sys-token): 增强token管理功能并修复权限控制
- 为分页查询接口添加sys_token_del权限注解
- 修复删除接口的token参数命名不一致问题
- 统一代码缩进格式为4个空格
2025-10-26 21:32:24 +08:00
claudecode 6f9d41b624 feat(flow): 增加流程节点进行中状态展示功能
- 在ProcessInstanceServiceImpl中新增continueNodeSet处理逻辑
- 扩展NodeFormatUtil以支持JXZ状态节点展示
- 优化流程可视化展示效果,区分已完成和进行中节点
2025-10-26 21:32:12 +08:00
claudecode 14cdf670f2 feat(sys-token): 升级nacos版本至3.1.0
- 更新pigx-register模块的nacos依赖版本
- 保持注册配置中心功能与最新稳定版本兼容
2025-10-26 21:32:07 +08:00
徐晓伟 d67bee5476 🔧 支持 JDK 25 编译
(cherry picked from commit 9cea4f20c3)
2025-10-26 21:31:58 +08:00
claudecode 0674403268 feat(deps): 升级Nacos客户端版本以修复兼容性问题
- 添加nacos-client.version属性并设置为3.1.0
- 引入com.alibaba.nacos:nacos-client依赖项
- 解决Nacos相关issue ID2OA3的兼容性问题
2025-10-21 11:27:14 +08:00
claudecode 103f5e72b0 chore(dependencies): 更新依赖库版本
- 升级hutool工具库版本至5.8.41
- 更新spring-cloud-alibaba版本至2025.0.0.0

# Conflicts:
#	pigx-common/pigx-common-bom/pom.xml
2025-10-20 10:27:16 +08:00
claudecode dacdb83989 feat(quartz): 增强多租户定时任务处理逻辑
- 在getJobKey和getTriggerKey方法中增加TenantContextHolder的租户ID兜底逻辑
- 当SysJob中tenantId为空时自动使用当前线程上下文租户ID
- 优化方法注释使其更符合JavaDoc规范
2025-10-20 10:25:38 +08:00
claudecode d16d8bc18a feat(flow): 扩展流程发起人权限验证支持岗位类型
- 在NodeUserTypeEnum中新增POST类型以支持岗位权限验证
- 修改CombinationGroupServiceImpl中的权限验证逻辑,增加对岗位权限的检查
- 调整PigxUser结构以支持多部门、多角色、多岗位的存储
- 更新AssignUserLeaderStrategyImpl以适配用户的多部门信息
- 在SysDeptServiceImpl的getOrgTree方法中增加对岗位类型的支持
- 优化UserVO中集合属性的初始化以避免空指针异常
2025-10-17 15:42:09 +08:00
冷冷 7710baa92a feat(flow): 扩展流程发起人权限验证支持岗位类型
- 在NodeUserTypeEnum中新增POST类型以支持岗位权限验证
- 修改CombinationGroupServiceImpl中的权限验证逻辑,增加对岗位权限的检查
- 调整PigxUser结构以支持多部门、多角色、多岗位的存储
- 更新AssignUserLeaderStrategyImpl以适配用户的多部门信息
- 在SysDeptServiceImpl的getOrgTree方法中增加对岗位类型的支持
- 优化UserVO中集合属性的初始化以避免空指针异常
2025-10-17 14:55:50 +08:00
claudecode 883293cc2a feat(flow): FlowableUtils添加getFlowParamMap方法统一处理流程发起人参数
- BpmOaLeaveEntity继承BizFlowBaseDto以复用流程基础字段
- 新增BizFlowBaseDto作为流程基础数据传输对象
-
- 优化BpmOaLeaveServiceImpl流程启动逻辑,使用工具类简化代码
2025-10-17 08:56:09 +08:00
pigcloud ed6138b566 refactor(dependencies): 升级项目版本至5.10.0
- 统一更新所有模块的parent版本号
- 标准化pom.xml文件格式和缩进
- 保持依赖配置和模块结构的一致性
2025-10-10 12:53:02 +08:00
pigcloud 4b8775153b refactor(dependencies): 升级项目依赖版本
- 升级 Spring Boot 版本至 3.5.6
- 升级 Spring Boot Admin 版本至 3.5.5
- 升级 MyBatis Plus 相关依赖版本
- 升级 Hutool 工具库版本至 5.8.40
2025-10-10 12:50:39 +08:00
pigcloud f53e542100 ref(flow-biz) 合并 flow-task 、flow-engine 模块 2025-10-10 09:43:40 +08:00
PIGAI 38916dda25 feat(security): 新增单体架构下内部请求头安全过滤机制
- 添加PigxInnerHeaderRemoveFilter类用于防止前端伪造inner header
- 实现基于IP地址和FROM请求头的访问控制逻辑
- 在AutoConfiguration中注册过滤器配置
- 添加hutool-extra依赖支持IP地址工具类
2025-10-09 14:52:27 +08:00
冷冷 d8ddacd143 feat(register): 增加数据库连接池配置参数
- 添加connectionTimeout与validationTimeout配置项
- 提升数据库连接稳定性和超时控制能力
2025-10-09 14:52:19 +08:00
冷冷 e3f4200a39 feat(role-menu): add new role menu entry for ID 1105 2025-10-09 14:51:58 +08:00
冷冷 9ee99d4063 style(common-oss): 统一代码格式并优化路径分隔符处理
- 将代码缩进统一调整为4个空格
- 将硬编码路径分隔符替换为FileUtil.FILE_SEPARATOR
- 优化AmazonS3Client构建器的代码格式
- 移除冗余注释和空行
2025-10-09 14:51:42 +08:00
冷冷 b329b5c501 feat(pay): 优化微信支付URL构建逻辑
- 重构redirectUri构建方式,调整参数顺序提高可读性
- 简化URL拼接逻辑,移除不必要的条件判断
- 保持原有功能不变的情况下改进代码结构
2025-10-09 14:51:39 +08:00
冷冷 8c924da2dc feat(pay): 更新微信支付回调URL和重定向URI以支持微服务架构
- 修改WeChatMpPayOrderHandler中notify_url路径逻辑适配微服务环境
- 调整PayGoodsOrderController中redirect_uri构造方式支持微服务路由
- 使用WebUtils.isMicro()动态判断当前运行环境
- 统一支付模块在微服务和单体架构下的URL路径格式
2025-10-09 14:51:29 +08:00
PIG AI 02e60b3968 feat(security): 为关键接口添加权限控制注解
- 在SysPublicParamController等Controller的分页查询方法添加@HasPermission注解
- 新增sys_user_view等权限菜单项到数据库
- 更新角色菜单关联表以包含新增权限
- 修复渗透测试发现的权限控制缺失问题
2025-10-09 14:51:09 +08:00
PIG AI c6c76b3cbd feat(fix): 移除创建用户时自动关联租户的逻辑 #6864 5.9版本,通过excel表批量导入用户,前端提示“上传失败,数据格式不合法!”,刷新后发现只有1条导入。 2025-10-09 14:50:42 +08:00
lengleng 9c237c9921 feat(flow): 支持业务表单,提供业务表单示例 2025-10-09 14:50:28 +08:00
lengleng cd1854e498 feat(flow): 支持业务表单,提供业务表单示例 2025-10-09 14:50:27 +08:00
lengleng 0d5326ff77 fix(sys): 修复通讯录菜单路径错误
- 修正sys_menu表中通讯录菜单的路径为/biz/app/appContacts/index
- 同步更新0pigxx_boot.sql和2pigxx.sql中的相关记录
2025-10-09 14:49:53 +08:00
lengleng 0eaa4b6d11 feat(flow): 新增表达式分配用户策略支持
- 在Node DTO中添加assignExpress和assignExpressName字段
- 实现AssignExpressStrategyImpl表达式分配策略类
- 支持通过表达式动态计算任务执行人列表
- 优化NodeFormatUtil中的用户分配逻辑
- 更新ProcessInstanceConstant添加表达式分配类型常量
2025-10-09 14:48:42 +08:00
lengleng 79b27b6d7d feat(auth): 增强认证逻辑,支持密码过期校验及定时攻击保护机制 2025-10-09 14:48:11 +08:00
lengleng 2551ef2606 refactor(RedisUtils): 统一RedisTemplate泛型类型并优化代码格式
- 将所有RedisTemplate声明统一为<String, Object>类型提高类型安全
- 调整代码缩进格式为统一标准
- 移除冗余的Optional.ofNullable包装简化代码逻辑
- 保持原有Redis操作方法功能不变
2025-10-09 14:47:45 +08:00
lengleng a60127323e refactor(sequence): 优化Redis序列号生成器实现
- 使用Lombok的@Getter/@Setter简化stringRedisTemplate和stepStart字段访问
- 移除冗余的空字符串检查方法isEmpty
- 清理未使用的getter/setter方法减少代码量
- 保持原有核心序列号生成逻辑不变
2025-10-09 14:47:41 +08:00
lengleng 70855f8b5b fix(auth): 修复微信登录新用户插入用户表时返回信息报错问题#6809
- 在retrieveUser方法中添加对pigxUser.getTenantId()的非空检查
- 使用Objects.nonNull确保tenantId不为空时才设置TenantContextHolder
2025-08-05 14:54:22 +08:00
1391 changed files with 64399 additions and 40508 deletions

No files matched your search

+66
View File
@@ -0,0 +1,66 @@
version: 2
updates:
- package-ecosystem: maven
directory: /
schedule:
interval: weekly
day: monday
time: "09:00"
timezone: Asia/Shanghai
open-pull-requests-limit: 5
# 默认只自动处理 Maven patch 升级;LangChain4j 小版本升级也交给 Dependabot 自动建 PR。
allow:
- dependency-name: "*"
update-types:
- version-update:semver-patch
- dependency-name: "dev.langchain4j:*"
update-types:
- version-update:semver-minor
ignore:
# 完全忽略 IJPay 的所有升级。
- dependency-name: "com.github.javen205:IJPay-*"
# 完全忽略 MyBatis-Plus BOM 的所有升级。
- dependency-name: "com.baomidou:mybatis-plus-bom"
# 完全忽略 MyBatis-Plus-Join 的所有升级。
- dependency-name: "com.github.yulichang:mybatis-plus-join-*"
# major 升级涉及迁移风险,仍保留人工评估。
- dependency-name: "*"
update-types:
- version-update:semver-major
commit-message:
prefix: chore(deps)
groups:
# LangChain4j 单独分组,避免与普通 Maven patch 升级混在一个 PR。
langchain4j:
patterns:
- "dev.langchain4j:*"
update-types:
- patch
- minor
maven-dependencies:
patterns:
- "*"
exclude-patterns:
- "dev.langchain4j:*"
update-types:
- patch
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
day: monday
time: "09:30"
timezone: Asia/Shanghai
open-pull-requests-limit: 3
ignore:
- dependency-name: "*"
update-types:
- version-update:semver-minor
- version-update:semver-major
commit-message:
prefix: ci(deps)
groups:
github-actions:
patterns:
- "*"
+74
View File
@@ -0,0 +1,74 @@
name: CI
on:
workflow_dispatch:
push:
pull_request:
permissions:
contents: read
jobs:
maven-build:
name: Maven build (Java ${{ matrix.java-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java-version: ['17', '25']
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: ${{ matrix.java-version }}
cache: maven
- name: Add JDK 25 annotation processor profile
if: matrix.java-version == '25'
run: |
python - <<'PY'
from pathlib import Path
pom = Path('pom.xml')
content = pom.read_text()
profile = '''\
<profile>
<id>jdk25-annotation-processor</id>
<activation>
<jdk>[25,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</profile>
'''
marker = ' </profiles>'
if marker not in content:
raise SystemExit('Cannot find root pom.xml profiles section.')
if 'jdk25-annotation-processor' not in content:
content = content.replace(marker, profile + marker, 1)
pom.write_text(content)
PY
- name: Build with Maven
run: mvn -B -ntp clean install
+6 -1
View File
@@ -63,5 +63,10 @@ application-preview.yml
### node ###
node_modules
### claude code ###
.claude
docs
### test
*-aitest*
aitest
.vectorex
+23
View File
@@ -0,0 +1,23 @@
- 提问务必按以下模板,提交详细信息。
- 错误信息多多益善、错误截图多多益善。
---
---
### 环境信息
- pigx版本:
- 是否修改包名:
### 提供详细日志、截图、回显步骤
+63
View File
@@ -0,0 +1,63 @@
# Repository Guidelines
## Project Structure & Module Organization
pigx aggregates Spring Cloud services through the root `pom.xml`. Runtime services sit under dedicated folders:
`pigx-register` (service discovery/Nacos), `pigx-gateway` (edge routing), `pigx-auth` (OAuth2), `pigx-upms` (user &
permission), `pigx-flow` (workflow), `pigx-app-server`, and `pigx-visual` (monitoring plus
schedulers). Shared libraries and DTOs live in `pigx-common`. Sample SQL and Docker build contexts reside in `db/`,
while infra manifests live in `docker-compose.yml`. Every module uses the standard `src/main/java` and `src/test/java`
layout.
## Build, Test, and Development Commands
Focused Maven commands are allowed only for test execution. They must not be used to package, start, or restart
services.
## Testing Guidelines
Use `spring-boot-starter-test` (JUnit 5, AssertJ, Mockito) for unit and slice tests. Name classes `*Tests.java` and
colocate fixtures in `src/test/resources`. Target >70% line coverage on the service layer that guards authentication,
gateway filters, and approval flows. Before opening a PR, run the focused tests required by the change, then perform
the required runtime validation. Do not use `mvn verify` as a build shortcut unless the user explicitly requests it.
## Commit & Pull Request Guidelines
Follow the repo’s `type(scope): summary` history, e.g. `fix(upms): clear login failure cache` or
`feat(ai-voice): add speech transcription`. Each PR must describe the impact area, list affected modules, and reference
internal tickets or issues. Attach curl/Postman snippets or screenshots whenever UI or OpenAPI responses change. Rebase
on `ai-dev`, avoid committing generated artifacts, and call out schema/config updates explicitly.
## Security & Configuration Tips
Never commit environment secrets; rely on `docker-compose.yml` plus `.env` overrides ignored by Git. Keep `db/` seed
data sanitized, and drive end-to-end checks against `pigx-register` (ports 8848/9848) with `pigx-gateway` (9999) so
discovery behavior matches production.
## Behavioral Guidelines
The following four rules apply to all tasks and take precedence over other default behaviors.
### 1. Think Before Coding
- When requirements are ambiguous, ask first — never make silent assumptions
- If a simpler solution exists, say so explicitly rather than quietly picking a direction
- When something is unclear, surface the confusion instead of pushing forward with guesswork
### 2. Prefer Simplicity
- Use the minimum code needed to solve the current problem; add nothing unrequested
- Do not introduce abstractions for one-off code or design for hypothetical future needs
- Ask yourself: would a senior engineer call this over-engineered?
### 3. Surgical Changes
- Only touch what the task requires; do not refactor adjacent code as a side effect
- Do not alter style or structure unrelated to the current task
- Every changed line must trace directly to a stated requirement
### 4. Goal-Driven Execution
- Convert vague instructions into verifiable goals — prefer tests as the success criterion
- "Fix a bug" → write a failing test that reproduces it, then make it pass
- "Add validation" → write tests covering invalid inputs, then make them pass
+1 -1
View File
@@ -1,4 +1,4 @@
Copyright (c) 2018-2025, lengleng All rights reserved.
Copyright (c) 2018-2026, lengleng All rights reserved.
协议和授权
pigX并非一个开源软件,作者保留全部的权利。
+1009 -573
View File
File diff suppressed because it is too large. Load diff
+399 -255
View File
File diff suppressed because it is too large. Load diff
+157 -22
View File
@@ -1,8 +1,28 @@
-- 本文件仅用于初始化,不用于升级已有数据库。
USE pigxx_flow;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
CREATE TABLE `bpm_oa_leave` (
`id` BIGINT NOT NULL COMMENT '主键',
`process_instance_id` VARCHAR(64) DEFAULT NULL COMMENT '流程实例编号',
`username` VARCHAR(255) NOT NULL COMMENT '申请人',
`leave_type` SMALLINT NOT NULL COMMENT '请假类型',
`leave_reason` VARCHAR(255) DEFAULT NULL COMMENT '请假原因',
`start_time` DATETIME(6) NOT NULL COMMENT '开始时间',
`end_time` DATETIME(6) NOT NULL COMMENT '结束时间',
`leave_day` SMALLINT NOT NULL COMMENT '请假天数',
`leave_status` SMALLINT DEFAULT NULL COMMENT '请假结果',
`create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
`create_time` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
`update_time` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '更新时间',
`del_flag` CHAR(1) NOT NULL DEFAULT '0' COMMENT '是否删除',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='请假申请表';
-- ----------------------------
-- Table structure for process
-- ----------------------------
@@ -17,20 +37,22 @@ CREATE TABLE `process` (
`logo` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '图标配置',
`settings` json DEFAULT NULL COMMENT '设置项',
`group_id` bigint NOT NULL COMMENT '分组ID',
`form_config` json NOT NULL COMMENT '表单设置信息',
`form_items` json NOT NULL COMMENT '表单设置内容',
`process` json NOT NULL COMMENT '流程设置内容',
`remark` varchar(125) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
`sort` int NOT NULL,
`is_hidden` tinyint(1) NOT NULL COMMENT '0 正常 1=隐藏',
`is_stop` tinyint(1) NOT NULL COMMENT '0 正常 1=停用 ',
`is_hidden` char(1) NOT NULL COMMENT '0 正常 1=隐藏',
`is_stop` char(1) NOT NULL COMMENT '0 正常 1=停用 ',
`admin_id` bigint DEFAULT NULL COMMENT '流程管理员',
`unique_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '唯一性id',
`admin_list` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理员',
`range_show` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '范围描述显示',
`print_template` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '打印模板',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_form_id` (`flow_id`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE
KEY `process_idx_id` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=182 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流程定义数据';
@@ -41,8 +63,8 @@ DROP TABLE IF EXISTS `process_copy`;
CREATE TABLE `process_copy` (
`id` bigint NOT NULL COMMENT '用户id',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
`start_time` datetime NOT NULL COMMENT ' 流程发起时间',
`node_time` datetime NOT NULL COMMENT '当前节点时间',
`start_user_id` bigint NOT NULL COMMENT '发起人',
@@ -57,7 +79,7 @@ CREATE TABLE `process_copy` (
`user_id` bigint NOT NULL COMMENT '抄送人id',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE
KEY `copy_idx_id` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=74 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流程抄送数据';
@@ -74,7 +96,7 @@ CREATE TABLE `process_group` (
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE
KEY `group_idx_id` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流程分组';
@@ -102,8 +124,8 @@ CREATE TABLE `process_instance_record` (
`parent_process_instance_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上级流程实例id',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE,
KEY `idx_dep_id` (`user_id`) USING BTREE
KEY `record_idx_id` (`id`) USING BTREE,
KEY `record_idx_dep_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=366 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='流程记录';
@@ -114,14 +136,16 @@ DROP TABLE IF EXISTS `process_node_data`;
CREATE TABLE `process_node_data` (
`id` bigint NOT NULL COMMENT '用户id',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
`process_definition_id` varchar(64) DEFAULT NULL COMMENT '引擎流程定义ID,发布版本快照',
`flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程id',
`data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单数据',
`node_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE
UNIQUE KEY `uk_node_definition` (`tenant_id`,`process_definition_id`,`node_id`),
KEY `data_idx_id` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1195 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='流程节点数据';
@@ -132,8 +156,8 @@ DROP TABLE IF EXISTS `process_node_record`;
CREATE TABLE `process_node_record` (
`id` bigint NOT NULL COMMENT '用户id',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
`flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程id',
`process_instance_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程实例id',
`data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '表单数据',
@@ -146,7 +170,7 @@ CREATE TABLE `process_node_record` (
`execution_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行id',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE
KEY `node_idx_id` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1435 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='流程节点记录';
@@ -157,13 +181,13 @@ DROP TABLE IF EXISTS `process_node_record_assign_user`;
CREATE TABLE `process_node_record_assign_user` (
`id` bigint NOT NULL COMMENT '用户id',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
`flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程id',
`process_instance_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程实例id',
`data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '表单数据',
`node_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 用户id',
`user_id` bigint NOT NULL COMMENT ' 用户id',
`status` int NOT NULL COMMENT '节点状态',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
@@ -173,11 +197,55 @@ CREATE TABLE `process_node_record_assign_user` (
`node_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 节点名称',
`task_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务类型',
`local_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '表单本地数据',
`node_record_id` bigint NOT NULL COMMENT '本轮节点执行记录id',
`assignment_origin` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'ORIGINAL' COMMENT '分配来源 ORIGINAL/ADD_SIGN',
`initial_user_id` bigint NOT NULL COMMENT '本份待办最初分配用户id',
`add_sign_record_id` bigint DEFAULT NULL COMMENT '动态加签批次记录id',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE
UNIQUE KEY `uk_node_record_user` (`tenant_id`,`node_record_id`,`user_id`) USING BTREE,
KEY `user_idx_id` (`id`) USING BTREE,
KEY `idx_add_sign_record_id` (`add_sign_record_id`) USING BTREE,
KEY `idx_assign_tenant_instance_del` (`tenant_id`,`process_instance_id`,`del_flag`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=597 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='流程节点记录-执行人';
-- Flowable 列表查询索引:act_* 表由引擎初始化,不在本脚本中创建。
-- 首次启动完成后,在业务库手动执行以下 SQL 一次;已有同名索引时不要重复执行。
-- 待办:按审批人筛选、创建时间排序。
-- ALTER TABLE `act_ru_task`
-- ADD INDEX `idx_task_assignee_create` (`ASSIGNEE_`, `CREATE_TIME_`),
-- ALGORITHM=INPLACE, LOCK=NONE;
-- 已办:按审批人及结束时间查询、统计。
-- ALTER TABLE `act_hi_actinst`
-- ADD INDEX `idx_act_assignee_end` (`ASSIGNEE_`, `END_TIME_`),
-- ALGORITHM=INPLACE, LOCK=NONE;
-- ----------------------------
-- Table structure for process_task_add_sign_record
-- ----------------------------
DROP TABLE IF EXISTS `process_task_add_sign_record`;
CREATE TABLE `process_task_add_sign_record` (
`id` bigint NOT NULL COMMENT '主键id',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
`flow_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程id',
`process_instance_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程实例id',
`node_record_id` bigint NOT NULL COMMENT '本轮节点执行记录id',
`node_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '节点id',
`source_task_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '发起加签的任务id',
`added_by_user_id` bigint NOT NULL COMMENT '加签发起人id',
`reason` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '加签原因',
`target_user_ids` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '本批次目标用户快照',
`participant_user_ids_before` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作前参与人快照',
`participant_user_ids_after` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '操作后参与人快照',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_add_sign_node_record` (`tenant_id`,`node_record_id`) USING BTREE,
KEY `idx_add_sign_process_instance` (`tenant_id`,`process_instance_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='流程动态加签批次记录';
-- ----------------------------
-- Table structure for process_starter
@@ -186,14 +254,81 @@ DROP TABLE IF EXISTS `process_starter`;
CREATE TABLE `process_starter` (
`id` bigint NOT NULL COMMENT '用户id',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
`type_id` bigint NOT NULL COMMENT '用户id或者部门id',
`type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 类型 user dept',
`process_id` bigint NOT NULL COMMENT '流程id',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE
KEY `starter_idx_id` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=217 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流程发起人';
-- ----------------------------
-- Table structure for bmp_oa_leave
-- ----------------------------
DROP TABLE IF EXISTS `bmp_oa_leave`;
CREATE TABLE `bmp_oa_leave` (
`id` bigint NOT NULL COMMENT '请假表单主键',
`username` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '申请人',
`leave_type` int NOT NULL COMMENT '请假类型',
`leave_reason` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请假原因',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime NOT NULL COMMENT '结束时间',
`leave_day` int NOT NULL COMMENT '请假天数',
`leave_status` int DEFAULT NULL COMMENT '请假结果',
`process_instance_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例的编号',
`create_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
`update_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '更新时间',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='请假表单';
-- ----------------------------
-- Table structure for flow_draft
-- ----------------------------
DROP TABLE IF EXISTS `flow_draft`;
CREATE TABLE `flow_draft` (
`id` varchar(36) COLLATE utf8mb4_general_ci NOT NULL COMMENT '草稿ID',
`tenant_id` bigint NOT NULL COMMENT '所属租户ID',
`user_id` bigint NOT NULL COMMENT '草稿所属用户ID',
`kind` varchar(16) COLLATE utf8mb4_general_ci NOT NULL COMMENT '草稿类型:DESIGN 流程设计,APPLICATION 申请',
`flow_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '关联流程ID,未建立流程时为空串',
`title` varchar(200) COLLATE utf8mb4_general_ci NOT NULL COMMENT '草稿标题',
`payload` longtext COLLATE utf8mb4_general_ci NOT NULL COMMENT '草稿内容 JSON,最多 1 MB',
`revision` bigint NOT NULL COMMENT '乐观锁版本号',
`updated_at` timestamp(3) NOT NULL COMMENT '最后保存时间',
PRIMARY KEY (`id`),
KEY `idx_draft_owner` (`tenant_id`,`user_id`,`kind`,`updated_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='个人流程草稿';
-- ----------------------------
-- Table structure for flow_notice
-- ----------------------------
DROP TABLE IF EXISTS `flow_notice`;
CREATE TABLE `flow_notice` (
`id` varchar(36) COLLATE utf8mb4_general_ci NOT NULL COMMENT '通知事件ID',
`tenant_id` bigint NOT NULL COMMENT '所属租户ID',
`user_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '接收人ID,超时提醒到期前为空串',
`event_key` varchar(180) COLLATE utf8mb4_general_ci NOT NULL COMMENT '事件去重键',
`kind` varchar(16) COLLATE utf8mb4_general_ci NOT NULL COMMENT '通知类型:TODO 待办,URGE 催办,OVERDUE 超时提醒',
`title` varchar(200) COLLATE utf8mb4_general_ci NOT NULL COMMENT '通知标题',
`task_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '引擎任务ID',
`instance_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '引擎流程实例ID',
`created_at` timestamp(3) NOT NULL COMMENT '创建时间',
`status` varchar(16) COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'SENT' COMMENT '状态:PENDING 待到期,READY 待投递,SENT 已投递,REMOVING 待撤销,CANCELLED 已取消,DISABLED 已停用',
`scheduled_at` timestamp(3) NULL DEFAULT NULL COMMENT '计划投递或到期时间',
`sent_at` timestamp(3) NULL DEFAULT NULL COMMENT '投递到统一站内信的时间',
`reminder_key` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '超时提醒任务ID,每个任务最多一条',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_notice_event` (`tenant_id`,`user_id`,`event_key`),
UNIQUE KEY `uk_notice_reminder` (`tenant_id`,`reminder_key`),
KEY `idx_notice_owner` (`tenant_id`,`user_id`,`created_at`),
KEY `idx_notice_due` (`status`,`scheduled_at`),
KEY `idx_notice_task` (`tenant_id`,`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流程通知事件';
SET FOREIGN_KEY_CHECKS = 1;
+136 -113
View File
@@ -8,9 +8,9 @@ SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_blob_triggers`;
CREATE TABLE `qrtz_blob_triggers` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`blob_data` blob,
PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT
@@ -27,8 +27,8 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_calendars`;
CREATE TABLE `qrtz_calendars` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`calendar_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`calendar_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`calendar` blob NOT NULL,
PRIMARY KEY (`sched_name`,`calendar_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
@@ -44,11 +44,11 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_cron_triggers`;
CREATE TABLE `qrtz_cron_triggers` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`cron_expression` varchar(200) CHARACTER SET utf8 NOT NULL,
`time_zone_id` varchar(80) CHARACTER SET utf8 DEFAULT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`cron_expression` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`time_zone_id` varchar(80) CHARACTER SET utf8mb4 DEFAULT NULL,
PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
@@ -64,19 +64,19 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_fired_triggers`;
CREATE TABLE `qrtz_fired_triggers` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`entry_id` varchar(95) CHARACTER SET utf8 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`instance_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`entry_id` varchar(95) CHARACTER SET utf8mb4 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`instance_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`fired_time` bigint NOT NULL,
`sched_time` bigint NOT NULL,
`priority` int NOT NULL,
`state` varchar(16) CHARACTER SET utf8 NOT NULL,
`job_name` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
`job_group` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
`is_nonconcurrent` varchar(1) CHARACTER SET utf8 DEFAULT NULL,
`requests_recovery` varchar(1) CHARACTER SET utf8 DEFAULT NULL,
`state` varchar(16) CHARACTER SET utf8mb4 NOT NULL,
`job_name` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL,
`job_group` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL,
`is_nonconcurrent` varchar(1) CHARACTER SET utf8mb4 DEFAULT NULL,
`requests_recovery` varchar(1) CHARACTER SET utf8mb4 DEFAULT NULL,
PRIMARY KEY (`sched_name`,`entry_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
@@ -91,15 +91,15 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_job_details`;
CREATE TABLE `qrtz_job_details` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`job_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`job_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`description` varchar(250) CHARACTER SET utf8 DEFAULT NULL,
`job_class_name` varchar(250) CHARACTER SET utf8 NOT NULL,
`is_durable` varchar(1) CHARACTER SET utf8 NOT NULL,
`is_nonconcurrent` varchar(1) CHARACTER SET utf8 NOT NULL,
`is_update_data` varchar(1) CHARACTER SET utf8 NOT NULL,
`requests_recovery` varchar(1) CHARACTER SET utf8 NOT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`job_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`job_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`description` varchar(250) CHARACTER SET utf8mb4 DEFAULT NULL,
`job_class_name` varchar(250) CHARACTER SET utf8mb4 NOT NULL,
`is_durable` varchar(1) CHARACTER SET utf8mb4 NOT NULL,
`is_nonconcurrent` varchar(1) CHARACTER SET utf8mb4 NOT NULL,
`is_update_data` varchar(1) CHARACTER SET utf8mb4 NOT NULL,
`requests_recovery` varchar(1) CHARACTER SET utf8mb4 NOT NULL,
`job_data` blob,
PRIMARY KEY (`sched_name`,`job_name`,`job_group`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
@@ -115,8 +115,8 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_locks`;
CREATE TABLE `qrtz_locks` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`lock_name` varchar(40) CHARACTER SET utf8 NOT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`lock_name` varchar(40) CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`sched_name`,`lock_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
@@ -131,8 +131,8 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`;
CREATE TABLE `qrtz_paused_trigger_grps` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`sched_name`,`trigger_group`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
@@ -147,8 +147,8 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_scheduler_state`;
CREATE TABLE `qrtz_scheduler_state` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`instance_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`instance_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`last_checkin_time` bigint NOT NULL,
`checkin_interval` bigint NOT NULL,
PRIMARY KEY (`sched_name`,`instance_name`) USING BTREE
@@ -165,9 +165,9 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_simple_triggers`;
CREATE TABLE `qrtz_simple_triggers` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`repeat_count` bigint NOT NULL,
`repeat_interval` bigint NOT NULL,
`times_triggered` bigint NOT NULL,
@@ -186,20 +186,20 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_simprop_triggers`;
CREATE TABLE `qrtz_simprop_triggers` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`str_prop_1` varchar(512) CHARACTER SET utf8 DEFAULT NULL,
`str_prop_2` varchar(512) CHARACTER SET utf8 DEFAULT NULL,
`str_prop_3` varchar(512) CHARACTER SET utf8 DEFAULT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`str_prop_1` varchar(512) CHARACTER SET utf8mb4 DEFAULT NULL,
`str_prop_2` varchar(512) CHARACTER SET utf8mb4 DEFAULT NULL,
`str_prop_3` varchar(512) CHARACTER SET utf8mb4 DEFAULT NULL,
`int_prop_1` int DEFAULT NULL,
`int_prop_2` int DEFAULT NULL,
`long_prop_1` bigint DEFAULT NULL,
`long_prop_2` bigint DEFAULT NULL,
`dec_prop_1` decimal(13,4) DEFAULT NULL,
`dec_prop_2` decimal(13,4) DEFAULT NULL,
`bool_prop_1` varchar(1) CHARACTER SET utf8 DEFAULT NULL,
`bool_prop_2` varchar(1) CHARACTER SET utf8 DEFAULT NULL,
`bool_prop_1` varchar(1) CHARACTER SET utf8mb4 DEFAULT NULL,
`bool_prop_2` varchar(1) CHARACTER SET utf8mb4 DEFAULT NULL,
PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
CONSTRAINT `QRTZ_SIMPROP_TRIGGERS_IBFK_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
@@ -215,20 +215,20 @@ COMMIT;
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_triggers`;
CREATE TABLE `qrtz_triggers` (
`sched_name` varchar(120) CHARACTER SET utf8 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`job_name` varchar(200) CHARACTER SET utf8 NOT NULL,
`job_group` varchar(200) CHARACTER SET utf8 NOT NULL,
`description` varchar(250) CHARACTER SET utf8 DEFAULT NULL,
`sched_name` varchar(120) CHARACTER SET utf8mb4 NOT NULL,
`trigger_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`trigger_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`job_name` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`job_group` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
`description` varchar(250) CHARACTER SET utf8mb4 DEFAULT NULL,
`next_fire_time` bigint DEFAULT NULL,
`prev_fire_time` bigint DEFAULT NULL,
`priority` int DEFAULT NULL,
`trigger_state` varchar(16) CHARACTER SET utf8 NOT NULL,
`trigger_type` varchar(8) CHARACTER SET utf8 NOT NULL,
`trigger_state` varchar(16) CHARACTER SET utf8mb4 NOT NULL,
`trigger_type` varchar(8) CHARACTER SET utf8mb4 NOT NULL,
`start_time` bigint NOT NULL,
`end_time` bigint DEFAULT NULL,
`calendar_name` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
`calendar_name` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL,
`misfire_instr` smallint DEFAULT NULL,
`job_data` blob,
PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
@@ -262,9 +262,9 @@ CREATE TABLE `sys_job` (
`job_status` char(1) CHARACTER SET utf8mb4 DEFAULT '0' COMMENT '状态(1、未发布;2、运行中;3、暂停;4、删除;)',
`job_execute_status` char(1) CHARACTER SET utf8mb4 DEFAULT '0' COMMENT '状态(0正常 1异常)',
`create_by` varchar(64) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`start_time` timestamp NULL DEFAULT NULL COMMENT '初次执行时间',
`previous_time` timestamp NULL DEFAULT NULL COMMENT '上次执行时间',
`next_time` timestamp NULL DEFAULT NULL COMMENT '下次执行时间',
@@ -286,24 +286,47 @@ DROP TABLE IF EXISTS `sys_job_log`;
CREATE TABLE `sys_job_log` (
`job_log_id` bigint NOT NULL COMMENT '任务日志ID',
`job_id` bigint NOT NULL COMMENT '任务id',
`job_name` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '任务名称',
`job_group` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '任务组名',
`job_order` char(1) CHARACTER SET utf8 DEFAULT NULL COMMENT '组内执行顺利,值越大执行优先级越高,最大值9,最小值1',
`job_type` char(1) CHARACTER SET utf8 NOT NULL DEFAULT '1' COMMENT '1、java类;2、spring bean名称;3、rest调用;4、jar调用;9其他',
`execute_path` varchar(500) CHARACTER SET utf8 DEFAULT NULL COMMENT 'job_type=3时,rest调用地址,仅支持post协议;job_type=4时,jar路径;其它值为空',
`class_name` varchar(500) CHARACTER SET utf8 DEFAULT NULL COMMENT 'job_type=1时,类完整路径;job_type=2时,spring bean名称;其它值为空',
`method_name` varchar(500) CHARACTER SET utf8 DEFAULT NULL COMMENT '任务方法',
`method_params_value` varchar(2000) CHARACTER SET utf8 DEFAULT NULL COMMENT '参数值',
`cron_expression` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'cron执行表达式',
`job_message` varchar(500) CHARACTER SET utf8 DEFAULT NULL COMMENT '日志信息',
`job_log_status` char(1) CHARACTER SET utf8 DEFAULT '0' COMMENT '执行状态(0正常 1失败)',
`execute_time` varchar(30) CHARACTER SET utf8 DEFAULT NULL COMMENT '执行时间',
`exception_info` varchar(2000) CHARACTER SET utf8 DEFAULT '' COMMENT '异常信息',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`job_name` varchar(64) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '任务名称',
`job_group` varchar(64) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '任务组名',
`job_order` char(1) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '组内执行顺利,值越大执行优先级越高,最大值9,最小值1',
`job_type` char(1) CHARACTER SET utf8mb4 NOT NULL DEFAULT '1' COMMENT '1、java类;2、spring bean名称;3、rest调用;4、jar调用;9其他',
`execute_path` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT 'job_type=3时,rest调用地址,仅支持post协议;job_type=4时,jar路径;其它值为空',
`class_name` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT 'job_type=1时,类完整路径;job_type=2时,spring bean名称;其它值为空',
`method_name` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '任务方法',
`method_params_value` varchar(2000) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '参数值',
`cron_expression` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT 'cron执行表达式',
`job_message` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '日志信息',
`job_log_status` char(1) CHARACTER SET utf8mb4 DEFAULT '0' COMMENT '执行状态(0正常 1失败)',
`execute_time` varchar(30) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '执行时间',
`exception_info` varchar(2000) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '异常信息',
`scheduled_fire_time` datetime DEFAULT NULL COMMENT '计划触发时间',
`fire_instance_id` varchar(128) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT 'Quartz触发实例ID',
`dedup_status` char(1) CHARACTER SET utf8mb4 DEFAULT '0' COMMENT '去重状态(0正常执行 1同一触发点重复 2任务运行中跳过)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户id',
PRIMARY KEY (`job_log_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='定时任务执行日志表';
CREATE TABLE `xxl_job_group` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
`title` varchar(64) NOT NULL COMMENT '执行器名称',
`address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
`address_list` text COMMENT '执行器地址列表,多地址逗号分隔',
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_registry` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`registry_group` varchar(50) NOT NULL,
`registry_key` varchar(255) NOT NULL,
`registry_value` varchar(255) NOT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`job_group` int(11) NOT NULL COMMENT '执行器主键ID',
@@ -316,8 +339,8 @@ CREATE TABLE `xxl_job_info` (
`schedule_conf` varchar(128) DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型',
`misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '调度过期策略',
`executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
`executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
`executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
`executor_handler` varchar(255) DEFAULT NULL COMMENT '任务handler',
`executor_param` text DEFAULT NULL COMMENT '任务参数',
`executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
`executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
`executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
@@ -332,14 +355,25 @@ CREATE TABLE `xxl_job_info` (
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_logglue` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`job_id` int(11) NOT NULL COMMENT '任务,主键ID',
`glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
`glue_source` mediumtext COMMENT 'GLUE源代码',
`glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
`add_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`job_group` int(11) NOT NULL COMMENT '执行器主键ID',
`job_id` int(11) NOT NULL COMMENT '任务,主键ID',
`executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
`executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
`executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
`executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
`executor_handler` varchar(255) DEFAULT NULL COMMENT '任务handler',
`executor_param` text DEFAULT NULL COMMENT '任务参数',
`executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '任务分片参数,格式如 1/2',
`executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
`trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
`trigger_code` int(11) NOT NULL COMMENT '调度-结果',
@@ -350,7 +384,9 @@ CREATE TABLE `xxl_job_log` (
`alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
PRIMARY KEY (`id`),
KEY `I_trigger_time` (`trigger_time`),
KEY `I_handle_code` (`handle_code`)
KEY `I_handle_code` (`handle_code`),
KEY `I_jobgroup` (`job_group`),
KEY `I_jobid` (`job_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_log_report` (
@@ -364,53 +400,40 @@ CREATE TABLE `xxl_job_log_report` (
UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_logglue` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`job_id` int(11) NOT NULL COMMENT '任务,主键ID',
`glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
`glue_source` mediumtext COMMENT 'GLUE源代码',
`glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
`add_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_registry` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`registry_group` varchar(50) NOT NULL,
`registry_key` varchar(255) NOT NULL,
`registry_value` varchar(255) NOT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_group` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
`title` varchar(12) NOT NULL COMMENT '执行器名称',
`address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
`address_list` text COMMENT '执行器地址列表,多地址逗号分隔',
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
CREATE TABLE `xxl_job_lock` (
`lock_name` varchar(50) NOT NULL COMMENT '锁名称',
PRIMARY KEY (`lock_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL COMMENT '账号',
`password` varchar(50) NOT NULL COMMENT '密码',
`password` varchar(100) NOT NULL COMMENT '密码加密信息',
`token` varchar(100) DEFAULT NULL COMMENT '登录token',
`role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员',
`permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割',
PRIMARY KEY (`id`),
UNIQUE KEY `i_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_lock` (
`lock_name` varchar(50) NOT NULL COMMENT '锁名称',
PRIMARY KEY (`lock_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`, `update_time`)
VALUES (1, 'pigx-daemon-elastic-job', 'PIGX定时任务执行器', 0, NULL, now());
INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock');
INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`,
`schedule_type`, `schedule_conf`, `misfire_strategy`, `executor_route_strategy`,
`executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`,
`executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`,
`child_jobid`)
VALUES (1, 1, '示例任务01', now(), now(), 'XXL', '', 'CRON', '0 0 0 * * ? *',
'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化',
now(), '');
INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`)
VALUES (1, 'admin', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', 1, NULL);
INSERT INTO `xxl_job_lock` (`lock_name`)
VALUES ('schedule_lock');
commit;
SET FOREIGN_KEY_CHECKS = 1;
+10 -10
View File
@@ -73,10 +73,10 @@ DROP TABLE IF EXISTS `wx_account_tag`;
CREATE TABLE `wx_account_tag` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标签名称',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '修改人',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '修改时间',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '修改人',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '修改时间',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '删除标记,0未删除,1已删除',
`tenant_id` bigint(20) NOT NULL COMMENT '租户ID',
`wx_account_id` bigint(20) NOT NULL COMMENT '微信公众号ID',
@@ -113,8 +113,8 @@ CREATE TABLE `wx_auto_reply` (
`rep_thumb_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '缩略图url',
`content` json DEFAULT NULL COMMENT '图文消息的内容',
`app_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '公众号ID',
`remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',
`del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0' COMMENT '逻辑删除标记(0:显示;1:隐藏)',
`remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '逻辑删除标记(0:显示;1:隐藏)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
@@ -159,7 +159,7 @@ CREATE TABLE `wx_msg` (
`id` bigint(20) NOT NULL COMMENT '主键',
`app_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '公众号名称',
`app_logo` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '公众号logo',
`wx_user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '微信用户ID',
`wx_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '微信用户ID',
`nick_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信用户昵称',
`headimg_url` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信用户头像',
`type` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '消息分类(1、用户发给公众号;2、公众号发给用户;)',
@@ -177,11 +177,11 @@ CREATE TABLE `wx_msg` (
`rep_location_x` double DEFAULT NULL COMMENT '地理位置维度',
`rep_location_y` double DEFAULT NULL COMMENT '地理位置经度',
`rep_scale` double DEFAULT NULL COMMENT '地图缩放大小',
`read_flag` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '1' COMMENT '已读标记(1:是;0:否)',
`read_flag` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '1' COMMENT '已读标记(1:是;0:否)',
`app_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '公众号ID',
`open_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信唯一标识',
`remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',
`del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0' COMMENT '逻辑删除标记(0:显示;1:隐藏)',
`remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '逻辑删除标记(0:显示;1:隐藏)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
+91 -16
View File
@@ -32,22 +32,27 @@ CREATE TABLE `config_info` (
-- Records of config_info
-- ----------------------------
BEGIN;
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (1, 'application-dev.yml', 'DEFAULT_GROUP', '# 配置文件加密根密码\njasypt:\n encryptor:\n password: pigx\n algorithm: PBEWithMD5AndDES\n iv-generator-classname: org.jasypt.iv.NoIvGenerator\n\n\nspring:\n data:\n redis:\n host: pigx-redis\n servlet:\n multipart:\n max-file-size: 100MB\n max-request-size: 100MB\n cloud:\n sentinel:\n eager: true\n transport:\n dashboard: pigx-sentinel:5020\n openfeign:\n sentinel:\n enabled: true\n okhttp:\n enabled: true\n httpclient:\n enabled: false\n connection-timeout: 20000\n compression:\n request:\n enabled: true\n response:\n enabled: true\n\n# 端点对外暴露\nmanagement:\n endpoints:\n web:\n exposure:\n include: \'*\' \n endpoint:\n health:\n show-details: ALWAYS\n\n#开启灰度\ngray:\n rule:\n enabled: true\n\n# mybatis-plus 配置\nmybatis-plus:\n tenant-enable: ture\n mapper-locations: classpath:/mapper/*Mapper.xml\n global-config:\n capitalMode: true\n banner: false\n db-config:\n id-type: auto\n where-strategy: not_empty\n insert-strategy: not_empty\n update-strategy: not_null\n type-handlers-package: com.pig4cloud.pigx.common.data.handler\n configuration:\n jdbc-type-for-null: \'null\'\n call-setters-on-nulls: true\n shrink-whitespaces-in-sql: true\nmybatis-plus-join:\n banner: false #关闭连表查询组件banner', '7cce78966662abb8cf108c02322d7e8e', '2025-05-03 21:22:27', '2025-06-24 10:15:00', 'nacos', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (2, 'pigx-auth-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n freemarker:\n allow-request-override: false\n allow-session-override: false\n cache: true\n charset: UTF-8\n check-template-location: true\n content-type: text/html\n enabled: true\n expose-request-attributes: false\n expose-session-attributes: false\n expose-spring-macro-helpers: true\n prefer-file-system-access: true\n suffix: .ftl\n template-loader-path: classpath:/templates/\n\n# 前端登录验证码\nsecurity:\n encodeKey: \'pigxpigxpigxpigx\'\n# 验证码相关配置参考: http://t.cn/A647jEdu\naj:\n captcha:\n cache-type: redis\n water-mark: pig4cloud', 'bb6bd9b9e21afdec3d6c88636387df96', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (3, 'pigx-codegen-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_codegen}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n resources:\n static-locations: classpath:/static/,classpath:/views/\n', 'ed6de06e34e2634c28a24e8a1db99b06', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (4, 'pigx-daemon-elastic-job-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_job}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true', '09996f46e0b80d7b2aa320ef4cb31c82', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '127.0.0.1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (5, 'pigx-gateway-dev.yml', 'DEFAULT_GROUP', '# 固定路由转发配置 无修改\nspring:\n cloud:\n gateway:\n server:\n webflux:\n routes:\n - id: openapi\n uri: lb://pigx-gateway\n predicates:\n - Path=/v3/api-docs/**\n filters:\n - RewritePath=/v3/api-docs/(?<path>.*), /$\\{path}/$\\{path}/v3/api-docs\n\n# gateway 刷新端点\nmanagement:\n endpoint:\n gateway:\n access: unrestricted\n', '97d980236595aac57bd310e2e89d21b4', '2025-05-03 21:22:27', '2025-06-24 10:20:53', 'nacos', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (6, 'pigx-monitor-dev.yml', 'DEFAULT_GROUP', 'spring:\n # 安全配置\n security:\n user:\n name: ENC(rZHA4LW5hHmhLAAzJoFNag==) # pigx\n password: ENC(bjeyh+Aeii3kHXkoo00ZUw==) # pigx\n autoconfigure:\n exclude: com.pig4cloud.pigx.common.core.config.JacksonConfiguration\n boot:\n admin:\n ui:\n title: \'pigx 服务状态监控\'\n brand: \'pigx 服务状态监控\'\n external-views:\n - label: \"SQL监控\"\n url: /druid/sql.html\n order: 2000\n iframe: true\nmanagement:\n endpoints:\n web:\n exposure:\n include: \'*\'\n endpoint:\n health:\n show-details: ALWAYS #显示详细信息\n\n\n# druid 监控的服务\nmonitor:\n applications:\n - pigx-upms-biz\n', '2bb39e4dee3f90d4186d1e42aa666d2a', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '127.0.0.1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (7, 'pigx-upms-biz-dev.yml', 'DEFAULT_GROUP', '## spring security 配置\nsecurity:\n oauth2:\n client:\n ignore-urls:\n - /druid/**\n\n# 数据源\nspring:\n autoconfigure:\n exclude: org.springframework.cloud.gateway.config.GatewayAutoConfiguration,org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n stat-view-servlet:\n enabled: true\n allow: \"\"\n url-pattern: /druid/*\n #login-username: admin\n #login-password: admin\n filter:\n stat:\n enabled: true\n log-slow-sql: true\n slow-sql-millis: 10000\n merge-sql: false\n wall:\n config:\n multi-statement-allow: true\n\n# 本地文件系统\nfile:\n local:\n enable: true\n basePath: /Users/lengleng/Downloads/files', '28f2305c1cfb413dcc45a3d432ef7098', '2025-05-03 21:22:27', '2025-06-05 00:24:09', 'nacos', '0:0:0:0:0:0:0:1', '', 'public', NULL, NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (8, 'pigx-daemon-quartz-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_job}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n resources:\n static-locations: classpath:/static/,classpath:/views/', '79619124a30cdb6e8bc1046aaa18d91c', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (9, 'pigx-pay-platform-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_pay}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n freemarker:\n allow-request-override: false\n allow-session-override: false\n cache: true\n charset: UTF-8\n check-template-location: true\n content-type: text/html\n enabled: true\n expose-request-attributes: false\n expose-session-attributes: false\n expose-spring-macro-helpers: true\n prefer-file-system-access: true\n suffix: .ftl\n template-loader-path: classpath:/templates/\n# 租户表维护\npigx:\n pay:\n test: lengleng\n aliPayConfig:\n expire-time: 30\n return-url: http://pig4cloud.com\n notify-url: http://payx.yunjihuitong.com/pay/notify/ali/callbak\n wxPayConfig:\n notify-url: https://admin.pig4cloud.com/pay/notify/wx/callbak\n mergePayConfig:\n return-url: http://pig4cloud.com\n notify-url: http://wechat.pigx.top/pay/notify/merge/callbak\n xsequence: #发号器相关配置\n db:\n retry-times: 3\n table-name: pay_sequence', 'f4e5734a99f3c1f059071deac081b33d', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (10, 'pigx-mp-platform-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_mp}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n resources:\n static-locations: classpath:/static/,classpath:/views/', 'd5936e0c352fb1fbe1d05f054f14c98a', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (11, 'pigx-xxl-job-admin-dev.yml', 'DEFAULT_GROUP', '# xxl\nxxl:\n job:\n i18n: zh_CN\n logretentiondays: 30\n triggerpool:\n fast.max: 200\n slow.max: 200\n\n# mybatis\nmybatis:\n mapper-locations: classpath:/mybatis-mapper/*Mapper.xml\n\n# spring\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_job}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n mvc:\n static-path-pattern: /static/**\n freemarker:\n suffix: .ftl\n request-context-attribute: request\n settings:\n number_format: 0.##########\n mail:\n host: smtp.mxhichina.com\n port: 465\n from: xxxx@gitee.wang\n username: xxxx@gitee.wang\n password: xxxx\n properties:\n mail:\n smtp:\n auth: true\n ssl.enable: true\n starttls.enable: false\n required: false\n\nmanagement:\n health:\n mail:\n enabled: false\n endpoints:\n web:\n exposure:\n include: \'*\'\n endpoint:\n health:\n show-details: ALWAYS', '6d70dce1f3ee48f261dce29bcfa99cbb', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '127.0.0.1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (12, 'pigx-report-platform-dev.yml', 'DEFAULT_GROUP', 'spring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_report}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n jpa:\n database-platform: org.hibernate.dialect.MySQL8Dialect\n\nsecurity:\n oauth2:\n client:\n ignore-urls:\n - /\n - /api/project/getData\n - /static/**\n - /api/project/get-file/*\n\n# 文件上传路径\ngv:\n img-path: /Users/lengleng/Downloads/img/\n', 'ce3fde4b4592cdd61feb2e443b2ddfe5', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '127.0.0.1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (13, 'pigx-jimu-platform-dev.yml', 'DEFAULT_GROUP', 'spring:\n #配置静态资源\n mvc:\n static-path-pattern: /**\n resource:\n static-locations: classpath:/static/\n #配置数据库\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_bi}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n \n#JimuReport[minidao配置]\nminidao :\n base-package: org.jeecg.modules.jmreport.desreport.dao*\n db-type: mysql\n#JimuReport[上传配置]\njeecg :\n jmreport:\n customPrePath: /api/jimu\n # 自动保存\n autoSave: true\n # 单位毫秒 默认5*60*1000 \n interval: 10000\n # local|minio|alioss\n uploadType: local\n # local\n path :\n #文件路径A\n upload: ~/jimu/data\n # alioss\n oss:\n endpoint: oss-cn-beijing.aliyuncs.com\n accessKey: ??\n secretKey: ??\n staticDomain: ??\n bucketName: ??\n # minio\n minio:\n minio_url: http://minio.jeecg.com\n minio_name: ??\n minio_pass: ??\n bucketName: ??\n#输出sql日志\nlogging:\n level:\n org.jeecg.modules.jmreport : debug', '66319da04963c4c7217f807bf1bd5f2d', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (14, 'pigx-app-server-biz-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_app}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true', 'e4668a1854e92a5a666e83479ef7d26a', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (15, 'pigx-flow-engine-biz-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_flow}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true', '233121e20445609e1ba378c3686ea7d5', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', 'flowable 工作引擎', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (16, 'pigx-flow-task-biz-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_flow}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true', '233121e20445609e1ba378c3686ea7d5', '2025-05-03 21:22:27', '2025-05-03 21:22:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', 'flowable 业务', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`,
`src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`,
`encrypted_data_key`)
VALUES (1, 'application-dev.yml', 'DEFAULT_GROUP',
'# 配置文件加密根密码\njasypt:\n encryptor:\n password: pigx\n algorithm: PBEWithMD5AndDES\n iv-generator-classname: org.jasypt.iv.NoIvGenerator\n\nspring:\n jackson:\n use-jackson2-defaults: true\n data:\n redis:\n host: pigx-redis\n servlet:\n multipart:\n max-file-size: 100MB\n max-request-size: 100MB\n cloud:\n refresh:\n never-refreshable: dataSource\n compatibility-verifier:\n enabled: false\n nacos:\n discovery:\n naming-async-query-subscribe-service: true\n sentinel:\n eager: true\n transport:\n dashboard: pigx-sentinel:5020\n openfeign:\n sentinel:\n enabled: true\n okhttp:\n enabled: true\n httpclient:\n enabled: false\n connection-timeout: 20000\n compression:\n request:\n min-request-size: 5120\n enabled: true\n response:\n enabled: true\n\n# 端点对外暴露\nmanagement:\n endpoints:\n web:\n exposure:\n include: \' *\' \n endpoint:\n restart:\n access: none\n health:\n show-details: ALWAYS\n\n#开启灰度\ngray:\n rule:\n enabled: true\n\n# liteflow配置\nliteflow:\n # 分支超时时间调整为 150 秒\n when-max-wait-time: 150000\n\n# mybatis-plus 配置\nmybatis-plus:\n mapper-locations: classpath:/mapper/*Mapper.xml\n global-config:\n capitalMode: true\n banner: false\n db-config:\n id-type: auto\n where-strategy: not_empty\n insert-strategy: not_empty\n update-strategy: not_null\n sequence:\n worker-id: ${random.int(1,31)}\n datacenter-id: ${random.int(1,31)}\n type-handlers-package: com.pig4cloud.pigx.common.data.handler\n configuration:\n jdbc-type-for-null: \'null\'\n call-setters-on-nulls: true\n shrink-whitespaces-in-sql: true\nmybatis-plus-join:\n banner: false #关闭连表查询组件banner',
'0dc3faa0d9871245282f6b7d4f2249c0', '2022-12-16 10:44:25', '2023-08-14 11:44:19', 'nacos', '127.0.0.1', '',
'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (2, 'pigx-auth-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n freemarker:\n allow-request-override: false\n allow-session-override: false\n cache: true\n charset: UTF-8\n check-template-location: true\n content-type: text/html\n enabled: true\n expose-request-attributes: false\n expose-session-attributes: false\n expose-spring-macro-helpers: true\n prefer-file-system-access: true\n suffix: .ftl\n template-loader-path: classpath:/templates/\n\n# 前端登录验证码\nsecurity:\n encodeKey: \'pigxpigxpigxpigx\'\n# 验证码相关配置参考: http://t.cn/A647jEdu\naj:\n captcha:\n cache-type: redis\n water-mark: pig4cloud', 'bb6bd9b9e21afdec3d6c88636387df96', '2022-12-16 10:44:25', '2024-04-20 22:47:21', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (3, 'pigx-codegen-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_codegen}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n', 'e9ca4622d920568cb5daf08145b63b1e', '2022-12-16 10:44:25', '2024-02-22 15:08:09', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (4, 'pigx-daemon-elastic-job-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_job}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n\n# XXL-Job 配置\nxxl:\n job:\n accessToken: default_token', 'ac1b92ceacc451eac15942131e04c6dd', '2022-12-16 10:44:25', '2023-04-07 14:14:50', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (5, 'pigx-gateway-dev.yml', 'DEFAULT_GROUP', '# 固定路由转发配置 无修改\nspring:\n cloud:\n gateway:\n server:\n webflux:\n routes:\n - id: openapi\n uri: lb://pigx-gateway\n predicates:\n - Path=/v3/api-docs/**\n filters:\n - RewritePath=/v3/api-docs/(?<path>.*), /$\\{path}/$\\{path}/v3/api-docs\n\n# gateway 刷新端点\nmanagement:\n endpoint:\n gateway:\n access: unrestricted\n', 'd9454d877ff3d8bd3fd0d5be99810195', '2022-12-16 10:44:25', '2024-04-20 22:47:02', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (6, 'pigx-monitor-dev.yml', 'DEFAULT_GROUP', 'spring:\n # 安全配置\n security:\n user:\n name: ENC(rZHA4LW5hHmhLAAzJoFNag==) # pigx\n password: ENC(bjeyh+Aeii3kHXkoo00ZUw==) # pigx\n autoconfigure:\n exclude: com.pig4cloud.pigx.common.core.config.JacksonConfiguration\n boot:\n admin:\n ui:\n title: \'pigx 服务状态监控\'\n brand: \'pigx 服务状态监控\'\n external-views:\n - label: \"SQL监控\"\n url: /druid/sql.html\n order: 2000\n iframe: true\nmanagement:\n endpoints:\n web:\n exposure:\n include: \'*\'\n endpoint:\n health:\n show-details: ALWAYS #显示详细信息\n\n\n# druid 监控的服务\nmonitor:\n applications:\n - pigx-upms-biz\n', '2bb39e4dee3f90d4186d1e42aa666d2a', '2022-12-16 10:44:25', '2023-04-07 14:12:09', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (7, 'pigx-upms-biz-dev.yml', 'DEFAULT_GROUP', '## spring security 配置\nsecurity:\n oauth2:\n client:\n ignore-urls:\n - /druid/**\n\n# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n stat-view-servlet:\n enabled: true\n allow: \"\"\n url-pattern: /druid/*\n #login-username: admin\n #login-password: admin\n filter:\n stat:\n enabled: true\n log-slow-sql: true\n slow-sql-millis: 10000\n merge-sql: false\n wall:\n config:\n multi-statement-allow: true\n\n# 本地文件系统\nfile:\n type: local\n local:\n basePath: /Users/lengleng/Downloads/files', '31570b7a880625228335b7f7e5aaa312', '2022-12-16 10:44:25', '2024-02-22 15:08:36', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (8, 'pigx-daemon-quartz-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_job}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n', 'caa1a7ea301239a18e9a43699e43707e', '2022-12-16 10:44:25', '2024-04-19 21:49:00', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (9, 'pigx-pay-platform-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_pay}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n freemarker:\n allow-request-override: false\n allow-session-override: false\n cache: true\n charset: UTF-8\n check-template-location: true\n content-type: text/html\n enabled: true\n expose-request-attributes: false\n expose-session-attributes: false\n expose-spring-macro-helpers: true\n prefer-file-system-access: true\n suffix: .ftl\n template-loader-path: classpath:/templates/\n# 租户表维护\npigx:\n pay:\n test: lengleng\n aliPayConfig:\n expire-time: 30\n return-url: http://pig4cloud.com\n notify-url: http://payx.yunjihuitong.com/pay/notify/ali/callbak\n wxPayConfig:\n notify-url: https://admin.pig4cloud.com/pay/notify/wx/callbak\n mergePayConfig:\n return-url: http://pig4cloud.com\n notify-url: http://wechat.pigx.top/pay/notify/merge/callbak\n xsequence: #发号器相关配置\n db:\n retry-times: 3\n table-name: pay_sequence', 'f4e5734a99f3c1f059071deac081b33d', '2022-12-16 10:44:25', '2024-02-22 15:09:08', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (11, 'pigx-mp-platform-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_mp}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n', 'ae40865200e414d06d63d96f257f372e', '2022-12-16 10:44:25', '2024-02-22 15:09:20', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (12, 'pigx-xxl-job-admin-dev.yml', 'DEFAULT_GROUP', '# XXL-Job Admin 微服务配置\n# Actuator 监控配置\nmanagement:\n endpoints:\n web:\n base-path: /actuator\n health:\n mail:\n enabled: false\n\n# Spring 配置\nspring:\n # MVC 配置\n mvc:\n servlet:\n load-on-startup: 0\n static-path-pattern: /static/**\n\n # 静态资源配置\n web:\n resources:\n static-locations: classpath:/static/\n\n # Freemarker 模板引擎配置\n freemarker:\n template-loader-path: classpath:/templates/\n suffix: .ftl\n charset: UTF-8\n request-context-attribute: request\n settings:\n number_format: 0.##########\n new_builtin_class_resolver: safer\n\n # 数据源配置\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_job}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n\n # 邮件服务配置\n mail:\n host: smtp.qq.com\n port: 25\n username: xxx@qq.com\n from: xxx@qq.com\n password: xxx\n properties:\n mail:\n smtp:\n auth: true\n starttls:\n enable: true\n required: true\n socketFactory:\n class: javax.net.ssl.SSLSocketFactory\n\n# MyBatis 配置\nmybatis:\n mapper-locations: classpath:/mapper/**/*Mapper.xml\n\n# XXL-Job 配置\nxxl:\n job:\n # 访问令牌\n accessToken: default_token\n # 超时时间(秒)\n timeout: 3\n # 国际化 (zh_CN, zh_TC, en)\n i18n: zh_CN\n # 触发器线程池最大线程数\n triggerpool:\n fast:\n max: 300\n slow:\n max: 200\n # 调度批次大小\n schedule:\n batchsize: 100\n # 日志保留天数\n logretentiondays: 30\n\n# XXL-SSO 单点登录配置\nxxl-sso:\n token:\n key: xxl_job_login_token\n timeout: 604800000\n client:\n excluded:\n paths:\n login:\n path: /auth/login', 'e4e88bd4e91599ae03854a8dfe491786', '2022-12-16 10:44:25', '2026-05-01 23:02:41', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (13, 'pigx-report-platform-dev.yml', 'DEFAULT_GROUP', 'spring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_report}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n jpa:\n database-platform: org.hibernate.dialect.MySQLDialect\n\nsecurity:\n oauth2:\n client:\n ignore-urls:\n - /\n - /api/project/getData\n - /static/**\n - /api/project/get-file/*\n\n# 文件上传路径\ngv:\n img-path: /Users/lengleng/Downloads/img/\n', 'ce3fde4b4592cdd61feb2e443b2ddfe5', '2022-12-16 10:44:25', '2023-04-07 12:56:57', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (14, 'pigx-jimu-platform-dev.yml', 'DEFAULT_GROUP', 'spring:\n #配置静态资源\n mvc:\n static-path-pattern: /**\n #配置数据库\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_bi}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true\n \n#JimuReport[minidao配置]\nminidao :\n base-package: org.jeecg.modules.jmreport.*,org.jeecg.modules.drag.*\n db-type: mysql\n#JimuReport[上传配置]\njeecg :\n jmreport:\n customPrePath: /api/jimu\n # 自动保存\n autoSave: true\n # 单位毫秒 默认5*60*1000 \n interval: 10000\n # local|minio|alioss\n uploadType: local\n # local\n path :\n #文件路径A\n upload: ~/jimu/data\n # alioss\n oss:\n endpoint: oss-cn-beijing.aliyuncs.com\n accessKey: ??\n secretKey: ??\n staticDomain: ??\n bucketName: ??\n # minio\n minio:\n minio_url: http://minio.jeecg.com\n minio_name: ??\n minio_pass: ??\n bucketName: ??\n#输出sql日志\nlogging:\n level:\n org.jeecg.modules.jmreport : debug', '898d86e9ae9110a0081f7d346487fe6a', '2022-12-16 10:44:25', '2024-01-30 20:44:36', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (15, 'pigx-app-server-biz-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_app}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true', 'e4668a1854e92a5a666e83479ef7d26a', '2022-12-19 10:30:07', '2024-02-22 15:09:50', 'nacos', '127.0.0.1', '', 'public', '', '', '', 'yaml', '', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (16, 'pigx-flow-biz-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n druid:\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USER:root}\n password: ${MYSQL_PWD:root}\n url: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_flow}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true\n\n# flowable 配置\nflowable:\n variable-json-mapper: jackson2', '233121e20445609e1ba378c3686ea7d5', '2023-07-28 13:41:32', '2023-07-28 13:43:36', 'nacos', '127.0.0.1', '', 'public', 'flowable 工作引擎', '', '', 'yaml', '', '');
COMMIT;
-- ----------------------------
@@ -313,4 +318,74 @@ BEGIN;
INSERT INTO `users` (`username`, `password`, `enabled`) VALUES ('nacos', '$2a$10$W6PKgRTzXUp6R/NY853Kn.nRaIcX3whIMTZ/WWkNqo2MTOeSBjKJq', 1);
COMMIT;
-- ----------------------------
-- Table structure for pipeline_execution
-- ----------------------------
DROP TABLE IF EXISTS `pipeline_execution`;
CREATE TABLE `pipeline_execution` (
`execution_id` varchar(64) NOT NULL COMMENT '执行ID',
`resource_type` varchar(32) NOT NULL COMMENT '资源类型',
`resource_name` varchar(256) NOT NULL COMMENT '资源名称',
`namespace_id` varchar(128) DEFAULT NULL COMMENT '命名空间ID',
`version` varchar(64) DEFAULT NULL COMMENT '版本',
`status` varchar(32) NOT NULL COMMENT '执行状态',
`pipeline` longtext NOT NULL COMMENT 'pipeline节点结果JSON',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`update_time` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`execution_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI资源发布审核Pipeline执行记录';
-- ----------------------------
-- Table structure for ai_resource
-- ----------------------------
DROP TABLE IF EXISTS `ai_resource`;
CREATE TABLE `ai_resource` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`name` varchar(256) NOT NULL COMMENT '资源名称',
`type` varchar(32) NOT NULL COMMENT '资源类型',
`c_desc` varchar(2048) DEFAULT NULL COMMENT '资源描述',
`status` varchar(32) DEFAULT NULL COMMENT '资源状态',
`namespace_id` varchar(128) NOT NULL DEFAULT '' COMMENT '命名空间ID',
`biz_tags` varchar(1024) DEFAULT NULL COMMENT '业务标签',
`ext` longtext DEFAULT NULL COMMENT '扩展信息(JSON)',
`c_from` varchar(256) NOT NULL DEFAULT 'local' COMMENT '来源标识(导入/同步来源)',
`version_info` longtext DEFAULT NULL COMMENT '版本信息(JSON)',
`meta_version` bigint(20) NOT NULL DEFAULT 1 COMMENT '元数据版本(乐观锁)',
`scope` varchar(16) NOT NULL DEFAULT 'PRIVATE' COMMENT '可见性: PUBLIC/PRIVATE',
`owner` varchar(128) NOT NULL DEFAULT '' COMMENT '创建者用户名',
`download_count` bigint(20) NOT NULL DEFAULT 0 COMMENT '下载次数',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_ai_resource_ns_name_type` (`namespace_id`,`name`,`type`,`c_from`),
KEY `idx_ai_resource_name` (`name`),
KEY `idx_ai_resource_type` (`type`),
KEY `idx_ai_resource_gmt_modified` (`gmt_modified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI资源元数据表';
-- ----------------------------
-- Table structure for ai_resource_version
-- ----------------------------
DROP TABLE IF EXISTS `ai_resource_version`;
CREATE TABLE `ai_resource_version` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`type` varchar(32) NOT NULL COMMENT '资源类型',
`author` varchar(128) DEFAULT NULL COMMENT '作者',
`name` varchar(256) NOT NULL COMMENT '资源名称',
`c_desc` varchar(2048) DEFAULT NULL COMMENT '版本描述',
`status` varchar(32) NOT NULL COMMENT '版本状态',
`version` varchar(64) NOT NULL COMMENT '版本号',
`namespace_id` varchar(128) NOT NULL DEFAULT '' COMMENT '命名空间ID',
`storage` longtext DEFAULT NULL COMMENT '存储信息(JSON)',
`publish_pipeline_info` longtext DEFAULT NULL COMMENT '发布流水线信息(JSON)',
`download_count` bigint(20) NOT NULL DEFAULT 0 COMMENT '下载次数',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_ai_resource_ver_ns_name_type_ver` (`namespace_id`,`name`,`type`,`version`),
KEY `idx_ai_resource_ver_name` (`name`),
KEY `idx_ai_resource_ver_status` (`status`),
KEY `idx_ai_resource_ver_gmt_modified` (`gmt_modified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI资源版本表';
SET FOREIGN_KEY_CHECKS = 1;
+9 -9
View File
@@ -19,8 +19,8 @@ CREATE TABLE `pay_channel` (
`param` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '参数',
`remark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
`app_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '应用ID',
PRIMARY KEY (`id`) USING BTREE
@@ -45,8 +45,8 @@ CREATE TABLE `pay_goods_order` (
`status` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '订单状态:订单生成(0)、支付成功(1)、处理完成(2)、处理失败(-1)',
`pay_order_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付订单ID',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (`goods_order_id`) USING BTREE,
UNIQUE KEY `IDX_PayOrderId` (`pay_order_id`) USING BTREE
@@ -70,7 +70,7 @@ CREATE TABLE `pay_notify_record` (
`order_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '订单号',
`http_status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'http状态',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (`id`) USING BTREE
@@ -114,8 +114,8 @@ CREATE TABLE `pay_refund_order` (
`expire_time` datetime DEFAULT NULL COMMENT '订单失效时间',
`refund_succ_time` datetime DEFAULT NULL COMMENT '订单退款成功时间',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (`refund_order_id`) USING BTREE,
UNIQUE KEY `IDX_MchId_MchOrderNo` (`mch_id`,`mch_refund_no`) USING BTREE
@@ -153,8 +153,8 @@ CREATE TABLE `pay_trade_order` (
`last_notify_time` bigint(20) DEFAULT NULL COMMENT '最后一次通知时间',
`expire_time` bigint(20) DEFAULT NULL COMMENT '订单失效时间',
`pay_succ_time` datetime DEFAULT NULL COMMENT '订单支付成功时间',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (`order_id`) USING BTREE
+155 -109
View File
@@ -41,6 +41,8 @@ CREATE TABLE `gen_field_type` (
`column_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '字段类型',
`attr_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '属性类型',
`package_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '属性包名',
`default_form_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '默认表单类型',
`default_query_form_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '默认查询表单类型',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
@@ -54,61 +56,55 @@ CREATE TABLE `gen_field_type` (
-- Records of gen_field_type
-- ----------------------------
BEGIN;
INSERT INTO `gen_field_type` VALUES (1, 'datetime', 'LocalDateTime', 'java.time.LocalDateTime', '2023-02-06 08:45:10', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (2, 'date', 'LocalDate', 'java.time.LocalDate', '2023-02-06 08:45:10', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (3, 'tinyint', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (4, 'smallint', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (5, 'mediumint', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (6, 'int', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (7, 'integer', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (8, 'bigint', 'Long', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (9, 'float', 'Float', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (10, 'double', 'Double', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (11, 'decimal', 'BigDecimal', 'java.math.BigDecimal', '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (12, 'bit', 'Boolean', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (13, 'char', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (14, 'varchar', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (15, 'tinytext', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (16, 'text', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (17, 'mediumtext', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (18, 'longtext', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (19, 'timestamp', 'LocalDateTime', 'java.time.LocalDateTime', '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (20, 'NUMBER', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (21, 'BINARY_INTEGER', 'Integer', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (22, 'BINARY_FLOAT', 'Float', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (23, 'BINARY_DOUBLE', 'Double', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (24, 'VARCHAR2', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (25, 'NVARCHAR', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (26, 'NVARCHAR2', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (27, 'CLOB', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (28, 'int8', 'Long', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (29, 'int4', 'Integer', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (30, 'int2', 'Integer', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (31, 'numeric', 'BigDecimal', 'java.math.BigDecimal', '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (32, 'json', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
COMMIT;
-- ----------------------------
-- Table structure for gen_form_conf
-- ----------------------------
DROP TABLE IF EXISTS `gen_form_conf`;
CREATE TABLE `gen_form_conf` (
`id` bigint NOT NULL COMMENT 'ID',
`ds_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '数据库名称',
`table_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '表名称',
`form_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单信息',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0',
`tenant_id` bigint DEFAULT NULL COMMENT '所属租户',
PRIMARY KEY (`id`) USING BTREE,
KEY `table_name` (`table_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='表单配置';
-- ----------------------------
-- Records of gen_form_conf
-- ----------------------------
BEGIN;
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (1,'datetime','LocalDateTime','java.time.LocalDateTime','datetime','datetimerange','2023-02-06 08:45:10',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (2,'date','LocalDate','java.time.LocalDate','date','daterange','2023-02-06 08:45:10',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (3,'tinyint','Integer',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (4,'smallint','Integer',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (5,'mediumint','Integer',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (6,'int','Integer',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (7,'integer','Integer',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (8,'bigint','Long',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (9,'float','Float',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (10,'double','Double',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (11,'decimal','BigDecimal','java.math.BigDecimal','number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (12,'bit','Boolean',NULL,'radio','radio','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (13,'char','String',NULL,'radio','radio','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (14,'varchar','String',NULL,'text','text','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (15,'tinytext','String',NULL,'textarea','text','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (16,'text','String',NULL,'textarea','text','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (17,'mediumtext','String',NULL,'textarea','text','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (18,'longtext','String',NULL,'textarea','text','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (19,'timestamp','LocalDateTime','java.time.LocalDateTime','datetime','datetimerange','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (20,'NUMBER','Integer',NULL,'number','number','2023-02-06 08:45:11',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (21,'BINARY_INTEGER','Integer',NULL,'number','number','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (22,'BINARY_FLOAT','Float',NULL,'number','number','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (23,'BINARY_DOUBLE','Double',NULL,'number','number','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (24,'VARCHAR2','String',NULL,'text','text','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (25,'NVARCHAR','String',NULL,'text','text','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (26,'NVARCHAR2','String',NULL,'text','text','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (27,'CLOB','String',NULL,'textarea','text','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (28,'int8','Long',NULL,'number','number','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (29,'int4','Integer',NULL,'number','number','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (30,'int2','Integer',NULL,'number','number','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (31,'numeric','BigDecimal','java.math.BigDecimal','number','number','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (32,'json','String',NULL,'textarea','text','2023-02-06 08:45:12',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (33,'BPCHAR','String',NULL,'text','text','2026-04-07 20:27:29',NULL,NULL,NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (34,'time','LocalTime','java.time.LocalTime','text','text','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (35,'year','Integer',NULL,'number','number','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (36,'enum','String',NULL,'text','text','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (37,'set','String',NULL,'text','text','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (38,'bool','Boolean',NULL,'radio','radio','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (39,'boolean','Boolean',NULL,'radio','radio','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (40,'float4','Float',NULL,'number','number','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (41,'float8','Double',NULL,'number','number','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (42,'jsonb','String',NULL,'textarea','text','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (43,'uuid','String',NULL,'text','text','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (44,'serial','Integer',NULL,'number','number','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (45,'bigserial','Long',NULL,'number','number','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (46,'smallserial','Integer',NULL,'number','number','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (47,'timestamptz','LocalDateTime','java.time.LocalDateTime','datetime','datetimerange','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (48,'timetz','String',NULL,'text','text','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
INSERT INTO `gen_field_type` (`id`, `column_type`, `attr_type`, `package_name`, `default_form_type`, `default_query_form_type`, `create_time`, `create_by`, `update_time`, `update_by`, `del_flag`) VALUES (49,'bytea','String',NULL,'textarea','text','2026-04-07 20:47:09',NULL,'2026-04-07 20:47:09',NULL,'0');
COMMIT;
-- ----------------------------
@@ -120,8 +116,8 @@ CREATE TABLE `gen_group` (
`group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '分组名称',
`group_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '分组描述',
`tenant_id` bigint NOT NULL COMMENT '租户ID',
`create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ' ' COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ' ' COMMENT '修改人',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT ' ' COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT ' ' COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '修改人',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
@@ -132,8 +128,10 @@ CREATE TABLE `gen_group` (
-- Records of gen_group
-- ----------------------------
BEGIN;
INSERT INTO `gen_group` VALUES (1, '单表增删改查', '单表增删改查', 1, ' ', ' ', NULL, NULL, '0');
INSERT INTO `gen_group` VALUES (2, '主子表表增删改查', '主子表表增删改查', 1, ' ', ' ', NULL, NULL, '0');
INSERT INTO `gen_group` (`id`, `group_name`, `group_desc`, `tenant_id`, `create_by`, `update_by`, `create_time`, `update_time`, `del_flag`) VALUES (1,'单表增删改查V202611',NULL,1,'admin','admin','2026-04-08 17:38:24','2026-04-08 17:38:24','0');
INSERT INTO `gen_group` (`id`, `group_name`, `group_desc`, `tenant_id`, `create_by`, `update_by`, `create_time`, `update_time`, `del_flag`) VALUES (2,'主子表增删改查V202611',NULL,1,'admin','admin','2026-04-08 17:38:24','2026-04-08 17:38:24','0');
INSERT INTO `gen_group` (`id`, `group_name`, `group_desc`, `tenant_id`, `create_by`, `update_by`, `create_time`, `update_time`, `del_flag`) VALUES (3,'树形表格增删改查V202611',NULL,1,'admin','admin','2026-04-08 17:38:24','2026-04-08 17:38:24','0');
INSERT INTO `gen_group` (`id`, `group_name`, `group_desc`, `tenant_id`, `create_by`, `update_by`, `create_time`, `update_time`, `del_flag`) VALUES (4,'左树右表增删改查V202611',NULL,1,'admin','admin','2026-04-08 17:38:24','2026-04-08 17:38:24','0');
COMMIT;
-- ----------------------------
@@ -157,6 +155,8 @@ CREATE TABLE `gen_table` (
`child_table_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '子表名称',
`main_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '主表关联键',
`child_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '子表关联键',
`parent_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父表关联键',
`name_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '名称字段',
`generator_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '生成方式 0:zip压缩包 1:自定义目录',
`backend_path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '后端生成路径',
`frontend_path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '前端生成路径',
@@ -167,7 +167,7 @@ CREATE TABLE `gen_table` (
`baseclass_id` bigint DEFAULT NULL COMMENT '基类ID',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `table_name` (`table_name`,`ds_name`) USING BTREE
UNIQUE KEY `table_name_idx` (`table_name`,`ds_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代码生成表';
-- ----------------------------
@@ -227,8 +227,8 @@ CREATE TABLE `gen_template` (
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '删除标记',
`tenant_id` bigint NOT NULL COMMENT '租户ID',
`create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ' ' COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ' ' COMMENT '修改人',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT ' ' COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT ' ' COMMENT '修改人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='模板';
@@ -236,28 +236,51 @@ CREATE TABLE `gen_template` (
-- Records of gen_template
-- ----------------------------
BEGIN;
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079920092708866, 'ControllerV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/controller/${ClassName}Controller.java', 'ControllerV2025001\n', 'package ${package}.${moduleName}.controller;\n\n#if($queryList)\nimport cn.hutool.core.util.StrUtil;\n#end\nimport cn.hutool.core.util.ArrayUtil;\nimport cn.hutool.core.collection.CollUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport ${package}.common.core.util.R;\nimport ${package}.common.log.annotation.SysLog;\n#if($opensource)\nimport com.pig4cloud.plugin.excel.annotation.ResponseExcel;\nimport com.pig4cloud.plugin.excel.annotation.RequestExcel;\n#else\nimport ${package}.common.excel.annotation.ResponseExcel;\nimport ${package}.common.excel.annotation.RequestExcel;\n#end\nimport ${package}.${moduleName}.entity.${ClassName}Entity;\nimport ${package}.${moduleName}.service.${ClassName}Service;\n\nimport io.swagger.v3.oas.annotations.security.SecurityRequirement;\n#if($isSpringBoot3)\nimport ${package}.common.security.annotation.HasPermission;\nimport org.springdoc.core.annotations.ParameterObject;\n#else\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springdoc.api.annotations.ParameterObject;\n#end\nimport org.springframework.http.HttpHeaders;\nimport io.swagger.v3.oas.annotations.tags.Tag;\nimport io.swagger.v3.oas.annotations.Operation;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.validation.BindingResult;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\nimport java.util.Objects;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@RestController\n@RequiredArgsConstructor\n@RequestMapping(\"/${functionName}\" )\n@Tag(description = \"${functionName}\" , name = \"${tableComment}管理\" )\n@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)\npublic class ${ClassName}Controller {\n\n private final ${ClassName}Service ${className}Service;\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param ${className} ${tableComment}\n * @return\n */\n @Operation(summary = \"分页查询\" , description = \"分页查询\" )\n @GetMapping(\"/page\" )\n #if($isSpringBoot3)\n @HasPermission(\"${moduleName}_${functionName}_view\")\n #else\n @PreAuthorize(\"@pms.hasPermission(\'${moduleName}_${functionName}_view\')\" )\n #end\n public R get${ClassName}Page(@ParameterObject Page page, @ParameterObject ${ClassName}Entity ${className}) {\n LambdaQueryWrapper<${ClassName}Entity> wrapper = Wrappers.lambdaQuery();\n#foreach ($field in $queryList)\n#set($getAttrName=$str.getProperty($field.attrName))\n#set($var=\"${className}.$getAttrName()\")\n#if($field.attrType == \'String\')\n#set($expression=\"StrUtil.isNotBlank\")\n#else\n#set($expression=\"Objects.nonNull\")\n#end\n#if($field.queryType == \'=\')\n wrapper.eq($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'like\' )\n wrapper.like($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'!-\' )\n wrapper.ne($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'>\' )\n wrapper.gt($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'<\' )\n wrapper.lt($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'>=\' )\n wrapper.ge($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'<=\' )\n wrapper.le($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'left like\' )\n wrapper.likeLeft($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'right like\' )\n wrapper.likeRight($expression($var),${ClassName}Entity::$getAttrName,$var);\n#end\n#end\n return R.ok(${className}Service.page(page, wrapper));\n }\n\n\n /**\n * 通过条件查询${tableComment}\n * @param ${className} 查询条件\n * @return R 对象列表\n */\n @Operation(summary = \"通过条件查询\" , description = \"通过条件查询对象\" )\n @GetMapping(\"/details\" )\n #if($isSpringBoot3)\n @HasPermission(\"${moduleName}_${functionName}_view\")\n #else\n @PreAuthorize(\"@pms.hasPermission(\'${moduleName}_${functionName}_view\')\" )\n #end\n public R getDetails(@ParameterObject ${ClassName}Entity ${className}) {\n return R.ok(${className}Service.list(Wrappers.query(${className})));\n }\n\n /**\n * 新增${tableComment}\n * @param ${className} ${tableCommeLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079920327589889, 'ServiceV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/service/${ClassName}Service.java', 'ServiceV2025001\n', 'package ${package}.${moduleName}.service;\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport ${package}.${moduleName}.entity.${ClassName}Entity;\n\npublic interface ${ClassName}Service extends IService<${ClassName}Entity> {\n\n}\n', '2025-06-15 10:46:01', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079920554082306, 'ServiceImplV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/service/impl/${ClassName}ServiceImpl.java', 'ServiceImplV2025001\n', 'package ${package}.${moduleName}.service.impl;\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport ${package}.${moduleName}.entity.${ClassName}Entity;\nimport ${package}.${moduleName}.mapper.${ClassName}Mapper;\nimport ${package}.${moduleName}.service.${ClassName}Service;\nimport org.springframework.stereotype.Service;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Service\npublic class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}Entity> implements ${ClassName}Service {\n\n}\n', '2025-06-15 10:46:01', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079920784769026, '实体V2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/entity/${ClassName}Entity.java', '实体V2025001\n', 'package ${package}.${moduleName}.entity;\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n#if($isTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\n#foreach($import in $importList)\nimport $import;\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n#if($isTenant)\n@TenantTable\n#end\n@TableName(\"${tableName}\")\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = \"${tableComment}\")\npublic class ${ClassName}Entity extends Model<${ClassName}Entity> {\n\n#foreach ($field in $fieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description=\"$comment\"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end \n#end\n}\n', '2025-06-15 10:46:01', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079920998678529, 'MapperV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ClassName}Mapper.java', 'MapperV2025001\n', 'package ${package}.${moduleName}.mapper;\n\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport ${package}.${moduleName}.entity.${ClassName}Entity;\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ClassName}Mapper extends BaseMapper<${ClassName}Entity> {\n\n}\n', '2025-06-15 10:46:01', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079921220976642, 'Mapper.xmlV2025001\n', '${backendPath}/src/main/resources/mapper/${ClassName}Mapper.xml', 'Mapper.xmlV2025001\n', '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n\n<mapper namespace=\"${package}.${moduleName}.mapper.${ClassName}Mapper\">\n\n <resultMap id=\"${className}Map\" type=\"${package}.${moduleName}.entity.${ClassName}Entity\">\n#foreach ($field in $fieldList)\n #if($field.primaryPk == \'1\')\n <id property=\"$field.attrName\" column=\"$field.fieldName\"/>\n #else\n <result property=\"$field.attrName\" column=\"$field.fieldName\"/>\n #end\n#end\n </resultMap>\n</mapper>\n', '2025-06-15 10:46:01', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079921443274753, '权限菜单V2025001\n', '${backendPath}/menu/${functionName}_menu.sql', '权限菜单V2025001\n', '-- 该脚本不要直接执行, 注意维护菜单的父节点ID 默认 父节点-1 , #if(!$opensource)默认租户 1#end\n#set($menuId=${dateTool.getSystemTime()})\n\n-- 菜单SQL\ninsert into sys_menu ( menu_id,parent_id, path, permission, menu_type, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${menuId}, \'-1\', \'/${moduleName}/${functionName}/index\', \'\', \'0\', \'icon-bangzhushouji\', \'0\', null , \'8\', null , \'${tableComment}管理\'#if(!$opensource), 1#end);\n\n-- 菜单对应按钮SQL\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,1)},${menuId}, \'${moduleName}_${functionName}_view\', \'1\', null, \'1\', \'0\', null, \'0\', null, \'${tableComment}查看\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,2)},${menuId}, \'${moduleName}_${functionName}_add\', \'1\', null, \'1\', \'0\', null, \'1\', null, \'${tableComment}新增\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,3)},${menuId}, \'${moduleName}_${functionName}_edit\', \'1\', null, \'1\', \'0\', null, \'2\', null, \'${tableComment}修改\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,4)},${menuId}, \'${moduleName}_${functionName}_del\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'${tableComment}删除\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,5)},${menuId}, \'${moduleName}_${functionName}_export\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'导入导出\'#if(!$opensource), 1#end);', '2025-06-15 10:46:01', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079921673961473, 'api.tsV2025001\n', '${frontendPath}/src/api/${moduleName}/${functionName}.ts', 'api.tsV2025001\n', 'import request from \"/@/utils/request\"\n\n// ========== 基础CRUD接口 ==========\n\n/**\n * 分页查询列表数据\n * @param query - 查询参数对象\n * @returns Promise<分页数据>\n */\nexport function fetchList(query?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/page\',\n method: \'get\',\n params: query\n })\n}\n\n/**\n * 新增数据\n * @param obj - 要新增的数据对象\n * @returns Promise<boolean> - 操作结果\n */\nexport function addObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'post\',\n data: obj\n })\n}\n\n/**\n * 获取详情数据\n * @param obj - 查询参数对象(包含ID等)\n * @returns Promise<数据详情>\n */\nexport function getObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/details\',\n method: \'get\',\n params: obj\n })\n}\n\n/**\n * 批量删除数据\n * @param ids - 要删除的ID数组\n * @returns Promise<操作结果>\n */\nexport function delObjs(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'delete\',\n data: ids\n })\n}\n\n/**\n * 更新数据\n * @param obj - 要更新的数据对象\n * @returns Promise<操作结果>\n */\nexport function putObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'put\',\n data: obj\n })\n}\n\n// ========== 工具函数 ==========\n\n/**\n * 验证字段值唯一性\n * @param rule - 验证规则对象\n * @param value - 要验证的值\n * @param callback - 验证回调函数\n * @param isEdit - 是否为编辑模式\n * \n * @example\n * // 在表单验证规则中使用\n * fieldName: [\n * {\n * validator: (rule, value, callback) => {\n * validateExist(rule, value, callback, form.${pk.attrName} !== \'\');\n * },\n * trigger: \'blur\',\n * },\n * ]\n */\nexport function validateExist(rule: any, value: any, callback: any, isEdit: boolean) {\n // 编辑模式下跳过验证\n if (isEdit) {\n return callback();\n }\n\n // 查询是否存在相同值\n getObj({ [rule.field]: value }).then((response) => {\n const result = response.data;\n if (result !== null && result.length > 0) {\n callback(new Error(\'数据已经存在\'));\n } else {\n callback();\n }\n });\n}\n\n#if($ChildClassName)\n// ========== 子表相关接口 ==========\n\n/**\n * 删除子表数据\n * @param ids - 要删除的子表数据ID数组\n * @returns Promise<操作结果>\n */\nexport function delChildObj(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/child\',\n method: \'delete\',\n data: ids\n })\n}\n#end\n', '2025-06-15 10:46:01', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079921900453889, '表格V2025001\n', '${frontendPath}/src/views/${moduleName}/${functionName}/index.vue', '表格V2025001\n', '<template>\n <div class=\"layout-padding\">\n <div class=\"layout-padding-auto layout-padding-view\">\n#if($queryList)\n <!-- 查询表单区域 -->\n <el-row v-show=\"showSearch\">\n <el-form :model=\"state.queryForm\" ref=\"queryRef\" :inline=\"true\" @keyup.enter=\"getDataList\">\n#foreach($field in $queryList)\n#if($field.queryFormType == \'select\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-select v-model=\"state.queryForm.${field.attrName}\" placeholder=\"请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\">\n#if($field.fieldDict)\n <el-option \n :label=\"item.label\" \n :value=\"item.value\" \n v-for=\"(item, index) in ${field.fieldDict}\" \n :key=\"index\"\n />\n#else\n <el-option label=\"请选择\" value=\"0\" />\n#end\n </el-select>\n </el-form-item>\n#elseif($field.queryFormType == \'date\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-date-picker \n type=\"date\" \n placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" \n v-model=\"state.queryForm.${field.attrName}\"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'datetime\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-date-picker \n type=\"datetime\" \n placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" \n v-model=\"state.queryForm.${field.attrName}\"\n />\n </el-form-item>\n#elseif($field.formType == \'radio\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-radio-group v-model=\"state.queryForm.${field.attrName}\">\n#if($field.fieldDict)\n <el-radio \n :label=\"item.value\" \n v-for=\"(item, index) in ${field.fieldDict}\" \n border \n :key=\"index\"\n >\n {{ item.label }}\n </el-radio>\n#else\n <el-radio label=\"${field.fieldComment}\" border>\n ${field.fieldComment}\n </el-radio>\n#end\n </el-radio-group>\n </el-form-item>\n#else\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-input \n placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" \n v-model=\"state.queryForm.${field.attrName}\" \n />\n </el-form-item>\n#end\n#end\n <el-form-item>\n <el-button icon=\"search\" type=\"primary\" @click=\"getDataList\">\n 查询\n </el-button>\n <el-button icon=\"Refresh\" @click=\"resetQuery\">重置</el-button>\n </el-form-item>\n </el-form>\n </el-row>\n#end\n\n <!-- 操作按钮区域 -->\n <el-row>\n <div class=\"mb8\" style=\"width: 100%\">\n <el-button \n icon=\"folder-add\" \n type=\"primary\" \n class=\"ml10\" \n @click=\"formDialogRef.openDialog()\"\n v-auth=\"\'${moduleName}_${functionName}_add\'\"\n >\n 新增\n </el-button>\n <el-button \n plain \n icon=\"upload-filled\" \n type=\"primary\" \n class=\"ml10\" \n @click=\"excelUploadRef.show()\" \n v-auth=\"\'${moduleName}_${functionName}_add\'\"\n >\n 导入\n </el-button>\n <el-button \n plain \n :disabled=\"multiple\" \n icon=\"Delete\" \n type=\"primary\"\n v-auth=\"\'${moduleName}_${functionName}_del\'\" \n @click=\"handleDelete(selectObjs)\"\n >\n 删除\n </el-button>\n <right-toolbar \n v-model:showSearch=\"showSearch\" \n :export=\"\'${moduleName}_${functionName}_export\'\"\n @exportExcel=\"exportExcel\" \n class=\"ml10 mr20\" \n style=\"Line truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079922147917825, '表单V2025001\n', '${frontendPath}/src/views/${moduleName}/${functionName}/form.vue', '表单V2025001\n', '<template>\n <el-dialog :title=\"form.${pk.attrName} ? \'编辑\' : \'新增\'\" v-model=\"visible\"\n :close-on-click-modal=\"false\" draggable>\n <el-form ref=\"dataFormRef\" :model=\"form\" :rules=\"dataRules\" formDialogRef label-width=\"90px\" v-loading=\"loading\">\n <el-row :gutter=\"24\">\n#foreach($field in $formList)\n#if($field.attrName != ${pk.attrName})\n#if($formLayout == 1)\n <el-col :span=\"24\" class=\"mb20\">\n#elseif($formLayout == 2)\n <el-col :span=\"12\" class=\"mb20\">\n#end\n#if($field.formType == \'text\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-input v-model=\"form.${field.attrName}\" placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'textarea\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-input type=\"textarea\" v-model=\"form.${field.attrName}\" placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'select\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-select v-model=\"form.${field.attrName}\" placeholder=\"请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\">\n#if($field.fieldDict)\n <el-option :value=\"item.value\" :label=\"item.label\" v-for=\"(item, index) in ${field.fieldDict}\" :key=\"index\"></el-option>\n#else\n <el-option label=\"请选择\" value=\"0\"></el-option>\n#end\n </el-select>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'radio\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-radio-group v-model=\"form.${field.attrName}\">\n#if($field.fieldDict)\n <el-radio :label=\"item.value\" v-for=\"(item, index) in ${field.fieldDict}\" border :key=\"index\">{{ item.label }}</el-radio>\n#else\n <el-radio label=\"${field.fieldComment}\" border>${field.fieldComment}</el-radio>\n#end\n </el-radio-group>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'checkbox\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-checkbox-group v-model=\"form.${field.attrName}\">\n#if($field.fieldDict)\n <el-checkbox :label=\"item.value\" v-for=\"(item, index) in ${field.fieldDict}\" :key=\"index\">{{ item.label }}</el-checkbox>\n#else\n <el-checkbox label=\"启用\" name=\"type\"></el-checkbox>\n <el-checkbox label=\"禁用\" name=\"type\"></el-checkbox>\n#end\n </el-checkbox-group>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'date\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-date-picker type=\"date\" placeholder=\"请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" v-model=\"form.${field.attrName}\" :value-format=\"dateStr\"></el-date-picker>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'datetime\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-date-picker type=\"datetime\" placeholder=\"请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" v-model=\"form.${field.attrName}\" :value-format=\"dateTimeStr\"></el-date-picker>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'number\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-input-number :min=\"1\" :max=\"1000\" v-model=\"form.${field.attrName}\" placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\"></el-input-number>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'upload-file\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${fieldLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079922437324801, 'ServiceV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/service/${ClassName}Service.java', 'ServiceV2025001\n', 'package ${package}.${moduleName}.service;\n\nimport com.github.yulichang.extension.mapping.base.MPJDeepService;\nimport ${package}.${moduleName}.entity.${ChildClassName}Entity;\nimport ${package}.${moduleName}.entity.${ClassName}Entity;\n\npublic interface ${ClassName}Service extends MPJDeepService<${ClassName}Entity> {\n Boolean saveDeep(${ClassName}Entity ${className});\n\n Boolean updateDeep(${ClassName}Entity ${className});\n\n Boolean removeDeep(Long[] ids);\n\n Boolean removeChild(Long[] ids);\n}\n', '2025-06-15 10:46:02', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079922659622913, 'ServiceImplV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/service/impl/${ClassName}ServiceImpl.java', 'ServiceImplV2025001\n', 'package ${package}.${moduleName}.service.impl;\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport ${package}.${moduleName}.entity.${ClassName}Entity;\nimport ${package}.${moduleName}.mapper.${ClassName}Mapper;\nimport ${package}.${moduleName}.service.${ClassName}Service;\nimport org.springframework.stereotype.Service;\nimport cn.hutool.core.collection.CollUtil;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport ${package}.${moduleName}.entity.${ChildClassName}Entity;\nimport ${package}.${moduleName}.mapper.${ChildClassName}Mapper;\nimport org.springframework.transaction.annotation.Transactional;\nimport lombok.RequiredArgsConstructor;\nimport java.util.Objects;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Service\n@RequiredArgsConstructor\npublic class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}Entity> implements ${ClassName}Service {\n\n private final ${ChildClassName}Mapper ${childClassName}Mapper;\n\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean saveDeep(${ClassName}Entity ${className}) {\n baseMapper.insert(${className});\n for (${ChildClassName}Entity ${childClassName} : ${className}.get${ChildClassName}List()) {\n ${childClassName}.$str.setProperty($childField)(${className}.$str.getProperty($mainField)());\n ${childClassName}Mapper.insert( ${childClassName});\n }\n\n return Boolean.TRUE;\n }\n\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean updateDeep(${ClassName}Entity ${className}) {\n baseMapper.updateById(${className});\n for (${ChildClassName}Entity ${childClassName} : ${className}.get${ChildClassName}List()) {\n#set($getChildPkName=$str.getProperty(${pk.attrName}))\n if (Objects.isNull(${childClassName}.$getChildPkName())) {\n ${childClassName}.$str.setProperty($childField)(${className}.$str.getProperty($mainField)());\n ${childClassName}Mapper.insert(${childClassName});\n } else {\n ${childClassName}Mapper.updateById(${childClassName});\n }\n }\n return Boolean.TRUE;\n }\n\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean removeDeep(Long[] ids) {\n baseMapper.deleteBatchIds(CollUtil.toList(ids));\n ${childClassName}Mapper.delete(Wrappers.<${ChildClassName}Entity>lambdaQuery().in(${ChildClassName}Entity::$str.getProperty($childField), ids));\n return Boolean.TRUE;\n }\n\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean removeChild(Long[] ids) {\n ${childClassName}Mapper.deleteBatchIds(CollUtil.toList(ids));\n return Boolean.TRUE;\n }\n}\n', '2025-06-15 10:46:02', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079922873532418, '主实体V2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/entity/${ClassName}Entity.java', '主实体V2025001\n', 'package ${package}.${moduleName}.entity;\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n#if($isTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\n#foreach($import in $importList)\nimport $import;\n#end\nimport cn.idev.excel.annotation.ExcelIgnore;\nimport com.github.yulichang.annotation.EntityMapping;\nimport java.util.List;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n#if($isTenant)\n@TenantTable\n#end\n@TableName(\"${tableName}\")\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = \"${tableComment}\")\npublic class ${ClassName}Entity extends Model<${ClassName}Entity> {\n\n#foreach ($field in $fieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description=\"$comment\"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end \n#end\n @ExcelIgnore\n @TableField(exist = false)\n @EntityMapping(thisField = \"$mainField\", joinField = \"$childField\")\n private List<${ChildClassName}Entity> ${childClassName}List;\n}\n', '2025-06-15 10:46:02', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079923095830529, 'MapperV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ClassName}Mapper.java', 'MapperV2025001\n', 'package ${package}.${moduleName}.mapper;\n\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport ${package}.${moduleName}.entity.${ClassName}Entity;\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ClassName}Mapper extends BaseMapper<${ClassName}Entity> {\n\n}\n', '2025-06-15 10:46:02', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079923313934337, 'Mapper.xmlV2025001\n', '${backendPath}/src/main/resources/mapper/${ClassName}Mapper.xml', 'Mapper.xmlV2025001\n', '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n\n<mapper namespace=\"${package}.${moduleName}.mapper.${ClassName}Mapper\">\n\n <resultMap id=\"${className}Map\" type=\"${package}.${moduleName}.entity.${ClassName}Entity\">\n#foreach ($field in $fieldList)\n #if($field.primaryPk == \'1\')\n <id property=\"$field.attrName\" column=\"$field.fieldName\"/>\n #else\n <result property=\"$field.attrName\" column=\"$field.fieldName\"/>\n #end\n#end\n </resultMap>\n</mapper>\n', '2025-06-15 10:46:02', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079923536232449, '权限菜单V2025001\n', '${backendPath}/menu/${functionName}_menu.sql', '权限菜单V2025001\n', '-- 该脚本不要直接执行, 注意维护菜单的父节点ID 默认 父节点-1 , #if(!$opensource)默认租户 1#end\n#set($menuId=${dateTool.getSystemTime()})\n\n-- 菜单SQL\ninsert into sys_menu ( menu_id,parent_id, path, permission, menu_type, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${menuId}, \'-1\', \'/${moduleName}/${functionName}/index\', \'\', \'0\', \'icon-bangzhushouji\', \'0\', null , \'8\', null , \'${tableComment}管理\'#if(!$opensource), 1#end);\n\n-- 菜单对应按钮SQL\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,1)},${menuId}, \'${moduleName}_${functionName}_view\', \'1\', null, \'1\', \'0\', null, \'0\', null, \'${tableComment}查看\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,2)},${menuId}, \'${moduleName}_${functionName}_add\', \'1\', null, \'1\', \'0\', null, \'1\', null, \'${tableComment}新增\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,3)},${menuId}, \'${moduleName}_${functionName}_edit\', \'1\', null, \'1\', \'0\', null, \'2\', null, \'${tableComment}修改\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,4)},${menuId}, \'${moduleName}_${functionName}_del\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'${tableComment}删除\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,5)},${menuId}, \'${moduleName}_${functionName}_export\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'导入导出\'#if(!$opensource), 1#end);', '2025-06-15 10:46:02', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079923766919169, 'api.tsV2025001\n', '${frontendPath}/src/api/${moduleName}/${functionName}.ts', 'api.tsV2025001\n', 'import request from \"/@/utils/request\"\n\n// ========== 基础CRUD接口 ==========\n\n/**\n * 分页查询列表数据\n * @param query - 查询参数对象\n * @returns Promise<分页数据>\n */\nexport function fetchList(query?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/page\',\n method: \'get\',\n params: query\n })\n}\n\n/**\n * 新增数据\n * @param obj - 要新增的数据对象\n * @returns Promise<boolean> - 操作结果\n */\nexport function addObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'post\',\n data: obj\n })\n}\n\n/**\n * 获取详情数据\n * @param obj - 查询参数对象(包含ID等)\n * @returns Promise<数据详情>\n */\nexport function getObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/details\',\n method: \'get\',\n params: obj\n })\n}\n\n/**\n * 批量删除数据\n * @param ids - 要删除的ID数组\n * @returns Promise<操作结果>\n */\nexport function delObjs(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'delete\',\n data: ids\n })\n}\n\n/**\n * 更新数据\n * @param obj - 要更新的数据对象\n * @returns Promise<操作结果>\n */\nexport function putObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'put\',\n data: obj\n })\n}\n\n// ========== 工具函数 ==========\n\n/**\n * 验证字段值唯一性\n * @param rule - 验证规则对象\n * @param value - 要验证的值\n * @param callback - 验证回调函数\n * @param isEdit - 是否为编辑模式\n * \n * @example\n * // 在表单验证规则中使用\n * fieldName: [\n * {\n * validator: (rule, value, callback) => {\n * validateExist(rule, value, callback, form.${pk.attrName} !== \'\');\n * },\n * trigger: \'blur\',\n * },\n * ]\n */\nexport function validateExist(rule: any, value: any, callback: any, isEdit: boolean) {\n // 编辑模式下跳过验证\n if (isEdit) {\n return callback();\n }\n\n // 查询是否存在相同值\n getObj({ [rule.field]: value }).then((response) => {\n const result = response.data;\n if (result !== null && result.length > 0) {\n callback(new Error(\'数据已经存在\'));\n } else {\n callback();\n }\n });\n}\n\n#if($ChildClassName)\n// ========== 子表相关接口 ==========\n\n/**\n * 删除子表数据\n * @param ids - 要删除的子表数据ID数组\n * @returns Promise<操作结果>\n */\nexport function delChildObj(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/child\',\n method: \'delete\',\n data: ids\n })\n}\n#end\n', '2025-06-15 10:46:02', '2025-06-15 10:46:01', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079923989217282, '子实体V2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/entity/${ChildClassName}Entity.java', '子实体V2025001\n', 'package ${package}.${moduleName}.entity;\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\n#if($isChildTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n#foreach($import in $importList)\nimport $import;\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n#if($isChildTenant)\n@TenantTable\n#end\n@TableName(\"${childTableName}\")\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = \"${childTableName}\")\npublic class ${ChildClassName}Entity extends Model<${ChildClassName}Entity> {\n\n#foreach ($field in $childFieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description=\"$comment\"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end \n#end\n}\n', '2025-06-15 10:46:02', '2025-06-15 10:46:02', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079924215709698, '主子ContollerV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/controller/${ClassName}Controller.java', '主子ContollerV2025001\n', 'package ${package}.${moduleName}.controller;\n\n#if($queryList)\nimport cn.hutool.core.util.StrUtil;\n#end\nimport cn.hutool.core.util.ArrayUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport ${package}.common.core.util.R;\nimport ${package}.common.log.annotation.SysLog;\n#if($opensource)\nimport com.pig4cloud.plugin.excel.annotation.ResponseExcel;\nimport com.pig4cloud.plugin.excel.annotation.RequestExcel;\n#else\nimport ${package}.common.excel.annotation.ResponseExcel;\nimport ${package}.common.excel.annotation.RequestExcel;\n#end\nimport ${package}.${moduleName}.entity.${ClassName}Entity;\nimport ${package}.${moduleName}.entity.${ChildClassName}Entity;\nimport ${package}.${moduleName}.service.${ClassName}Service;\nimport io.swagger.v3.oas.annotations.security.SecurityRequirement;\n#if($isSpringBoot3)\nimport ${package}.common.security.annotation.HasPermission;\nimport org.springdoc.core.annotations.ParameterObject;\n#else\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springdoc.api.annotations.ParameterObject;\n#end\nimport org.springframework.http.HttpHeaders;\nimport io.swagger.v3.oas.annotations.tags.Tag;\nimport io.swagger.v3.oas.annotations.Operation;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.validation.BindingResult;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\nimport java.util.Objects;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@RestController\n@RequiredArgsConstructor\n@RequestMapping(\"/${functionName}\" )\n@Tag(description = \"${functionName}\" , name = \"${tableComment}管理\" )\n@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)\npublic class ${ClassName}Controller {\n\n private final ${ClassName}Service ${className}Service;\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param ${className} ${tableComment}\n * @return\n */\n @Operation(summary = \"分页查询\" , description = \"分页查询\" )\n @GetMapping(\"/page\" )\n #if($isSpringBoot3)\n @HasPermission(\"${moduleName}_${functionName}_view\")\n #else\n @PreAuthorize(\"@pms.hasPermission(\'${moduleName}_${functionName}_view\')\" )\n #end\n public R get${ClassName}Page(@ParameterObject Page page, @ParameterObject ${ClassName}Entity ${className}) {\n LambdaQueryWrapper<${ClassName}Entity> wrapper = Wrappers.lambdaQuery();\n#foreach ($field in $queryList)\n#set($getAttrName=$str.getProperty($field.attrName))\n#set($var=\"${className}.$getAttrName()\")\n#if($field.attrType == \'String\')\n#set($expression=\"StrUtil.isNotBlank\")\n#else\n#set($expression=\"Objects.nonNull\")\n#end\n#if($field.queryType == \'=\')\n wrapper.eq($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'like\' )\n wrapper.like($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'!-\' )\n wrapper.ne($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'>\' )\n wrapper.gt($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'<\' )\n wrapper.lt($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'>=\' )\n wrapper.ge($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'<=\' )\n wrapper.le($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'left like\' )\n wrapper.likeLeft($expression($var),${ClassName}Entity::$getAttrName,$var);\n#elseif( $field.queryType == \'right like\' )\n wrapper.likeRight($expression($var),${ClassName}Entity::$getAttrName,$var);\n#end\n#end\n return R.ok(${className}Service.page(page, wrapper));\n }\n\n\n /**\n * 通过条件查询${tableComment}\n * @param ${className} 查询条件\n * @return R 对象列表\n */\n @Operation(summary = \"通过条件查询\" , description = \"通过条件查询对象\" )\n @GetMapping(\"/details\" )\n #if($isSpringBoot3)\n @HasPermission(\"${moduleName}_${functionName}_view\")\n #else\n @PreAuthorize(\"@pms.hasPermission(\'${moduleName}_${functionName}_view\')\" )\n #end\n public R getDetails(@ParameterObject ${ClassName}Entity ${className}) {\n return R.ok(${className}Service.listDeep(Wrappers.query(${className})));\n }\n\n /**\n * 新增${tableComment}\n *Line truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079924450590722, '主子表单V2025001\n', '${frontendPath}/src/views/${moduleName}/${functionName}/form.vue', '主子表单V2025001\n', '<template>\n <el-drawer :title=\"form.${pk.attrName} ? (detail ? \'详情\' : \'编辑\') : \'添加\'\" v-model=\"visible\" size=\"50%\">\n <el-form ref=\"dataFormRef\" :model=\"form\" :rules=\"dataRules\" :disabled=\"detail\" v-loading=\"loading\">\n <el-row :gutter=\"24\">\n#foreach($field in $formList)\n#if($field.attrName != ${pk.attrName})\n#if($formLayout == 1)\n <el-col :span=\"24\" class=\"mb20\">\n#elseif($formLayout == 2)\n <el-col :span=\"12\" class=\"mb20\">\n#end\n#if($field.formType == \'text\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" prop=\"${field.attrName}\">\n <el-input v-model=\"form.${field.attrName}\" placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'textarea\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" prop=\"${field.attrName}\">\n <el-input type=\"textarea\" v-model=\"form.${field.attrName}\" placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'select\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" prop=\"${field.attrName}\">\n <el-select v-model=\"form.${field.attrName}\" placeholder=\"请选择#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\">\n#if($field.fieldDict)\n <el-option :value=\"item.value\" :label=\"item.label\" v-for=\"(item, index) in ${field.fieldDict}\" :key=\"index\"></el-option>\n#else\n <el-option label=\"请选择\" value=\"0\"></el-option>\n#end\n </el-select>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'radio\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" prop=\"${field.attrName}\">\n <el-radio-group v-model=\"form.${field.attrName}\">\n#if($field.fieldDict)\n <el-radio :label=\"item.value\" v-for=\"(item, index) in ${field.fieldDict}\" border :key=\"index\">{{ item.label }}</el-radio>\n#else\n <el-radio label=\"${field.fieldComment}\" border>${field.fieldComment}</el-radio>\n#end\n </el-radio-group>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'checkbox\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" prop=\"${field.attrName}\">\n <el-checkbox-group v-model=\"form.${field.attrName}\">\n#if($field.fieldDict)\n <el-checkbox :label=\"item.value\" v-for=\"(item, index) in ${field.fieldDict}\" :key=\"index\">{{ item.label }}</el-checkbox>\n#else\n <el-checkbox label=\"启用\" name=\"type\"></el-checkbox>\n <el-checkbox label=\"禁用\" name=\"type\"></el-checkbox>\n#end\n </el-checkbox-group>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'date\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" prop=\"${field.attrName}\">\n <el-date-picker type=\"date\" placeholder=\"请选择#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" v-model=\"form.${field.attrName}\" :value-format=\"dateStr\"></el-date-picker>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'datetime\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" prop=\"${field.attrName}\">\n <el-date-picker type=\"datetime\" placeholder=\"请选择#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" v-model=\"form.${field.attrName}\" :value-format=\"dateTimeStr\"></el-date-picker>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'number\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\" prop=\"${field.attrName}\">\n <el-input-number :min=\"1\" :max=\"1000\" v-model=\"form.${field.attrName}\" placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end\"></el-input-number>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'upload-file\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${fieLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079924681277442, '主子表格V2025001\n', '${frontendPath}/src/views/${moduleName}/${functionName}/index.vue', '主子表格V2025001\n', '<template>\n <div class=\"layout-padding\">\n <div class=\"layout-padding-auto layout-padding-view\">\n#if($queryList)\n <el-row v-show=\"showSearch\">\n <el-form :model=\"state.queryForm\" ref=\"queryRef\" :inline=\"true\" @keyup.enter=\"getDataList\">\n#foreach($field in $queryList)\n#if($field.queryFormType == \'select\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-select v-model=\"state.queryForm.${field.attrName}\" placeholder=\"请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\">\n#if($field.fieldDict)\n <el-option \n :label=\"item.label\" \n :value=\"item.value\" \n v-for=\"(item, index) in ${field.fieldDict}\" \n :key=\"index\">\n </el-option>\n#else\n <el-option label=\"请选择\">0</el-option>\n#end\n </el-select>\n </el-form-item>\n#elseif($field.queryFormType == \'date\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-date-picker \n type=\"date\" \n placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" \n v-model=\"state.queryForm.${field.attrName}\">\n </el-date-picker>\n </el-form-item>\n#elseif($field.queryFormType == \'datetime\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-date-picker \n type=\"datetime\" \n placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" \n v-model=\"state.queryForm.${field.attrName}\">\n </el-date-picker>\n </el-form-item>\n#elseif($field.formType == \'radio\')\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-radio-group v-model=\"state.queryForm.${field.attrName}\">\n#if($field.fieldDict)\n <el-radio \n :label=\"item.value\" \n v-for=\"(item, index) in ${field.fieldDict}\" \n border \n :key=\"index\">\n {{ item.label }}\n </el-radio>\n#else\n <el-radio label=\"${field.fieldComment}\" border>${field.fieldComment}</el-radio>\n#end\n </el-radio-group>\n </el-form-item>\n#else\n <el-form-item label=\"#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" prop=\"${field.attrName}\">\n <el-input \n placeholder=\"请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end\" \n v-model=\"state.queryForm.${field.attrName}\"\n style=\"max-width: 180px\" \n />\n </el-form-item>\n#end\n#end\n <el-form-item>\n <el-button icon=\"search\" type=\"primary\" @click=\"getDataList\">\n 查询\n </el-button>\n <el-button icon=\"Refresh\" @click=\"resetQuery\">重置</el-button>\n </el-form-item>\n </el-form>\n </el-row>\n#end\n <el-row>\n <div class=\"mb8\" style=\"width: 100%\">\n <el-button \n icon=\"folder-add\" \n type=\"primary\" \n class=\"ml10\" \n @click=\"formDialogRef.openDialog()\"\n v-auth=\"\'${moduleName}_${functionName}_add\'\">\n 新增\n </el-button>\n <el-button \n plain \n :disabled=\"multiple\" \n icon=\"Delete\" \n type=\"primary\"\n v-auth=\"\'${moduleName}_${functionName}_del\'\" \n @click=\"handleDelete(selectObjs)\">\n 删除\n </el-button>\n <right-toolbar \n v-model:showSearch=\"showSearch\" \n :export=\"\'${moduleName}_${functionName}_export\'\"\n @exportExcel=\"exportExcel\" \n class=\"ml10 mr20\" \n style=\"float: right;\"\n @queryTable=\"getDataList\">\n </right-toolbar>\n </div>\n </el-row>\n <el-table \n :data=\"state.dataList\" \n v-loading=\"state.loading\" \n border \n :cell-style=\"tableStyle.cellStyle\" \n :header-cell-style=\"tableStyle.headerCellStyle\"\n @selection-chaLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1934079924903575554, '子MapperV2025001\n', '${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ChildClassName}Mapper.java', '子MapperV2025001\n', 'package ${package}.${moduleName}.mapper;\n\nimport ${package}.common.data.datascope.PigxBaseMapper;\nimport ${package}.${moduleName}.entity.${ChildClassName}Entity;\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ChildClassName}Mapper extends PigxBaseMapper<${ChildClassName}Entity> {\n\n}\n', '2025-06-15 10:46:02', '2025-06-15 10:46:02', '0', 1, 'admin', ' ');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (1,'ControllerV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/controller/${ClassName}Controller.java','ControllerV202611','## 查询条件按需导入:字符串字段和组织关键字用 StrUtil,其余类型用 Objects;复选框与日期范围两者都不用\n#set($needStrUtil = false)\n#set($needObjects = false)\n#foreach($field in $queryList)\n#if($field.formType == \'checkbox\' || $field.queryFormType == \'daterange\' || $field.queryFormType == \'datetimerange\')\n#elseif($field.formType.startsWith(\'org-\') || $field.attrType == \'String\')\n#set($needStrUtil = true)\n#else\n#set($needObjects = true)\n#end\n#end\n#set($hasOrgQuery = false)\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrgQuery = true)\n#end\n#end\n## 组织字段以 [{id,name}] JSON 存储,按 ${attrName}Keyword 对整列模糊查询,分页和导出共用\n#macro(orgKeywordParams)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), @RequestParam(required = false) String ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordDecl)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), String ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordArgs)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordFilters)\n#if($hasOrgQuery)\n // 组织字段对整列 JSON 做 LIKE:关键字为数字或 id/name 时会误命中,需精确匹配时改用数据库 JSON 函数\n#end\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))\n wrapper.like(StrUtil.isNotBlank(${field.attrName}Keyword), ${ClassName}Entity::$str.getProperty($field.attrName), ${field.attrName}Keyword);\n#end\n#end\n#end\n#set($permissionPrefix = \"${moduleName}_${functionName}\")\n#set($permissionPrefix = $permissionPrefix.toLowerCase())\npackage ${package}.${moduleName}.controller;\n\n#if($needStrUtil)\nimport cn.hutool.core.util.StrUtil;\n#end\nimport cn.hutool.core.util.ArrayUtil;\nimport cn.hutool.core.collection.CollUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport ${package}.common.core.util.R;\nimport ${package}.common.log.annotation.SysLog;\n#if($opensource)\nimport com.pig4cloud.plugin.excel.annotation.ResponseExcel;\nimport com.pig4cloud.plugin.excel.annotation.RequestExcel;\n#else\nimport ${package}.common.excel.annotation.ResponseExcel;\nimport ${package}.common.excel.annotation.RequestExcel;\n#end\nimport ${entityClassName};\nimport ${package}.${moduleName}.service.${ClassName}Service;\n\nimport io.swagger.v3.oas.annotations.security.SecurityRequirement;\n#if($isSpringBoot3)\nimport ${package}.common.security.annotation.HasPermission;\nimport org.springdoc.core.annotations.ParameterObject;\n#else\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springdoc.api.annotations.ParameterObject;\n#end\nimport org.springframework.http.HttpHeaders;\nimport io.swagger.v3.oas.annotations.tags.Tag;\nimport io.swagger.v3.oas.annotations.Operation;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.validation.BindingResult;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n#if($needObjects)\nimport java.util.Objects;\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@RestController\n@RequiredArgsConstructor\n@RequestMapping(\"/${functionName}\" )\n@Tag(description = \"${functionName}\" , name = \"${tableComment}管理\" )\n@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)\npublic class ${ClassName}Controller {\n\n private final ${ClassName}Service ${className}Service;\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param ${className} ${tableComment}\n * @return\n */\n @Operation(summary = \"分页查询\" , description = \"分页查询\" )\n @GetMapping(\"/page\" )\n #if($isSpringBoot3)\n @HasPermission(\"${permissionPrefix}_view\")\n #else\n @PreAuthorize(\"@pms.hasPermission(\'${permissionPrefix}_view\')\" )\n #end\n public R get${ClassName}Page(@ParameterObject Page page, @ParameterObject ${ClassName}Entity ${className}#orgKeywordParams()) {\n return R.ok(${className}Service.page(page, buildQueryWrapper(${className}#orgKeywordArgs())));\n }\n\n /**\n * 列表与导出共用的查询条件,保证导出结果与列表一致\n */\n private LambdaQueryWrapper<${ClassName}Entity> buildQueryWrapper(${ClassName}Entity ${className}#orgKeywordDecl()) {\n LambdaQueryWrapper<${ClassName}Entity> wrapper = Wrappers.lambdaLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (2,'ServiceV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/service/${ClassName}Service.java','ServiceV202611','package ${package}.${moduleName}.service;\n\nimport com.baomidou.mybatisplus.spring.service.IService;\nimport ${entityClassName};\n\npublic interface ${ClassName}Service extends IService<${ClassName}Entity> {\n\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (3,'ServiceImplV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/service/impl/${ClassName}ServiceImpl.java','ServiceImplV202611','package ${package}.${moduleName}.service.impl;\n\nimport com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;\nimport ${entityClassName};\nimport ${package}.${moduleName}.mapper.${ClassName}Mapper;\nimport ${package}.${moduleName}.service.${ClassName}Service;\nimport org.springframework.stereotype.Service;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Service\npublic class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}Entity> implements ${ClassName}Service {\n\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (4,'实体V202611','${entityPath}/src/main/java/${entityPackagePath}/${ClassName}Entity.java','实体V202611','#set($hasOrg = false)\n#foreach($field in $fieldList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\npackage ${entityPackage};\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.spring.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n#if($hasOrg)\nimport com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;\nimport ${package}.common.core.util.OrgRef;\nimport org.apache.fesod.sheet.annotation.ExcelIgnore;\nimport java.util.List;\n#end\n#if($isTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\n#foreach($import in $importList)\n#if(!$import.startsWith(\'java.lang.\'))\nimport $import;\n#end\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n#if($isTenant)\n@TenantTable\n#end\n@TableName(value = \"${tableName}\"#if($hasOrg), autoResultMap = true#end)\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = \"${tableComment}\")\npublic class ${ClassName}Entity extends Model<${ClassName}Entity> {\n\n#foreach ($field in $fieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.formType.startsWith(\'org-\'))\n @TableField(typeHandler = JacksonTypeHandler.class#if($field.autoFill == \'INSERT\' || $field.autoFill == \'INSERT_UPDATE\' || $field.autoFill == \'UPDATE\'), fill = FieldFill.${field.autoFill}#end)\n @ExcelIgnore\n#elseif($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description=\"$comment\"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType.startsWith(\'org-\'))\n private List<OrgRef> $field.attrName;\n#elseif($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#elseif($field.formType == \'daterange\' || $field.formType == \'datetimerange\')\n private String[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end\n#end\n#foreach ($field in $queryList)\n#if($field.queryFormType == \'daterange\' || $field.queryFormType == \'datetimerange\')\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment 查询范围\n */\n @TableField(exist = false)\n @Schema(description=\"$comment 查询范围\",hidden=true)\n private String[] ${field.attrName}Range;\n#end\n#end\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (5,'MapperV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ClassName}Mapper.java','MapperV202611','package ${package}.${moduleName}.mapper;\n\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport ${entityClassName};\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ClassName}Mapper extends BaseMapper<${ClassName}Entity> {\n\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (6,'Mapper.xmlV202611','${backendPath}/src/main/resources/mapper/${ClassName}Mapper.xml','Mapper.xmlV202611','<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n\n<mapper namespace=\"${package}.${moduleName}.mapper.${ClassName}Mapper\">\n\n <resultMap id=\"${className}Map\" type=\"${entityClassName}\">\n#foreach ($field in $fieldList)\n #if($field.primaryPk == \'1\')\n <id property=\"$field.attrName\" column=\"$field.fieldName\"/>\n #else\n <result property=\"$field.attrName\" column=\"$field.fieldName\"#if($field.formType.startsWith(\'org-\')) typeHandler=\"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler\"#end/>\n #end\n#end\n </resultMap>\n</mapper>\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (7,'权限菜单V202611','${backendPath}/menu/${functionName}_menu.sql','权限菜单V202611','#set($permissionPrefix = \"${moduleName}_${functionName}\")\n#set($permissionPrefix = $permissionPrefix.toLowerCase())\n-- 该脚本不要直接执行, 注意维护菜单的父节点ID 默认 父节点-1 , #if(!$opensource)默认租户 1#end\n#set($menuId=${dateTool.getSystemTime()})\n\n-- 菜单SQL\ninsert into sys_menu ( menu_id,parent_id, path, permission, menu_type, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${menuId}, \'-1\', \'/${moduleName}/${functionName}/index\', \'\', \'0\', \'icon-bangzhushouji\', \'0\', null , \'8\', null , \'${tableComment}管理\'#if(!$opensource), 1#end);\n\n-- 菜单对应按钮SQL\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,1)},${menuId}, \'${permissionPrefix}_view\', \'1\', null, \'1\', \'0\', null, \'0\', null, \'${tableComment}查看\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,2)},${menuId}, \'${permissionPrefix}_add\', \'1\', null, \'1\', \'0\', null, \'1\', null, \'${tableComment}新增\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,3)},${menuId}, \'${permissionPrefix}_edit\', \'1\', null, \'1\', \'0\', null, \'2\', null, \'${tableComment}修改\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,4)},${menuId}, \'${permissionPrefix}_del\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'${tableComment}删除\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,5)},${menuId}, \'${permissionPrefix}_export\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'导入导出\'#if(!$opensource), 1#end);\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (8,'api.tsV202611','${frontendPath}/src/api/${moduleName}/${functionName}.ts','api.tsV202611','import request from \"/@/utils/request\"\n\n// ========== 基础CRUD接口 ==========\n\n/**\n * 分页查询列表数据\n * @param query - 查询参数对象\n * @returns Promise<分页数据>\n */\nexport function fetchList(query?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/page\',\n method: \'get\',\n params: query\n })\n}\n\n/**\n * 新增数据\n * @param obj - 要新增的数据对象\n * @returns Promise<boolean> - 操作结果\n */\nexport function addObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'post\',\n data: obj\n })\n}\n\n/**\n * 获取详情数据\n * @param obj - 查询参数对象(包含ID等)\n * @returns Promise<数据详情>\n */\nexport function getObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/details\',\n method: \'get\',\n params: obj\n })\n}\n\n/**\n * 批量删除数据\n * @param ids - 要删除的ID数组\n * @returns Promise<操作结果>\n */\nexport function delObjs(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'delete\',\n data: ids\n })\n}\n\n/**\n * 更新数据\n * @param obj - 要更新的数据对象\n * @returns Promise<操作结果>\n */\nexport function putObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'put\',\n data: obj\n })\n}\n\n// ========== 工具函数 ==========\n\n/**\n * 验证字段值唯一性\n * @param rule - 验证规则对象\n * @param value - 要验证的值\n * @param callback - 验证回调函数\n * @param isEdit - 是否为编辑模式\n * \n * @example\n * // 在表单验证规则中使用\n * fieldName: [\n * {\n * validator: (rule, value, callback) => {\n * validateExist(rule, value, callback, form.${pk.attrName} !== \'\');\n * },\n * trigger: \'blur\',\n * },\n * ]\n */\nexport function validateExist(rule: any, value: any, callback: any, isEdit: boolean) {\n // 编辑模式下跳过验证\n if (isEdit) {\n return callback();\n }\n\n // 查询是否存在相同值\n getObj({ [rule.field]: value }).then((response) => {\n const result = response.data;\n if (result !== null && result.length > 0) {\n callback(new Error(\'数据已经存在\'));\n } else {\n callback();\n }\n });\n}\n\n#if($ChildClassName)\n// ========== 子表相关接口 ==========\n\n/**\n * 删除子表数据\n * @param ids - 要删除的子表数据ID数组\n * @returns Promise<操作结果>\n */\nexport function delChildObj(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/child\',\n method: \'delete\',\n data: ids\n })\n}\n#end\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (9,'表格V202611','${frontendPath}/src/views/${moduleName}/${functionName}/index.vue','表格V202611','## 有字典字段时才导入 useDict\n#set($hasDictField = false)\n#foreach($field in $queryList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n#foreach($field in $gridList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n#set($permissionPrefix = "${moduleName}_${functionName}")\n#set($permissionPrefix = $permissionPrefix.toLowerCase())\n<template>\n <div class="layout-padding">\n <div class="layout-padding-auto layout-padding-view">\n#if($queryList)\n <!-- 查询表单区域 -->\n <el-row v-show="showSearch">\n <el-form :model="state.queryForm" ref="queryRef" :inline="true" @keyup.enter="getDataList">\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))#set($queryKey = "${field.attrName}Keyword")#else#set($queryKey = $field.attrName)#end\n#if($field.queryFormType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-select v-model="state.queryForm.${field.attrName}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end">\n#if($field.fieldDict)\n <el-option \n :label="item.label" \n :value="item.value" \n v-for="(item, index) in ${field.fieldDict}" \n :key="index"\n />\n#else\n <el-option label="请选择" value="0" />\n#end\n </el-select>\n </el-form-item>\n#elseif($field.queryFormType == \'date\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-date-picker\n type="date"\n placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"\n v-model="state.queryForm.${field.attrName}"\n :value-format="dateStr"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'daterange\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}Range">\n <el-date-picker\n type="daterange"\n range-separator="至"\n start-placeholder="开始日期"\n end-placeholder="结束日期"\n v-model="state.queryForm.${field.attrName}Range"\n :value-format="dateStr"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'datetime\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-date-picker\n type="datetime"\n placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"\n v-model="state.queryForm.${field.attrName}"\n :value-format="dateTimeStr"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'datetimerange\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}Range">\n <el-date-picker\n type="datetimerange"\n range-separator="至"\n start-placeholder="开始时间"\n end-placeholder="结束时间"\n v-model="state.queryForm.${field.attrName}Range"\n :value-format="dateTimeStr"\n />\n </el-form-item>\n#elseif($field.formType == \'radio\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-radio-group v-model="state.queryForm.${field.attrName}">\n#if($field.fieldDict)\n <el-radio \n :label="item.value" \n v-for="(item, index) in ${field.fieldDict}" \n border \n :key="index"\n >\n {{ item.label }}\n </el-radio>\n#else\n <el-radio label="${field.fieldComment}" border>\n ${field.fieldComment}\n </el-radio>\n#end\n </el-rLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (10,'表单V202611','${frontendPath}/src/views/${moduleName}/${functionName}/form.vue','表单V202611','## 有字典字段时才导入 useDict\n#set($hasDictField = false)\n#foreach($field in $formList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n#set($hasDuplicate = false)\n#foreach($field in $formList)\n#if($field.formValidator == \'duplicate\')\n#set($hasDuplicate = true)\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n#set($hasOrg = false)\n#foreach($field in $formList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\n<template>\n <el-dialog :title="form.${pk.attrName} ? \'编辑\' : \'新增\'" v-model="visible"\n :close-on-click-modal="false" draggable>\n <el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="90px" v-loading="loading">\n <el-row :gutter="24">\n#foreach($field in $formList)\n#if($field.attrName != ${pk.attrName})\n#if($formLayout == 1)\n <el-col :span="24" class="mb20">\n#elseif($formLayout == 2)\n <el-col :span="12" class="mb20">\n#end\n#if($field.formType.startsWith(\'org-\'))\n#set($orgType = $field.formType.replace(\'org-\', \'\').replace(\'-multiple\', \'\'))\n <el-form-item label="${field.fieldComment}" prop="${field.attrName}">\n <OrgSelect v-model="form.${field.attrName}" value-type="item" type="${orgType}" :multiple="#if($field.formType.endsWith(\'-multiple\'))true#else false#end" label="${field.fieldComment}" :disabled="loading" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'switch\')\n#switchValues($field)\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-switch :model-value="String(form.${field.attrName}) === String($switchOn)" @change="(checked) => (form.${field.attrName} = checked ? $switchOn : $switchOff)" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'text\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-input v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'textarea\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-input type="textarea" v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-select v-model="form.${field.attrName}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end">\n#if($field.fieldDict)\n <el-option :value="item.value" :label="item.label" v-for="(item, index) in ${field.fieldDict}" :key="index"></el-option>\n#else\n <el-option label="请选择" value="0"></el-option>\n#end\n </el-select>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'radio\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-radio-group v-model="form.${field.attrName}">\n#if($field.fieldDict)\n <el-radio :label="item.value" v-for="(item, index) in ${field.fieldDict}" border :key="index">{{ item.label }}</el-radio>\n#else\n <el-radio label="${field.fieldComment}" border>${field.fieldComment}</el-radio>\n#end\n </el-radio-group>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'checkbox\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-checkbox-group v-model="form.${field.attrName}">\n#if($field.fieldDict)\n <el-checkbox :label="item.value" v-for="(item, index) in ${field.fieldDict}" :key="index">{{ item.label }}</el-checkbox>\n#else\n <el-checkbox label="启用"Line truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (11,'主子ServiceV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/service/${ClassName}Service.java','主子ServiceV202611','#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPk = $field)\n#end\n#end\npackage ${package}.${moduleName}.service;\n\nimport com.github.yulichang.extension.mapping.base.MPJDeepService;\nimport ${entityClassName};\n\npublic interface ${ClassName}Service extends MPJDeepService<${ClassName}Entity> {\n Boolean saveDeep(${ClassName}Entity ${className});\n\n Boolean updateDeep(${ClassName}Entity ${className});\n\n Boolean removeDeep(${pk.attrType}[] ids);\n\n Boolean removeChild(${childPk.attrType}[] ids);\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (12,'主子ServiceImplV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/service/impl/${ClassName}ServiceImpl.java','主子ServiceImplV202611','#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPk = $field)\n#end\n#end\npackage ${package}.${moduleName}.service.impl;\n\nimport com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;\nimport ${entityClassName};\nimport ${package}.${moduleName}.mapper.${ClassName}Mapper;\nimport ${package}.${moduleName}.service.${ClassName}Service;\nimport org.springframework.stereotype.Service;\nimport cn.hutool.core.collection.CollUtil;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport ${entityPackage}.${ChildClassName}Entity;\nimport ${package}.${moduleName}.mapper.${ChildClassName}Mapper;\nimport org.springframework.transaction.annotation.Transactional;\nimport lombok.RequiredArgsConstructor;\nimport java.util.Objects;\nimport java.util.List;\nimport java.util.stream.Collectors;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Service\n@RequiredArgsConstructor\npublic class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}Entity> implements ${ClassName}Service {\n\n private final ${ChildClassName}Mapper ${childClassName}Mapper;\n\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean saveDeep(${ClassName}Entity ${className}) {\n baseMapper.insert(${className});\n for (${ChildClassName}Entity ${childClassName} : ${className}.get${ChildClassName}List()) {\n ${childClassName}.$str.setProperty($childField)(${className}.$str.getProperty($mainField)());\n ${childClassName}Mapper.insert( ${childClassName});\n }\n\n return Boolean.TRUE;\n }\n\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean updateDeep(${ClassName}Entity ${className}) {\n baseMapper.updateById(${className});\n for (${ChildClassName}Entity ${childClassName} : ${className}.get${ChildClassName}List()) {\n#set($getChildPkName=$str.getProperty(${childPk.attrName}))\n if (Objects.isNull(${childClassName}.$getChildPkName())) {\n ${childClassName}.$str.setProperty($childField)(${className}.$str.getProperty($mainField)());\n ${childClassName}Mapper.insert(${childClassName});\n } else {\n ${childClassName}Mapper.updateById(${childClassName});\n }\n }\n return Boolean.TRUE;\n }\n\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean removeDeep(${pk.attrType}[] ids) {\n List<${ClassName}Entity> records = baseMapper.selectBatchIds(CollUtil.toList(ids));\n if (CollUtil.isEmpty(records)) {\n return Boolean.TRUE;\n }\n ${childClassName}Mapper.delete(Wrappers.<${ChildClassName}Entity>lambdaQuery()\n .in(${ChildClassName}Entity::$str.getProperty($childField), records.stream()\n .map(${ClassName}Entity::$str.getProperty($mainField)).collect(Collectors.toList())));\n baseMapper.deleteBatchIds(CollUtil.toList(ids));\n return Boolean.TRUE;\n }\n\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean removeChild(${childPk.attrType}[] ids) {\n ${childClassName}Mapper.deleteBatchIds(CollUtil.toList(ids));\n return Boolean.TRUE;\n }\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (13,'主实体V202611','${entityPath}/src/main/java/${entityPackagePath}/${ClassName}Entity.java','主实体V202611','#set($hasOrg = false)\n#foreach($field in $fieldList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\npackage ${entityPackage};\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.spring.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n#if($hasOrg)\nimport com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;\nimport ${package}.common.core.util.OrgRef;\n#end\n#if($isTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\n#foreach($import in $importList)\n#if(!$import.startsWith(\'java.lang.\'))\nimport $import;\n#end\n#end\nimport org.apache.fesod.sheet.annotation.ExcelIgnore;\nimport com.github.yulichang.annotation.EntityMapping;\nimport java.util.List;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n#if($isTenant)\n@TenantTable\n#end\n@TableName(value = \"${tableName}\"#if($hasOrg), autoResultMap = true#end)\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = \"${tableComment}\")\npublic class ${ClassName}Entity extends Model<${ClassName}Entity> {\n\n#foreach ($field in $fieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.formType.startsWith(\'org-\'))\n @TableField(typeHandler = JacksonTypeHandler.class#if($field.autoFill == \'INSERT\' || $field.autoFill == \'INSERT_UPDATE\' || $field.autoFill == \'UPDATE\'), fill = FieldFill.${field.autoFill}#end)\n @ExcelIgnore\n#elseif($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description=\"$comment\"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType.startsWith(\'org-\'))\n private List<OrgRef> $field.attrName;\n#elseif($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#elseif($field.formType == \'daterange\' || $field.formType == \'datetimerange\')\n @TableField(typeHandler = JacksonTypeHandler.class)\n private String[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end\n#end\n#foreach ($field in $queryList)\n#if($field.queryFormType == \'daterange\' || $field.queryFormType == \'datetimerange\')\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment 查询范围\n */\n @TableField(exist = false)\n @Schema(description=\"$comment 查询范围\",hidden=true)\n private String[] ${field.attrName}Range;\n#end\n#end\n @ExcelIgnore\n @TableField(exist = false)\n @EntityMapping(thisField = \"$mainField\", joinField = \"$childField\")\n private List<${ChildClassName}Entity> ${childClassName}List;\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (14,'MapperV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ClassName}Mapper.java','MapperV202611','package ${package}.${moduleName}.mapper;\n\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport ${entityClassName};\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ClassName}Mapper extends BaseMapper<${ClassName}Entity> {\n\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (15,'Mapper.xmlV202611','${backendPath}/src/main/resources/mapper/${ClassName}Mapper.xml','Mapper.xmlV202611','<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n\n<mapper namespace=\"${package}.${moduleName}.mapper.${ClassName}Mapper\">\n\n <resultMap id=\"${className}Map\" type=\"${entityClassName}\">\n#foreach ($field in $fieldList)\n #if($field.primaryPk == \'1\')\n <id property=\"$field.attrName\" column=\"$field.fieldName\"/>\n #else\n <result property=\"$field.attrName\" column=\"$field.fieldName\"#if($field.formType.startsWith(\'org-\')) typeHandler=\"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler\"#end/>\n #end\n#end\n </resultMap>\n</mapper>\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (16,'权限菜单V202611','${backendPath}/menu/${functionName}_menu.sql','权限菜单V202611','#set($permissionPrefix = \"${moduleName}_${functionName}\")\n#set($permissionPrefix = $permissionPrefix.toLowerCase())\n-- 该脚本不要直接执行, 注意维护菜单的父节点ID 默认 父节点-1 , #if(!$opensource)默认租户 1#end\n#set($menuId=${dateTool.getSystemTime()})\n\n-- 菜单SQL\ninsert into sys_menu ( menu_id,parent_id, path, permission, menu_type, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${menuId}, \'-1\', \'/${moduleName}/${functionName}/index\', \'\', \'0\', \'icon-bangzhushouji\', \'0\', null , \'8\', null , \'${tableComment}管理\'#if(!$opensource), 1#end);\n\n-- 菜单对应按钮SQL\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,1)},${menuId}, \'${permissionPrefix}_view\', \'1\', null, \'1\', \'0\', null, \'0\', null, \'${tableComment}查看\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,2)},${menuId}, \'${permissionPrefix}_add\', \'1\', null, \'1\', \'0\', null, \'1\', null, \'${tableComment}新增\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,3)},${menuId}, \'${permissionPrefix}_edit\', \'1\', null, \'1\', \'0\', null, \'2\', null, \'${tableComment}修改\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,4)},${menuId}, \'${permissionPrefix}_del\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'${tableComment}删除\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,5)},${menuId}, \'${permissionPrefix}_export\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'导入导出\'#if(!$opensource), 1#end);\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (17,'api.tsV202611','${frontendPath}/src/api/${moduleName}/${functionName}.ts','api.tsV202611','import request from \"/@/utils/request\"\n\n// ========== 基础CRUD接口 ==========\n\n/**\n * 分页查询列表数据\n * @param query - 查询参数对象\n * @returns Promise<分页数据>\n */\nexport function fetchList(query?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/page\',\n method: \'get\',\n params: query\n })\n}\n\n/**\n * 新增数据\n * @param obj - 要新增的数据对象\n * @returns Promise<boolean> - 操作结果\n */\nexport function addObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'post\',\n data: obj\n })\n}\n\n/**\n * 获取详情数据\n * @param obj - 查询参数对象(包含ID等)\n * @returns Promise<数据详情>\n */\nexport function getObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/details\',\n method: \'get\',\n params: obj\n })\n}\n\n/**\n * 批量删除数据\n * @param ids - 要删除的ID数组\n * @returns Promise<操作结果>\n */\nexport function delObjs(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'delete\',\n data: ids\n })\n}\n\n/**\n * 更新数据\n * @param obj - 要更新的数据对象\n * @returns Promise<操作结果>\n */\nexport function putObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'put\',\n data: obj\n })\n}\n\n// ========== 工具函数 ==========\n\n/**\n * 验证字段值唯一性\n * @param rule - 验证规则对象\n * @param value - 要验证的值\n * @param callback - 验证回调函数\n * @param isEdit - 是否为编辑模式\n * \n * @example\n * // 在表单验证规则中使用\n * fieldName: [\n * {\n * validator: (rule, value, callback) => {\n * validateExist(rule, value, callback, form.${pk.attrName} !== \'\');\n * },\n * trigger: \'blur\',\n * },\n * ]\n */\nexport function validateExist(rule: any, value: any, callback: any, isEdit: boolean) {\n // 编辑模式下跳过验证\n if (isEdit) {\n return callback();\n }\n\n // 查询是否存在相同值\n getObj({ [rule.field]: value }).then((response) => {\n const result = response.data;\n if (result !== null && result.length > 0) {\n callback(new Error(\'数据已经存在\'));\n } else {\n callback();\n }\n });\n}\n\n#if($ChildClassName)\n// ========== 子表相关接口 ==========\n\n/**\n * 删除子表数据\n * @param ids - 要删除的子表数据ID数组\n * @returns Promise<操作结果>\n */\nexport function delChildObj(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/child\',\n method: \'delete\',\n data: ids\n })\n}\n#end\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (18,'子实体V202611','${entityPath}/src/main/java/${entityPackagePath}/${ChildClassName}Entity.java','子实体V202611','#set($hasOrg = false)\n#foreach($field in $childFieldList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\npackage ${entityPackage};\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.spring.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\n#if($isChildTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n#if($hasOrg)\nimport com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;\nimport ${package}.common.core.util.OrgRef;\nimport java.util.List;\n#end\n#set($childImports = [])\n#foreach($field in $childFieldList)\n#if($field.packageName && !$field.packageName.startsWith(\'java.lang.\') && !$childImports.contains($field.packageName))\n#set($void = $childImports.add($field.packageName))\n#end\n#end\n#foreach($import in $childImports)\nimport $import;\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n#if($isChildTenant)\n@TenantTable\n#end\n@TableName(value = \"${childTableName}\"#if($hasOrg), autoResultMap = true#end)\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = \"${childTableName}\")\npublic class ${ChildClassName}Entity extends Model<${ChildClassName}Entity> {\n\n#foreach ($field in $childFieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.formType.startsWith(\'org-\'))\n @TableField(typeHandler = JacksonTypeHandler.class#if($field.autoFill == \'INSERT\' || $field.autoFill == \'INSERT_UPDATE\' || $field.autoFill == \'UPDATE\'), fill = FieldFill.${field.autoFill}#end)\n#elseif($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description=\"$comment\"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType.startsWith(\'org-\'))\n private List<OrgRef> $field.attrName;\n#elseif($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end \n#end\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (19,'主子ControllerV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/controller/${ClassName}Controller.java','主子ControllerV202611','## 查询条件按需导入:字符串字段和组织关键字用 StrUtil,其余类型用 Objects;复选框与日期范围两者都不用\n#set($needStrUtil = false)\n#set($needObjects = false)\n#foreach($field in $queryList)\n#if($field.formType == \'checkbox\' || $field.queryFormType == \'daterange\' || $field.queryFormType == \'datetimerange\')\n#elseif($field.formType.startsWith(\'org-\') || $field.attrType == \'String\')\n#set($needStrUtil = true)\n#else\n#set($needObjects = true)\n#end\n#end\n#set($hasOrgQuery = false)\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrgQuery = true)\n#end\n#end\n## 组织字段以 [{id,name}] JSON 存储,按 ${attrName}Keyword 对整列模糊查询,分页和导出共用\n#macro(orgKeywordParams)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), @RequestParam(required = false) String ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordDecl)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), String ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordArgs)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordFilters)\n#if($hasOrgQuery)\n // 组织字段对整列 JSON 做 LIKE:关键字为数字或 id/name 时会误命中,需精确匹配时改用数据库 JSON 函数\n#end\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))\n wrapper.like(StrUtil.isNotBlank(${field.attrName}Keyword), ${ClassName}Entity::$str.getProperty($field.attrName), ${field.attrName}Keyword);\n#end\n#end\n#end\n#set($permissionPrefix = \"${moduleName}_${functionName}\")\n#set($permissionPrefix = $permissionPrefix.toLowerCase())\n#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPk = $field)\n#end\n#end\npackage ${package}.${moduleName}.controller;\n\n#if($needStrUtil)\nimport cn.hutool.core.util.StrUtil;\n#end\nimport cn.hutool.core.util.ArrayUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport ${package}.common.core.util.R;\nimport ${package}.common.log.annotation.SysLog;\n#if($opensource)\nimport com.pig4cloud.plugin.excel.annotation.ResponseExcel;\nimport com.pig4cloud.plugin.excel.annotation.RequestExcel;\n#else\nimport ${package}.common.excel.annotation.ResponseExcel;\nimport ${package}.common.excel.annotation.RequestExcel;\n#end\nimport ${entityClassName};\nimport ${package}.${moduleName}.service.${ClassName}Service;\nimport io.swagger.v3.oas.annotations.security.SecurityRequirement;\n#if($isSpringBoot3)\nimport ${package}.common.security.annotation.HasPermission;\nimport org.springdoc.core.annotations.ParameterObject;\n#else\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springdoc.api.annotations.ParameterObject;\n#end\nimport org.springframework.http.HttpHeaders;\nimport io.swagger.v3.oas.annotations.tags.Tag;\nimport io.swagger.v3.oas.annotations.Operation;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.validation.BindingResult;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n#if($needObjects)\nimport java.util.Objects;\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@RestController\n@RequiredArgsConstructor\n@RequestMapping(\"/${functionName}\" )\n@Tag(description = \"${functionName}\" , name = \"${tableComment}管理\" )\n@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)\npublic class ${ClassName}Controller {\n\n private final ${ClassName}Service ${className}Service;\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param ${className} ${tableComment}\n * @return\n */\n @Operation(summary = \"分页查询\" , description = \"分页查询\" )\n @GetMapping(\"/page\" )\n #if($isSpringBoot3)\n @HasPermission(\"${permissionPrefix}_view\")\n #else\n @PreAuthorize(\"@pms.hasPermission(\'${permissionPrefix}_view\')\" )\n #end\n public R get${ClassName}Page(@ParameterObject Page page, @ParameterObject ${ClassName}Entity ${className}#orgKeywordParams()) {\n return R.ok(${className}Service.page(page, buildQueryWrapper(${className}#orgKeywordArgs())));\n }\n\n /**\n * 列表与导出共用的查询条件,保证导出结果与列表一致\n */\n private LambdaQueryWrapper<${ClassName}Entity> buildQueryWrapper(${ClassName}Entity ${className}#orgKeywordDecl()) {\Line truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (20,'主子表单V202611','${frontendPath}/src/views/${moduleName}/${functionName}/form.vue','主子表单V202611','## 有字典字段时才导入 useDict\n#set($hasDictField = false)\n#foreach($field in $formList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n#set($hasDuplicate = false)\n#foreach($field in $formList)\n#if($field.formValidator == \'duplicate\')\n#set($hasDuplicate = true)\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n#set($hasOrg = false)\n#foreach($field in $formList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\n#foreach($field in $childFieldList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\n<template>\n <el-drawer :title="form.${pk.attrName} ? (detail ? \'详情\' : \'编辑\') : \'添加\'" v-model="visible" size="50%">\n <el-form ref="dataFormRef" :model="form" :rules="dataRules" :disabled="detail" v-loading="loading">\n <el-row :gutter="24">\n#foreach($field in $formList)\n#if($field.attrName != ${pk.attrName})\n#if($formLayout == 1)\n <el-col :span="24" class="mb20">\n#elseif($formLayout == 2)\n <el-col :span="12" class="mb20">\n#end\n#if($field.formType.startsWith(\'org-\'))\n#set($orgType = $field.formType.replace(\'org-\', \'\').replace(\'-multiple\', \'\'))\n <el-form-item label="${field.fieldComment}" prop="${field.attrName}">\n <OrgSelect v-model="form.${field.attrName}" value-type="item" type="${orgType}" :multiple="#if($field.formType.endsWith(\'-multiple\'))true#else false#end" label="${field.fieldComment}" :disabled="loading || detail" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'switch\')\n#switchValues($field)\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-switch :model-value="String(form.${field.attrName}) === String($switchOn)" @change="(checked) => (form.${field.attrName} = checked ? $switchOn : $switchOff)" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'text\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end" prop="${field.attrName}">\n <el-input v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'textarea\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end" prop="${field.attrName}">\n <el-input type="textarea" v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end" prop="${field.attrName}">\n <el-select v-model="form.${field.attrName}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end">\n#if($field.fieldDict)\n <el-option :value="item.value" :label="item.label" v-for="(item, index) in ${field.fieldDict}" :key="index"></el-option>\n#else\n <el-option label="请选择" value="0"></el-option>\n#end\n </el-select>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'radio\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end" prop="${field.attrName}">\n <el-radio-group v-model="form.${field.attrName}">\n#if($field.fieldDict)\n <el-radio :label="item.value" v-for="(item, index) in ${field.fieldDict}" border :key="index">{{ item.label }}</el-radio>\n#else\n <el-radio label="${field.fieldComment}" border>${field.fieldComment}</el-radio>\n#end\n </el-radio-group>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'checkbox\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.fieldName}#end" prop="${field.attrName}">\n <el-checkbox-group v-model="form.${field.attrName}">\n#if($field.fieldDict)\n <el-checkbox :label="item.value" v-fLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (21,'主子表格V202611','${frontendPath}/src/views/${moduleName}/${functionName}/index.vue','主子表格V202611','## 有字典字段时才导入 useDict\n#set($hasDictField = false)\n#foreach($field in $queryList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n#foreach($field in $gridList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n#set($permissionPrefix = "${moduleName}_${functionName}")\n#set($permissionPrefix = $permissionPrefix.toLowerCase())\n<template>\n <div class="layout-padding">\n <div class="layout-padding-auto layout-padding-view">\n#if($queryList)\n <el-row v-show="showSearch">\n <el-form :model="state.queryForm" ref="queryRef" :inline="true" @keyup.enter="getDataList">\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))#set($queryKey = "${field.attrName}Keyword")#else#set($queryKey = $field.attrName)#end\n#if($field.queryFormType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-select v-model="state.queryForm.${field.attrName}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end">\n#if($field.fieldDict)\n <el-option \n :label="item.label" \n :value="item.value" \n v-for="(item, index) in ${field.fieldDict}" \n :key="index">\n </el-option>\n#else\n <el-option label="请选择">0</el-option>\n#end\n </el-select>\n </el-form-item>\n#elseif($field.queryFormType == \'date\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-date-picker\n type="date"\n placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"\n :value-format="dateStr"\n v-model="state.queryForm.${field.attrName}"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'daterange\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}Range">\n <el-date-picker\n type="daterange"\n range-separator="至"\n start-placeholder="开始日期"\n end-placeholder="结束日期"\n v-model="state.queryForm.${field.attrName}Range"\n :value-format="dateStr"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'datetime\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-date-picker\n type="datetime"\n placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"\n :value-format="dateTimeStr"\n v-model="state.queryForm.${field.attrName}"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'datetimerange\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}Range">\n <el-date-picker\n type="datetimerange"\n range-separator="至"\n start-placeholder="开始时间"\n end-placeholder="结束时间"\n v-model="state.queryForm.${field.attrName}Range"\n :value-format="dateTimeStr"\n />\n </el-form-item>\n#elseif($field.formType == \'radio\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-radio-group v-model="state.queryForm.${field.attrName}">\n#if($field.fieldDict)\n <el-radio \n :label="item.value" \n v-for="(item, index) in ${field.fieldDict}" \n border \n :key="index">\n {{ item.label }}\n </el-radio>\n#else\n <el-radio label="${field.fieldComment}" border>${field.fieldComment}</el-radio>\n#end\n </el-radio-group>\n </el-form-item>\n#else\n <elLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (22,'子MapperV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ChildClassName}Mapper.java','子MapperV202611','package ${package}.${moduleName}.mapper;\n\nimport ${package}.common.data.datascope.PigxBaseMapper;\nimport ${entityPackage}.${ChildClassName}Entity;\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ChildClassName}Mapper extends PigxBaseMapper<${ChildClassName}Entity> {\n\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (23,'树形ControllerV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/controller/${ClassName}Controller.java','树形ControllerV202611','## 查询条件按需导入:字符串字段用 StrUtil,其余类型用 Objects;复选框与日期范围两者都不用\n#set($needStrUtil = false)\n#set($needObjects = false)\n#foreach($field in $queryList)\n#if($field.formType == \'checkbox\' || $field.queryFormType == \'daterange\' || $field.queryFormType == \'datetimerange\')\n#elseif($field.formType.startsWith(\'org-\') || $field.attrType == \'String\')\n#set($needStrUtil = true)\n#else\n#set($needObjects = true)\n#end\n#end\n#set($hasOrgQuery = false)\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrgQuery = true)\n#end\n#end\n## 组织字段以 [{id,name}] JSON 存储,按 ${attrName}Keyword 对整列模糊查询,分页和导出共用\n#macro(orgKeywordParams)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), @RequestParam(required = false) String ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordDecl)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), String ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordArgs)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordFilters)\n#if($hasOrgQuery)\n // 组织字段对整列 JSON 做 LIKE:关键字为数字或 id/name 时会误命中,需精确匹配时改用数据库 JSON 函数\n#end\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))\n wrapper.like(StrUtil.isNotBlank(${field.attrName}Keyword), ${ClassName}Entity::$str.getProperty($field.attrName), ${field.attrName}Keyword);\n#end\n#end\n#end\npackage ${package}.${moduleName}.controller;\n\n#if($queryList)\n#if($needStrUtil)\nimport cn.hutool.core.util.StrUtil;\n#end\n#end\nimport cn.hutool.core.util.ArrayUtil;\nimport cn.hutool.core.collection.CollUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport ${package}.common.core.util.R;\nimport ${package}.common.log.annotation.SysLog;\n#if($opensource)\nimport com.pig4cloud.plugin.excel.annotation.ResponseExcel;\nimport com.pig4cloud.plugin.excel.annotation.RequestExcel;\n#else\nimport ${package}.common.excel.annotation.ResponseExcel;\nimport ${package}.common.excel.annotation.RequestExcel;\n#end\nimport ${entityClassName};\nimport ${package}.${moduleName}.service.${ClassName}Service;\n\nimport io.swagger.v3.oas.annotations.security.SecurityRequirement;\n#if($isSpringBoot3)\nimport ${package}.common.security.annotation.HasPermission;\nimport org.springdoc.core.annotations.ParameterObject;\n#else\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springdoc.api.annotations.ParameterObject;\n#end\nimport org.springframework.http.HttpHeaders;\nimport io.swagger.v3.oas.annotations.tags.Tag;\nimport io.swagger.v3.oas.annotations.Operation;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.validation.BindingResult;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n#if($needObjects)\nimport java.util.Objects;\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@RestController\n@RequiredArgsConstructor\n@RequestMapping("/${functionName}" )\n@Tag(description = "${functionName}" , name = "${tableComment}管理" )\n@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)\npublic class ${ClassName}Controller {\n\n private final ${ClassName}Service ${className}Service;\n\n /**\n * 获取树形列表\n * @param ${className} ${tableComment}\n * @return\n */\n @Operation(summary = "获取树形列表" , description = "获取树形列表" )\n @GetMapping("/tree" )\n #if($isSpringBoot3)\n @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view")\n #else\n @PreAuthorize("@pms.hasPermission(\'$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view\')" )\n #end\n public R get${ClassName}Tree(@ParameterObject ${ClassName}Entity ${className}#orgKeywordParams()) {\n return R.ok(${className}Service.buildTree(buildQueryWrapper(${className}#orgKeywordArgs())));\n }\n\n /**\n * 列表与导出共用的查询条件,保证导出结果与列表一致\n */\n private LambdaQueryWrapper<${ClassName}Entity> buildQueryWrapper(${ClassName}Entity ${className}#orgKeywordDecl()) {\n LambdaQueryWrapper<${ClassName}Entity> wrapper = Wrappers.lambdaQuery();\n#orgKeywordFilters()\n#foreach ($field in $queryList)\n#if(!$field.formType.startsWith(\'org-\'))\n#set($getAttrName=$str.getProperty($field.attLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (24,'树形ServiceV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/service/${ClassName}Service.java','树形ServiceV202611','package ${package}.${moduleName}.service;\n\nimport cn.hutool.core.lang.tree.Tree;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.spring.service.IService;\nimport ${entityClassName};\n\nimport java.util.List;\n\n/**\n * ${tableComment} Service接口\n *\n * @author ${author}\n * @date ${datetime}\n */\npublic interface ${ClassName}Service extends IService<${ClassName}Entity> {\n\n /**\n * 构建树形结构数据\n * @param wrapper 查询条件\n * @return 树形结构数据\n */\n List<Tree<${pk.attrType}>> buildTree(LambdaQueryWrapper<${ClassName}Entity> wrapper);\n\n /**\n * 递归删除节点及其子节点\n * @param ids 要删除的节点ID列表\n * @return 删除结果\n */\n boolean removeBatchByIds(List<${pk.attrType}> ids);\n} ','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (25,'树形ServiceImplV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/service/impl/${ClassName}ServiceImpl.java','树形ServiceImplV202611','## 根节点 ID 按主键类型生成,与 Tree<${pk.attrType}> 类型一致\n#if($pk.attrType == \'Long\')\n#set($treeRootId = \'0L\')\n#elseif($pk.attrType == \'String\')\n#set($treeRootId = \'"0"\')\n#else\n#set($treeRootId = \'0\')\n#end\npackage ${package}.${moduleName}.service.impl;\n\nimport cn.hutool.core.collection.CollUtil;\nimport cn.hutool.core.lang.tree.Tree;\nimport cn.hutool.core.lang.tree.TreeNode;\nimport cn.hutool.core.lang.tree.TreeUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;\nimport ${entityClassName};\nimport ${package}.${moduleName}.mapper.${ClassName}Mapper;\nimport ${package}.${moduleName}.service.${ClassName}Service;\nimport jakarta.validation.constraints.NotNull;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Objects;\nimport java.util.function.Function;\nimport java.util.stream.Collectors;\n\n/**\n * ${tableComment} Service实现类\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Service\n@RequiredArgsConstructor\npublic class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}Entity> implements ${ClassName}Service {\n\n /**\n * 构建树形结构数据\n * @param wrapper 查询条件\n * @return 树形结构数据\n */\n @Override\n public List<Tree<${pk.attrType}>> buildTree(LambdaQueryWrapper<${ClassName}Entity> wrapper) {\n // 查询命中节点,再按层补齐祖先,保留完整树路径\n List<${ClassName}Entity> allList = list(wrapper);\n \n if (CollUtil.isEmpty(allList)) {\n return new ArrayList<>();\n }\n\n Map<${pk.attrType}, ${ClassName}Entity> nodes = new LinkedHashMap<>();\n allList.forEach(entity -> nodes.put(entity.$str.getProperty($pk.attrName)(), entity));\n List<${ClassName}Entity> level = allList;\n while (!level.isEmpty()) {\n List<${pk.attrType}> parentIds = level.stream()\n .map(${ClassName}Entity::$str.getProperty($parentField))\n .filter(id -> id != null && !Objects.equals(id, ${treeRootId}) && !nodes.containsKey(id))\n .distinct()\n .toList();\n if (parentIds.isEmpty()) {\n break;\n }\n level = listByIds(parentIds);\n level.forEach(entity -> nodes.put(entity.$str.getProperty($pk.attrName)(), entity));\n }\n\n // 转换为TreeNode,仅包含命中节点及其祖先\n List<TreeNode<${pk.attrType}>> collect = nodes.values().stream().map(getNodeFunction()).toList();\n\n // 使用TreeUtil构建树形结构,根节点ID为0\n return TreeUtil.build(collect, ${treeRootId});\n }\n\n /**\n * 获取TreeNode转换函数\n * @return TreeNode转换函数\n */\n @NotNull\n private Function<${ClassName}Entity, TreeNode<${pk.attrType}>> getNodeFunction() {\n return entity -> {\n TreeNode<${pk.attrType}> node = new TreeNode<>();\n node.setId(entity.$str.getProperty($pk.attrName)());\n node.setName(entity.$str.getProperty($nameField)());\n node.setParentId(entity.$str.getProperty($parentField)() != null ? entity.$str.getProperty($parentField)() : ${treeRootId});\n\n // 扩展属性\n Map<String, Object> extra = new HashMap<>();\n#foreach($field in $fieldList)\n extra.put(${ClassName}Entity.Fields.${field.attrName}, entity.$str.getProperty($field.attrName)());\n#end\n node.setExtra(extra);\n return node;\n };\n }\n\n /**\n * 递归删除节点及其子节点\n * @param ids 要删除的节点ID列表\n * @return 删除结果\n */\n @Override\n @Transactional(rollbackFor = Exception.class)\n public boolean removeBatchByIds(List<${pk.attrType}> ids) {\n if (CollUtil.isEmpty(ids)) {\n return true;\n }\n\n // 获取所有要删除的ID(包括子节点)\n List<${pk.attrType}> allDeleteIds = new ArrayList<>(ids);\n \n for (${pk.attrType} id : ids) {\n List<${pk.attrType}> childIds = getChildIdsRecursive(id);\n allDeleteIds.addAll(childIds);\n }\n\n // 去重\n allLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (26,'树形实体V202611','${entityPath}/src/main/java/${entityPackagePath}/${ClassName}Entity.java','树形实体V202611','#set($hasOrg = false)\n#foreach($field in $fieldList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\npackage ${entityPackage};\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.spring.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.experimental.FieldNameConstants;\n#if($hasOrg)\nimport com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;\nimport ${package}.common.core.util.OrgRef;\nimport org.apache.fesod.sheet.annotation.ExcelIgnore;\nimport java.util.List;\n#end\n#if($isTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\n#foreach($import in $importList)\n#if(!$import.startsWith(\'java.lang.\'))\nimport $import;\n#end\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n@FieldNameConstants\n#if($isTenant)\n@TenantTable\n#end\n@TableName(value = "${tableName}"#if($hasOrg), autoResultMap = true#end)\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = "${tableComment}")\npublic class ${ClassName}Entity extends Model<${ClassName}Entity> {\n\n#foreach ($field in $fieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.formType.startsWith(\'org-\'))\n @TableField(typeHandler = JacksonTypeHandler.class#if($field.autoFill == \'INSERT\' || $field.autoFill == \'INSERT_UPDATE\' || $field.autoFill == \'UPDATE\'), fill = FieldFill.${field.autoFill}#end)\n @ExcelIgnore\n#elseif($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description="$comment"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType.startsWith(\'org-\'))\n private List<OrgRef> $field.attrName;\n#elseif($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#elseif($field.formType == \'daterange\' || $field.formType == \'datetimerange\')\n private String[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end\n#end\n#foreach ($field in $queryList)\n#if($field.queryFormType == \'daterange\' || $field.queryFormType == \'datetimerange\')\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment 查询范围\n */\n @TableField(exist = false)\n @Schema(description="$comment 查询范围",hidden=true)\n private String[] ${field.attrName}Range;\n#end\n#end\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (27,'MapperV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ClassName}Mapper.java','MapperV202611','package ${package}.${moduleName}.mapper;\n\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport ${entityClassName};\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ClassName}Mapper extends BaseMapper<${ClassName}Entity> {\n\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (28,'Mapper.xmlV202611','${backendPath}/src/main/resources/mapper/${ClassName}Mapper.xml','Mapper.xmlV202611','<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n\n<mapper namespace=\"${package}.${moduleName}.mapper.${ClassName}Mapper\">\n\n <resultMap id=\"${className}Map\" type=\"${entityClassName}\">\n#foreach ($field in $fieldList)\n #if($field.primaryPk == \'1\')\n <id property=\"$field.attrName\" column=\"$field.fieldName\"/>\n #else\n <result property=\"$field.attrName\" column=\"$field.fieldName\"#if($field.formType.startsWith(\'org-\')) typeHandler=\"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler\"#end/>\n #end\n#end\n </resultMap>\n</mapper>\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (29,'权限菜单V202611','${backendPath}/menu/${functionName}_menu.sql','权限菜单V202611','#set($permissionPrefix = \"${moduleName}_${functionName}\")\n#set($permissionPrefix = $permissionPrefix.toLowerCase())\n-- 该脚本不要直接执行, 注意维护菜单的父节点ID 默认 父节点-1 , #if(!$opensource)默认租户 1#end\n#set($menuId=${dateTool.getSystemTime()})\n\n-- 菜单SQL\ninsert into sys_menu ( menu_id,parent_id, path, permission, menu_type, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${menuId}, \'-1\', \'/${moduleName}/${functionName}/index\', \'\', \'0\', \'icon-bangzhushouji\', \'0\', null , \'8\', null , \'${tableComment}管理\'#if(!$opensource), 1#end);\n\n-- 菜单对应按钮SQL\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,1)},${menuId}, \'${permissionPrefix}_view\', \'1\', null, \'1\', \'0\', null, \'0\', null, \'${tableComment}查看\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,2)},${menuId}, \'${permissionPrefix}_add\', \'1\', null, \'1\', \'0\', null, \'1\', null, \'${tableComment}新增\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,3)},${menuId}, \'${permissionPrefix}_edit\', \'1\', null, \'1\', \'0\', null, \'2\', null, \'${tableComment}修改\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,4)},${menuId}, \'${permissionPrefix}_del\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'${tableComment}删除\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,5)},${menuId}, \'${permissionPrefix}_export\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'导入导出\'#if(!$opensource), 1#end);\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (30,'树形api.tsV202611','${frontendPath}/src/api/${moduleName}/${functionName}.ts','树形api.tsV202611','import request from \"/@/utils/request\"\n\n// ========== 树形表格CRUD接口 ==========\n\n/**\n * 获取树形列表数据\n * @param query - 查询参数对象\n * @returns Promise<树形数据>\n */\nexport function fetchTreeList(query?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/tree\',\n method: \'get\',\n params: query\n })\n}\n\n/**\n * 新增数据\n * @param obj - 要新增的数据对象\n * @returns Promise<boolean> - 操作结果\n */\nexport function addObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'post\',\n data: obj\n })\n}\n\n/**\n * 获取详情数据\n * @param obj - 查询参数对象(包含ID等)\n * @returns Promise<数据详情>\n */\nexport function getObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/details\',\n method: \'get\',\n params: obj\n })\n}\n\n/**\n * 批量删除数据(递归删除子节点)\n * @param ids - 要删除的ID数组\n * @returns Promise<操作结果>\n */\nexport function delObjs(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'delete\',\n data: ids\n })\n}\n\n/**\n * 更新数据\n * @param obj - 要更新的数据对象\n * @returns Promise<操作结果>\n */\nexport function putObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'put\',\n data: obj\n })\n}\n\n\n// ========== 工具函数 ==========\n\n/**\n * 验证字段值唯一性\n * @param rule - 验证规则对象\n * @param value - 要验证的值\n * @param callback - 验证回调函数\n * @param isEdit - 是否为编辑模式\n * \n * @example\n * // 在表单验证规则中使用\n * fieldName: [\n * {\n * validator: (rule, value, callback) => {\n * validateExist(rule, value, callback, form.${pk.attrName} !== \'\');\n * },\n * trigger: \'blur\',\n * },\n * ]\n */\nexport function validateExist(rule: any, value: any, callback: any, isEdit: boolean) {\n // 编辑模式下跳过验证\n if (isEdit) {\n return callback();\n }\n\n // 查询是否存在相同值\n getObj({ [rule.field]: value }).then((response) => {\n const result = response.data;\n if (result !== null && result.length > 0) {\n callback(new Error(\'数据已经存在\'));\n } else {\n callback();\n }\n });\n}','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (31,'树形表格V202611','${frontendPath}/src/views/${moduleName}/${functionName}/index.vue','树形表格V202611','## 有字典字段时才导入 useDict\n#set($hasDictField = false)\n#foreach($field in $queryList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n#foreach($field in $gridList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n<template>\n <div class="layout-padding">\n <div class="layout-padding-auto layout-padding-view">\n#if($queryList)\n <!-- 查询表单区域 -->\n <el-row v-show="showSearch">\n <el-form :model="state.queryForm" ref="queryRef" :inline="true" @keyup.enter="getDataList">\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))#set($queryKey = "${field.attrName}Keyword")#else#set($queryKey = $field.attrName)#end\n#if($field.queryFormType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${queryKey}">\n <el-select v-model="state.queryForm.${queryKey}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end">\n#if($field.fieldDict)\n <el-option \n :label="item.label" \n :value="item.value" \n v-for="(item, index) in ${field.fieldDict}" \n :key="index"\n />\n#else\n <el-option label="请选择" value="0" />\n#end\n </el-select>\n </el-form-item>\n#elseif($field.queryFormType == \'date\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${queryKey}">\n <el-date-picker \n type="date" \n placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" \n v-model="state.queryForm.${queryKey}"\n :value-format="dateStr"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'datetime\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${queryKey}">\n <el-date-picker\n type="datetime"\n placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"\n v-model="state.queryForm.${queryKey}"\n :value-format="dateTimeStr"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'daterange\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}Range">\n <el-date-picker\n type="daterange"\n range-separator="至"\n start-placeholder="开始日期"\n end-placeholder="结束日期"\n v-model="state.queryForm.${field.attrName}Range"\n :value-format="dateStr"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'datetimerange\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}Range">\n <el-date-picker\n type="datetimerange"\n range-separator="至"\n start-placeholder="开始时间"\n end-placeholder="结束时间"\n v-model="state.queryForm.${field.attrName}Range"\n :value-format="dateTimeStr"\n />\n </el-form-item>\n#elseif($field.formType == \'radio\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${queryKey}">\n <el-radio-group v-model="state.queryForm.${queryKey}">\n#if($field.fieldDict)\n <el-radio \n :label="item.value" \n v-for="(item, index) in ${field.fieldDict}" \n border \n :key="index"\n >\n {{ item.label }}\n </el-radio>\n#else\n <el-radio label="${field.fieldComment}" border>\n ${field.fieldComment}\n </el-radio>\n#end\n </el-radio-group>\n </el-form-item>\n#else\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#enLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (32,'树形表单V202611','${frontendPath}/src/views/${moduleName}/${functionName}/form.vue','树形表单V202611','#set($hasDuplicate = false)\n#foreach($field in $formList)\n#if($field.formValidator == \'duplicate\')\n#set($hasDuplicate = true)\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n#set($hasOrg = false)\n#foreach($field in $formList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\n<template>\n <el-dialog :title="form.${pk.attrName} ? \'编辑\' : \'新增\'" v-model="visible"\n :close-on-click-modal="false" draggable>\n <el-form ref="dataFormRef" :model="form" :rules="dataRules" formDialogRef label-width="90px" v-loading="loading">\n <el-row :gutter="24">\n <!-- 父级节点选择 -->\n#if($formLayout == 1)\n <el-col :span="24" class="mb20">\n#elseif($formLayout == 2)\n <el-col :span="12" class="mb20">\n#end\n <el-form-item label="父级节点" prop="${parentField}">\n <el-tree-select\n v-model="form.${parentField}"\n :data="parentNodes"\n :props="treeSelectProps"\n check-strictly\n :render-after-expand="false"\n placeholder="请选择父级节点"\n style="width: 100%"\n clearable\n filterable\n />\n </el-form-item>\n </el-col>\n#foreach($field in $formList)\n#if($field.attrName != ${pk.attrName} && $field.attrName != ${parentField})\n#if($formLayout == 1)\n <el-col :span="24" class="mb20">\n#elseif($formLayout == 2)\n <el-col :span="12" class="mb20">\n#end\n#if($field.formType.startsWith(\'org-\'))\n#set($orgType = $field.formType.replace(\'org-\', \'\').replace(\'-multiple\', \'\'))\n <el-form-item label="${field.fieldComment}" prop="${field.attrName}">\n <OrgSelect v-model="form.${field.attrName}" value-type="item" type="${orgType}" :multiple="#if($field.formType.endsWith(\'-multiple\'))true#else false#end" label="${field.fieldComment}" :disabled="loading" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'switch\')\n#switchValues($field)\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-switch :model-value="String(form.${field.attrName}) === String($switchOn)" @change="(checked) => (form.${field.attrName} = checked ? $switchOn : $switchOff)" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'text\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-input v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'textarea\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-input type="textarea" v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-select v-model="form.${field.attrName}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end">\n#if($field.fieldDict)\n <el-option :value="item.value" :label="item.label" v-for="(item, index) in ${field.fieldDict}" :key="index"></el-option>\n#else\n <el-option label="请选择" value="0"></el-option>\n#end\n </el-select>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'radio\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-radio-group v-model="form.${field.attrName}">\n#if($field.fieldDict)\n <el-radio :label="item.value" v-for="(item, index) in ${field.fieldDict}" border :key="index">{{ item.label }}</el-radio>\n#else\n <el-radio label="${field.fieldComment}" bordLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (33,'左树右表ControllerV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/controller/${ClassName}Controller.java','左树右表ControllerV202611','## 查询条件按需导入 StrUtil(字符串字段);Objects 用于树节点筛选,始终导入\n#set($needStrUtil = false)\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\') || ($field.formType != \'checkbox\' && $field.queryFormType != \'daterange\' && $field.queryFormType != \'datetimerange\' && $field.attrType == \'String\'))\n#set($needStrUtil = true)\n#end\n#end\n#set($hasOrgQuery = false)\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrgQuery = true)\n#end\n#end\n## 组织字段以 [{id,name}] JSON 存储,按 ${attrName}Keyword 对整列模糊查询,分页和导出共用\n#macro(orgKeywordParams)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), @RequestParam(required = false) String ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordDecl)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), String ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordArgs)#foreach($field in $queryList)#if($field.formType.startsWith(\'org-\')), ${field.attrName}Keyword#end#end#end\n#macro(orgKeywordFilters)\n#if($hasOrgQuery)\n // 组织字段对整列 JSON 做 LIKE:关键字为数字或 id/name 时会误命中,需精确匹配时改用数据库 JSON 函数\n#end\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))\n wrapper.like(StrUtil.isNotBlank(${field.attrName}Keyword), ${ClassName}Entity::$str.getProperty($field.attrName), ${field.attrName}Keyword);\n#end\n#end\n#end\npackage ${package}.${moduleName}.controller;\n\n#if($needStrUtil)\nimport cn.hutool.core.util.StrUtil;\n#end\nimport cn.hutool.core.util.ArrayUtil;\nimport cn.hutool.core.collection.CollUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport ${package}.common.core.util.R;\nimport ${package}.common.log.annotation.SysLog;\n#if($opensource)\nimport com.pig4cloud.plugin.excel.annotation.ResponseExcel;\nimport com.pig4cloud.plugin.excel.annotation.RequestExcel;\n#else\nimport ${package}.common.excel.annotation.ResponseExcel;\nimport ${package}.common.excel.annotation.RequestExcel;\n#end\nimport ${entityPackage}.${ChildClassName}Entity;\nimport ${entityClassName};\nimport ${package}.${moduleName}.service.${ClassName}Service;\n\nimport io.swagger.v3.oas.annotations.security.SecurityRequirement;\n#if($isSpringBoot3)\nimport ${package}.common.security.annotation.HasPermission;\nimport org.springdoc.core.annotations.ParameterObject;\n#else\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springdoc.api.annotations.ParameterObject;\n#end\nimport org.springframework.http.HttpHeaders;\nimport io.swagger.v3.oas.annotations.tags.Tag;\nimport io.swagger.v3.oas.annotations.Operation;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.validation.BindingResult;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\nimport java.util.Objects;\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPkField = $field)\n#break\n#end\n#end\n#set($childFieldGetter = $str.getProperty($childField))\n@RestController\n@RequiredArgsConstructor\n@RequestMapping("/${functionName}" )\n@Tag(description = "${functionName}" , name = "${tableComment}管理" )\n@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)\npublic class ${ClassName}Controller {\n\n private final ${ClassName}Service ${className}Service;\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param ${className} ${tableComment}\n * @return\n */\n @Operation(summary = "分页查询" , description = "分页查询" )\n @GetMapping("/page" )\n #if($isSpringBoot3)\n @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view")\n #else\n @PreAuthorize("@pms.hasPermission(\'$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view\')" )\n #end\n public R get${ClassName}Page(@ParameterObject Page page, @ParameterObject ${ClassName}Entity ${className}#orgKeywordParams()) {\n return R.ok(${className}Service.page(page, buildQueryWrapper(${className}#orgKeywordArgs())));\n }\n\n /**\n * 列表与导出共用的查询条件,保证导出结果与列表一致\n */\n private LambdaQueryWrapper<${ClassName}Entity> buildQueryWrapper(${ClassName}Entity ${className}#orgKeywordDecl()) {\n LambLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (34,'左树右表ServiceV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/service/${ClassName}Service.java','左树右表ServiceV202611','package ${package}.${moduleName}.service;\n\nimport cn.hutool.core.lang.tree.Tree;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.spring.service.IService;\nimport ${entityPackage}.${ChildClassName}Entity;\nimport ${entityClassName};\n\nimport java.util.List;\n\n/**\n * ${tableComment} Service接口\n *\n * @author ${author}\n * @date ${datetime}\n */\n#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPkField = $field)\n#break\n#end\n#end\npublic interface ${ClassName}Service extends IService<${ClassName}Entity> {\n\n /**\n * 构建树形结构数据\n * @param wrapper 查询条件\n * @return 树形结构数据\n */\n List<Tree<${childPkField.attrType}>> buildTree(LambdaQueryWrapper<${ChildClassName}Entity> wrapper);\n\n /**\n * 获取树节点详情\n * @param ${childClassName} 树节点查询对象\n * @return 树节点详情列表\n */\n List<${ChildClassName}Entity> getTreeDetails(${ChildClassName}Entity ${childClassName});\n\n /**\n * 保存树节点\n * @param ${childClassName} 树节点对象\n * @return 保存结果\n */\n Boolean saveTree(${ChildClassName}Entity ${childClassName});\n\n /**\n * 更新树节点\n * @param ${childClassName} 树节点对象\n * @return 更新结果\n */\n Boolean updateTree(${ChildClassName}Entity ${childClassName});\n\n /**\n * 批量删除树节点\n * @param ids 树节点ID列表\n * @return 删除结果\n */\n Boolean removeTreeByIds(${childPkField.attrType}[] ids);\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (35,'左树右表ServiceImplV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/service/impl/${ClassName}ServiceImpl.java','左树右表ServiceImplV202611','package ${package}.${moduleName}.service.impl;\n\nimport cn.hutool.core.collection.CollUtil;\nimport cn.hutool.core.util.ArrayUtil;\nimport cn.hutool.core.lang.tree.Tree;\nimport cn.hutool.core.lang.tree.TreeNode;\nimport cn.hutool.core.lang.tree.TreeUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;\nimport ${entityPackage}.${ChildClassName}Entity;\nimport ${entityClassName};\nimport ${package}.${moduleName}.mapper.${ChildClassName}Mapper;\nimport ${package}.${moduleName}.mapper.${ClassName}Mapper;\nimport ${package}.${moduleName}.service.${ClassName}Service;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Objects;\nimport java.util.Set;\nimport java.util.function.Function;\n\n/**\n * ${tableComment} Service实现类\n *\n * @author ${author}\n * @date ${datetime}\n */\n#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPkField = $field)\n#set($childPkGetter = $str.getProperty($childPkField.attrName))\n#break\n#end\n#end\n#set($parentGetter = $str.getProperty($parentField))\n#set($childFieldGetter = $str.getProperty($childField))\n#if($childPkField.attrType == \'Long\')\n#set($treeRootId = \'0L\')\n#elseif($childPkField.attrType == \'String\')\n#set($treeRootId = \'\"0\"\')\n#else\n#set($treeRootId = \'0\')\n#end\n@Service\n@RequiredArgsConstructor\npublic class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}Entity> implements ${ClassName}Service {\n\n private final ${ChildClassName}Mapper ${childClassName}Mapper;\n\n /**\n * 构建树形结构数据\n * @param wrapper 查询条件\n * @return 树形结构数据\n */\n @Override\n public List<Tree<${childPkField.attrType}>> buildTree(LambdaQueryWrapper<${ChildClassName}Entity> wrapper) {\n List<${ChildClassName}Entity> allList = ${childClassName}Mapper.selectList(wrapper);\n\n if (CollUtil.isEmpty(allList)) {\n return new ArrayList<>();\n }\n\n List<TreeNode<${childPkField.attrType}>> collect = allList.stream().map(getNodeFunction()).toList();\n return TreeUtil.build(collect, ${treeRootId});\n }\n\n /**\n * 获取树节点详情\n * @param ${childClassName} 树节点查询对象\n * @return 树节点详情列表\n */\n @Override\n public List<${ChildClassName}Entity> getTreeDetails(${ChildClassName}Entity ${childClassName}) {\n return ${childClassName}Mapper.selectList(Wrappers.query(${childClassName}));\n }\n\n /**\n * 保存树节点\n * @param ${childClassName} 树节点对象\n * @return 保存结果\n */\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean saveTree(${ChildClassName}Entity ${childClassName}) {\n ${childClassName}.$str.setProperty($parentField)(validateParentRelation(null, ${childClassName}.$str.getProperty($parentField)()));\n return ${childClassName}Mapper.insert(${childClassName}) > 0;\n }\n\n /**\n * 更新树节点\n * @param ${childClassName} 树节点对象\n * @return 更新结果\n */\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean updateTree(${ChildClassName}Entity ${childClassName}) {\n ${childClassName}.$str.setProperty($parentField)(validateParentRelation(${childClassName}.$str.getProperty($childPkField.attrName)(), ${childClassName}.$str.getProperty($parentField)()));\n return ${childClassName}Mapper.updateById(${childClassName}) > 0;\n }\n\n /**\n * 批量删除树节点\n * @param ids 树节点ID列表\n * @return 删除结果\n */\n @Override\n @Transactional(rollbackFor = Exception.class)\n public Boolean removeTreeByIds(${childPkField.attrType}[] ids) {\n if (ArrayUtil.isEmpty(ids)) {\n return Boolean.TRUE;\n }\n\n for (${childPkField.attrType} id : ids) {\n if (hasChildNodes(id)) {\n throw new RuntimeException(\"当前节点存在子节点,不能删除\");\n }\n if (hasMainRecords(id)) {\n throw new RuntimeException(\"当前节点已关联主表数据,不能删除\");\n }\n }\n\n return ${childClassNameLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (36,'实体V202611','${entityPath}/src/main/java/${entityPackagePath}/${ClassName}Entity.java','实体V202611','#set($hasOrg = false)\n#foreach($field in $fieldList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\npackage ${entityPackage};\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.spring.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n#if($hasOrg)\nimport com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;\nimport ${package}.common.core.util.OrgRef;\nimport org.apache.fesod.sheet.annotation.ExcelIgnore;\nimport java.util.List;\n#end\n#if($isTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\n#foreach($import in $importList)\n#if(!$import.startsWith(\'java.lang.\'))\nimport $import;\n#end\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n#if($isTenant)\n@TenantTable\n#end\n@TableName(value = \"${tableName}\"#if($hasOrg), autoResultMap = true#end)\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = \"${tableComment}\")\npublic class ${ClassName}Entity extends Model<${ClassName}Entity> {\n\n#foreach ($field in $fieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.formType.startsWith(\'org-\'))\n @TableField(typeHandler = JacksonTypeHandler.class#if($field.autoFill == \'INSERT\' || $field.autoFill == \'INSERT_UPDATE\' || $field.autoFill == \'UPDATE\'), fill = FieldFill.${field.autoFill}#end)\n @ExcelIgnore\n#elseif($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description=\"$comment\"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType.startsWith(\'org-\'))\n private List<OrgRef> $field.attrName;\n#elseif($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#elseif($field.formType == \'daterange\' || $field.formType == \'datetimerange\')\n private String[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end\n#end\n#foreach ($field in $queryList)\n#if($field.queryFormType == \'daterange\' || $field.queryFormType == \'datetimerange\')\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n\n /**\n * $comment 查询范围\n */\n @TableField(exist = false)\n @Schema(description=\"$comment 查询范围\",hidden=true)\n private String[] ${field.attrName}Range;\n#end\n#end\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (37,'MapperV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ClassName}Mapper.java','MapperV202611','package ${package}.${moduleName}.mapper;\n\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport ${entityClassName};\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ClassName}Mapper extends BaseMapper<${ClassName}Entity> {\n\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (38,'Mapper.xmlV202611','${backendPath}/src/main/resources/mapper/${ClassName}Mapper.xml','Mapper.xmlV202611','<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n\n<mapper namespace=\"${package}.${moduleName}.mapper.${ClassName}Mapper\">\n\n <resultMap id=\"${className}Map\" type=\"${entityClassName}\">\n#foreach ($field in $fieldList)\n #if($field.primaryPk == \'1\')\n <id property=\"$field.attrName\" column=\"$field.fieldName\"/>\n #else\n <result property=\"$field.attrName\" column=\"$field.fieldName\"#if($field.formType.startsWith(\'org-\')) typeHandler=\"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler\"#end/>\n #end\n#end\n </resultMap>\n</mapper>\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (39,'子实体V202611','${entityPath}/src/main/java/${entityPackagePath}/${ChildClassName}Entity.java','子实体V202611','#set($hasOrg = false)\n#foreach($field in $childFieldList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\npackage ${entityPackage};\n\nimport com.baomidou.mybatisplus.annotation.*;\nimport com.baomidou.mybatisplus.spring.activerecord.Model;\nimport io.swagger.v3.oas.annotations.media.Schema;\n#if($isChildTenant)\nimport ${package}.common.core.util.TenantTable;\n#end\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n#if($hasOrg)\nimport com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;\nimport ${package}.common.core.util.OrgRef;\nimport java.util.List;\n#end\n#set($childImports = [])\n#foreach($field in $childFieldList)\n#if($field.packageName && !$field.packageName.startsWith(\'java.lang.\') && !$childImports.contains($field.packageName))\n#set($void = $childImports.add($field.packageName))\n#end\n#end\n#foreach($import in $childImports)\nimport $import;\n#end\n\n/**\n * ${tableComment}\n *\n * @author ${author}\n * @date ${datetime}\n */\n@Data\n#if($isChildTenant)\n@TenantTable\n#end\n@TableName(value = \"${childTableName}\"#if($hasOrg), autoResultMap = true#end)\n@EqualsAndHashCode(callSuper = true)\n@Schema(description = \"${childTableName}\")\npublic class ${ChildClassName}Entity extends Model<${ChildClassName}Entity> {\n\n#foreach ($field in $childFieldList)\n#if(${field.fieldComment})#set($comment=${field.fieldComment})#else #set($comment=${field.attrName})#end\n /**\n * $comment\n */\n#if($field.primaryPk == \'1\')\n @TableId(type = IdType.ASSIGN_ID)\n#end\n#if($field.formType.startsWith(\'org-\'))\n @TableField(typeHandler = JacksonTypeHandler.class#if($field.autoFill == \'INSERT\' || $field.autoFill == \'INSERT_UPDATE\' || $field.autoFill == \'UPDATE\'), fill = FieldFill.${field.autoFill}#end)\n#elseif($field.autoFill == \'INSERT\')\n @TableField(fill = FieldFill.INSERT)\n#elseif($field.autoFill == \'INSERT_UPDATE\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n#elseif($field.autoFill == \'UPDATE\')\n @TableField(fill = FieldFill.UPDATE)\n#end\n#if($field.fieldName == \'del_flag\')\n @TableLogic\n @TableField(fill = FieldFill.INSERT)\n#end\n @Schema(description=\"$comment\"#if($field.hidden),hidden=$field.hidden#end)\n#if($field.formType.startsWith(\'org-\'))\n private List<OrgRef> $field.attrName;\n#elseif($field.formType == \'checkbox\')\n private ${field.attrType}[] $field.attrName;\n#else\n private $field.attrType $field.attrName;\n#end \n#end\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (40,'子MapperV202611','${backendPath}/src/main/java/${packagePath}/${moduleName}/mapper/${ChildClassName}Mapper.java','子MapperV202611','package ${package}.${moduleName}.mapper;\n\nimport ${package}.common.data.datascope.PigxBaseMapper;\nimport ${entityPackage}.${ChildClassName}Entity;\nimport org.apache.ibatis.annotations.Mapper;\n\n@Mapper\npublic interface ${ChildClassName}Mapper extends PigxBaseMapper<${ChildClassName}Entity> {\n\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (41,'权限菜单V202611','${backendPath}/menu/${functionName}_menu.sql','权限菜单V202611','#set($permissionPrefix = \"${moduleName}_${functionName}\")\n#set($permissionPrefix = $permissionPrefix.toLowerCase())\n-- 该脚本不要直接执行, 注意维护菜单的父节点ID 默认 父节点-1 , #if(!$opensource)默认租户 1#end\n#set($menuId=${dateTool.getSystemTime()})\n\n-- 菜单SQL\ninsert into sys_menu ( menu_id,parent_id, path, permission, menu_type, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${menuId}, \'-1\', \'/${moduleName}/${functionName}/index\', \'\', \'0\', \'icon-bangzhushouji\', \'0\', null , \'8\', null , \'${tableComment}管理\'#if(!$opensource), 1#end);\n\n-- 菜单对应按钮SQL\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,1)},${menuId}, \'${permissionPrefix}_view\', \'1\', null, \'1\', \'0\', null, \'0\', null, \'${tableComment}查看\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,2)},${menuId}, \'${permissionPrefix}_add\', \'1\', null, \'1\', \'0\', null, \'1\', null, \'${tableComment}新增\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,3)},${menuId}, \'${permissionPrefix}_edit\', \'1\', null, \'1\', \'0\', null, \'2\', null, \'${tableComment}修改\'#if(!$opensource), 1#end);\n\ninsert into sys_menu (menu_id, parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,4)},${menuId}, \'${permissionPrefix}_del\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'${tableComment}删除\'#if(!$opensource), 1#end);\n\ninsert into sys_menu ( menu_id,parent_id, permission, menu_type, path, icon, del_flag, create_time, sort_order, update_time, name#if(!$opensource), tenant_id#end)\nvalues (${math.add($menuId,5)},${menuId}, \'${permissionPrefix}_export\', \'1\', null, \'1\', \'0\', null, \'3\', null, \'导入导出\'#if(!$opensource), 1#end);\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (42,'左树右表api.tsV202611','${frontendPath}/src/api/${moduleName}/${functionName}.ts','左树右表api.tsV202611','import request from \"/@/utils/request\"\n\n// ========== 基础CRUD接口 ==========\n\n/**\n * 分页查询列表数据\n * @param query - 查询参数对象\n * @returns Promise<分页数据>\n */\nexport function fetchList(query?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/page\',\n method: \'get\',\n params: query\n })\n}\n\n/**\n * 新增数据\n * @param obj - 要新增的数据对象\n * @returns Promise<boolean> - 操作结果\n */\nexport function addObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'post\',\n data: obj\n })\n}\n\n/**\n * 获取详情数据\n * @param obj - 查询参数对象(包含ID等)\n * @returns Promise<数据详情>\n */\nexport function getObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/details\',\n method: \'get\',\n params: obj\n })\n}\n\n/**\n * 批量删除数据\n * @param ids - 要删除的ID数组\n * @returns Promise<操作结果>\n */\nexport function delObjs(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'delete\',\n data: ids\n })\n}\n\n/**\n * 更新数据\n * @param obj - 要更新的数据对象\n * @returns Promise<操作结果>\n */\nexport function putObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}\',\n method: \'put\',\n data: obj\n })\n}\n\n// ========== 树形CRUD接口 ==========\n\n/**\n * 获取树形列表数据\n * @param query - 查询参数对象\n * @returns Promise<树形数据>\n */\nexport function fetchTreeList(query?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/tree\',\n method: \'get\',\n params: query\n })\n}\n\n/**\n * 获取树节点详情\n * @param obj - 查询参数对象(包含ID等)\n * @returns Promise<树节点详情>\n */\nexport function getTreeObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/tree/details\',\n method: \'get\',\n params: obj\n })\n}\n\n/**\n * 新增树节点\n * @param obj - 要新增的树节点对象\n * @returns Promise<操作结果>\n */\nexport function addTreeObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/tree\',\n method: \'post\',\n data: obj\n })\n}\n\n/**\n * 更新树节点\n * @param obj - 要更新的树节点对象\n * @returns Promise<操作结果>\n */\nexport function putTreeObj(obj?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/tree\',\n method: \'put\',\n data: obj\n })\n}\n\n/**\n * 删除树节点\n * @param ids - 要删除的树节点ID数组\n * @returns Promise<操作结果>\n */\nexport function delTreeObjs(ids?: Object) {\n return request({\n url: \'/${moduleName}/${functionName}/tree\',\n method: \'delete\',\n data: ids\n })\n}\n\n// ========== 工具函数 ==========\n\n/**\n * 验证字段值唯一性\n * @param rule - 验证规则对象\n * @param value - 要验证的值\n * @param callback - 验证回调函数\n * @param isEdit - 是否为编辑模式\n *\n * @example\n * // 在表单验证规则中使用\n * fieldName: [\n * {\n * validator: (rule, value, callback) => {\n * validateExist(rule, value, callback, form.${pk.attrName} !== \'\');\n * },\n * trigger: \'blur\',\n * },\n * ]\n */\nexport function validateExist(rule: any, value: any, callback: any, isEdit: boolean) {\n // 编辑模式下跳过验证\n if (isEdit) {\n return callback();\n }\n\n // 查询是否存在相同值\n getObj({ [rule.field]: value }).then((response) => {\n const result = response.data;\n if (result !== null && result.length > 0) {\n callback(new Error(\'数据已经存在\'));\n } else {\n callback();\n }\n });\n}\n','2026-04-08 17:38:24','2026-04-08 17:38:24','0',1,'admin','admin');
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (43,'左树右表表格V202611','${frontendPath}/src/views/${moduleName}/${functionName}/index.vue','左树右表表格V202611','## 有字典字段时才导入 useDict\n#set($hasDictField = false)\n#foreach($field in $queryList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n#foreach($field in $gridList)\n#if($field.fieldDict)\n#set($hasDictField = true)\n#end\n#end\n#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPkField = $field)\n#break\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n<template>\n <div class="layout-padding">\n <splitpanes>\n <pane size="15">\n <div class="layout-padding-auto layout-padding-view">\n <el-scrollbar>\n <div class="mb8" style="display: flex; align-items: center; justify-content: space-between;">\n <span style="font-weight: 500;">左侧节点</span>\n <div>\n <el-tooltip :content="currentTreeId ? \'新增子节点\' : \'新增根节点\'" placement="top">\n <el-button link type="primary" icon="FolderAdd" @click="handleAddTree" />\n </el-tooltip>\n </div>\n </div>\n <el-tree\n ref="treeRef"\n :data="treeData"\n :props="treeProps"\n node-key="${childPkField.attrName}"\n highlight-current\n default-expand-all\n :expand-on-click-node="false"\n @node-click="handleTreeNodeClick"\n >\n <template #default="{ node, data }">\n <span style="flex: 1; display: flex; align-items: center; justify-content: space-between;">\n <span>{{ node.label }}</span>\n <span v-if="currentTreeId === data.${childPkField.attrName}" style="margin-left: 8px;">\n <el-tooltip content="编辑" placement="top">\n <el-button link type="primary" icon="Edit" size="small" @click.stop="handleEditTree" />\n </el-tooltip>\n <el-tooltip content="删除" placement="top">\n <el-button link type="danger" icon="Delete" size="small" @click.stop="handleDeleteTree" />\n </el-tooltip>\n </span>\n </span>\n </template>\n </el-tree>\n </el-scrollbar>\n </div>\n </pane>\n <pane class="ml8">\n <div class="layout-padding-auto layout-padding-view">\n#if($queryList)\n <el-row v-show="showSearch">\n <el-form :model="state.queryForm" ref="queryRef" :inline="true" @keyup.enter="getDataList">\n#foreach($field in $queryList)\n#if($field.formType.startsWith(\'org-\'))#set($queryKey = "${field.attrName}Keyword")#else#set($queryKey = $field.attrName)#end\n#if($field.attrName != ${childField})\n#if($field.queryFormType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${queryKey}">\n <el-select v-model="state.queryForm.${queryKey}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end">\n#if($field.fieldDict)\n <el-option \n :label="item.label" \n :value="item.value" \n v-for="(item, index) in ${field.fieldDict}" \n :key="index"\n />\n#else\n <el-option label="请选择" value="0" />\n#end\n </el-select>\n </el-form-item>\n#elseif($field.queryFormType == \'date\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${queryKey}">\n <el-date-picker\n type="date"\n placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"\n v-model="state.queryForm.${queryKey}"\n :value-format="dateStr"\n />\n </el-form-item>\n#elseif($field.queryFormType == \'daterange\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}Range">\n <el-date-pickerLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (44,'左树右表树表单V202611','${frontendPath}/src/views/${moduleName}/${functionName}/tree-form.vue','左树右表树表单V202611','#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPkField = $field)\n#break\n#end\n#end\n#set($fieldDict=[])\n#foreach($field in $childFieldList)\n#if($field.fieldDict)\n#set($void=$fieldDict.add($field.fieldDict))\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n#set($hasOrg = false)\n#foreach($field in $childFieldList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\n<template>\n <el-dialog :title="form.${childPkField.attrName} ? \'编辑\' : \'新增\'" v-model="visible"\n :close-on-click-modal="false" draggable>\n <el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="90px" v-loading="loading">\n <el-row :gutter="24">\n#if($formLayout == 1)\n <el-col :span="24" class="mb20">\n#elseif($formLayout == 2)\n <el-col :span="12" class="mb20">\n#end\n <el-form-item label="父级节点" prop="${parentField}">\n <el-tree-select\n v-model="form.${parentField}"\n :data="parentNodes"\n :props="treeSelectProps"\n check-strictly\n :render-after-expand="false"\n placeholder="请选择父级节点"\n style="width: 100%"\n clearable\n filterable\n />\n </el-form-item>\n </el-col>\n#foreach($field in $childFieldList)\n#if($field.attrName != ${childPkField.attrName} && $field.attrName != ${parentField})\n#if($formLayout == 1)\n <el-col :span="24" class="mb20">\n#elseif($formLayout == 2)\n <el-col :span="12" class="mb20">\n#end\n#if($field.formType.startsWith(\'org-\'))\n#set($orgType = $field.formType.replace(\'org-\', \'\').replace(\'-multiple\', \'\'))\n <el-form-item label="${field.fieldComment}" prop="${field.attrName}">\n <OrgSelect v-model="form.${field.attrName}" value-type="item" type="${orgType}" :multiple="#if($field.formType.endsWith(\'-multiple\'))true#else false#end" label="${field.fieldComment}" :disabled="loading" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'switch\')\n#switchValues($field)\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-switch :model-value="String(form.${field.attrName}) === String($switchOn)" @change="(checked) => (form.${field.attrName} = checked ? $switchOn : $switchOff)" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'text\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-input v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'textarea\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-input type="textarea" v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-select v-model="form.${field.attrName}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end">\n#if($field.fieldDict)\n <el-option :value="item.value" :label="item.label" v-for="(item, index) in ${field.fieldDict}" :key="index"></el-option>\n#else\n <el-option label="请选择" value="0"></el-option>\n#end\n </el-select>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'radio\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-radio-group v-model="form.${field.attrName}">\n#if($field.fieldDict)\n <el-radio :label="item.value" v-for="(item, index) in ${field.fieldDicLine truncated
INSERT INTO `gen_template` (`id`, `template_name`, `generator_path`, `template_desc`, `template_code`, `create_time`, `update_time`, `del_flag`, `tenant_id`, `create_by`, `update_by`) VALUES (45,'左树右表主表单V202611','${frontendPath}/src/views/${moduleName}/${functionName}/form.vue','左树右表主表单V202611','#set($hasDuplicate = false)\n#foreach($field in $formList)\n#if($field.attrName != ${childField} && $field.formValidator == \'duplicate\')\n#set($hasDuplicate = true)\n#end\n#end\n#foreach($field in $childFieldList)\n#if($field.primaryPk == \'1\')\n#set($childPkField = $field)\n#break\n#end\n#end\n#set($relationFieldLabel = $childField)\n#foreach($field in $fieldList)\n#if($field.attrName == $childField)\n#if($field.fieldComment)\n#set($relationFieldLabel = $field.fieldComment)\n#else\n#set($relationFieldLabel = $field.attrName)\n#end\n#break\n#end\n#end\n#set($fieldDict=[])\n#foreach($field in $formList)\n#if($field.fieldDict)\n#set($void=$fieldDict.add($field.fieldDict))\n#end\n#end\n## 开关:按属性类型决定开/关的值,Boolean 用 true/false,整型用 1/0,其余用 \'1\'/\'0\'\n#macro(switchValues $f)\n#if($f.attrType == \'Boolean\')\n#set($switchOn = \'true\')\n#set($switchOff = \'false\')\n#elseif($f.attrType == \'Integer\' || $f.attrType == \'Long\' || $f.attrType == \'Short\')\n#set($switchOn = \'1\')\n#set($switchOff = \'0\')\n#else\n#set($switchOn = "\'1\'")\n#set($switchOff = "\'0\'")\n#end\n#end\n#set($hasOrg = false)\n#foreach($field in $formList)\n#if($field.formType.startsWith(\'org-\'))\n#set($hasOrg = true)\n#end\n#end\n<template>\n <el-dialog :title="form.${pk.attrName} ? \'编辑\' : \'新增\'" v-model="visible"\n :close-on-click-modal="false" draggable>\n <el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="90px" v-loading="loading">\n <el-row :gutter="24">\n#if($formLayout == 1)\n <el-col :span="24" class="mb20">\n#elseif($formLayout == 2)\n <el-col :span="12" class="mb20">\n#end\n <el-form-item label="${relationFieldLabel}" prop="${childField}">\n <el-tree-select\n v-model="form.${childField}"\n :data="treeNodes"\n :props="treeSelectProps"\n check-strictly\n :render-after-expand="false"\n placeholder="请选择${relationFieldLabel}"\n style="width: 100%"\n clearable\n filterable\n />\n </el-form-item>\n </el-col>\n#foreach($field in $formList)\n#if($field.attrName != ${pk.attrName} && $field.attrName != ${childField})\n#if($formLayout == 1)\n <el-col :span="24" class="mb20">\n#elseif($formLayout == 2)\n <el-col :span="12" class="mb20">\n#end\n#if($field.formType.startsWith(\'org-\'))\n#set($orgType = $field.formType.replace(\'org-\', \'\').replace(\'-multiple\', \'\'))\n <el-form-item label="${field.fieldComment}" prop="${field.attrName}">\n <OrgSelect v-model="form.${field.attrName}" value-type="item" type="${orgType}" :multiple="#if($field.formType.endsWith(\'-multiple\'))true#else false#end" label="${field.fieldComment}" :disabled="loading" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'switch\')\n#switchValues($field)\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-switch :model-value="String(form.${field.attrName}) === String($switchOn)" @change="(checked) => (form.${field.attrName} = checked ? $switchOn : $switchOff)" />\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'text\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-input v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'textarea\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-input type="textarea" v-model="form.${field.attrName}" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end"/>\n </el-form-item>\n </el-col>\n#elseif($field.formType == \'select\')\n <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end" prop="${field.attrName}">\n <el-select v-model="form.${field.attrName}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else${field.attrName}#end">\n#if($field.fieldDict)\n <el-option :value="item.value" :label="item.label" v-for="(item, index) in ${field.fieldDict}" :key="index"></el-option>\n#else\n <el-option label="请选择" value="0"></el-option>\n#end\n Line truncated
COMMIT;
-- ----------------------------
@@ -274,28 +297,51 @@ CREATE TABLE `gen_template_group` (
-- Records of gen_template_group
-- ----------------------------
BEGIN;
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079920092708866);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079920327589889);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079920554082306);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079920784769026);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079920998678529);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079921220976642);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079921443274753);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079921673961473);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079921900453889);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1, 1934079922147917825);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079922437324801);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079922659622913);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079922873532418);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079923095830529);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079923313934337);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079923536232449);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079923766919169);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079923989217282);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079924215709698);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079924450590722);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079924681277442);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2, 1934079924903575554);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,1);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,2);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,3);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,4);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,5);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,6);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,7);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,8);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,9);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (1,10);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,11);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,12);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,13);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,14);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,15);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,16);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,17);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,18);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,19);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,20);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,21);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (2,22);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,23);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,24);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,25);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,26);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,27);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,28);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,29);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,30);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,31);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (3,32);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,33);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,34);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,35);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,36);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,37);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,38);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,39);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,40);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,41);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,42);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,43);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,44);
INSERT INTO `gen_template_group` (`group_id`, `template_id`) VALUES (4,45);
COMMIT;
-- ----------------------------
@@ -304,14 +350,14 @@ COMMIT;
DROP TABLE IF EXISTS `gen_create_table`;
CREATE TABLE `gen_create_table` (
`id` bigint NOT NULL COMMENT '主键ID',
`table_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '表名称',
`table_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '表名称',
`ds_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '数据源',
`comments` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '表注释',
`comments` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '表注释',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT NULL,
`column_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '字段信息',
`column_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '字段信息',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '删除标记',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (`id`) USING BTREE
+53 -111
View File
@@ -19,10 +19,10 @@ CREATE TABLE `app_article` (
`sort` int unsigned NOT NULL DEFAULT '50' COMMENT '排序',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`create_by` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
`create_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`update_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '删除时间',
`tenant_id` bigint(20) DEFAULT NULL,
`tenant_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `cid_idx` (`cid`) USING BTREE COMMENT '分类索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='文章资讯表';
@@ -47,7 +47,7 @@ CREATE TABLE `app_article_category` (
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`create_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '创建人',
`update_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
`tenant_id` bigint(20) DEFAULT NULL,
`tenant_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='文章分类表';
@@ -65,12 +65,12 @@ CREATE TABLE `app_article_collect` (
`id` bigint unsigned NOT NULL COMMENT '主键',
`user_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`article_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '文章ID',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`create_time` datetime COMMENT '创建时间',
`update_time` datetime COMMENT '更新时间',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否删除',
`create_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`update_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
`tenant_id` bigint(20) DEFAULT NULL,
`tenant_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='文章收藏表';
@@ -80,6 +80,30 @@ CREATE TABLE `app_article_collect` (
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for app_contacts
-- ----------------------------
DROP TABLE IF EXISTS `app_contacts`;
CREATE TABLE `app_contacts` (
`id` bigint NOT NULL COMMENT '主键',
`contact_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '联系人',
`contact_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '手机号',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='通讯录表';
-- ----------------------------
-- Records of app_contacts
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for app_page
-- ----------------------------
@@ -94,7 +118,7 @@ CREATE TABLE `app_page` (
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`del_flag` char(1) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '删除标记',
`tenant_id` bigint(20) DEFAULT NULL,
`tenant_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='页面装修表';
@@ -102,9 +126,10 @@ CREATE TABLE `app_page` (
-- Records of app_page
-- ----------------------------
BEGIN;
INSERT INTO `app_page` VALUES (1, 1, '商城首页', '[{\"title\":\"搜索\",\"name\":\"search\",\"disabled\":1,\"content\":{},\"styles\":{}},{\"title\":\"首页轮播图\",\"name\":\"banner\",\"content\":{\"enabled\":1,\"data\":[{\"image\":\"/api/static/banner01.png\",\"name\":\"\",\"link\":{\"path\":\"/pages/index/index\",\"name\":\"商城首页\",\"type\":\"shop\"}}]},\"styles\":{}},{\"title\":\"导航菜单\",\"name\":\"nav\",\"content\":{\"enabled\":1,\"data\":[{\"image\":\"https://minio.pigx.top/oss/app/nav01.png\",\"name\":\"资讯中心\",\"link\":{\"path\":\"/pages/news/news\",\"name\":\"文章资讯\",\"type\":\"shop\"}},{\"image\":\"https://minio.pigx.top/oss/app/nav02.png\",\"name\":\"我的收藏\",\"link\":{\"path\":\"/pages/collection/collection\",\"name\":\"我的收藏\",\"type\":\"shop\"}},{\"image\":\"https://minio.pigx.top/oss/app/nav03.png\",\"name\":\"个人设置\",\"link\":{\"path\":\"/pages/user_set/user_set\",\"name\":\"个人设置\",\"type\":\"shop\"}},{\"image\":\"https://minio.pigx.top/oss/app/nav04.png\",\"name\":\"联系客服\",\"link\":{\"path\":\"/pages/customer_service/customer_service\",\"name\":\"联系客服\",\"type\":\"shop\"}},{\"image\":\"https://minio.pigx.top/oss/app/nav05.png\",\"name\":\"关于我们\",\"link\":{\"path\":\"/pages/as_us/as_us\",\"name\":\"关于我们\",\"type\":\"shop\"}}]},\"styles\":{}},{\"id\":\"l84almsk2uhyf\",\"title\":\"资讯\",\"name\":\"news\",\"disabled\":1,\"content\":{},\"styles\":{}}]', NULL, 'admin', NULL, '2023-06-15 09:18:02', '0',1);
INSERT INTO `app_page` VALUES (2, 2, '个人中心', '[{\"title\":\"用户信息\",\"name\":\"user-info\",\"disabled\":1,\"content\":{},\"styles\":{}},{\"title\":\"我的服务\",\"name\":\"my-service\",\"content\":{\"style\":2,\"title\":\"服务中心\",\"data\":[{\"image\":\"https://minio.pigx.top/oss/app/user_collect.png\",\"name\":\"我的收藏\",\"link\":{\"path\":\"/pages/collection/collection\",\"name\":\"我的收藏\",\"type\":\"shop\"}},{\"image\":\"https://minio.pigx.top/oss/app/user_setting.png\",\"name\":\"个人设置\",\"link\":{\"path\":\"/pages/user_set/user_set\",\"name\":\"个人设置\",\"type\":\"shop\"}},{\"image\":\"https://minio.pigx.top/oss/app/user_kefu.png\",\"name\":\"联系客服\",\"link\":{\"path\":\"/pages/customer_service/customer_service\",\"name\":\"联系客服\",\"type\":\"shop\"}}]},\"styles\":{}},{\"title\":\"个人中心广告图\",\"name\":\"user-banner\",\"content\":{\"enabled\":1,\"data\":[{\"image\":\"\",\"name\":\"sdds\",\"link\":{\"path\":\"/pages/user/user\",\"name\":\"个人中心\",\"type\":\"shop\"}}]},\"styles\":{}}]', NULL, 'admin', NULL, '2023-06-18 17:00:05', '0',1);
INSERT INTO `app_page` VALUES (3, 3, '客服设置', '[{\"title\":\"客服设置\",\"name\":\"customer-service\",\"content\":{\"title\":\"添加客服二维码\",\"time\":\"早上 9:00 - 22:00\",\"mobile\":\"13800138000\",\"qrcode\":\"/admin/sys-file/local/adc5061f99e9440abcd9b22572909c88.jpg\"},\"styles\":{}}]', NULL, 'admin', NULL, '2023-06-14 13:12:19', '0',1);
INSERT INTO `app_page` VALUES (1, 1, '首页装修', '[{\"name\":\"search\",\"title\":\"搜索\",\"styles\":{},\"content\":{},\"disabled\":1},{\"name\":\"banner\",\"title\":\"首页轮播图\",\"styles\":{},\"content\":{\"data\":[{\"link\":{\"name\":\"个人中心\",\"path\":\"/pages/user/index\",\"type\":\"shop\"},\"name\":\"商品大抽拼\",\"image\":\"https://minio.pigx.vip/oss/202605/home.jpg\"}],\"enabled\":1}},{\"name\":\"nav\",\"title\":\"导航菜单\",\"styles\":{},\"content\":{\"data\":[{\"icon\":\"star\",\"link\":{\"name\":\"我的收藏\",\"path\":\"/pages/user/collection/index\",\"type\":\"shop\"},\"name\":\"我的收藏\",\"image\":\"https://minio.pigx.top/oss/app/nav02.png\"},{\"icon\":\"calendar-line\",\"name\":\"日历\",\"link\":{\"path\":\"/pages/workbench/calendar/index\",\"name\":\"日程\",\"type\":\"shop\"}},{\"icon\":\"message\",\"name\":\"消息中心\",\"link\":{\"path\":\"/pages/user/messages/index\",\"name\":\"消息中心\",\"type\":\"shop\"}},{\"icon\":\"user-group\",\"name\":\"通讯录\",\"link\":{\"path\":\"/pages/workbench/contacts/index\",\"name\":\"通讯录\",\"type\":\"shop\"}}],\"enabled\":1}}]', NULL, 'admin', NULL, '2026-05-13 23:37:53', '0', 1);
INSERT INTO `app_page` VALUES (2, 2, '个人中心', '[{\"name\":\"user-info\",\"title\":\"用户信息\",\"styles\":{},\"content\":{},\"disabled\":1},{\"name\":\"my-service\",\"title\":\"我的服务\",\"styles\":{},\"content\":{\"data\":[{\"icon\":\"settings\",\"link\":{\"name\":\"个人设置\",\"path\":\"/pages/user/settings/index\",\"type\":\"shop\"},\"name\":\"个人设置\",\"image\":\"https://minio.pigx.top/oss/app/user_setting.png\"},{\"icon\":\"star\",\"link\":{\"name\":\"我的收藏\",\"path\":\"/pages/user/collection/index\",\"type\":\"shop\"},\"name\":\"我的收藏\",\"image\":\"https://minio.pigx.top/oss/app/user_collect.png\"},{\"icon\":\"headset\",\"link\":{\"name\":\"联系客服\",\"path\":\"/pages/user/customer-service/index\",\"type\":\"shop\"},\"name\":\"联系客服\",\"image\":\"https://minio.pigx.top/oss/app/user_kefu.png\"},{\"icon\":\"info-circle\",\"name\":\"关于我们\",\"link\":{\"path\":\"/pages/user/about/index\",\"name\":\"关于我们\",\"type\":\"shop\"}}],\"style\":2,\"title\":\"服务中心\"}},{\"name\":\"user-banner\",\"title\":\"个人中心广告图\",\"styles\":{},\"content\":{\"data\":[{\"link\":{\"name\":\"个人中心\",\"path\":\"/pages/user/index\",\"type\":\"shop\"},\"name\":\"sdds\",\"image\":\"https://minio.pigx.vip/oss/202605/ad.jpg\"}],\"enabled\":1}}]', NULL, 'admin', NULL, '2026-05-13 23:37:53', '0', 1);
INSERT INTO `app_page` VALUES (3, 3, '客服设置', '[{\"title\":\"客服设置\",\"name\":\"customer-service\",\"content\":{\"title\":\"添加客服二维码\",\"time\":\"早上 9:00 - 22:00\",\"mobile\":\"13800138000\",\"qrcode\":\"/admin/sys-file/oss/file?fileName=86f81144ab2a4984bbf63fe851d49faf.png\"},\"styles\":{}}]', NULL, 'admin', NULL, '2026-05-13 23:37:53', '0', 1);
INSERT INTO `app_page` VALUES (4, 4, '工作台', '[{\"id\":\"mp47dnlr51ltq\",\"title\":\"常用功能\",\"name\":\"workbench-shortcuts\",\"content\":{\"enabled\":1,\"data\":[{\"icon\":\"send\",\"name\":\"我的\",\"link\":{\"path\":\"/pages/workbench/flow/tasks/index?type=started\",\"name\":\"我的\",\"type\":\"flow-tasks\"},\"color\":\"#2563eb\"},{\"icon\":\"clock-circle\",\"name\":\"待办\",\"link\":{\"path\":\"/pages/workbench/flow/tasks/index?type=pending\",\"name\":\"待办\",\"type\":\"flow-tasks\"},\"color\":\"#d97706\"},{\"icon\":\"email\",\"name\":\"抄送\",\"link\":{\"path\":\"/pages/workbench/flow/tasks/index?type=cc\",\"name\":\"抄送\",\"type\":\"flow-tasks\"},\"color\":\"#4f46e5\"},{\"icon\":\"check-circle\",\"name\":\"已办\",\"link\":{\"path\":\"/pages/workbench/flow/tasks/index?type=completed\",\"name\":\"已办\",\"type\":\"flow-tasks\"},\"color\":\"#15803d\"}]},\"styles\":{}}]', NULL, 'admin', NULL, '2026-05-13 23:44:57', '0', 1);
COMMIT;
-- ----------------------------
@@ -114,10 +139,11 @@ DROP TABLE IF EXISTS `app_tabbar`;
CREATE TABLE `app_tabbar` (
`id` bigint unsigned NOT NULL COMMENT '主键',
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '导航名称',
`selected` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '未选图标',
`unselected` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '已选图标',
`selected` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '选中图标',
`unselected` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '未选中图标',
`link` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '链接地址',
`sort_order` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
`login_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT '是否需要登录(0-不需要,1-需要)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`create_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
@@ -131,113 +157,29 @@ CREATE TABLE `app_tabbar` (
-- Records of app_tabbar
-- ----------------------------
BEGIN;
INSERT INTO `app_tabbar` VALUES (1, '首页', 'https://minio.pigx.top/oss/app/tabbar0.png', 'https://minio.pigx.top/oss/app/tabbar0_0.png', '{\"path\":\"/pages/index/index\",\"name\":\"商城首页\",\"type\":\"shop\"}', 0, NULL, '2023-06-15 09:16:25', NULL, 'admin', '0',1);
INSERT INTO `app_tabbar` VALUES (2, '资讯', 'https://minio.pigx.top/oss/app/tabbar1.png', 'https://minio.pigx.top/oss/app/tabbar1_1.png', '{\"path\":\"/pages/news/news\",\"name\":\"文章资讯\",\"type\":\"shop\"}', 1, NULL, '2023-06-15 09:16:25', NULL, 'admin', '0',1);
INSERT INTO `app_tabbar` VALUES (3, '我的', 'https://minio.pigx.top/oss/app/tabbar3.png', 'https://minio.pigx.top/oss/app/tabbar3_3.png', '{\"path\":\"/pages/user/user\",\"name\":\"个人中心\",\"type\":\"shop\"}',2, NULL, '2023-06-15 09:16:25', NULL, 'admin', '0',1);
INSERT INTO `app_tabbar` VALUES (1, '首页', 'home-fill', 'home', '{\"path\":\"/pages/index/index\",\"name\":\"首页\",\"type\":\"shop\"}', 0, '0', NULL, '2026-05-13 23:37:53', NULL, 'admin', '0', 1);
INSERT INTO `app_tabbar` VALUES (2, '工作台', 'apps', 'apps', '{\"path\":\"/pages/workbench/index\",\"name\":\"工作台\",\"type\":\"shop\"}', 1, '1', NULL, '2026-05-13 23:42:00', NULL, 'admin', '0', 1);
INSERT INTO `app_tabbar` VALUES (3, '我的', 'user', 'user', '{\"path\":\"/pages/user/index\",\"name\":\"个人中心\",\"type\":\"shop\"}', 2, '0', NULL, '2026-05-13 23:37:53', NULL, 'admin', '0', 1);
COMMIT;
-- ----------------------------
-- Table structure for app_role
-- Table structure for app_role_tabbar
-- ----------------------------
DROP TABLE IF EXISTS `app_role`;
CREATE TABLE `app_role` (
`role_id` bigint(20) NOT NULL,
`role_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`role_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`role_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ' ' COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ' ' COMMENT '修改人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0',
`tenant_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`role_id`) USING BTREE,
KEY `role_idx1_role_code` (`role_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='app角色表';
DROP TABLE IF EXISTS `app_role_tabbar`;
CREATE TABLE `app_role_tabbar` (
`role_id` bigint(20) NOT NULL COMMENT '系统角色ID',
`tabbar_id` bigint(20) NOT NULL COMMENT '底部导航ID',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户',
PRIMARY KEY (`role_id`,`tabbar_id`,`tenant_id`) USING BTREE,
KEY `app_role_tabbar_role_index` (`role_id`,`tenant_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='App角色底部导航表';
-- ----------------------------
-- Records of app_role
-- Records of app_role_tabbar
-- ----------------------------
BEGIN;
INSERT INTO `app_role` VALUES (1, 'app用户', 'APP_USER', 'app用户角色', '', '', '2022-12-07 06:34:18', '2023-03-09 06:34:42', '0', 1);
COMMIT;
-- ----------------------------
-- Table structure for app_social_details
-- ----------------------------
DROP TABLE IF EXISTS `app_social_details`;
CREATE TABLE `app_social_details` (
`id` bigint(20) NOT NULL COMMENT '主键', -- 主键
`type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '社交类型', -- 社交类型
`remark` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注', -- 备注
`app_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '应用ID', -- 应用ID
`app_secret` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '应用密钥', -- 应用密钥
`redirect_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '重定向URL', -- 重定向URL
`ext` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段', -- 拓展字段
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ' ' COMMENT '创建人', -- 创建人
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ' ' COMMENT '修改人', -- 修改人
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志', -- 删除标志
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC
COMMENT='系统社交登录账号表'; -- 系统社交登录账号表
-- ----------------------------
-- Records of app_social_details
-- ----------------------------
BEGIN;
INSERT INTO `app_social_details` VALUES (1, 'MINI', '小程序登录', 'app_id', 'app_secret', 'http://www.baidu.com123', NULL, '', 'admin', '2022-12-09 01:44:42', '2023-04-03 06:12:30', '0');
COMMIT;
-- ----------------------------
-- Table structure for app_user
-- ----------------------------
DROP TABLE IF EXISTS `app_user`;
CREATE TABLE `app_user` (
`user_id` bigint(20) NOT NULL COMMENT '用户id',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户名',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '密码',
`salt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '盐值',
`phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '手机号码',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '头像图片链接',
`nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段:昵称',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段:姓名',
`email` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段:邮箱',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ' ' COMMENT '修改人',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
`last_modified_time` datetime DEFAULT NULL COMMENT '最后一次密码修改时间',
`lock_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '锁定状态',
`wx_openid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信登录openId',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='app用户表';
-- ----------------------------
-- Records of app_user
-- ----------------------------
BEGIN;
INSERT INTO `app_user` VALUES (1, 'appuser', '$2a$10$XQu3TmORLqDWayFspQN.U.LigJ5TWPTdXPIn/6SxGHKED3PVpuMH6', NULL, '17338122125', NULL, 'aeizzz', '刘洪磊', 'aeizzz@foxmail.com', '', 'appuser', '2022-12-07 02:59:38', '2023-03-09 15:14:44', '0', 1, NULL, '0', 'oBxPy5EnbDiN-gGEaovCpp_IkrkQ');
COMMIT;
-- ----------------------------
-- Table structure for app_user_role
-- ----------------------------
DROP TABLE IF EXISTS `app_user_role`;
CREATE TABLE `app_user_role` (
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`role_id` bigint(20) NOT NULL COMMENT '角色ID',
PRIMARY KEY (`user_id`,`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用户角色表';
-- ----------------------------
-- Records of app_user_role
-- ----------------------------
BEGIN;
INSERT INTO `app_user_role` VALUES (1, 1);
INSERT INTO `app_role_tabbar` VALUES (1, 2, 1);
INSERT INTO `app_role_tabbar` VALUES (1, 3, 1);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
+184 -114
View File
@@ -3,6 +3,35 @@ USE pigxx_bi;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for chat2bi_table_meta
-- ----------------------------
DROP TABLE IF EXISTS `chat2bi_table_meta`;
CREATE TABLE `chat2bi_table_meta` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`db_source_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据源来源表标识, 如: db_source / api_source / file_source / system_source',
`db_source_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '对应来源表的主键ID',
`schema_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Schema名',
`table_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表名',
`source_comment` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表注释-源(同步写入, 每次同步覆盖)',
`table_comment` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表注释-用户(用户手动填写, 同步不覆盖)',
`columns_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '列定义[{name,type,source_comment,comment,is_primary,sample_values,nulltable}]',
`relations_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '关联关系[{column,ref_table,ref_column,type}]',
`is_enabled` tinyint(4) NOT NULL DEFAULT 1 COMMENT '对LLM可见: 0=否 1=是',
`synced_time` datetime NULL DEFAULT NULL COMMENT '最近同步时间',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`tenant_id` int(11) NULL DEFAULT NULL COMMENT '多租户标识',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_source_table`(`db_source_type`, `db_source_id`, `schema_name`, `table_name`) USING BTREE,
INDEX `idx_source`(`db_source_type`, `db_source_id`) USING BTREE,
INDEX `idx_table_name`(`table_name`) USING BTREE,
INDEX `idx_table_name_comment`(`table_name`, `source_comment`(320), `table_comment`(320)) USING BTREE,
INDEX `idx_table_comment`(`table_comment`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '表元数据(同步+手动维护, 支持多数据源表)' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for huiyuan_age
-- ----------------------------
@@ -179,7 +208,7 @@ CREATE TABLE `jimu_dict` (
`update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`type` int(1) UNSIGNED ZEROFILL NULL DEFAULT 0 COMMENT '字典类型0为string,1为number',
`tenant_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
`tenant_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_sd_dict_code`(`dict_code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
@@ -519,9 +548,10 @@ CREATE TABLE `jimu_report` (
`css_str` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'css增强',
`js_str` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'js增强',
`py_str` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'py增强',
`tenant_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
`tenant_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
`update_count` int(11) NULL DEFAULT 0 COMMENT '乐观锁版本',
`submit_form` tinyint(1) NULL DEFAULT NULL COMMENT '是否填报报表 0不是,1是',
`is_multi_sheet` tinyint(4) NULL DEFAULT NULL COMMENT '是否多sheet报表 1是 0否',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uniq_jmreport_code`(`code`) USING BTREE,
INDEX `uniq_jmreport_createby`(`create_by`) USING BTREE,
@@ -531,72 +561,72 @@ CREATE TABLE `jimu_report` (
-- ----------------------------
-- Records of jimu_report
-- ----------------------------
INSERT INTO `jimu_report` VALUES ('1011880586225221632', '20210108104603__0642', '实习证明副本0642', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":907,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":69},\"1\":{\"width\":41},\"4\":{\"width\":119},\"5\":{\"width\":147},\"6\":{\"width\":31},\"len\":100},\"area\":{\"sri\":5,\"sci\":9,\"eri\":5,\"eci\":9,\"width\":100,\"height\":29},\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"1011880586225221632\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\"},\"1\":{\"text\":\"\"}}},\"1\":{\"cells\":{\"0\":{\"text\":\"\"}}},\"3\":{\"cells\":{\"2\":{\"text\":\"\",\"rendered\":\"\"}}},\"5\":{\"cells\":{\"9\":{\"text\":\"1\"}},\"height\":29},\"6\":{\"cells\":{\"2\":{\"text\":\" \",\"style\":2},\"9\":{}},\"height\":34},\"7\":{\"cells\":{\"2\":{\"merge\":[0,4],\"text\":\"实习证明\",\"style\":2}},\"height\":41},\"8\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":3},\"2\":{\"text\":\"\"}}},\"9\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":3},\"2\":{\"text\":\" \",\"style\":3},\"3\":{\"text\":\"\"}},\"isDrag\":true,\"height\":33},\"10\":{\"cells\":{\"2\":{\"text\":\"${tt.name}\",\"style\":11},\"3\":{\"text\":\"同学在我公司与 2020年4月1日 至 2020年5月1日 实习。\",\"style\":19,\"merge\":[0,3],\"height\":34}},\"height\":34},\"11\":{\"cells\":{},\"height\":28},\"12\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":6},\"2\":{\"style\":13,\"text\":\"${tt.pingjia}\",\"merge\":[3,4],\"height\":129}},\"height\":36},\"13\":{\"cells\":{},\"height\":29},\"14\":{\"cells\":{},\"height\":33},\"15\":{\"cells\":{},\"height\":31},\"16\":{\"cells\":{}},\"17\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"特此证明!\",\"style\":12}}},\"20\":{\"cells\":{\"2\":{\"text\":\"\"},\"3\":{\"text\":\" \",\"style\":3},\"4\":{\"text\":\"\"}}},\"21\":{\"cells\":{\"4\":{\"text\":\"\"}}},\"22\":{\"cells\":{\"3\":{\"text\":\" \",\"style\":3},\"4\":{\"text\":\"证明人:\",\"style\":11},\"5\":{\"text\":\"${tt.lingdao}\",\"style\":12}}},\"23\":{\"cells\":{\"4\":{\"text\":\"\"},\"5\":{\"text\":\"${tt.shijian}\",\"style\":15}}},\"len\":100},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":{\"path\":\"https://static.jeecg.com/designreport/images/11_1611283832037.png\",\"repeat\":\"no-repeat\",\"width\":\"\",\"height\":\"\"},\"name\":\"sheet1\",\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"font\":{\"size\":14}},{\"align\":\"center\",\"font\":{\"size\":16}},{\"align\":\"right\"},{\"align\":\"left\"},{\"align\":\"left\",\"valign\":\"top\"},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":true},{\"font\":{\"size\":16}},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":false},{\"textwrap\":false},{\"textwrap\":true},{\"align\":\"right\",\"font\":{\"size\":12}},{\"font\":{\"size\":12}},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":true,\"font\":{\"size\":12}},{\"textwrap\":true,\"font\":{\"size\":12}},{\"align\":\"left\",\"font\":{\"size\":12}},{\"font\":{\"size\":12},\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"size\":14}},{\"font\":{\"size\":10}},{\"textwrap\":false,\"font\":{\"size\":12}}],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[\"C8:G8\",\"D11:G11\",\"C13:G16\"]}', NULL, 'https://static.jeecg.com/designreport/images/未标题-1_1610074948259.png', 'admin', '2024-10-31 16:19:02', 'admin', '2024-12-22 10:33:25', 0, NULL, NULL, 0, 159, NULL, NULL, NULL, '1', 0, NULL);
INSERT INTO `jimu_report` VALUES ('1011880759647109120', '20240823093133__4370', '在线填报-员工信息登记副本4370', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":698,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":76},\"1\":{\"width\":114},\"2\":{\"width\":87},\"3\":{\"width\":99},\"4\":{\"width\":65},\"5\":{\"width\":126},\"6\":{\"width\":131},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"api\",\"code\":\"api\",\"name\":\"api\",\"isMain\":true,\"isEdit\":true,\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/submit/handle\"}],\"excel_config_id\":\"989065112487022592\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"merge\":[1,6],\"height\":90,\"text\":\"员工信息登记表\",\"style\":6}},\"height\":45},\"1\":{\"cells\":{},\"height\":45},\"2\":{\"cells\":{\"0\":{\"text\":\"编号\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"no\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"patternErrorTip\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"年龄\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"InputNumber\",\"component\":\"InputNumber\",\"field\":\"age\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"precision\":0,\"isLimitMinNum\":false,\"minNum\":0,\"isLimitMaxNum\":false,\"maxNum\":100,\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"age\"}]},\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"填写时间\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-time\",\"component\":\"DatePicker\",\"field\":\"create_time\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd HH:mm:ss\",\"defaultValue\":\"\"},\"style\":7,\"text\":\" \"},\"6\":{\"merge\":[3,0],\"height\":180,\"fillForm\":{\"componentFlag\":\"JUploadImage\",\"component\":\"JUploadImage\",\"field\":\"photo\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":false,\"maxUploadNum\":1,\"h_align\":\"center\"},\"style\":7,\"text\":\" \"}},\"height\":45},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"text\":\" \",\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"name\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"name\"},{\"dbTable\":\"test_form_submit1\",\"dbField\":\"name\"}],\"label\":\"A5\",\"labelText\":\"姓名\",\"pattern\":\"\",\"patternErrorTip\":\"\"}},\"2\":{\"text\":\"性别\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"sex\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"男\",\"value\":\"1\"},{\"label\":\"女\",\"value\":\"2\"}],\"apiUrl\":\"\",\"dictCode\":\"sex1\",\"dictName\":\"性别\"},\"style\":8,\"text\":\" \"},\"4\":{\"text\":\"出生日期\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"brithday\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\"},\"style\":7,\"text\":\" \"},\"8\":{}},\"height\":45},\"4\":{\"cells\":{\"0\":{\"text\":\"民族\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"nation\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"label\":\"选项2\",\"value\":\"2\"},{\"label\":\"选项3\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"minzu\",\"dictName\":\"民族\",\"multiple\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"政治面貌\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"politics\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"politics\"}],\"dataSource\":\"api\",\"options\":[{\"label\":\"选项1\",\"value\":\Line truncated
INSERT INTO `jimu_report` VALUES ('1038706553753010176', '20240909152438__0626', '填报-SQL数据集填报副本0626', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"fillFormToolbar\":{\"show\":true,\"btnList\":[\"save\",\"subTable_add\",\"verify\",\"subTable_del\",\"print\",\"close\",\"first\",\"prev\",\"next\",\"paging\",\"total\",\"last\"]},\"freeze\":\"A1\",\"dataRectWidth\":800,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":100},\"2\":{\"width\":200},\"3\":{\"width\":100},\"4\":{\"width\":200},\"5\":{\"width\":100},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"JEZX3M1725874665916\",\"name\":\"个人简历数据源\",\"isMain\":true,\"isEdit\":false,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_resume\",\"idField\":\"id\",\"idStrategy\":\"ATOMIC\",\"fkField\":\"\"}],\"excel_config_id\":\"1038706553753010176\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"个人简历\",\"merge\":[0,3],\"height\":68,\"style\":1}},\"height\":68},\"1\":{\"cells\":{\"1\":{\"text\":\"基本资料\",\"style\":5,\"merge\":[0,3],\"height\":38},\"5\":{\"style\":7,\"text\":\" \"}},\"height\":38},\"2\":{\"cells\":{\"1\":{\"text\":\"姓名:\",\"style\":8,\"fillFormLabel\":\"*\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725873834685_524574\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[2,1],\"label\":\"B3\",\"labelText\":\"姓名:\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"name\"}]}},\"3\":{\"text\":\"性别:\",\"style\":3,\"fillFormLabel\":\"*\"},\"4\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"key_1725873880502_783022\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[2,3],\"label\":\"D3\",\"labelText\":\"性别:\",\"dataSource\":\"static\",\"options\":[{\"label\":\"男\",\"value\":\"2\"},{\"label\":\"女\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"\",\"dictName\":\"\",\"h_align\":\"left\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"sex\"}]}}},\"height\":45},\"3\":{\"cells\":{\"1\":{\"text\":\"出生日期:\",\"style\":8},\"2\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"key_1725874244968_631595\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"birthday\"}]}},\"3\":{\"text\":\"联系方式:\",\"style\":3,\"fillFormLabel\":\"*\"},\"4\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725874490222_904616\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[3,3],\"label\":\"D4\",\"labelText\":\"联系方式:\",\"pattern\":\"^1[3456789]\\\\d{9}$\",\"patternErrorTip\":\"请输入联系方式\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"phone\"}]}}},\"height\":45},\"4\":{\"cells\":{\"1\":{\"text\":\"邮箱:\",\"style\":8,\"fillFormLabel\":\"*\"},\"2\":{\"fillForm\":{\"componentFlag\":\"inputLine truncated
INSERT INTO `jimu_report` VALUES ('1063967011732750336', '20250324095205', '测试填报11', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"fillFormToolbar\":{\"show\":true,\"btnList\":[\"save\",\"subTable_add\",\"verify\",\"subTable_del\",\"print\",\"close\",\"first\",\"prev\",\"next\",\"paging\",\"total\",\"last\",\"exportPDF\",\"exportExcel\"]},\"freeze\":\"A1\",\"dataRectWidth\":200,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":100},\"2\":{\"width\":200},\"3\":{\"width\":100},\"4\":{\"width\":200},\"5\":{\"width\":100},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"50\":{\"width\":200},\"51\":{\"width\":100},\"52\":{\"width\":200},\"53\":{\"width\":100},\"54\":{\"width\":200},\"55\":{\"width\":100},\"56\":{\"width\":200},\"57\":{\"width\":100},\"58\":{\"width\":200},\"59\":{\"width\":100},\"60\":{\"width\":200},\"61\":{\"width\":100},\"62\":{\"width\":200},\"63\":{\"width\":100},\"64\":{\"width\":200},\"65\":{\"width\":100},\"66\":{\"width\":200},\"67\":{\"width\":100},\"68\":{\"width\":200},\"69\":{\"width\":100},\"70\":{\"width\":200},\"71\":{\"width\":100},\"72\":{\"width\":200},\"73\":{\"width\":100},\"74\":{\"width\":200},\"75\":{\"width\":100},\"76\":{\"width\":200},\"77\":{\"width\":100},\"78\":{\"width\":200},\"79\":{\"width\":100},\"80\":{\"width\":200},\"81\":{\"width\":100},\"82\":{\"width\":200},\"83\":{\"width\":100},\"84\":{\"width\":200},\"85\":{\"width\":100},\"86\":{\"width\":200},\"87\":{\"width\":100},\"88\":{\"width\":200},\"89\":{\"width\":100},\"90\":{\"width\":200},\"91\":{\"width\":100},\"92\":{\"width\":200},\"93\":{\"width\":100},\"94\":{\"width\":200},\"95\":{\"width\":100},\"96\":{\"width\":200},\"97\":{\"width\":100},\"98\":{\"width\":200},\"99\":{\"width\":100},\"len\":100},\"area\":{\"sri\":5,\"sci\":2,\"eri\":5,\"eci\":2,\"width\":200,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"1063967011732750336\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{},\"height\":45},\"1\":{\"cells\":{},\"height\":45},\"2\":{\"cells\":{\"1\":{\"text\":\"1212\"},\"2\":{\"fillForm\":{\"componentFlag\":\"JDepartment\",\"component\":\"JDepartment\",\"field\":\"key_1742781130261_232674\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"unique\":false,\"requiredRelevanceCell\":\"\",\"dbFieldBind\":[],\"label\":\"\",\"labelText\":\"\",\"disabled\":false,\"readonly\":false,\"hidden\":false,\"multiple\":false,\"apiUrl\":\"\"}}},\"height\":45},\"3\":{\"cells\":{},\"height\":45},\"4\":{\"cells\":{},\"height\":45},\"5\":{\"cells\":{},\"height\":45},\"6\":{\"cells\":{},\"height\":45},\"7\":{\"cells\":{},\"height\":45},\"8\":{\"cells\":{},\"height\":45},\"9\":{\"cells\":{},\"height\":45},\"10\":{\"cells\":{},\"height\":45},\"11\":{\"cells\":{},\"height\":45},\"12\":{\"cells\":{},\"height\":45},\"13\":{\"cells\":{},\"height\":45},\"14\":{\"cells\":{},\"height\":45},\"15\":{\"cells\":{},\"height\":45},\"16\":{\"cells\":{},\"height\":45},\"17\":{\"cells\":{},\"height\":45},\"18\":{\"cells\":{},\"height\":45},\"19\":{\"cells\":{},\"height\":45},\"20\":{\"cells\":{},\"height\":45},\"21\":{\"cells\":{},\"height\":45},\"22\":{\"cells\":{},\"height\":45},\"23\":{\"cells\":{},\"height\":45},\"24\":{\"cells\":{},\"height\":45},\"25\":{\"cells\":{},\"height\":45},\"26\":{\"cells\":{},\"height\":45},\"27\":{\"cells\":{},\"height\":45},\"28\":{\"cells\":{},\"height\":45},\"29\":{\"cells\":{},\"height\":45},\"30\":{\"cells\":{},\"height\":45},\"31\":{\"cells\":{},\"height\":45},\"Line truncated
INSERT INTO `jimu_report` VALUES ('1298922907493339136', '20200827180435', '员工信息横向统计表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":9,\"sci\":3,\"eri\":9,\"eci\":3,\"width\":100,\"height\":25},\"excel_config_id\":\"1298922907493339136\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"1\":{\"cells\":{\"0\":{\"text\":\"员工信息横向统计表\",\"style\":9,\"merge\":[0,11]}},\"height\":97},\"2\":{\"cells\":{\"1\":{\"text\":\"部门\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(department)}\",\"style\":11,\"direction\":\"right\",\"rendered\":\"\"}},\"isDrag\":true,\"height\":40},\"3\":{\"cells\":{\"1\":{\"text\":\"学历\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(education)}\",\"style\":11,\"direction\":\"right\"}},\"isDrag\":true,\"height\":39},\"4\":{\"cells\":{\"1\":{\"text\":\"性别\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(sex)}\",\"style\":11,\"direction\":\"right\"}},\"isDrag\":true,\"height\":41},\"5\":{\"cells\":{\"1\":{\"text\":\"年龄\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(age)}\",\"style\":11}},\"isDrag\":true,\"height\":39},\"6\":{\"cells\":{\"1\":{\"text\":\"姓名\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(name)}\",\"style\":11,\"direction\":\"right\"}},\"isDrag\":true,\"height\":40},\"7\":{\"cells\":{\"1\":{\"text\":\"薪水\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(salary)}\",\"style\":11,\"direction\":\"right\"}},\"isDrag\":true,\"height\":36},\"8\":{\"cells\":{\"2\":{\"direction\":\"right\"}},\"isDrag\":true},\"9\":{\"cells\":{\"3\":{\"aggregate\":\"group\",\"direction\":\"right\"}},\"isDrag\":true},\"11\":{\"cells\":{},\"isDrag\":true},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":204,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"align\":\"center\"},{\"align\":\"center\",\"font\":{\"bold\":true}},{\"align\":\"center\",\"font\":{\"bold\":true,\"size\":14}},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"bold\":true,\"size\":14,\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"bold\":false,\"size\":14,\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"宋体\"},\"align\":\"center\"}],\"validations\":[],\"cols\":{\"0\":{\"width\":44},\"1\":{\"width\":79},\"2\":{\"width\":81},\"len\":50},\"merges\":[\"A2:L2\"]}', NULL, 'https://static.jeecg.com/designreport/images/QQ截图20210127135515_1611726986233.png', 'admin', '2020-08-27 18:04:35', 'admin', '2021-08-04 18:53:48', 0, NULL, NULL, 1, 2575, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('1314846205892759552', '20201010163252', 'XXX有限公司员工登记表', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":33,\"sci\":12,\"eri\":33,\"eci\":12,\"width\":100,\"height\":25},\"excel_config_id\":\"1314846205892759552\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,8]},\"10\":{}},\"height\":22},\"1\":{\"cells\":{\"2\":{\"style\":87,\"text\":\" \"},\"3\":{\"style\":87,\"text\":\" \"},\"4\":{\"style\":87,\"text\":\" \"},\"5\":{\"style\":87,\"text\":\" \"},\"6\":{\"style\":87,\"text\":\" \"},\"7\":{\"style\":87,\"text\":\" \"},\"8\":{\"style\":87,\"text\":\" \"},\"9\":{\"style\":87,\"text\":\" \"}},\"height\":24},\"2\":{\"cells\":{\"1\":{\"text\":\"所在部门\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.department}\",\"style\":23,\"merge\":[0,2]},\"5\":{\"text\":\"职务\",\"style\":93},\"6\":{\"text\":\"${yuangongjiben.post}\",\"style\":23},\"7\":{\"text\":\"填写日期\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.data}\",\"style\":23,\"merge\":[0,1]}},\"isDrag\":true,\"height\":36},\"3\":{\"cells\":{\"1\":{\"text\":\"姓名\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.name}\",\"style\":23},\"3\":{\"text\":\"性别\",\"style\":93},\"4\":{\"text\":\"${yuangongjiben.sex}\",\"style\":23},\"5\":{\"text\":\"出生日期\",\"style\":93},\"6\":{\"text\":\"${yuangongjiben.birth}\",\"style\":23},\"7\":{\"text\":\"政治面貌\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.political}\",\"style\":26,\"merge\":[0,1]},\"9\":{\"style\":7,\"text\":\" \"}},\"isDrag\":true,\"height\":33},\"4\":{\"cells\":{\"1\":{\"text\":\"机关\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.office}\",\"style\":23},\"3\":{\"style\":93,\"text\":\"民族\"},\"4\":{\"text\":\"${yuangongjiben.nation}\",\"style\":23},\"5\":{\"style\":93,\"text\":\"健康状况\"},\"6\":{\"text\":\"${yuangongjiben.health}\",\"style\":23},\"7\":{\"style\":93,\"text\":\"户籍类型\"},\"8\":{\"text\":\"${yuangongjiben.register}\",\"style\":26},\"9\":{\"style\":35,\"text\":\" \",\"merge\":[3,0],\"virtual\":\"AgnPgVOpFUlD88BW\"}},\"isDrag\":true,\"height\":31},\"5\":{\"cells\":{\"1\":{\"text\":\"最高学历\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.education}\",\"style\":23},\"3\":{\"text\":\"所学专业\",\"style\":93},\"4\":{\"text\":\"${yuangongjiben.major}\",\"style\":23,\"merge\":[0,2]},\"7\":{\"text\":\"毕业时间\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.gdata}\",\"style\":23}},\"isDrag\":true,\"height\":35},\"6\":{\"cells\":{\"1\":{\"text\":\"电子邮箱\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.mailbox}\",\"style\":23},\"3\":{\"text\":\"手机号\",\"style\":93},\"4\":{\"text\":\"${yuangongjiben.telphone}\",\"style\":23,\"merge\":[0,2]},\"7\":{\"text\":\"家庭电话\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.homephone}\",\"style\":23}},\"isDrag\":true,\"height\":38},\"7\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"第一次参加工作时间\",\"style\":93},\"3\":{\"text\":\"${yuangongjiben.pworktime}\",\"style\":133,\"merge\":[0,2]},\"6\":{\"style\":93,\"text\":\"入职时间\"},\"7\":{\"text\":\"${yuangongjiben.entrytime}\",\"style\":24,\"merge\":[0,1]}},\"isDrag\":true,\"height\":27},\"8\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"毕业院校\",\"style\":93},\"3\":{\"text\":\"${yuangongjiben.school}\",\"style\":24,\"merge\":[0,2]},\"6\":{\"style\":93,\"text\":\"身份证号\"},\"7\":{\"text\":\"${yuangongjiben.idcard}\",\"style\":24,\"merge\":[0,2]}},\"isDrag\":true,\"height\":34},\"9\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"入党(团)时间、地点\",\"style\":94},\"3\":{\"text\":\"${yuangongjiben.entrytime}\",\"style\":24,\"merge\":[0,2]},\"6\":{\"text\":\"婚姻状况\",\"style\":93},\"7\":{\"text\":\"${yuangongjiben.marital}\",\"style\":23},\"8\":{\"text\":\"有无子女\",\"style\":93},\"9\":{\"text\":\"${yuangongjiben.children}\",\"style\":23}},\"isDrag\":true,\"height\":33},\"10\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"户口所在街道名称\",\"style\":93},\"3\":{\"text\":\"${yuangongjiben.hukoustreet}\",\"style\":24,\"merge\":[0,2]},\"6\":{\"merge\":[0,1],\"text\":\"户口所在地邮编\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.hukounum}\",\"style\":23,\"merge\":[0,1]}},\"isDrag\":true,\"height\":38},\"11\":{\"cells\":{\"1\":{\"text\":\"户口所在地地址\",\"style\":96,\"merge\":[2,1]},\"3\":{\"text\":\"${yuangongjiben.hukoudi}\",\"style\":26,\"merge\":[2,6]}},\"isDrag\":true},\"13\":{\"cells\":{\"12\":{\"text\":\"\"}},\"isDrag\":true},\"14\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"现居住地址\",\"style\":98},\"3\":{\"text\":\"${yuangongjiben.currentdi}\",\"style\":26,\"merge\":[0,2]},\"6\":{\"style\":98,\"merge\":[0,1],\"text\":\"现居住地址邮编\"},\"8\":{\"text\":\"${yuangongjLine truncated
INSERT INTO `jimu_report` VALUES ('1331429368098066432', '20201125104813', '制作业产能监控大屏', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":2,\"col\":5,\"colspan\":8,\"rowspan\":8,\"width\":\"893\",\"height\":\"206\",\"config\":\"{\\\"yAxis\\\":[{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"value\\\"},{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"value\\\"}],\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\",\\\"17\\\",\\\"18\\\",\\\"19\\\",\\\"20\\\",\\\"21\\\",\\\"22\\\",\\\"23\\\",\\\"24\\\",\\\"25\\\",\\\"26\\\",\\\"27\\\",\\\"28\\\",\\\"29\\\",\\\"30\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"type\\\":\\\"category\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"计划生产\\\",\\\"实际完成量\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"right\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"grid\\\":{\\\"top\\\":56,\\\"left\\\":34,\\\"bottom\\\":37,\\\"right\\\":53},\\\"series\\\":[{\\\"barWidth\\\":8,\\\"itemStyle\\\":{\\\"color\\\":\\\"#70BDD1\\\"},\\\"barMinHeight\\\":2,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"labelPositionArray\\\":[{\\\"value\\\":\\\"top\\\",\\\"text\\\":\\\"上方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"left\\\",\\\"text\\\":\\\"左边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"right\\\",\\\"text\\\":\\\"右边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"bottom\\\",\\\"text\\\":\\\"下方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"inside\\\",\\\"text\\\":\\\"内部\\\",\\\"type\\\":\\\"bar\\\"}]},\\\"type\\\":\\\"bar\\\",\\\"name\\\":\\\"计划生产\\\",\\\"data\\\":[100,130,1400,108,200,130,160,180,200,300,110,120,130,140,150,100,100,100,100,100,200,300,110,120,130,140,105,120,150,100],\\\"typeData\\\":[{\\\"name\\\":\\\"实际完成量\\\",\\\"type\\\":\\\"line\\\"}]},{\\\"itemStyle\\\":{\\\"color\\\":\\\"#D69071\\\"},\\\"symbolSize\\\":8,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"labelPositionArray\\\":[{\\\"value\\\":\\\"top\\\",\\\"text\\\":\\\"上方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"left\\\",\\\"text\\\":\\\"左边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"right\\\",\\\"text\\\":\\\"右边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"bottom\\\",\\\"text\\\":\\\"下方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"inside\\\",\\\"text\\\":\\\"内部\\\",\\\"type\\\":\\\"bar\\\"}]},\\\"type\\\":\\\"line\\\",\\\"yAxisIndex\\\":1,\\\"name\\\":\\\"实际完成量\\\",\\\"data\\\":[100,130,140,108,200,130,160,180,200,300,110,120,130,140,150,100,100,100,100,100,200,300,110,120,130,140,105,120,150,100],\\\"typeData\\\":[{\\\"name\\\":\\\"实际完成量\\\",\\\"type\\\":\\\"line\\\"}]}],\\\"chartType\\\":\\\"linebar\\\",\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"crossStyle\\\":{\\\"color\\\":\\\"#999\\\"},\\\"type\\\":\\\"cross\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"left\\\":\\\"center\\\",\\\"show\\\":true,\\\"text\\\":\\\"日生产效率监控\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"14\\\",\\\"fontWeight\\\":\\\"normal\\\"},\\\"top\\\":10}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1331474698436915202\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"rishengchan\",\"chartType\":\"mixed.linebar\",\"isTiming\":true,\"intervalTime\":\"5\"},\"layer_id\":\"Or4klM9AZSLine truncated
INSERT INTO `jimu_report` VALUES ('1331503965770223616', '20201125155042', '房屋销售综合展示大屏', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":13,\"colspan\":4,\"rowspan\":6,\"width\":\"323\",\"height\":\"148\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":34,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"高层\\\",\\\"小高层\\\",\\\"写字楼\\\",\\\"厂房\\\",\\\"公寓\\\",\\\"别墅\\\",\\\"厂房\\\",\\\"四合院\\\",\\\"loft\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":50,\\\"left\\\":30,\\\"bottom\\\":44,\\\"right\\\":24},\\\"series\\\":[{\\\"areaStyle\\\":null,\\\"data\\\":[20,25,10,5,9,1,5,1,20],\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"isArea\\\":false,\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#D04672\\\"},\\\"step\\\":false,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"line\\\",\\\"smooth\\\":true}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":10,\\\"text\\\":\\\"房形分析\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1331922734933987329\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"fangyuan\",\"chartType\":\"line.smooth\",\"isTiming\":true,\"intervalTime\":\"5\"},\"layer_id\":\"nk6I2RCefm9scS1k\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,13],[1,14],[1,15]]},{\"row\":2,\"col\":1,\"colspan\":3,\"rowspan\":14,\"width\":\"337\",\"height\":\"342\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"缤纷南郡\\\",\\\"中航华府\\\",\\\"3中家属楼\\\",\\\"幸福家园\\\",\\\"水晶国际\\\",\\\"绿城小区\\\",\\\"缤纷南郡二期\\\",\\\"国奥家园\\\",\\\"西西胡同\\\",\\\"融创学府\\\",\\\"蓝湾国际\\\",\\\"广发小区\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"房子\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":false,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"grid\\\":{\\\"top\\\":60,\\\"left\\\":71,\\\"bottom\\\":39,\\\"right\\\":29},\\\"series\\\":[{\\\"barWidth\\\":13,\\\"data\\\":[2,2,2,3,4,3,3,5,2,7,4,8],\\\"name\\\":\\\"房子\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#67994B\\\",\\\"barBorderRadius\\\":7},\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[]}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"left\\\":\\\"left\\\",\\\"show\\\":true,\\\"text\\\":\\\"各楼盘成交量排名\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"14\\\",\\\"fontWeight\\\":\\\"normal\\\"},\\\"top\\\":10}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\Line truncated
INSERT INTO `jimu_report` VALUES ('1333962561053396992', '20201202103422', '房地产大屏', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":1,\"colspan\":4,\"rowspan\":9,\"width\":\"359\",\"height\":\"223\",\"config\":\"{\\\"yAxis\\\":[{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#1E90FF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"value\\\"},{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#1E90FF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"value\\\"}],\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"萧山\\\",\\\"主城\\\",\\\"余杭\\\",\\\"江东\\\",\\\"阜阳\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#1E90FF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"type\\\":\\\"category\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"出让资金(亿元)\\\",\\\"出让面积(万平方米)\\\"],\\\"top\\\":\\\"bottom\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFD700\\\",\\\"fontSize\\\":\\\"8\\\"}},\\\"grid\\\":{\\\"top\\\":55,\\\"left\\\":36,\\\"bottom\\\":65,\\\"right\\\":50},\\\"series\\\":[{\\\"barWidth\\\":15,\\\"itemStyle\\\":{\\\"color\\\":\\\"#2249B1\\\",\\\"barBorderRadius\\\":0},\\\"barMinHeight\\\":2,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"labelPositionArray\\\":[{\\\"value\\\":\\\"top\\\",\\\"text\\\":\\\"上方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"left\\\",\\\"text\\\":\\\"左边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"right\\\",\\\"text\\\":\\\"右边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"bottom\\\",\\\"text\\\":\\\"下方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"inside\\\",\\\"text\\\":\\\"内部\\\",\\\"type\\\":\\\"bar\\\"}]},\\\"type\\\":\\\"bar\\\",\\\"name\\\":\\\"出让资金(亿元)\\\",\\\"data\\\":[90,100,80,20,30],\\\"typeData\\\":[{\\\"name\\\":\\\"出让资金(亿元)\\\",\\\"type\\\":\\\"bar\\\"},{\\\"name\\\":\\\"出让面积(万平方米)\\\",\\\"type\\\":\\\"line\\\"}]},{\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"itemStyle\\\":{\\\"color\\\":\\\"#D8807E\\\"},\\\"step\\\":false,\\\"smooth\\\":false,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"labelPositionArray\\\":[{\\\"value\\\":\\\"top\\\",\\\"text\\\":\\\"上方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"left\\\",\\\"text\\\":\\\"左边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"right\\\",\\\"text\\\":\\\"右边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"bottom\\\",\\\"text\\\":\\\"下方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"inside\\\",\\\"text\\\":\\\"内部\\\",\\\"type\\\":\\\"bar\\\"}]},\\\"type\\\":\\\"line\\\",\\\"yAxisIndex\\\":1,\\\"name\\\":\\\"出让面积(万平方米)\\\",\\\"data\\\":[70,90,40,10,20],\\\"typeData\\\":[{\\\"name\\\":\\\"出让资金(亿元)\\\",\\\"type\\\":\\\"bar\\\"},{\\\"name\\\":\\\"出让面积(万平方米)\\\",\\\"type\\\":\\\"line\\\"}]}],\\\"chartType\\\":\\\"linebar\\\",\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"crossStyle\\\":{\\\"color\\\":\\\"#999\\\"},\\\"type\\\":\\\"cross\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"left\\\":\\\"left\\\",\\\"show\\\":true,\\\"text\\\":\\\"土地出让面积走势\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"14\\\",\\\"fontWeight\\\":\\\"normal\\\"},\\\"top\\\":10}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1333968597264900097\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"mianji\",\"chartType\":\"mixed.linebar\",\"isTiming\":true,\"intervalTime\":\"5\",\"chartId\":\"\"},\"layer_id\":\"MqcEkZ87DgSKlNKU\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":\"\",\"color\":\"#fff\"Line truncated
INSERT INTO `jimu_report` VALUES ('1334028738995818496', '20201202145702', '大数据可视化展示平台', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":6,\"colspan\":5,\"rowspan\":14,\"width\":\"499\",\"height\":\"348\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"1月\\\",\\\"2月\\\",\\\"3月\\\",\\\"4月\\\",\\\"5月\\\",\\\"6月\\\",\\\"7月\\\",\\\"8月\\\",\\\"9月\\\",\\\"10月\\\",\\\"11月\\\",\\\"12月\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"2017\\\",\\\"2018\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"vertical\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"grid\\\":{\\\"top\\\":68,\\\"left\\\":35,\\\"bottom\\\":45,\\\"right\\\":31},\\\"series\\\":[{\\\"barWidth\\\":9,\\\"data\\\":[2,3,3,9,15,12,6,4,6,7,4,10],\\\"name\\\":\\\"2017\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#49BCF7\\\",\\\"barBorderRadius\\\":8},\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[]},{\\\"barWidth\\\":9,\\\"data\\\":[1,4,5,11,12,9,5,6,6,3,3,9],\\\"name\\\":\\\"2018\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#62C98D\\\",\\\"barBorderRadius\\\":8},\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[]}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"left\\\":\\\"left\\\",\\\"show\\\":true,\\\"text\\\":\\\"柱形图标题\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"14\\\",\\\"fontWeight\\\":\\\"normal\\\"},\\\"top\\\":10}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1334052375119273986\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"zhuxingtu1\",\"chartType\":\"bar.multi\",\"isTiming\":true,\"intervalTime\":\"5\",\"chartId\":\"\"},\"layer_id\":\"aELaGxHbJDssfJ1j\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,6],[1,7],[1,8],[1,9],[1,10]]},{\"row\":1,\"col\":11,\"colspan\":4,\"rowspan\":7,\"width\":\"402\",\"height\":\"171\",\"config\":\"{\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"图例1\\\",\\\"图例2\\\",\\\"图例3\\\",\\\"图例4\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":false,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"series\\\":[{\\\"isRose\\\":true,\\\"data\\\":[{\\\"name\\\":\\\"图例1\\\",\\\"value\\\":10,\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(98,201,141,1)\\\"}},{\\\"name\\\":\\\"图例2\\\",\\\"value\\\":15,\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(45,140,240,1)\\\"}},{\\\"name\\\":\\\"图例3\\\",\\\"value\\\":25,\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(76,185,207,1)\\\"}},{\\\"name\\\":\\\"图例4\\\",\\\"value\\\":30,\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(83,182,102,1)\\\"}}],\\\"isRadius\\\":false,\\\"roseType\\\":\\\"radius\\\",\\\"notCount\\\":false,\\\"center\\\":[\\\"170\\\",\\\"90\\\"],\\\"name\\\":\\\"\\\",\\\"minAngle\\\":0,\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"outside\\\",\\\"textStyle\\\":{\\\"fontSize\\\":\\\"10\\\",\\\"fontWeight\\\":\\\"normal\\\"}},\\\"type\\\":\\\"pie\\\",\\\"radius\\\":\\\"50%\\\",\\\"autoSort\\\":false}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":5,\\\"text\\\":\\\"饼图1\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dLine truncated
INSERT INTO `jimu_report` VALUES ('1334074491629867008', '20201202175858', '乡村振兴普惠金融服务平台', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":5,\"colspan\":6,\"rowspan\":12,\"width\":\"568\",\"height\":\"435\",\"config\":\"{\\\"geo\\\":{\\\"map\\\":\\\"shandong\\\",\\\"zoom\\\":0.8,\\\"label\\\":{\\\"color\\\":\\\"#19DEF4\\\",\\\"fontSize\\\":12,\\\"show\\\":true},\\\"itemStyle\\\":{\\\"borderWidth\\\":0.5,\\\"areaColor\\\":\\\"#0C514B\\\",\\\"borderColor\\\":\\\"#000\\\"},\\\"emphasis\\\":{\\\"label\\\":{\\\"color\\\":\\\"#19DEF4\\\"},\\\"itemStyle\\\":{\\\"areaColor\\\":\\\"#0A2B34\\\"}},\\\"regions\\\":[],\\\"layoutSize\\\":600,\\\"roam\\\":true,\\\"layoutCenter\\\":[\\\"50%\\\",\\\"50%\\\"]},\\\"series\\\":[{\\\"encode\\\":{\\\"value\\\":[2]},\\\"data\\\":[{\\\"name\\\":\\\"济南市\\\",\\\"value\\\":[117.000923,36.675807,255]},{\\\"name\\\":\\\"青岛市\\\",\\\"value\\\":[120.355173,36.082982,300]},{\\\"name\\\":\\\"淄博市\\\",\\\"value\\\":[118.047648,36.814939,130]},{\\\"name\\\":\\\"枣庄市\\\",\\\"value\\\":[117.557964,34.856424,150]}],\\\"name\\\":\\\"\\\",\\\"emphasis\\\":{\\\"label\\\":{\\\"show\\\":true}},\\\"itemStyle\\\":{\\\"color\\\":\\\"#FFFF01\\\"},\\\"coordinateSystem\\\":\\\"geo\\\",\\\"label\\\":{\\\"formatter\\\":\\\"{b}\\\",\\\"show\\\":false,\\\"position\\\":\\\"right\\\"},\\\"type\\\":\\\"scatter\\\"}],\\\"chartType\\\":\\\"map\\\",\\\"tooltip\\\":{\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":18}},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":5,\\\"text\\\":\\\"主要城市空气质量\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#c23531\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":18},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1335909918854725633\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"ditu1\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"chartType\":\"map.scatter\",\"isTiming\":true,\"intervalTime\":\"5\",\"id\":\"reOVgCVG6ZPWh5c1\"},\"layer_id\":\"reOVgCVG6ZPWh5c1\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,5],[1,6],[1,7],[1,8],[1,9],[1,10]]},{\"row\":3,\"col\":11,\"colspan\":3,\"rowspan\":4,\"width\":\"357\",\"height\":\"147\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"玉米\\\",\\\"大豆\\\",\\\"花生\\\",\\\"高粱\\\",\\\"小麦\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":55,\\\"left\\\":60,\\\"bottom\\\":40,\\\"right\\\":24},\\\"series\\\":[{\\\"areaStyle\\\":{\\\"color\\\":\\\"#6CE6BC\\\",\\\"opacity\\\":0.4},\\\"data\\\":[1000879,3400879,2300879,2400879,3000],\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"isArea\\\":true,\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#9DE4D1\\\"},\\\"step\\\":false,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"line\\\",\\\"smooth\\\":false}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":10,\\\"text\\\":\\\"五年产业变化趋势\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#81E1B6\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1334083843610648578\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"wunian\",\"chartType\":\"line.area\",\"chartId\":\"\",\"isTiming\":true,\"intervalTime\":\"5\"},\"layer_id\":\"Kkx8cQxh41KDHQKJ\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[3,11],[3,12],[3,13]]},{\"row\":8,\"col\":11,\"colspan\":3,\"rowspan\":5,\"width\":\"355\",\"height\":\"216\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSizLine truncated
INSERT INTO `jimu_report` VALUES ('1334420681185566722', '202012031408346166', '学校经费一览表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":6,\"sci\":20,\"eri\":6,\"eci\":20,\"width\":59,\"height\":25},\"excel_config_id\":\"1334420681185566722\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"学校经费一览表\",\"merge\":[0,22],\"style\":10}},\"height\":72},\"1\":{\"cells\":{\"1\":{\"text\":\"学校类别\",\"style\":221,\"merge\":[4,0]},\"2\":{\"merge\":[4,0],\"style\":222,\"text\":\"学校名称\"},\"3\":{\"text\":\"财政教育经费投入(万元)\",\"merge\":[0,8],\"style\":84},\"12\":{\"text\":\"其他投入\",\"merge\":[0,7],\"style\":84},\"20\":{\"style\":84,\"text\":\"补充资料\",\"merge\":[0,4]}},\"height\":28},\"2\":{\"cells\":{\"3\":{\"text\":\"总计\",\"style\":117,\"merge\":[3,0]},\"4\":{\"text\":\"教育事业费\",\"style\":117,\"merge\":[0,6]},\"11\":{\"text\":\"基础拨款\",\"style\":117,\"merge\":[3,0]},\"12\":{\"text\":\"村投入\",\"style\":117,\"merge\":[0,4]},\"17\":{\"text\":\"社会捐款\",\"style\":117,\"merge\":[0,2]},\"20\":{\"style\":126,\"merge\":[0,4],\"text\":\"信息化建设\"}},\"height\":24},\"3\":{\"cells\":{\"4\":{\"merge\":[0,1],\"text\":\"合计\",\"style\":121},\"6\":{\"merge\":[2,0],\"text\":\"人员经费\",\"style\":121},\"7\":{\"merge\":[2,0],\"text\":\"日常公用费用\",\"style\":123},\"8\":{\"merge\":[0,2],\"text\":\"项目经费\",\"style\":121},\"12\":{\"merge\":[2,0],\"text\":\"合计\",\"style\":121},\"13\":{\"merge\":[0,3],\"text\":\"其中\",\"style\":121},\"17\":{\"merge\":[2,0],\"text\":\"合计\",\"style\":121},\"18\":{\"merge\":[0,1],\"text\":\"其中\",\"style\":121},\"20\":{\"merge\":[2,0],\"text\":\"本年投入金额(万元)\",\"style\":230},\"21\":{\"merge\":[0,1],\"text\":\"电脑数(台数)\",\"style\":121},\"23\":{\"merge\":[0,1],\"text\":\"校园网数(个)\",\"style\":121}}},\"4\":{\"cells\":{\"4\":{\"merge\":[1,0],\"text\":\"金额\",\"style\":126},\"5\":{\"merge\":[1,0],\"text\":\"比上年增长(%)\",\"style\":127},\"8\":{\"merge\":[1,0],\"text\":\"合计\",\"style\":121},\"9\":{\"merge\":[0,1],\"text\":\"其中\",\"style\":121},\"13\":{\"merge\":[1,0],\"text\":\"人员经费\",\"style\":131},\"14\":{\"merge\":[1,0],\"text\":\"日常公用费用\",\"style\":131},\"15\":{\"merge\":[1,0],\"text\":\"项目经费\",\"style\":131},\"16\":{\"merge\":[1,0],\"text\":\"基建投入\",\"style\":131},\"18\":{\"merge\":[1,0],\"text\":\"项目经费\",\"style\":131},\"19\":{\"merge\":[1,0],\"text\":\"基础投入\",\"style\":131},\"21\":{\"merge\":[1,0],\"text\":\"合计\",\"style\":121},\"22\":{\"merge\":[1,0],\"text\":\"本年购置数\",\"style\":121},\"23\":{\"style\":121,\"merge\":[1,0],\"text\":\"合计\"},\"24\":{\"merge\":[1,0],\"text\":\"本年建成数\",\"style\":121}}},\"5\":{\"cells\":{\"9\":{\"text\":\"标准化建设\",\"style\":131},\"10\":{\"text\":\"信息化建设\",\"style\":121}}},\"6\":{\"cells\":{\"1\":{\"text\":\"#{laiyuan.group(class)}\",\"style\":233,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{laiyuan.school}\",\"style\":234},\"3\":{\"style\":240,\"text\":\"=SUM(E7,I7)\",\"decimalPlaces\":\"0\"},\"4\":{\"style\":240,\"text\":\"=SUM(G7,H7)\",\"decimalPlaces\":\"0\"},\"5\":{\"text\":\"#{laiyuan.lv}\",\"style\":12},\"6\":{\"text\":\"#{laiyuan.renyuan_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"7\":{\"text\":\"#{laiyuan.richang_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"8\":{\"style\":239,\"text\":\"=SUM(J7,K7)\",\"decimalPlaces\":\"0\"},\"9\":{\"text\":\"#{laiyuan.biaozhun_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"10\":{\"text\":\"#{laiyuan.xinxi_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"11\":{\"text\":\"#{laiyuan.jichubokuan_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"12\":{\"text\":\"=SUM(N7,O7)\",\"style\":239,\"decimalPlaces\":\"0\"},\"13\":{\"text\":\"#{laiyuan.renyuan_ct}\",\"style\":239,\"decimalPlaces\":\"0\"},\"14\":{\"text\":\"#{laiyuan.richang_ct}\",\"style\":239,\"decimalPlaces\":\"0\"},\"15\":{\"text\":\"#{laiyuan.xiangmu_ct}\",\"style\":239,\"decimalPlaces\":\"0\"},\"16\":{\"text\":\"#{laiyuan.jichubokuan_ct}\",\"style\":239,\"decimalPlaces\":\"0\"},\"17\":{\"text\":\"=SUM(S7,T7)\",\"style\":239,\"decimalPlaces\":\"0\"},\"18\":{\"text\":\"#{laiyuan.xiangmu_sh}\",\"style\":239,\"decimalPlaces\":\"0\"},\"19\":{\"text\":\"#{laiyuan.jichubokuan_sh}\",\"style\":239,\"decimalPlaces\":\"0\"},\"20\":{\"style\":239,\"text\":\"=SUM(V7,X7)\",\"decimalPlaces\":\"0\"},\"21\":{\"style\":239,\"text\":\"#{laiyuan.diannao}\",\"decimalPlaces\":\"0\"},\"22\":{\"text\":\"#{laiyuan.diannao}\",\"style\":239,\"decimalPlaces\":\"0\"},\"23\":{\"style\":239,\"text\":\"#{laiyuan.xiaoyuanwang}\",\"decimalPlaces\":\"0\"},\"24\":{\"text\":\"#{laiyuan.xiaoyuanwang}\",\"style\":239,\"decimalPlaces\":\"0\"}},\"isDrag\":true},\Line truncated
INSERT INTO `jimu_report` VALUES ('1334457419857793024', '20201203192154', '超市各地区销售额', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":7,\"sci\":2,\"eri\":7,\"eci\":2,\"width\":85,\"height\":25},\"excel_config_id\":\"1334457419857793024\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"各地区商品销售额一栏表\",\"merge\":[0,18],\"style\":13}},\"height\":82},\"1\":{\"cells\":{\"1\":{\"text\":\"地区|类型|时间\",\"lineStart\":\"lefttop\",\"style\":56,\"merge\":[1,1],\"height\":50},\"3\":{\"text\":\"2020年\",\"style\":46,\"merge\":[0,12]},\"16\":{\"text\":\"2019年\",\"style\":46,\"merge\":[0,9]}}},\"2\":{\"cells\":{\"3\":{\"text\":\"12月\",\"style\":46},\"4\":{\"text\":\"11月\",\"style\":46},\"5\":{\"text\":\"10月\",\"style\":46},\"6\":{\"text\":\"9月\",\"style\":46},\"7\":{\"text\":\"8月\",\"style\":46},\"8\":{\"text\":\"7月\",\"style\":46},\"9\":{\"text\":\"6月\",\"style\":46},\"10\":{\"text\":\"5月\",\"style\":46},\"11\":{\"text\":\"4月\",\"style\":46},\"12\":{\"text\":\"3月\",\"style\":46},\"13\":{\"text\":\"2月\",\"style\":46},\"14\":{\"text\":\"1月\",\"style\":46},\"15\":{\"text\":\"本年小计\",\"style\":46},\"16\":{\"text\":\"12月\",\"style\":46},\"17\":{\"text\":\"11月\",\"style\":46},\"18\":{\"text\":\"10月\",\"style\":46},\"19\":{\"text\":\"9月\",\"style\":46},\"20\":{\"text\":\"8月\",\"style\":46},\"21\":{\"text\":\"7月\",\"style\":46},\"22\":{\"text\":\"6月\",\"style\":46},\"23\":{\"text\":\"5月\",\"style\":46},\"24\":{\"text\":\"4月\",\"style\":46},\"25\":{\"text\":\"本年小计\",\"style\":46}}},\"3\":{\"cells\":{\"1\":{\"text\":\"#{xiaoshou.group(diqu)}\",\"style\":51,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{xiaoshou.class}\",\"style\":51},\"3\":{\"text\":\"#{xiaoshou.sales_11}\",\"style\":21,\"decimalPlaces\":\"0\"},\"4\":{\"text\":\"#{xiaoshou.sales_12}\",\"style\":21,\"decimalPlaces\":\"0\"},\"5\":{\"text\":\"#{xiaoshou.sales_13}\",\"style\":21,\"decimalPlaces\":\"0\"},\"6\":{\"text\":\"#{xiaoshou.sales_14}\",\"style\":21,\"decimalPlaces\":\"0\"},\"7\":{\"text\":\"#{xiaoshou.sales_15}\",\"style\":21,\"decimalPlaces\":\"0\"},\"8\":{\"text\":\"#{xiaoshou.sales_16}\",\"style\":21,\"decimalPlaces\":\"0\"},\"9\":{\"text\":\"#{xiaoshou.sales_17}\",\"style\":21,\"decimalPlaces\":\"0\"},\"10\":{\"text\":\"#{xiaoshou.sales_18}\",\"style\":21,\"decimalPlaces\":\"0\"},\"11\":{\"text\":\"#{xiaoshou.sales_19}\",\"style\":21,\"decimalPlaces\":\"0\"},\"12\":{\"text\":\"#{xiaoshou.sales_20}\",\"style\":21,\"decimalPlaces\":\"0\"},\"13\":{\"text\":\"#{xiaoshou.sales_21}\",\"style\":21,\"decimalPlaces\":\"0\"},\"14\":{\"text\":\"#{xiaoshou.sales_22}\",\"style\":21,\"decimalPlaces\":\"0\"},\"15\":{\"style\":48,\"text\":\"=SUM(D4:O4)\",\"decimalPlaces\":\"0\"},\"16\":{\"text\":\"#{xiaoshou.sales_31}\",\"style\":21,\"decimalPlaces\":\"0\"},\"17\":{\"text\":\"#{xiaoshou.sales_32}\",\"style\":21,\"decimalPlaces\":\"0\"},\"18\":{\"text\":\"#{xiaoshou.sales_33}\",\"style\":21,\"decimalPlaces\":\"0\"},\"19\":{\"text\":\"#{xiaoshou.sales_34}\",\"style\":21,\"decimalPlaces\":\"0\"},\"20\":{\"text\":\"#{xiaoshou.sales_35}\",\"style\":21,\"decimalPlaces\":\"0\"},\"21\":{\"text\":\"#{xiaoshou.sales_36}\",\"style\":21,\"decimalPlaces\":\"0\"},\"22\":{\"text\":\"#{xiaoshou.sales_37}\",\"style\":21,\"decimalPlaces\":\"0\"},\"23\":{\"text\":\"#{xiaoshou.sales_38}\",\"style\":21,\"decimalPlaces\":\"0\"},\"24\":{\"text\":\"#{xiaoshou.sales_39}\",\"style\":21,\"decimalPlaces\":\"0\"},\"25\":{\"style\":48,\"text\":\"=SUM(Q4:Y4)\",\"decimalPlaces\":\"0\"}},\"isDrag\":true},\"4\":{\"cells\":{\"1\":{\"text\":\"合计\",\"style\":52,\"rendered\":\"\",\"merge\":[0,1]},\"3\":{\"text\":\"=SUM(D4)\",\"style\":55},\"4\":{\"text\":\"=SUM(E4)\",\"style\":55},\"5\":{\"text\":\"=SUM(F4)\",\"style\":55},\"6\":{\"text\":\"=SUM(G4)\",\"style\":55},\"7\":{\"text\":\"=SUM(H4)\",\"style\":55},\"8\":{\"text\":\"=SUM(I4)\",\"style\":55},\"9\":{\"text\":\"=SUM(J4)\",\"style\":55},\"10\":{\"text\":\"=SUM(K4)\",\"style\":55},\"11\":{\"text\":\"=SUM(L4)\",\"style\":55},\"12\":{\"text\":\"=SUM(M4)\",\"style\":55},\"13\":{\"text\":\"=SUM(N4)\",\"style\":55},\"14\":{\"text\":\"=SUM(O4)\",\"style\":55},\"15\":{\"text\":\"=SUM(P4)\",\"style\":55},\"16\":{\"text\":\"=SUM(Q4)\",\"style\":55},\"17\":{\"text\":\"=SUM(R4)\",\"style\":55},\"18\":{\"text\":\"=SUM(S4)\",\"style\":55},\"19\":{\"text\":\"=SUM(T4)\",\"style\":55},\"20\":{\"text\":\"=SUM(U4)\",\"style\":55},\"21\":{\"text\":\"=SUM(V4)\",\"style\":55},\"22\":{\"text\":\"=SUM(W4)\",\"style\":55},\"23\":{\"text\":\"=SUM(X4)\",\"style\":55},\"24\":{\"text\":\"=SUM(Y4)\",\"style\":55},\"25\":{\"text\":\"=SUM(Z4)\",\"style\":55}},\"isDrag\":true},\"len\":99},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},Line truncated
INSERT INTO `jimu_report` VALUES ('1334696790477377536', '20201204111149', '学校收入一览表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":11,\"sci\":4,\"eri\":11,\"eci\":4,\"width\":92,\"height\":25},\"excel_config_id\":\"1334696790477377536\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"学校收入一览表\",\"style\":25,\"merge\":[0,13]}},\"height\":71},\"1\":{\"cells\":{\"1\":{\"text\":\"校园信息\",\"merge\":[1,2],\"style\":40},\"4\":{\"text\":\"学生信息\",\"merge\":[1,2],\"style\":40},\"7\":{\"merge\":[1,5],\"style\":42,\"text\":\"收款信息\"},\"13\":{\"merge\":[0,11],\"text\":\"确认收入信息\",\"style\":43}},\"height\":23},\"2\":{\"cells\":{\"13\":{\"merge\":[0,3],\"text\":\"2020.09\",\"style\":46},\"17\":{\"merge\":[0,3],\"text\":\"2020.10\",\"style\":46},\"21\":{\"text\":\"合计\",\"style\":46,\"merge\":[0,3]}},\"height\":40},\"3\":{\"cells\":{\"1\":{\"text\":\"所属城际\",\"style\":50},\"2\":{\"text\":\"所属校园\",\"style\":50},\"3\":{\"text\":\"NC帐套\",\"style\":50},\"4\":{\"text\":\"学号\",\"style\":50},\"5\":{\"text\":\"姓名\",\"style\":50},\"6\":{\"text\":\"性质\",\"style\":50},\"7\":{\"text\":\"缴费金额\",\"style\":50},\"8\":{\"text\":\"缴费时间\",\"style\":50},\"9\":{\"text\":\"缴费性质\",\"style\":50},\"10\":{\"text\":\"缴费所属期间\",\"style\":50},\"11\":{\"text\":\"缴费月份数\",\"style\":50},\"12\":{\"text\":\"缴费方式\",\"style\":50},\"13\":{\"text\":\"全部\",\"style\":50},\"14\":{\"text\":\"学费\",\"style\":50},\"15\":{\"text\":\"餐费\",\"style\":50},\"16\":{\"text\":\"校车费\",\"style\":50},\"17\":{\"text\":\"全部\",\"style\":50},\"18\":{\"text\":\"学费\",\"style\":50},\"19\":{\"text\":\"餐费\",\"style\":50},\"20\":{\"text\":\"校车费\",\"style\":50},\"21\":{\"text\":\"全部\",\"style\":50},\"22\":{\"text\":\"学费\",\"style\":50},\"23\":{\"text\":\"餐费\",\"style\":50},\"24\":{\"text\":\"校车费\",\"style\":50}}},\"4\":{\"cells\":{\"1\":{\"text\":\"#{shouru.group(city)}\",\"style\":45,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{shouru.group(school)}\",\"style\":45,\"aggregate\":\"group\"},\"3\":{\"text\":\"#{shouru.ncnum}\",\"style\":35,\"aggregate\":\"select\"},\"4\":{\"text\":\"#{shouru.num}\",\"style\":35},\"5\":{\"text\":\"#{shouru.name}\",\"style\":35},\"6\":{\"text\":\"#{shouru.class}\",\"style\":35},\"7\":{\"text\":\"#{shouru.pay}\",\"style\":35},\"8\":{\"text\":\"#{shouru.paytime}\",\"style\":35},\"9\":{\"text\":\"#{shouru.payclass}\",\"style\":35},\"10\":{\"text\":\"#{shouru.pay1}\",\"style\":35},\"11\":{\"text\":\"#{shouru.paymoth}\",\"style\":35},\"12\":{\"text\":\"#{shouru.pay2}\",\"style\":35},\"13\":{\"style\":33,\"text\":\"=SUM(O5:Q5)\"},\"14\":{\"text\":\"#{shouru.tuition_09}\",\"style\":35},\"15\":{\"text\":\"#{shouru.meals_09}\",\"style\":35},\"16\":{\"text\":\"#{shouru.busfee_09}\",\"style\":35},\"17\":{\"style\":33,\"text\":\"=SUM(S5:U5)\"},\"18\":{\"text\":\"#{shouru.tuition_10}\",\"style\":35},\"19\":{\"text\":\"#{shouru.meals_10}\",\"style\":35},\"20\":{\"text\":\"#{shouru.busfee_10}\",\"style\":35},\"21\":{\"style\":68,\"text\":\"=SUM(W5,X5)\"},\"22\":{\"style\":35,\"text\":\"=SUM(O5,S5)\"},\"23\":{\"style\":35,\"text\":\"=SUM(P5,T5)\"},\"24\":{\"style\":35,\"text\":\"=SUM(Q5,U5)\"}},\"isDrag\":true,\"height\":35},\"5\":{\"cells\":{\"1\":{\"style\":15,\"text\":\"合计\",\"rendered\":\"\",\"merge\":[0,1]},\"3\":{\"style\":66,\"text\":\" \"},\"4\":{\"style\":66,\"text\":\" \"},\"5\":{\"style\":66,\"text\":\" \"},\"6\":{\"style\":66,\"text\":\" \"},\"7\":{\"style\":66,\"text\":\" \"},\"8\":{\"style\":66,\"text\":\" \"},\"9\":{\"style\":66,\"text\":\" \"},\"10\":{\"style\":66,\"text\":\" \"},\"11\":{\"style\":66,\"text\":\" \"},\"12\":{\"style\":66,\"text\":\" \"},\"13\":{\"style\":15,\"text\":\"=SUM(N5)\"},\"14\":{\"style\":66,\"text\":\" \"},\"15\":{\"style\":66,\"text\":\" \"},\"16\":{\"style\":66,\"text\":\" \"},\"17\":{\"style\":15,\"text\":\"=SUM(R5)\"},\"18\":{\"text\":\" \",\"style\":66},\"19\":{\"style\":66,\"text\":\" \"},\"20\":{\"style\":66,\"text\":\" \"},\"21\":{\"style\":15,\"text\":\"=SUM(V5)\"},\"22\":{\"style\":15,\"text\":\"=SUM(W5)\"},\"23\":{\"style\":15,\"text\":\"=SUM(X5)\"},\"24\":{\"style\":15,\"text\":\"=SUM(Y5)\"}}},\"16\":{\"cells\":{\"1\":{}}},\"17\":{\"cells\":{\"1\":{}}},\"len\":101},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"shouru.city\",\"freeze\":\"A1\",\"dataRectWidth\":1983,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\"},{\"bgcolor\":\"#ffffff\Line truncated
INSERT INTO `jimu_report` VALUES ('1334757703079301120', '20201204151358', '车间零件完工一览表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":8,\"sci\":11,\"eri\":8,\"eci\":11,\"width\":100,\"height\":25},\"excel_config_id\":\"1334757703079301120\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"车间零件完工一览表\",\"merge\":[0,12],\"style\":23}},\"height\":81},\"1\":{\"cells\":{\"1\":{\"text\":\"车间\",\"style\":22},\"2\":{\"text\":\"成品名称\",\"style\":22},\"3\":{\"text\":\"半成品名称\",\"style\":22},\"4\":{\"text\":\"完工时间\",\"style\":22},\"5\":{\"text\":\"状态\",\"style\":22},\"6\":{\"text\":\"成品属性\",\"style\":22},\"7\":{\"text\":\"工单号\",\"style\":22},\"8\":{\"text\":\"工单数量\",\"style\":22},\"9\":{\"text\":\"计划数量\",\"style\":22},\"10\":{\"text\":\"完成数量\",\"style\":22},\"11\":{\"text\":\"UPH\",\"style\":22},\"12\":{\"text\":\"H/C\",\"style\":22},\"13\":{\"text\":\"计划时间\",\"style\":22},\"14\":{\"text\":\"良率\",\"style\":22},\"15\":{\"text\":\"备注\",\"style\":22}},\"height\":55},\"2\":{\"cells\":{\"1\":{\"text\":\"#{chejian.group(city)}\",\"style\":16,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{chejian.finish}\",\"style\":14},\"3\":{\"text\":\"#{chejian.semifinish}\",\"style\":14},\"4\":{\"text\":\"#{chejian.time}\",\"style\":14},\"5\":{\"text\":\"#{chejian.state}\",\"style\":14},\"6\":{\"text\":\"#{chejian.attribute}\",\"style\":14},\"7\":{\"text\":\"#{chejian.num}\",\"style\":14},\"8\":{\"text\":\"#{chejian.gnum}\",\"style\":14},\"9\":{\"text\":\"#{chejian.jnum}\",\"style\":14},\"10\":{\"text\":\"#{chejian.wnum}\",\"style\":14},\"11\":{\"text\":\"#{chejian.uph}\",\"style\":24},\"12\":{\"text\":\"#{chejian.hc}\",\"style\":14},\"13\":{\"text\":\"#{chejian.jtime}\",\"style\":14},\"14\":{\"text\":\"#{chejian.yield}\",\"style\":14},\"15\":{\"text\":\"#{chejian.beizhu}\",\"style\":14}},\"isDrag\":true,\"height\":35},\"3\":{\"cells\":{\"11\":{\"text\":\"\"}}},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"groupField\":\"chejian.city\",\"freeze\":\"A1\",\"dataRectWidth\":1494,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#309fc6\"},{\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"font\":{\"bold\":true}},{\"font\":{\"bold\":true,\"size\":16}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9},\"align\":\"center\",\"bgcolor\":\"#\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9},\"align\":\"center\",\"bgcolor\":\"#b2ddec\"},{\"font\":{\"size\":8}},{\"align\":\"center\",\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":8},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8},\"align\":\"center\",\"bgcolor\":\"#b2ddec\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",Line truncated
INSERT INTO `jimu_report` VALUES ('1338370016550195200', '20201214142804', '条形码报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":7,\"eri\":5,\"eci\":7,\"width\":105,\"height\":145},\"excel_config_id\":\"1338370016550195200\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[1,6],\"text\":\"居民身份证申领登记表\",\"style\":39}},\"height\":73},\"1\":{\"cells\":{\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"height\":28},\"2\":{\"cells\":{\"0\":{\"text\":\"\",\"rendered\":\"\"},\"1\":{\"text\":\"受理单位(盖章)珠海市公安局\",\"merge\":[0,3],\"style\":36},\"5\":{\"text\":\" \"},\"6\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"normal\"},\"7\":{\"text\":\" \"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\"姓名\",\"style\":24},\"2\":{\"style\":7,\"rendered\":\"\",\"text\":\"${tm.name}\"},\"3\":{\"text\":\"性别\",\"style\":16},\"4\":{\"style\":7,\"text\":\"${tm.sex}\"},\"5\":{\"text\":\"民族\",\"style\":16},\"6\":{\"style\":7,\"text\":\"${tm.nation}\"},\"7\":{\"text\":\"${tm.tp}\",\"style\":7,\"rendered\":\"h45oR9LiU0yMyTha\",\"display\":\"img\",\"merge\":[2,0],\"height\":145},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":47},\"4\":{\"cells\":{\"1\":{\"text\":\"出生日期\",\"style\":24},\"2\":{\"style\":32,\"merge\":[0,4],\"text\":\"${tm.birth}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"normal\"},\"10\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":47},\"5\":{\"cells\":{\"1\":{\"text\":\"常住户口所在地住址\",\"style\":21},\"2\":{\"style\":7,\"merge\":[0,4],\"text\":\"${tm.zhuzhi}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\",\"display\":\"normal\"},\"10\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":51},\"6\":{\"cells\":{\"1\":{\"text\":\"公民身份证\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,5],\"text\":\"${tm.card}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"10\":{\"text\":\"\",\"rendered\":\"\"}},\"isDrag\":true,\"height\":49},\"7\":{\"cells\":{\"1\":{\"text\":\"有限期限\",\"style\":24},\"2\":{\"style\":34,\"merge\":[0,1],\"text\":\"${tm.ydate}\"},\"4\":{\"text\":\"签发机关\",\"style\":24},\"5\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.qfjg}\"},\"9\":{\"text\":\"\",\"rendered\":\"\"},\"10\":{\"text\":\"\",\"rendered\":\"\"}},\"isDrag\":true,\"height\":50},\"8\":{\"cells\":{\"1\":{\"text\":\"申领原因\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,5],\"text\":\"${tm.slyy}\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\"},\"10\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":55},\"9\":{\"cells\":{\"1\":{\"text\":\"受理时间\",\"style\":24},\"2\":{\"style\":32,\"merge\":[0,1],\"text\":\"${tm.sdate}\"},\"4\":{\"text\":\"受理号\",\"style\":24},\"5\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.shao}\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":49},\"10\":{\"cells\":{\"1\":{\"text\":\"承办人\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,1],\"text\":\"${tm.cbr}\"},\"4\":{\"text\":\"受理单位领导\",\"style\":24},\"5\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.sld}\"},\"11\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"normal\"}},\"isDrag\":true,\"height\":42},\"11\":{\"cells\":{\"1\":{\"text\":\"申请(监护)人签名\",\"style\":21},\"2\":{\"style\":7,\"merge\":[0,1],\"text\":\"${tm.sr}\"},\"4\":{\"text\":\"申请(监护)人联系电话\",\"style\":21},\"5\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.jphone}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"11\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":59},\"12\":{\"cells\":{\"1\":{\"text\":\"领证人签名\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,1],\"text\":\"${tm.lzr}\"},\"4\":{\"text\":\"领证时间\",\"style\":24},\"5\":{\"style\":32,\"merge\":[0,2],\"text\":\"${tm.ldate}\"},\"11\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":57},\"13\":{\"cells\":{\"1\":{\"text\":\"是否通过邮政特快专递方式领取二代\",\"merge\":[0,1],\"style\":24},\"3\":{\"style\":7,\"merge\":[0,4],\"text\":\"${tm.sk}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":50},\"14\":{\"cells\":{\"1\":{\"text\":\"投递地址\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.dizhi}\"},\"5\Line truncated
INSERT INTO `jimu_report` VALUES ('1338744112815411200', '20201215151426', '简单条件查询报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1302,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":40},\"1\":{\"width\":107},\"2\":{\"width\":143},\"3\":{\"width\":106},\"4\":{\"width\":80},\"5\":{\"width\":85},\"6\":{\"width\":118},\"7\":{\"width\":120},\"8\":{\"width\":164},\"9\":{\"width\":139},\"len\":50},\"area\":false,\"excel_config_id\":\"1338744112815411200\",\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"1\":{\"text\":\"职务\",\"style\":92},\"2\":{\"text\":\"雇员ID\",\"style\":92},\"3\":{\"text\":\"姓名\",\"style\":92},\"4\":{\"text\":\"性别\",\"style\":92},\"5\":{\"style\":92,\"text\":\"年龄\"},\"6\":{\"text\":\"雇佣日期\",\"style\":92},\"7\":{\"text\":\"家庭电话\",\"style\":92},\"8\":{\"text\":\"出生日期\",\"style\":92},\"9\":{\"text\":\"户口所在地\",\"style\":92},\"10\":{\"text\":\"联系地址\",\"style\":92},\"11\":{\"text\":\"紧急联系人\",\"style\":92}},\"height\":43},\"2\":{\"cells\":{\"1\":{\"style\":21,\"text\":\"#{pop.group(update_by)}\",\"aggregate\":\"group\"},\"2\":{\"style\":21,\"text\":\"#{pop.id}\"},\"3\":{\"style\":21,\"text\":\"#{pop.name}\"},\"4\":{\"style\":21,\"text\":\"#{pop.sex}\"},\"5\":{\"style\":21,\"text\":\"#{pop.age}\"},\"6\":{\"style\":24,\"text\":\"#{pop.gtime}\",\"rendered\":\"\"},\"7\":{\"style\":21,\"text\":\"#{pop.jphone}\"},\"8\":{\"style\":24,\"text\":\"#{pop.birth}\"},\"9\":{\"style\":21,\"text\":\"#{pop.hukou}\"},\"10\":{\"style\":21,\"text\":\"#{pop.laddress}\"},\"11\":{\"style\":21,\"text\":\"#{pop.jperson}\"}},\"height\":34},\"3\":{\"cells\":{}},\"4\":{\"cells\":{\"4\":{\"text\":\"\"}}},\"5\":{\"cells\":{\"1\":{\"style\":95,\"text\":\"备注:\"},\"2\":{\"style\":96,\"text\":\" \"},\"3\":{\"style\":96,\"text\":\" \"},\"4\":{\"style\":96,\"text\":\" \"},\"5\":{\"style\":97,\"text\":\" \"},\"6\":{\"style\":96,\"text\":\" \"},\"7\":{\"style\":98,\"text\":\" \"}}},\"6\":{\"cells\":{\"1\":{\"style\":99,\"text\":\"1、支持模糊查询,需要输入 “*+字符串”或 “字符串+* ”或“*+字符串+*”,如:张* / *丽 / *亚*;\",\"merge\":[0,6]}}},\"7\":{\"cells\":{\"1\":{\"style\":99,\"text\":\"2、以上“出生日期”为时间类型;\",\"merge\":[0,6]}}},\"8\":{\"cells\":{\"1\":{\"style\":99,\"text\":\"3、以上“雇佣日期”为日期类型\",\"merge\":[0,6]}}},\"9\":{\"cells\":{\"1\":{\"text\":\"4、以上“姓名”为字符串类型,支持精准查询和模糊查询;\",\"style\":100,\"merge\":[0,6]}}},\"10\":{\"cells\":{\"1\":{\"text\":\"5、以上\\\"年龄\\\"为数字类型,支持精准查询和范围查询;\",\"style\":101,\"merge\":[0,6]}}},\"len\":100,\"\":{\"cells\":{\"NaN\":{\"text\":\"\",\"rendered\":\"\"}}}},\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":Line truncated
INSERT INTO `jimu_report` VALUES ('1338769064067076098', '202012151514266124', '多选条件查询报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"1338769064067076098\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{}},\"1\":{\"cells\":{\"1\":{\"text\":\"职务\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"雇佣日期\",\"style\":51},\"6\":{\"text\":\"家庭电话\",\"style\":51},\"7\":{\"text\":\"出生日期\",\"style\":51},\"8\":{\"text\":\"户口所在地\",\"style\":51},\"9\":{\"text\":\"联系地址\",\"style\":51},\"10\":{\"text\":\"紧急联系人\",\"style\":51}},\"height\":46},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{pop.group(id)}\",\"style\":54,\"aggregate\":\"group\"},\"3\":{\"text\":\"#{pop.group(name)}\",\"style\":54,\"aggregate\":\"group\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.gtime}\",\"style\":56},\"6\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"7\":{\"text\":\"#{pop.birth}\",\"style\":56},\"8\":{\"text\":\"#{pop.hukou}\",\"style\":58},\"9\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"10\":{\"text\":\"#{pop.jperson}\",\"style\":57}},\"isDrag\":true,\"height\":35},\"5\":{\"cells\":{\"2\":{\"text\":\"\"}},\"isDrag\":true},\"len\":99},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"freeze\":\"A1\",\"dataRectWidth\":1560,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9},\"align\":\"left\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bLine truncated
INSERT INTO `jimu_report` VALUES ('1339478701846433792', '20201217155313', '企业实时报表', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":5,\"col\":12,\"colspan\":0,\"rowspan\":0,\"width\":\"244\",\"height\":\"128\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"合肥\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":false,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"销售额\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":false,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"grid\\\":{\\\"top\\\":10,\\\"left\\\":49,\\\"bottom\\\":16,\\\"right\\\":45},\\\"series\\\":[{\\\"barWidth\\\":9,\\\"data\\\":[800],\\\"name\\\":\\\"销售额\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"rgba(146,119,252,1)\\\"},\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"right\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#689AFB\\\",\\\"fontSize\\\":\\\"10\\\",\\\"fontWeight\\\":\\\"normal\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[],\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":5,\\\"text\\\":\\\"销售额城市排名\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"0\",\"dataId\":\"1339495346077728770\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"chengshi\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTiming\":true,\"intervalTime\":\"5\",\"chartType\":\"bar.multi.horizontal\"},\"layer_id\":\"qQHpevWlqElpRQUl\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[5,12],[5,13],[5,14]]},{\"row\":6,\"col\":1,\"colspan\":0,\"rowspan\":0,\"width\":\"302\",\"height\":\"337\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"江苏\\\",\\\"山东\\\",\\\"安徽\\\",\\\"江西\\\",\\\"河北\\\",\\\"吉林\\\",\\\"黑龙江\\\",\\\"重庆\\\",\\\"广东\\\",\\\"上海\\\",\\\"哈尔滨\\\",\\\"福建\\\",\\\"四川\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":false,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"销售额\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":false,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"grid\\\":{\\\"top\\\":20,\\\"left\\\":45,\\\"bottom\\\":16,\\\"right\\\":46},\\\"series\\\":[{\\\"barWidth\\\":13,\\\"data\\\":[100,800,1200,1700,2500,4000,5800,6500,7000,7500,8000,8800,9500],\\\"name\\\":\\\"销售额\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":5,\\\"color\\\":\\\"rgba(67,184,251,1)\\\"},\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"right\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#689AFB\\\",\\\"fontSize\\\":\\\"10\\\",\\\"fontWeight\\\":\\\"normal\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[],\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\"Line truncated
INSERT INTO `jimu_report` VALUES ('1339859143477039104', '20201218170625', '全国连锁超市会员分析', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":5,\"colspan\":6,\"rowspan\":13,\"width\":\"499\",\"height\":\"344\",\"config\":\"{\\\"geo\\\":{\\\"map\\\":100000,\\\"mapCode\\\":[100000],\\\"mapName\\\":\\\"中华人民共和国\\\",\\\"mapLevel\\\":\\\"0\\\",\\\"mapType\\\":\\\"0\\\",\\\"zoom\\\":0.5,\\\"label\\\":{\\\"color\\\":\\\"#ffffff\\\",\\\"fontSize\\\":\\\"8\\\",\\\"show\\\":true},\\\"itemStyle\\\":{\\\"borderWidth\\\":0.5,\\\"areaColor\\\":\\\"rgba(4,140,156,1)\\\",\\\"borderColor\\\":\\\"#000\\\"},\\\"emphasis\\\":{\\\"label\\\":{\\\"color\\\":\\\"rgba(255,255,255,1)\\\"},\\\"itemStyle\\\":{\\\"areaColor\\\":\\\"rgba(5,106,112,1)\\\"}},\\\"regions\\\":[],\\\"layoutSize\\\":600,\\\"roam\\\":true,\\\"layoutCenter\\\":[\\\"50%\\\",\\\"50%\\\"]},\\\"series\\\":[{\\\"encode\\\":{\\\"value\\\":[2]},\\\"data\\\":[{\\\"name\\\":\\\"北京\\\",\\\"value\\\":[116.405285,39.904989,\\\"6500\\\"]},{\\\"name\\\":\\\"河北\\\",\\\"value\\\":[114.502461,38.045474,\\\"3500\\\"]},{\\\"name\\\":\\\"天津\\\",\\\"value\\\":[117.190182,39.125596,\\\"3000\\\"]},{\\\"name\\\":\\\"山东\\\",\\\"value\\\":[117.000923,36.675807,\\\"2500\\\"]},{\\\"name\\\":\\\"福建\\\",\\\"value\\\":[119.306239,26.075302,\\\"6500\\\"]},{\\\"name\\\":\\\"上海\\\",\\\"value\\\":[121.472644,31.231706,\\\"7500\\\"]}],\\\"name\\\":\\\"value\\\",\\\"emphasis\\\":{\\\"label\\\":{\\\"show\\\":true}},\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(255,135,11,1)\\\"},\\\"coordinateSystem\\\":\\\"geo\\\",\\\"label\\\":{\\\"formatter\\\":\\\"{b}\\\",\\\"show\\\":false,\\\"position\\\":\\\"right\\\"},\\\"type\\\":\\\"scatter\\\",\\\"symbolSize\\\":6}],\\\"chartType\\\":\\\"map\\\",\\\"tooltip\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"show\\\":true},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":5,\\\"text\\\":\\\"全国省份分布\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#0B0B0B\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":\\\"13\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"sql\",\"apiStatus\":\"\",\"apiUrl\":\"\",\"dataId\":\"c73e1f3325b926081641d918921d2bcd\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"\",\"yText\":\"value\",\"xText\":\"name\",\"dbCode\":\"ditu\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTiming\":true,\"intervalTime\":\"5\",\"chartType\":\"map.scatter\",\"id\":\"\"},\"layer_id\":\"7iI8sg3C12WgjU7y\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,5],[1,6],[1,7],[1,8],[1,9]]},{\"row\":1,\"col\":10,\"colspan\":3,\"rowspan\":13,\"width\":\"296\",\"height\":\"344\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"8\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"8\\\"}},\\\"data\\\":[\\\"顾客\\\",\\\"二星\\\",\\\"一星\\\",\\\"明星\\\",\\\"总监\\\",\\\"三星\\\",\\\"大使\\\",\\\"高级\\\",\\\"金鹰\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":59,\\\"left\\\":43,\\\"bottom\\\":48,\\\"right\\\":32},\\\"series\\\":[{\\\"barWidth\\\":10,\\\"data\\\":[394,515,334,150,54,50,17,7,2],\\\"name\\\":\\\"value\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#208ae9\\\"},\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":\\\"10\\\",\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":10,\\\"text\\\":\\\"不同荣衔等级会员数量\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#000000\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":\\\"13\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"sql\",\"apiStatus\":\"0\",\"apiUrl\":\"\",\"dataId\":\"1339870475496497153\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"value\",\"xText\":\"name\",\"dbCode\":\"pp\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTLine truncated
INSERT INTO `jimu_report` VALUES ('1347373863746539520', '20210108104603', '实习证明', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":16,\"sci\":5,\"eri\":16,\"eci\":5,\"width\":147,\"height\":25},\"excel_config_id\":\"1347373863746539520\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\"},\"1\":{\"text\":\"\"}}},\"1\":{\"cells\":{\"0\":{\"text\":\"\"}}},\"3\":{\"cells\":{\"2\":{\"text\":\"\",\"rendered\":\"\"}}},\"5\":{\"cells\":{},\"height\":29},\"6\":{\"cells\":{\"2\":{\"text\":\"\",\"style\":2}},\"height\":34},\"7\":{\"cells\":{\"2\":{\"merge\":[0,4],\"text\":\"实习证明\",\"style\":2}},\"height\":41},\"8\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":3},\"2\":{\"text\":\"\"}}},\"9\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":3},\"2\":{\"text\":\"\",\"style\":3},\"3\":{\"text\":\"\"}},\"isDrag\":true,\"height\":33},\"10\":{\"cells\":{\"2\":{\"text\":\"${tt.name}\",\"style\":11},\"3\":{\"text\":\"同学在我公司与 2020年4月1日 至 2020年5月1日 实习。\",\"style\":19,\"merge\":[0,3],\"height\":34}},\"height\":34},\"11\":{\"cells\":{},\"height\":28},\"12\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":6},\"2\":{\"style\":13,\"text\":\"${tt.pingjia}\",\"merge\":[3,4],\"height\":129}},\"height\":36},\"13\":{\"cells\":{},\"height\":29},\"14\":{\"cells\":{},\"height\":33},\"15\":{\"cells\":{},\"height\":31},\"16\":{\"cells\":{}},\"17\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"特此证明!\",\"style\":12}}},\"20\":{\"cells\":{\"2\":{\"text\":\"\"},\"3\":{\"text\":\"\",\"style\":3},\"4\":{\"text\":\"\"}}},\"21\":{\"cells\":{\"4\":{\"text\":\"\"}}},\"22\":{\"cells\":{\"3\":{\"text\":\"\",\"style\":3},\"4\":{\"text\":\"证明人:\",\"style\":11},\"5\":{\"text\":\"${tt.lingdao}\",\"style\":12}}},\"23\":{\"cells\":{\"4\":{\"text\":\"\"},\"5\":{\"text\":\"${tt.shijian}\",\"style\":15}}},\"len\":100},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":576,\"displayConfig\":{},\"background\":{\"path\":\"https://static.jeecg.com/designreport/images/11_1611283832037.png\",\"repeat\":\"no-repeat\",\"width\":\"\",\"height\":\"\"},\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"font\":{\"size\":14}},{\"align\":\"center\",\"font\":{\"size\":16}},{\"align\":\"right\"},{\"align\":\"left\"},{\"align\":\"left\",\"valign\":\"top\"},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":true},{\"font\":{\"size\":16}},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":false},{\"textwrap\":false},{\"textwrap\":true},{\"align\":\"right\",\"font\":{\"size\":12}},{\"font\":{\"size\":12}},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":true,\"font\":{\"size\":12}},{\"textwrap\":true,\"font\":{\"size\":12}},{\"align\":\"left\",\"font\":{\"size\":12}},{\"font\":{\"size\":12},\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"size\":14}},{\"font\":{\"size\":10}},{\"textwrap\":false,\"font\":{\"size\":12}}],\"validations\":[],\"cols\":{\"0\":{\"width\":69},\"1\":{\"width\":41},\"4\":{\"width\":119},\"5\":{\"width\":147},\"6\":{\"width\":31},\"len\":50},\"merges\":[\"C8:G8\",\"D11:G11\",\"C13:G16\"]}', NULL, 'https://static.jeecg.com/designreport/images/未标题-1_1610074948259.png', 'admin', '2021-01-08 10:46:04', 'ohbaK6VQpkyqEV2FJss0ZtzWCT3w', '2021-08-04 18:06:29', 0, NULL, NULL, 1, 722, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('1350035590569136128', '20210115190242', '简单明细表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[{\"sci\":1,\"sri\":2,\"eci\":7,\"eri\":5,\"index\":1,\"db\":\"uiu\"}],\"area\":{\"sri\":2,\"sci\":2,\"eri\":2,\"eci\":3,\"width\":177,\"height\":42},\"excel_config_id\":\"1350035590569136128\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"1\":{\"cells\":{\"1\":{\"text\":\"员工信息明细表\",\"merge\":[0,5],\"style\":32},\"9\":{\"text\":\"\"}},\"height\":64},\"2\":{\"cells\":{\"1\":{\"text\":\"姓名:\",\"style\":28,\"loopBlock\":1,\"rendered\":\"\",\"config\":\"\"},\"2\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.name}\"},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"所在部门:\",\"style\":29,\"loopBlock\":1},\"5\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.department}\",\"rendered\":\"\",\"config\":\"\"},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"merge\":[2,0],\"height\":75,\"rendered\":\"emtfhoFfcAJTOI4v\",\"config\":\"11\",\"style\":9,\"text\":\"#{uiu.tm}\",\"display\":\"qrcode\",\"loopBlock\":1},\"9\":{\"text\":\"\"},\"10\":{\"text\":\"\"},\"11\":{\"text\":\"\"}},\"height\":42},\"3\":{\"cells\":{\"1\":{\"text\":\"年龄:\",\"style\":28,\"loopBlock\":1},\"2\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.age}\"},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"学历:\",\"style\":29,\"loopBlock\":1},\"5\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.education}\"},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"text\":\"\",\"loopBlock\":1},\"9\":{\"text\":\"\"},\"10\":{\"text\":\"\"},\"15\":{\"text\":\"\"}},\"height\":35},\"4\":{\"cells\":{\"1\":{\"text\":\"性别:\",\"style\":28,\"loopBlock\":1},\"2\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.sex}\"},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"薪水:\",\"style\":29,\"loopBlock\":1},\"5\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.salary}\"},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"text\":\"\",\"loopBlock\":1},\"9\":{\"text\":\"\"},\"10\":{\"text\":\"\"},\"12\":{\"text\":\"\"}},\"height\":35},\"5\":{\"cells\":{\"1\":{\"text\":\"\",\"loopBlock\":1},\"2\":{\"text\":\"\",\"loopBlock\":1},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"\",\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"text\":\"\",\"loopBlock\":1},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\"}},\"height\":17},\"6\":{\"cells\":{\"11\":{\"text\":\"\"}}},\"7\":{\"cells\":{\"7\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"10\":{\"text\":\"\"}}},\"8\":{\"cells\":{\"6\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"7\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"10\":{\"cells\":{\"7\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"13\":{\"cells\":{\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"freeze\":\"A1\",\"dataRectWidth\":688,\"displayConfig\":{\"1\":{\"text\":\"#{uiu.tm}\",\"width\":112,\"height\":112,\"colorDark\":\"#000000\",\"colorLight\":\"#ffffff\"},\"11\":{\"text\":\"#{uiu.tm}\",\"width\":117,\"height\":117,\"colorDark\":\"#000000\",\"colorLight\":\"#ffffff\"},\"111\":{\"barcodeContent\":\"dsad\",\"format\":\"CODE128\",\"width\":\"6\",\"height\":39,\"displayValue\":false,\"text\":\"jmreport\",\"fontOptions\":\"\",\"font\":\"monospace\",\"textAlign\":\"center\",\"textPosition\":\"bottom\",\"textMargin\":2,\"fontSize\":20,\"background\":\"#fff\",\"lineColor\":\"#000\",\"margin\":10,\"containerWidth\":100,\"containerHeight\":39}},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"name\":\"宋体\"}},{\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"font\":{\"name\":\"宋体\",\"size\":8}},{\"font\":{\"name\":\"宋体\",\"size\":8},\"color\":\"#000100\"},{\"font\":{\"name\":\"宋体\",\"size\":10}},{\"font\":{\"name\":\"宋体\",\"size\":12}},{\"font\":{\"name\":\"宋体\",\"size\":11}},{\"font\":{\"name\":\"宋体\",\"size\":10},\"color\":\"#000100\"},{\"font\":{\"name\":\"宋体\",\"size\":10},\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"name\":\"宋体\",\"size\":10},\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\"Line truncated
INSERT INTO `jimu_report` VALUES ('1351426064915763200', '20210119150810', '循环表头交叉分组报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":2,\"sci\":1,\"eri\":3,\"eci\":2,\"width\":171,\"height\":56},\"excel_config_id\":\"1351426064915763200\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"1\":{\"merge\":[0,5],\"text\":\"各个城市销售表\",\"style\":2}},\"height\":57},\"2\":{\"cells\":{\"1\":{\"text\":\"区域|售额额|时间\",\"lineStart\":\"lefttop\",\"rendered\":\"\",\"style\":43,\"merge\":[1,1],\"height\":56},\"3\":{\"text\":\"#{tt.groupRight(moth)}\",\"merge\":[0,3],\"aggregate\":\"group\",\"direction\":\"right\",\"style\":56}},\"height\":22},\"3\":{\"cells\":{\"3\":{\"text\":\"销售额\",\"style\":28},\"4\":{\"text\":\"捐赠\",\"style\":28},\"5\":{\"text\":\"比例\",\"style\":28},\"6\":{\"style\":28,\"text\":\"小计\"}},\"height\":34},\"4\":{\"cells\":{\"1\":{\"style\":34,\"text\":\"#{tt.group(region)}\",\"aggregate\":\"group\",\"rendered\":\"\"},\"2\":{\"text\":\"#{tt.group(province)}\",\"aggregate\":\"group\",\"style\":33},\"3\":{\"style\":57,\"text\":\"#{tt.dynamic(sales_1)}\",\"aggregate\":\"dynamic\",\"decimalPlaces\":\"0\"},\"4\":{\"style\":57,\"text\":\"#{tt.dynamic(gift_1)}\",\"aggregate\":\"dynamic\",\"decimalPlaces\":\"0\"},\"5\":{\"style\":32,\"text\":\"#{tt.dynamic(proportion_1)}\",\"aggregate\":\"dynamic\"},\"6\":{\"style\":57,\"text\":\"#{tt.dynamic(sales_1+gift_1)}\",\"aggregate\":\"dynamic\",\"rendered\":\"\",\"decimalPlaces\":\"0\"}},\"height\":37},\"5\":{\"cells\":{\"1\":{\"style\":47,\"text\":\"合计\",\"merge\":[0,1],\"height\":0},\"3\":{\"style\":48,\"text\":\"=SUM(D5)\"},\"4\":{\"style\":48,\"text\":\"=SUM(E5)\"},\"5\":{\"style\":48,\"text\":\" \"},\"6\":{\"style\":48,\"text\":\"=SUM(G5)\"},\"8\":{\"text\":\"\"}}},\"6\":{\"cells\":{\"6\":{\"text\":\"\",\"rendered\":\"\"},\"8\":{\"text\":\"\",\"rendered\":\"\"}}},\"7\":{\"cells\":{}},\"8\":{\"cells\":{\"1\":{\"text\":\"\",\"aggregate\":\"dynamic\"},\"2\":{\"text\":\"\"}}},\"9\":{\"cells\":{\"1\":{\"text\":\"\",\"aggregate\":\"dynamic\"},\"2\":{\"text\":\"\"},\"3\":{\"text\":\"\"},\"4\":{\"text\":\"\",\"rendered\":\"\",\"display\":\"normal\"},\"5\":{\"text\":\"\",\"rendered\":\"\"}}},\"10\":{\"cells\":{\"1\":{\"text\":\"\",\"aggregate\":\"dynamic\"},\"5\":{\"text\":\"\",\"rendered\":\"\"}}},\"11\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"\"},\"4\":{\"text\":\"\",\"rendered\":\"\"}}},\"12\":{\"cells\":{\"1\":{\"text\":\"\"},\"5\":{}}},\"13\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"\"}}},\"14\":{\"cells\":{\"2\":{\"text\":\"\"}}},\"16\":{\"cells\":{\"1\":{\"text\":\"\"}}},\"17\":{\"cells\":{\"1\":{\"text\":\"\",\"aggregate\":\"dynamic\"}}},\"len\":96},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"tt.region\",\"freeze\":\"A1\",\"dataRectWidth\":505,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"size\":14}},{\"font\":{\"size\":14,\"bold\":true}},{\"font\":{\"size\":14,\"bold\":true},\"align\":\"center\"},{\"align\":\"center\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#02a274\"},{\"bgcolor\":\"#02a274\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#02a274\"},{\"bgcolor\":\"#02a274\",\"align\":\"center\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#02a274\",\"align\":\"center\",\"color\":\"#ffffff\"},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\"},{\"align\":\"left\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#f1f9f6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#ddefe8\"},{Line truncated
INSERT INTO `jimu_report` VALUES ('1351736257377603584', '20210120114031', 'API查询条件报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"printElWidth\":718,\"excel_config_id\":\"1351736257377603584\",\"printElHeight\":1047,\"rows\":{\"1\":{\"cells\":{\"1\":{\"text\":\"销售单\",\"merge\":[0,6],\"style\":8,\"decimalPlaces\":\"4\"},\"2\":{\"style\":8},\"3\":{\"style\":8},\"4\":{\"style\":8},\"5\":{\"style\":8},\"6\":{\"style\":8},\"7\":{\"style\":8},\"8\":{\"style\":5},\"9\":{\"style\":5},\"10\":{\"style\":5},\"11\":{\"style\":5},\"12\":{\"style\":5},\"13\":{\"style\":5},\"14\":{\"style\":5},\"15\":{\"style\":5},\"16\":{\"style\":5},\"17\":{\"style\":5},\"18\":{\"style\":5},\"19\":{\"style\":5},\"20\":{\"style\":5},\"21\":{\"style\":5},\"22\":{\"style\":5},\"23\":{\"style\":5},\"24\":{\"style\":5},\"25\":{\"style\":5}},\"height\":68},\"2\":{\"cells\":{\"1\":{\"text\":\"商品编码\",\"style\":15},\"2\":{\"text\":\"商品名称\",\"style\":15},\"3\":{\"text\":\"销售时间\",\"style\":15},\"4\":{\"text\":\"销售数据量\",\"style\":15},\"5\":{\"text\":\"定价\",\"style\":15},\"6\":{\"text\":\"优惠价\",\"style\":15},\"7\":{\"text\":\"付款金额\",\"style\":15},\"8\":{\"style\":5},\"9\":{\"style\":5},\"10\":{\"style\":5},\"11\":{\"style\":5},\"12\":{\"style\":5},\"13\":{\"style\":5},\"14\":{\"style\":5},\"15\":{\"style\":5},\"16\":{\"style\":5},\"17\":{\"style\":5},\"18\":{\"style\":5},\"19\":{\"style\":5},\"20\":{\"style\":5},\"21\":{\"style\":5},\"22\":{\"style\":5},\"23\":{\"style\":5},\"24\":{\"style\":5},\"25\":{\"style\":5}},\"height\":42},\"3\":{\"cells\":{\"1\":{\"style\":18,\"text\":\"#{xb.id}\"},\"2\":{\"style\":18,\"text\":\"#{xb.cname}\"},\"3\":{\"style\":18,\"text\":\"#{xb.riqi}\"},\"4\":{\"style\":18,\"text\":\"#{xb.dtotal}\"},\"5\":{\"style\":19,\"text\":\"#{xb.cprice}\",\"decimalPlaces\":\"4\"},\"6\":{\"style\":19,\"text\":\"#{xb.cprice}\",\"decimalPlaces\":\"1\"},\"7\":{\"style\":18,\"text\":\"#{xb.tp}\"},\"8\":{\"text\":\"\"}}},\"6\":{\"cells\":{\"2\":{\"text\":\"\"}}},\"7\":{\"cells\":{\"5\":{\"style\":17,\"text\":\" \"}}},\"8\":{\"cells\":{\"2\":{\"text\":\"\"}}},\"len\":98,\"-1\":{\"cells\":{\"-1\":{\"text\":\"#{xb.username}\"}}}},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":692,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"font\":{\"size\":18}},{\"font\":{\"size\":18,\"bold\":true}},{\"align\":\"center\"},{\"font\":{\"size\":18,\"bold\":true},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"font\":{\"size\":18,\"bold\":true,\"name\":\"宋体\"},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"}},{\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"},\"color\":\"#ffffff\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"},\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"},\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"align\":\"center\"},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"align\":\"center\",\"format\":\"number\"},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\Line truncated
INSERT INTO `jimu_report` VALUES ('1354358750907076608', '20210127172112', '多级循环表头报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":306,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":36},\"1\":{\"width\":87},\"2\":{\"width\":80},\"3\":{\"width\":103},\"len\":50},\"area\":{\"sri\":1,\"sci\":3,\"eri\":1,\"eci\":3,\"width\":103,\"height\":40},\"excel_config_id\":\"1354358750907076608\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\",\"rendered\":\"\"},\"1\":{\"text\":\"各地区商品销售额一栏表\",\"merge\":[0,2],\"style\":6}},\"height\":83},\"1\":{\"cells\":{\"1\":{\"text\":\"地区|销量|时间\",\"style\":2,\"lineStart\":\"lefttop\",\"rendered\":\"\",\"merge\":[1,1],\"height\":74},\"3\":{\"style\":30,\"text\":\"#{xs.groupRight(year)}年\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":40},\"2\":{\"cells\":{\"3\":{\"style\":8,\"text\":\"#{xs.groupRight(mouth)}\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\"#{xs.group(diqu)}\",\"style\":28,\"aggregate\":\"group\"},\"2\":{\"style\":28,\"text\":\"#{xs.group(class)}\",\"aggregate\":\"group\"},\"3\":{\"style\":29,\"text\":\"#{xs.dynamic(sales)}\",\"aggregate\":\"dynamic\",\"rendered\":\"\",\"decimalPlaces\":\"0\"}},\"height\":38},\"4\":{\"cells\":{\"1\":{\"style\":24,\"text\":\"总计\",\"merge\":[0,1]},\"3\":{\"style\":25,\"text\":\"=SUM(D4)\"}},\"height\":37},\"8\":{\"cells\":{\"1\":{}}},\"10\":{\"cells\":{\"1\":{}}},\"len\":100},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"xs.diqu\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"font\":{\"size\":16}},{\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"size\":16,\"bold\":true},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#fe0000\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"color\":\"#fe0000\"},{\"color\":\"#ffffff\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"border\":{\"bottom\":Line truncated
INSERT INTO `jimu_report` VALUES ('1356492523694067712', '20210202144134', '基本图形示例', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":1,\"colspan\":5,\"rowspan\":8,\"width\":\"478\",\"height\":\"247\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"rotate\\\":0,\\\"interval\\\":0},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"data\\\":[\\\"周一\\\",\\\"周二\\\",\\\"周三\\\",\\\"周四\\\",\\\"周五\\\",\\\"周六\\\",\\\"周日\\\"],\\\"show\\\":true,\\\"type\\\":\\\"category\\\"},\\\"legend\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"top\\\":\\\"top\\\",\\\"left\\\":\\\"right\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"直接访问\\\",\\\"邮件营销\\\",\\\"联盟广告\\\"],\\\"show\\\":true},\\\"grid\\\":{\\\"top\\\":50,\\\"left\\\":38,\\\"bottom\\\":33,\\\"right\\\":23},\\\"series\\\":[{\\\"barWidth\\\":8,\\\"data\\\":[320,332,301,334,390,330,320],\\\"name\\\":\\\"直接访问\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#63b2ee\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}},{\\\"barWidth\\\":8,\\\"data\\\":[120,132,101,134,90,230,210],\\\"name\\\":\\\"邮件营销\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#eddd86\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}},{\\\"barWidth\\\":8,\\\"data\\\":[220,182,191,234,290,330,310],\\\"name\\\":\\\"联盟广告\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#76da91\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\"},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":5,\\\"text\\\":\\\"多数据对比柱形图\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#000000\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":\\\"12\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"chartId\":\"bar.multi\",\"chartType\":\"bar.multi\"},\"layer_id\":\"gcqy2xAR9FYjBqX1\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,1],[1,2],[1,3],[1,4],[1,5]]},{\"row\":1,\"col\":13,\"colspan\":5,\"rowspan\":8,\"width\":\"448\",\"height\":\"247\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"周一\\\",\\\"周二\\\",\\\"周三\\\",\\\"周四\\\",\\\"周五\\\",\\\"周六\\\",\\\"周日\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#DAD7D7\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":true},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"type \\\":\\\"value\\\"},\\\"legend\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"top\\\":\\\"top\\\",\\\"left\\\":\\\"center\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"利润\\\",\\\"支出\\\",\\\"收入\\\"],\\\"show\\\":true},\\\"grid\\\":{\\\"top\\\":54,\\\"left\\\":46,\\\"bottom\\\":35,\\\"right\\\":28},\\\"series\Line truncated
INSERT INTO `jimu_report` VALUES ('1369170965166166016', '20210309142400', '简单分组报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"1369170965166166016\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":4,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"rows\":{\"1\":{\"cells\":{\"1\":{\"height\":0,\"text\":\"纵向员工信息登记表\",\"style\":2,\"merge\":[0,5]}},\"height\":40},\"2\":{\"cells\":{\"1\":{\"text\":\"部门\",\"style\":15},\"2\":{\"text\":\"学历\",\"style\":15},\"3\":{\"text\":\"性别\",\"style\":15},\"4\":{\"text\":\"年龄\",\"style\":15},\"5\":{\"text\":\"姓名\",\"style\":15},\"6\":{\"text\":\"薪水\",\"style\":15}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"style\":17,\"text\":\"#{tt.group(department)}\",\"aggregate\":\"group\"},\"2\":{\"style\":17,\"text\":\"#{tt.group(education)}\",\"aggregate\":\"group\"},\"3\":{\"style\":17,\"text\":\"#{tt.sex}\"},\"4\":{\"style\":17,\"text\":\"#{tt.age}\"},\"5\":{\"style\":17,\"text\":\"#{tt.name}\"},\"6\":{\"style\":17,\"text\":\"#{tt.salary}\"}},\"height\":54},\"len\":100},\"dbexps\":[],\"dicts\":[],\"groupField\":\"tt.department\",\"freeze\":\"A1\",\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"bold\":true}},{\"font\":{\"bold\":true,\"size\":16}},{\"font\":{\"bold\":true,\"size\":16},\"align\":\"center\"},{\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#bdd7ee\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#bdd7ee\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#9cc2e6\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#9cc2e6\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\"}],\"validations\":[],\"isGroup\":true,\"cols\":{\"0\":{\"width\":34},\"1\":{\"width\":119},\"3\":{\"width\":117},\"6\":{\"width\":117},\"7\":{\"width\":22},\"len\":100},\"merges\":[\"B2:G2\"]}', NULL, 'https://static.jeecg.com/designreport/images/QQ截图20210309142558_1615271174044.png', 'admin', '2021-03-09 14:24:00', 'admin', '2021-08-04 21:36:40', 0, NULL, NULL, 1, 42584, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('519c1c6f4d1f584ae8fa5b43b45acdc7', '56623333333', '销售单', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":2,\"sci\":7,\"eri\":2,\"eci\":7,\"width\":88,\"height\":32},\"excel_config_id\":\"519c1c6f4d1f584ae8fa5b43b45acdc7\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"销售单\",\"style\":40,\"merge\":[0,6],\"loopBlock\":0},\"2\":{\"style\":41,\"loopBlock\":0},\"3\":{\"style\":41,\"loopBlock\":0},\"4\":{\"style\":41,\"loopBlock\":0},\"5\":{\"style\":41,\"loopBlock\":0},\"6\":{\"style\":41,\"loopBlock\":0},\"7\":{\"style\":41,\"loopBlock\":0}},\"height\":86},\"1\":{\"cells\":{\"1\":{\"text\":\"商品编码\",\"style\":65,\"rendered\":\"\",\"loopBlock\":1},\"2\":{\"text\":\"商品名称\",\"style\":65,\"loopBlock\":1},\"3\":{\"text\":\"销售时间\",\"style\":65,\"loopBlock\":1},\"4\":{\"text\":\"销售数量\",\"style\":65,\"loopBlock\":1},\"5\":{\"text\":\"定价\",\"style\":65,\"loopBlock\":1},\"6\":{\"text\":\"优惠价\",\"style\":65,\"loopBlock\":1},\"7\":{\"text\":\"付款金额\",\"style\":65,\"loopBlock\":1}},\"height\":33},\"2\":{\"cells\":{\"1\":{\"text\":\"#{xiaoshou.bianma}\",\"style\":66,\"loopBlock\":1},\"2\":{\"text\":\"#{xiaoshou.cname}\",\"style\":66,\"loopBlock\":1},\"3\":{\"text\":\"#{xiaoshou.ctime}\",\"style\":67,\"loopBlock\":1},\"4\":{\"text\":\"#{xiaoshou.cnum}\",\"style\":66,\"loopBlock\":1},\"5\":{\"text\":\"#{xiaoshou.cprice}\",\"style\":66,\"loopBlock\":1},\"6\":{\"text\":\"#{xiaoshou.yprice}\",\"style\":66,\"loopBlock\":1},\"7\":{\"text\":\"#{xiaoshou.ctotal}\",\"style\":68,\"rendered\":\"\",\"decimalPlaces\":\"0\",\"loopBlock\":1}},\"isDrag\":true,\"height\":32},\"3\":{\"cells\":{\"1\":{\"style\":44,\"text\":\"\",\"loopBlock\":1},\"2\":{\"style\":44,\"loopBlock\":1},\"3\":{\"style\":44,\"loopBlock\":1},\"4\":{\"style\":44,\"loopBlock\":1},\"5\":{\"style\":44,\"text\":\"\",\"loopBlock\":1},\"6\":{\"text\":\"\",\"style\":45,\"loopBlock\":1},\"7\":{\"style\":46,\"text\":\"=SUM(H3)\",\"loopBlock\":1}},\"isDrag\":true,\"height\":73},\"4\":{\"cells\":{\"1\":{\"text\":\"\",\"loopBlock\":1},\"2\":{\"text\":\"\",\"loopBlock\":1},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"\",\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"text\":\"\",\"loopBlock\":1}}},\"5\":{\"cells\":{},\"isDrag\":true},\"6\":{\"cells\":{\"9\":{\"text\":\"\",\"decimalPlaces\":\"\"}},\"isDrag\":true},\"7\":{\"cells\":{\"2\":{\"text\":\"\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"isDrag\":true},\"8\":{\"cells\":{\"7\":{\"text\":\"\",\"decimalPlaces\":\"\"}}},\"9\":{\"cells\":{\"10\":{\"text\":\"\",\"decimalPlaces\":\"\"}}},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":704,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"color\":\"#000100\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]}},{\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]},\"bgcolor\":\"#01b0f1\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#01b0f1\"},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"align\":\"center\",\"font\":{\"size\":18}},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#fed964\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#fdc101\"},{\"align\":\"centLine truncated
INSERT INTO `jimu_report` VALUES ('537516331017523200', '202101201140313273', '主子报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":682,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":39},\"1\":{\"width\":73},\"2\":{\"width\":89},\"3\":{\"width\":101},\"4\":{\"width\":80},\"len\":100},\"area\":{\"sri\":4,\"sci\":2,\"eri\":4,\"eci\":2,\"width\":89,\"height\":25},\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"537516331017523200\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,6],\"height\":0,\"text\":\"订货商信息\",\"style\":8}},\"height\":57},\"1\":{\"cells\":{\"1\":{\"text\":\"订单编号:\",\"style\":10},\"2\":{\"merge\":[0,2],\"height\":0,\"style\":42,\"text\":\"${gg.dGoodsCode}\"}},\"height\":34},\"2\":{\"cells\":{\"1\":{\"text\":\"订单地址:\",\"style\":10},\"2\":{\"merge\":[0,1],\"height\":0,\"style\":42,\"text\":\"${gg.dAddress}\"},\"4\":{\"text\":\"订单日期:\",\"style\":10},\"5\":{\"merge\":[0,1],\"height\":0,\"style\":42,\"text\":\"${gg.dArrivalDate}\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\"订单姓名:\",\"style\":10},\"2\":{\"merge\":[0,1],\"height\":0,\"style\":42,\"text\":\"${gg.dName}\"},\"4\":{\"text\":\"到货日期:\",\"style\":10},\"5\":{\"merge\":[0,1],\"height\":0,\"style\":42,\"text\":\"${gg.dGoodsDate}\"}},\"height\":31},\"5\":{\"cells\":{\"1\":{\"text\":\"订单详情\",\"merge\":[0,6],\"style\":31,\"decimalPlaces\":\"4\"},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{}},\"height\":51},\"6\":{\"cells\":{\"1\":{\"text\":\"商品编码\",\"style\":15},\"2\":{\"text\":\"商品名称\",\"style\":15},\"3\":{\"text\":\"销售时间\",\"style\":15},\"4\":{\"text\":\"销售数据量\",\"style\":15},\"5\":{\"text\":\"定价\",\"style\":15},\"6\":{\"text\":\"优惠价\",\"style\":15},\"7\":{\"text\":\"付款金额\",\"style\":15}},\"height\":42},\"7\":{\"cells\":{\"1\":{\"style\":18,\"text\":\"#{xb.id}\"},\"2\":{\"style\":18,\"text\":\"#{xb.cname}\"},\"3\":{\"style\":18,\"text\":\"#{xb.riqi}\"},\"4\":{\"style\":18,\"text\":\"#{xb.dtotal}\"},\"5\":{\"style\":19,\"text\":\"#{xb.cprice}\",\"decimalPlaces\":\"4\"},\"6\":{\"style\":19,\"text\":\"#{xb.cprice}\",\"decimalPlaces\":\"1\"},\"7\":{\"style\":18,\"text\":\"#{xb.tp}\"},\"8\":{\"text\":\"\"}}},\"10\":{\"cells\":{\"1\":{\"style\":39,\"text\":\"备注:\"},\"2\":{\"text\":\" \",\"style\":33},\"3\":{\"style\":33,\"text\":\" \"},\"4\":{\"style\":33,\"text\":\" \"},\"5\":{\"style\":33,\"text\":\" \"},\"6\":{\"style\":33,\"text\":\" \"},\"7\":{\"style\":34,\"text\":\" \"}}},\"11\":{\"cells\":{\"1\":{\"style\":41,\"merge\":[0,6],\"height\":0,\"text\":\"1、查看信息,在浏览器输入“?did=1”或“?did=2”\"}},\"height\":37},\"12\":{\"cells\":{\"1\":{\"style\":35,\"text\":\" \"},\"2\":{\"text\":\" \"},\"7\":{\"style\":36,\"text\":\" \"}}},\"13\":{\"cells\":{\"1\":{\"style\":37,\"text\":\" \"},\"2\":{\"style\":28,\"text\":\" \"},\"3\":{\"style\":28,\"text\":\" \"},\"4\":{\"style\":28,\"text\":\" \"},\"5\":{\"style\":28,\"text\":\" \"},\"6\":{\"style\":28,\"text\":\" \"},\"7\":{\"style\":38,\"text\":\" \"}}},\"len\":102,\"-1\":{\"cells\":{\"-1\":{\"text\":\"#{xb.username}\"}}}},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"font\":{\"size\":18}},{\"font\":{\"size\":18,\"bold\":true}},{\"align\":\"center\"},{\"font\":{\"size\":18,\"bold\":true},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"font\":{\"size\":18,\"bold\":true,\"name\":\"宋体\"},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"}},{\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"},\"color\":\"#ffffff\"},{\"Line truncated
INSERT INTO `jimu_report` VALUES ('537521675550674944', '20201215151426612466731464', '数据联动报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":0,\"marginY\":10,\"layout\":\"portrait\"},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":2571,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":48},\"1\":{\"width\":107},\"2\":{\"width\":99},\"3\":{\"width\":133},\"4\":{\"width\":96},\"5\":{\"width\":130},\"6\":{\"width\":119},\"7\":{\"width\":235},\"8\":{\"width\":124},\"9\":{\"width\":148},\"10\":{\"width\":132},\"23\":{\"width\":344},\"len\":50},\"chartList\":[{\"row\":1,\"col\":8,\"colspan\":0,\"rowspan\":0,\"width\":\"504\",\"height\":\"276\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12},\\\"rotate\\\":0,\\\"interval\\\":0},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"data\\\":[\\\"张三\\\",\\\"张三\\\"],\\\"show\\\":true,\\\"name\\\":\\\"\\\"},\\\"grid\\\":{\\\"top\\\":60,\\\"left\\\":41,\\\"bottom\\\":43,\\\"right\\\":27},\\\"series\\\":[{\\\"barWidth\\\":23,\\\"data\\\":[25,25],\\\"name\\\":\\\"age\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#ffc001\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":\\\"12\\\",\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":true},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":18}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":\\\"5\\\",\\\"text\\\":\\\"员工基本信息\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#000000\\\",\\\"fontWeight\\\":\\\"bold\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"sql\",\"apiStatus\":\"\",\"apiUrl\":\"\",\"dataId\":\"537522718405644288\",\"axisX\":\"name\",\"axisY\":\"age\",\"series\":\"\",\"yText\":\"age\",\"xText\":\"name\",\"dbCode\":\"hh\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTiming\":\"\",\"intervalTime\":\"\",\"chartType\":\"bar.simple\",\"id\":\"\",\"chartId\":\"mfVOveSMUgcmPLZH\"},\"layer_id\":\"mfVOveSMUgcmPLZH\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,8],[1,9],[1,10],[1,11],[1,12]]}],\"area\":{\"sri\":2,\"sci\":1,\"eri\":2,\"eci\":1,\"width\":107,\"height\":61},\"excel_config_id\":\"537521675550674944\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{}},\"1\":{\"cells\":{\"1\":{\"text\":\"职务编号\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"家庭电话\",\"style\":51},\"6\":{\"text\":\"出生日期\",\"style\":51},\"7\":{\"text\":\"联系地址\",\"style\":51},\"8\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"},\"9\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"},\"10\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"},\"11\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"},\"12\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"}},\"height\":46},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\",\"linkIds\":\"845811279070580736\",\"rendered\":\"\",\"config\":\"\",\"display\":\"link\"},\"2\":{\"text\":\"#{pop.id}\",\"style\":54,\"aggregate\":\"select\"},\"3\":{\"text\":\"#{pop.name}\",\"style\":54,\"aggregate\":\"select\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"6\":{\"text\":\"#{pop.birth}\",\"style\":56},\"7\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"19\":{\"style\":52,\"rendered\":\"\",\"config\":\"\",\"text\":\" \"},\"20\":{\"style\":52,\"text\":\" \",\"rendered\":\"\",\"config\":\"\",\"display\":\"normal\"},\"21\":{\"style\":52,\"rendered\":\"\",\"config\":\"\",\"text\":\" \"},\"22\":{\"style\":52,\"rendered\":\"\",\"config\":\"\",\"text\":\" \"}},\"isDrag\":true,\"height\":61},\"14\":{\"cells\":{}},\"len\":68},\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{\"1\":{\"barcodeContent\":\"#{pop.id}\",\"format\":\Line truncated
INSERT INTO `jimu_report` VALUES ('53c82a76f837d5661dceec7d93afafec', '5678', '阜阳检票数查询', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"53c82a76f837d5661dceec7d93afafec\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":66},\"3\":{\"style\":67,\"merge\":[0,3],\"text\":\"阜阳火车站检票数\"}},\"height\":63},\"1\":{\"cells\":{},\"height\":20},\"2\":{\"cells\":{\"1\":{\"text\":\"日期:\",\"style\":68},\"2\":{\"text\":\"${gongsi.tdata}\",\"style\":69},\"4\":{\"style\":66,\"text\":\"制表人:\"},\"5\":{\"text\":\"${gongsi.gname}\",\"style\":66},\"7\":{\"text\":\" \",\"merge\":[0,1],\"style\":70}},\"isDrag\":true},\"3\":{\"cells\":{\"1\":{\"text\":\"班次\",\"merge\":[1,0],\"style\":71},\"2\":{\"text\":\"发车时间\",\"merge\":[1,0],\"style\":71},\"3\":{\"text\":\"是否放空\",\"merge\":[1,0],\"style\":71},\"4\":{\"text\":\"路线\",\"merge\":[0,1],\"style\":71},\"6\":{\"text\":\"核载座位数\",\"merge\":[1,0],\"style\":71},\"7\":{\"merge\":[1,0],\"style\":71,\"text\":\"检票数\"},\"8\":{\"merge\":[1,0],\"style\":71,\"text\":\"实载率(%)\"}}},\"4\":{\"cells\":{\"4\":{\"text\":\"从\",\"style\":71},\"5\":{\"text\":\"到\",\"style\":71}},\"height\":25},\"5\":{\"cells\":{\"1\":{\"style\":73,\"text\":\"#{jianpiao.bnum}\"},\"2\":{\"style\":73,\"text\":\"#{jianpiao.ftime}\"},\"3\":{\"style\":73,\"text\":\"#{jianpiao.sfkong}\"},\"4\":{\"style\":73,\"text\":\"#{jianpiao.kaishi}\"},\"5\":{\"style\":73,\"text\":\"#{jianpiao.jieshu}\"},\"6\":{\"style\":73,\"text\":\"#{jianpiao.hezairen}\"},\"7\":{\"style\":73,\"text\":\"#{jianpiao.jpnum}\"},\"8\":{\"style\":73,\"text\":\"#{jianpiao.shihelv}\"}},\"height\":33},\"6\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":11}},\"isDrag\":true},\"7\":{\"cells\":{\"2\":{\"style\":11,\"text\":\" \"}}},\"8\":{\"cells\":{}},\"9\":{\"cells\":{}},\"10\":{\"cells\":{}},\"11\":{\"cells\":{}},\"12\":{\"cells\":{}},\"13\":{\"cells\":{}},\"14\":{\"cells\":{}},\"len\":96,\"-1\":{\"cells\":{\"-1\":{\"text\":\"${gongsi.id}\"}},\"isDrag\":true}},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":703,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{},{\"border\":{\"bottom\":[\"thin\",\"#7f7f7f\"],\"top\":[\"thin\",\"#7f7f7f\"],\"left\":[\"thin\",\"#7f7f7f\"],\"right\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#7f7f7f\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"right\":[\"thin\",\"#7f7f7f\"],\"bottom\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"bottom\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"right\":[\"thin\",\"#7f7f7f\"]}},{\"align\":\"center\",\"font\":{\"size\":16}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"bold\":true}},{\"Line truncated
INSERT INTO `jimu_report` VALUES ('542152544408129536', '20210414112811', '图表联动报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"chartList\":[{\"row\":3,\"col\":5,\"colspan\":4,\"rowspan\":7,\"width\":\"556\",\"height\":\"318\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"rotate\\\":0,\\\"interval\\\":0},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"data\\\":[\\\"1月\\\",\\\"2月\\\",\\\"3月\\\",\\\"4月\\\",\\\"5月\\\",\\\"6月\\\",\\\"7月\\\",\\\"8月\\\",\\\"9月\\\",\\\"10月\\\",\\\"11月\\\",\\\"12月\\\"],\\\"show\\\":true,\\\"name\\\":\\\"\\\"},\\\"grid\\\":{\\\"top\\\":30,\\\"left\\\":48,\\\"bottom\\\":42,\\\"right\\\":18},\\\"series\\\":[{\\\"areaStyle\\\":null,\\\"data\\\":[10000,80000,50000,70000,100000,70000,59000,30000,90000,80000,90000,30000],\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"isArea\\\":false,\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(33,176,246,1)\\\"},\\\"step\\\":false,\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"line\\\",\\\"smooth\\\":false}],\\\"tooltip\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":5,\\\"text\\\":\\\"每月订单金额\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#c23531\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":18},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"542187081431339008\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"yu\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTiming\":false,\"intervalTime\":\"0\",\"linkIds\":\"\",\"chartType\":\"line.simple\",\"chartId\":\"4gWTCuSf3N2pRy9U\",\"id\":\"4gWTCuSf3N2pRy9U\"},\"layer_id\":\"4gWTCuSf3N2pRy9U\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[3,5],[3,6],[3,7],[3,8]]},{\"row\":3,\"col\":1,\"colspan\":4,\"rowspan\":7,\"width\":\"398\",\"height\":\"317\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"rotate\\\":0,\\\"interval\\\":0},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"data\\\":[\\\"张三\\\",\\\"李四\\\",\\\"小米\\\",\\\"lili\\\",\\\"王伟\\\",\\\"菲菲\\\",\\\"洋洋\\\",\\\"王轩\\\",\\\"李中\\\",\\\"韩寒\\\"],\\\"show\\\":true,\\\"name\\\":\\\"\\\"},\\\"grid\\\":{\\\"top\\\":30,\\\"left\\\":60,\\\"bottom\\\":42,\\\"right\\\":23},\\\"series\\\":[{\\\"barWidth\\\":10,\\\"data\\\":[3400879,2400879,2300879,1000879,900000,700000,590000,300000,90000,9000],\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"rgba(33,176,246,1)\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":\\\"5\\\",\\\"text\\\":\\\"某站点用户访问来源\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#0CF1F6\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":18},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"542158608528658432\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"xs\Line truncated
INSERT INTO `jimu_report` VALUES ('580749470334275584', '20210729233805', '表达式示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"580749470334275584\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"更多表达式请查看详细文档。\",\"linkIds\":\"580872825561501696\",\"rendered\":\"\",\"config\":\"\",\"display\":\"link\",\"merge\":[0,1],\"height\":43,\"style\":18}},\"height\":43},\"1\":{\"cells\":{\"1\":{\"style\":12,\"text\":\"日期函数\",\"merge\":[0,3],\"height\":25},\"6\":{\"style\":12,\"text\":\"字符串函数\",\"merge\":[0,3],\"height\":25}},\"height\":34},\"2\":{\"cells\":{\"1\":{\"text\":\"函数名称\",\"style\":17},\"2\":{\"text\":\"表达式\",\"style\":17},\"3\":{\"text\":\"常量参数\",\"style\":17},\"4\":{\"text\":\"数据集参数\",\"style\":17},\"6\":{\"text\":\"函数名称\",\"style\":17},\"7\":{\"text\":\"表达式\",\"style\":17},\"8\":{\"text\":\"常量参数\",\"style\":17},\"9\":{\"text\":\"数据集参数\",\"style\":17}}},\"3\":{\"cells\":{\"1\":{\"text\":\"date()\",\"style\":4},\"2\":{\"text\":\"date(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=date(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=date(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"text\":\"char()\",\"style\":4,\"merge\":[1,0],\"height\":50},\"7\":{\"text\":\"char(22269)\",\"style\":4},\"8\":{\"text\":\"=char(22269)\",\"style\":4},\"9\":{\"style\":4,\"text\":\" \"}}},\"4\":{\"cells\":{\"1\":{\"text\":\"time()\",\"style\":4},\"2\":{\"text\":\"time(\\\"12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=time(\\\"12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=time(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"7\":{\"text\":\"char(101)\",\"style\":4},\"8\":{\"text\":\"=char(101)\",\"style\":4},\"9\":{\"style\":4,\"text\":\" \"}}},\"5\":{\"cells\":{\"1\":{\"text\":\"now()\",\"merge\":[3,0],\"height\":100,\"style\":4,\"linkIds\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"\"},\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":5},\"4\":{\"text\":\"=now()\",\"style\":5},\"6\":{\"style\":4,\"text\":\"cnmoney()\",\"merge\":[2,0],\"height\":75},\"7\":{\"text\":\"cnmoney(341.234)\",\"style\":4},\"8\":{\"style\":4,\"text\":\"=cnmoney(341.234)\"},\"9\":{\"style\":4,\"text\":\"=cnmoney(${jm_expression.num})\"}}},\"6\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":6},\"4\":{\"text\":\"=now()\",\"style\":6},\"7\":{\"text\":\"cnmoney(341.234,\\\"b\\\")\",\"style\":4},\"8\":{\"text\":\"=cnmoney(341.234,\\\"b\\\")\",\"style\":4},\"9\":{\"style\":4,\"text\":\"=cnmoney(${jm_expression.num},\\\"b\\\")\"}}},\"7\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":7},\"4\":{\"text\":\"=now()\",\"style\":7},\"7\":{\"text\":\"cnmoney(341.234,\\\"bw\\\")\",\"style\":4},\"8\":{\"text\":\"=cnmoney(341.234,\\\"bw\\\")\",\"style\":4},\"9\":{\"text\":\"=cnmoney(${jm_expression.num},\\\"bw\\\")\",\"style\":4}}},\"8\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":8},\"4\":{\"text\":\"=now()\",\"style\":8},\"6\":{\"text\":\"concat()\",\"style\":4},\"7\":{\"text\":\"concat(\'hello \',\'word\',\' !\')\",\"style\":4},\"8\":{\"text\":\"=concat(\'hello \',\'world\',\' !\')\",\"style\":4},\"9\":{\"text\":\"=concat(\'${jm_expression.upper}\',\' world\',\' !\')\",\"style\":4}}},\"9\":{\"cells\":{\"1\":{\"text\":\"year()\",\"style\":4},\"2\":{\"text\":\"year(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=year(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=year(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"text\":\"lower()\",\"style\":4},\"7\":{\"text\":\"lower(\'HELLOW\')\",\"style\":4},\"8\":{\"text\":\"=lower(\'HELLOW\')\",\"style\":4},\"9\":{\"text\":\"=lower(\\\"${jm_expression.upper}\\\") \",\"style\":4}}},\"10\":{\"cells\":{\"1\":{\"text\":\"month()\",\"style\":4},\"2\":{\"text\":\"month(\\\"2021-07-29 12:11:10\\\") \",\"style\":4},\"3\":{\"text\":\"=month(\\\"2021-07-29 12:11:10\\\") \",\"style\":4},\"4\":{\"text\":\"=month(\\\"${jm_expression.create_time}\\\") \",\"style\":4},\"6\":{\"text\":\"upper()\",\"style\":4},\"7\":{\"text\":\"upper(\'world\')\",\"style\":4},\"8\":{\"text\":\"=upper(\'world\')\",\"style\":4},\"9\":{\"text\":\"=upper(\'${jm_expression.lower}\')\",\"style\":4}}},\"11\":{\"cells\":{\"1\":{\"text\":\"day()\",\"style\":4},\"2\":{\"text\":\"day(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=day(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=day(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"style\":4,\"text\":\" \"},\"7\":{\"style\":4,\"text\":\" \"},\"8\":{\"style\":4,\"text\":\" \"},\"9\Line truncated
INSERT INTO `jimu_report` VALUES ('590432931076722688', '2020121515142661246570', '查询条件示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1694,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":48},\"1\":{\"width\":107},\"2\":{\"width\":147},\"3\":{\"width\":144},\"4\":{\"width\":142},\"5\":{\"width\":130},\"6\":{\"width\":131},\"7\":{\"width\":235},\"8\":{\"width\":230},\"9\":{\"width\":148},\"10\":{\"width\":132},\"len\":50},\"area\":false,\"excel_config_id\":\"590432931076722688\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"查询条件示例\",\"style\":64,\"merge\":[0,1],\"height\":44},\"2\":{},\"3\":{\"style\":68,\"text\":\"说明:查询控件配置;默认值设置;CSS增强配置;参考文档:http://report.jeecg.com/2373403\",\"merge\":[0,2],\"height\":57}},\"height\":57},\"1\":{\"cells\":{\"1\":{\"text\":\"职务\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"雇佣日期\",\"style\":51},\"6\":{\"text\":\"家庭电话\",\"style\":51},\"7\":{\"text\":\"出生日期\",\"style\":51},\"8\":{\"text\":\"户口所在地\",\"style\":51},\"9\":{\"text\":\"联系地址\",\"style\":51},\"10\":{\"text\":\"紧急联系人\",\"style\":51},\"11\":{\"style\":51,\"text\":\"分类\"}},\"height\":46},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{pop.group(id)}\",\"style\":54,\"aggregate\":\"group\"},\"3\":{\"text\":\"#{pop.group(name)}\",\"style\":54,\"aggregate\":\"group\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.gtime}\",\"style\":56},\"6\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"7\":{\"text\":\"#{pop.birth}\",\"style\":56},\"8\":{\"text\":\"#{pop.hukou}\",\"style\":58},\"9\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"10\":{\"text\":\"#{pop.jperson}\",\"style\":57},\"11\":{\"style\":57,\"text\":\"#{pop.type}\"}},\"isDrag\":true,\"height\":35},\"5\":{\"cells\":{\"2\":{\"text\":\"\"}},\"isDrag\":true},\"len\":99},\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbLine truncated
INSERT INTO `jimu_report` VALUES ('590442764001693696', '202101271721121257', '纵向分组小计示例3', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"layout\":\"portrait\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"C4\",\"dataRectWidth\":718,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":36},\"1\":{\"width\":95},\"2\":{\"width\":95},\"3\":{\"width\":105},\"4\":{\"width\":141},\"5\":{\"width\":246},\"6\":{\"width\":155},\"len\":100},\"area\":{\"sri\":3,\"sci\":2,\"eri\":3,\"eci\":2,\"width\":95,\"height\":38},\"excel_config_id\":\"590442764001693696\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"rendered\":\"\",\"text\":\"\"},\"1\":{\"merge\":[0,2],\"style\":6,\"text\":\"纵向分组小计示例3\"},\"5\":{\"style\":30,\"text\":\"说明:本示例涉及纵向分组小计,横向动态列;地区设为小计分组依据;销量设为求和;年份倒序;月份默认正序\"}},\"height\":83},\"1\":{\"cells\":{\"1\":{\"rendered\":\"\",\"lineStart\":\"lefttop\",\"merge\":[1,1],\"style\":2,\"text\":\"地区|销量|时间\",\"height\":74},\"3\":{\"style\":8,\"text\":\"#{xs.groupRight(year)}年\",\"sort\":\"desc\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":40},\"2\":{\"cells\":{\"3\":{\"style\":8,\"text\":\"#{xs.groupRight(mouth)}\",\"sort\":\"default\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"funcname\":\"\",\"subtotal\":\"groupField\",\"style\":28,\"text\":\"#{xs.group(diqu)}\",\"aggregate\":\"group\"},\"2\":{\"style\":28,\"text\":\"#{xs.group(class)}\",\"aggregate\":\"group\"},\"3\":{\"decimalPlaces\":\"0\",\"funcname\":\"SUM\",\"rendered\":\"\",\"subtotal\":\"\",\"style\":29,\"text\":\"#{xs.dynamic(sales)}\",\"aggregate\":\"dynamic\"}},\"height\":38},\"4\":{\"cells\":{\"1\":{\"merge\":[0,1],\"style\":24,\"text\":\"总计\"},\"3\":{\"style\":25,\"text\":\"=sum(D4)\"}},\"height\":37},\"8\":{\"cells\":{\"1\":{}}},\"10\":{\"cells\":{\"1\":{}}},\"len\":100},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"xs.diqu\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"font\":{\"size\":16}},{\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#fe0000\"},{\"color\":\"#fe0000\"},{\"color\":\"#ffffff\"},{\"border\":{\Line truncated
INSERT INTO `jimu_report` VALUES ('590808622016319488', '20210826175031', '纵向分组小计示例1', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":55,\"sci\":6,\"eri\":55,\"eci\":6,\"width\":100,\"height\":25},\"excel_config_id\":\"590808622016319488\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,1],\"height\":61,\"text\":\"纵向分组小计示例1\",\"style\":18},\"3\":{\"text\":\"说明:地区、省份设置为纵向分组并且地区设置为分组依据;销售额设为求和;参考文档:http://report.jeecg.com/2333594\",\"style\":20,\"merge\":[0,2],\"height\":61}},\"height\":85},\"1\":{\"cells\":{\"1\":{\"text\":\"地区|销售额|日期\",\"lineStart\":\"lefttop\",\"style\":16,\"merge\":[1,1],\"height\":66},\"3\":{\"text\":\"#{jm.groupRight(year)}\",\"direction\":\"right\",\"style\":16}},\"height\":35},\"2\":{\"cells\":{\"3\":{\"text\":\"#{jm.groupRight(month)}\",\"aggregate\":\"group\",\"direction\":\"right\",\"style\":16}},\"height\":31},\"3\":{\"cells\":{\"1\":{\"text\":\"#{jm.group(areaname)}\",\"aggregate\":\"group\",\"subtotal\":\"groupField\",\"funcname\":\"\",\"style\":0},\"2\":{\"text\":\"#{jm.group(dept)}\",\"style\":0,\"aggregate\":\"group\",\"funcname\":\"\"},\"3\":{\"text\":\"#{jm.dynamic(settleamount)}\",\"aggregate\":\"dynamic\",\"style\":0,\"subtotal\":\"\",\"funcname\":\"SUM\"}}},\"len\":21},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"jm.areaname\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":454,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#d8d8d8\"},{\"bgcolor\":\"#d8d8d8\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#71ae47\"},{\"bgcolor\":\"#71ae47\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#c45a10\"},{\"bgcolor\":\"#c45a10\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#7f7f7f\"},{\"bgcolor\":\"#7f7f7f\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#ffffff\"},{\"bgcolor\":\"#ffffff\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#d0cecf\"},{\"bgcolor\":\"#d0cecf\"},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"bgcolor\":\"#d0cecf\"},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"bgcolor\":\"#f2f2f2\"},{\"bgcolor\":\"#f2f2f2\"},{\"font\":{\"size\":14}},{\"textwrap\":true},{\"textwrap\":true,\"color\":\"#fe0000\"},{\"color\":\"#fe0000\"}],\"validations\":[],\"isGroup\":true,\"cols\":{\"0\":{\"width\":154},\"5\":{\"width\":121},\"len\":50},\"merges\":[\"B1:C1\",\"D1:F1\",\"B2:C3\"]}', NULL, 'https://static.jeecg.com/designreport/images/fz1_1630235763858.png', 'admin', '2021-08-26 17:50:31', 'admin', '2023-07-31 16:45:31', 0, NULL, NULL, 1, 2885, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('590812531803901952', '202108261750310852', '纵向分组小计示例2', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":8,\"sci\":1,\"eri\":8,\"eci\":1,\"width\":80,\"height\":25},\"excel_config_id\":\"590812531803901952\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"3\":{\"text\":\" \",\"style\":27},\"5\":{\"text\":\"\"},\"7\":{\"merge\":[0,2],\"height\":56,\"style\":27,\"text\":\" \"}},\"height\":59},\"1\":{\"cells\":{\"1\":{\"text\":\"纵向分组小计示例2\",\"merge\":[0,2],\"height\":56,\"style\":27},\"4\":{\"text\":\"说明:区域(areaname)、省份(dept)纵向分组;单价(price)、金额(amount)设置动态属性;小计设置compute行内计算compute(price*amount);参考文档:http://report.jeecg.com/2333594\",\"merge\":[0,4],\"height\":54,\"style\":29}},\"height\":54},\"2\":{\"cells\":{\"1\":{\"text\":\"区域\",\"style\":21,\"merge\":[2,0],\"height\":81},\"2\":{\"merge\":[2,0],\"height\":81,\"text\":\"省份\",\"style\":21},\"3\":{\"merge\":[0,2],\"height\":31,\"style\":21,\"text\":\"#{jm.groupRight(year)}年\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":35},\"3\":{\"cells\":{\"3\":{\"merge\":[0,2],\"height\":25,\"style\":21,\"text\":\"#{jm.groupRight(month)}月\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":34},\"4\":{\"cells\":{\"3\":{\"text\":\"单价\",\"style\":21},\"4\":{\"text\":\"金额\",\"style\":21},\"5\":{\"text\":\"小计\",\"style\":21}},\"height\":35},\"5\":{\"cells\":{\"1\":{\"text\":\"#{jm.group(areaname)}\",\"aggregate\":\"group\",\"subtotal\":\"groupField\",\"funcname\":\"\",\"style\":17},\"2\":{\"text\":\"#{jm.group(dept)}\",\"style\":17,\"aggregate\":\"group\",\"funcname\":\"\"},\"3\":{\"text\":\"#{jm.dynamic(price)}\",\"style\":26,\"aggregate\":\"dynamic\"},\"4\":{\"style\":26,\"text\":\"#{jm.dynamic(amount)}\",\"aggregate\":\"dynamic\",\"subtotal\":\"\",\"funcname\":\"SUM\"},\"5\":{\"text\":\"#{jm.compute(price*amount)}\",\"aggregate\":\"dynamic\",\"style\":26,\"subtotal\":\"\",\"funcname\":\"SUM\"}}},\"9\":{\"cells\":{},\"height\":37},\"len\":10},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"jm.areaname\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":656,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#d8d8d8\"},{\"bgcolor\":\"#d8d8d8\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#71ae47\"},{\"bgcolor\":\"#71ae47\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#c45a10\"},{\"bgcolor\":\"#c45a10\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#7f7f7f\"},{\"bgcolor\":\"#7f7f7f\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#ffffff\"},{\"bgcolor\":\"#ffffff\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#d0cecf\"},{\"bgcolor\":\"#d0cecf\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#f2f2f2\"},{\"bgcolor\":\"#f2f2f2\"},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#0c0c0c\"],\"top\":[\"thin\",\"#0c0c0c\"],\"left\":[\"thin\",\"#0c0c0c\"],\"right\":[\"thin\",\"#0c0c0c\"]}},{\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]}},{\"border\":{\"bottom\":[\"thin\",\"#3f3f3f\"],\"top\":[\"thin\",\"#3f3f3f\"],\"left\":[\"thin\",\"#3f3f3f\"],\"right\":[\"thin\",\"#3f3f3f\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"bgcolor\":\"#f2f2f2\"},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\"Line truncated
INSERT INTO `jimu_report` VALUES ('590831722099462144', '20210826192130', '分栏示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[{\"sci\":1,\"sri\":2,\"eci\":5,\"eri\":5,\"index\":1,\"db\":\"jm\",\"loopTime\":3}],\"area\":{\"sri\":1,\"sci\":5,\"eri\":1,\"eci\":6,\"width\":154,\"height\":59},\"excel_config_id\":\"590831722099462144\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{},\"height\":44},\"1\":{\"cells\":{\"2\":{\"style\":13,\"text\":\"\"},\"4\":{\"style\":14},\"5\":{\"style\":15,\"text\":\"分栏示例\",\"merge\":[0,1],\"height\":59},\"6\":{\"style\":16},\"8\":{\"style\":9,\"text\":\"说明:需要对多行区域进行循环且分栏展示时,则进行循环块设置并指定横向循环次数;参考文档:http://report.jeecg.com/2373085\",\"merge\":[0,2],\"height\":59}},\"height\":59},\"2\":{\"cells\":{\"1\":{\"text\":\"\",\"loopBlock\":1},\"2\":{\"text\":\"职员信息\",\"style\":2,\"merge\":[0,1],\"height\":34,\"loopBlock\":1},\"3\":{\"loopBlock\":1},\"4\":{\"text\":\"\",\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1}},\"height\":51},\"3\":{\"cells\":{\"1\":{\"text\":\"姓名\",\"style\":4,\"loopBlock\":1},\"2\":{\"text\":\"性别\",\"style\":4,\"loopBlock\":1},\"3\":{\"text\":\"职务\",\"style\":4,\"loopBlock\":1},\"4\":{\"text\":\"联系方式\",\"style\":4,\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1}},\"height\":31},\"4\":{\"cells\":{\"1\":{\"text\":\"#{jm.name}\",\"style\":0,\"loopBlock\":1},\"2\":{\"text\":\"#{jm.sex}\",\"style\":0,\"loopBlock\":1},\"3\":{\"text\":\"#{jm.update_by}\",\"style\":0,\"loopBlock\":1},\"4\":{\"text\":\"#{jm.jphone}\",\"style\":0,\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1}}},\"5\":{\"cells\":{\"1\":{\"text\":\"\",\"loopBlock\":1},\"2\":{\"loopBlock\":1},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"\",\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1}},\"height\":34},\"len\":103},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"freeze\":\"A1\",\"dataRectWidth\":817,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"size\":14}},{\"font\":{\"size\":14},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"size\":11}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"size\":11},\"bgcolor\":\"#f2f2f2\"},{\"font\":{\"size\":12}},{\"font\":{\"size\":15}},{\"font\":{\"size\":15},\"align\":\"center\"},{\"textwrap\":true},{\"textwrap\":true,\"color\":\"#fe0000\"},{\"color\":\"#fe0000\"},{\"textwrap\":true,\"color\":\"#000100\"},{\"color\":\"#000100\"},{\"textwrap\":true,\"color\":\"#000100\",\"font\":{\"size\":15}},{\"color\":\"#000100\",\"font\":{\"size\":15}},{\"color\":\"#000100\",\"font\":{\"size\":18}},{\"font\":{\"size\":18}}],\"validations\":[],\"cols\":{\"0\":{\"width\":72},\"3\":{\"width\":101},\"4\":{\"width\":90},\"5\":{\"width\":54},\"len\":50},\"merges\":[\"I2:K2\",\"C3:D3\",\"F2:G2\"]}', NULL, 'https://static.jeecg.com/designreport/images/fl_1630235558373.png', 'admin', '2021-08-26 19:21:30', 'admin', '2021-08-29 19:12:38', 0, NULL, NULL, 1, 2549, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('590835562513256448', '20210826193641', '分版示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":1,\"sci\":8,\"eri\":1,\"eci\":8,\"width\":100,\"height\":65},\"excel_config_id\":\"590835562513256448\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[{\"sci\":4,\"sri\":3,\"eci\":6,\"eri\":4,\"db\":\"flapi\",\"index\":1},{\"sci\":8,\"sri\":4,\"eci\":9,\"eri\":5,\"db\":\"flapi\",\"index\":2}],\"rows\":{\"0\":{\"cells\":{\"3\":{\"text\":\"\",\"style\":9,\"merge\":[0,1],\"height\":72}},\"height\":60},\"1\":{\"cells\":{\"3\":{\"style\":18,\"text\":\"分版示例\",\"merge\":[0,1],\"height\":65},\"5\":{\"merge\":[0,2],\"height\":65,\"text\":\"说明:当报表左侧已有表格,右侧仍需要展示表格时,需使用分版功能;参考文档:http://report.jeecg.com/2373086\",\"style\":20},\"6\":{\"style\":15},\"7\":{\"style\":15}},\"height\":65},\"2\":{\"cells\":{\"1\":{\"text\":\"表1\",\"style\":7},\"5\":{\"text\":\"表2\",\"style\":7}},\"height\":41},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":2},\"1\":{\"text\":\"性别\",\"style\":2},\"2\":{\"text\":\"年龄\",\"style\":2},\"4\":{\"text\":\"省份\",\"style\":2,\"zonedEdition\":1},\"5\":{\"style\":2,\"zonedEdition\":1,\"text\":\"月份\"},\"6\":{\"style\":2,\"zonedEdition\":1,\"text\":\"金额\"},\"8\":{\"text\":\"表3\",\"style\":8}},\"height\":35},\"4\":{\"cells\":{\"0\":{\"text\":\"#{jm.name}\",\"style\":0},\"1\":{\"text\":\"#{jm.sex}\",\"style\":0},\"2\":{\"text\":\"#{jm.age}\",\"style\":0},\"4\":{\"text\":\"#{flapi.dept}\",\"style\":0,\"zonedEdition\":1},\"5\":{\"style\":0,\"zonedEdition\":1,\"text\":\"#{flapi.month}月\"},\"6\":{\"style\":0,\"zonedEdition\":1,\"text\":\"#{flapi.amount}\"},\"8\":{\"text\":\"年份\",\"style\":2,\"zonedEdition\":2},\"9\":{\"text\":\"金额\",\"style\":2,\"zonedEdition\":2}},\"height\":30},\"5\":{\"cells\":{\"8\":{\"text\":\"#{flapi.year}年\",\"style\":0,\"zonedEdition\":2},\"9\":{\"text\":\"#{flapi.settleamount}\",\"style\":0,\"zonedEdition\":2}}},\"len\":103},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"freeze\":\"A1\",\"dataRectWidth\":930,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"size\":12}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"size\":12},\"bgcolor\":\"#f2f2f2\"},{},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#f2f2f2\"},{\"font\":{\"size\":15}},{\"font\":{\"size\":12}},{\"font\":{\"size\":12},\"align\":\"center\"},{\"font\":{\"size\":12},\"align\":\"right\"},{\"font\":{\"size\":15},\"align\":\"center\"},{\"font\":{\"size\":15},\"align\":\"left\"},{\"textwrap\":true},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#fe0000\"],\"top\":[\"thin\",\"#fe0000\"],\"left\":[\"thin\",\"#fe0000\"],\"right\":[\"thin\",\"#fe0000\"]}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#ffffff\"],\"top\":[\"thin\",\"#ffffff\"],\"left\":[\"thin\",\"#ffffff\"],\"right\":[\"thin\",\"#ffffff\"]}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#ffffff\"],\"top\":[\"thin\",\"#ffffff\"],\"left\":[\"thin\",\"#ffffff\"],\"right\":[\"thin\",\"#ffffff\"]},\"color\":\"#fe0000\"},{\"color\":\"#fe0000\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#ffffff\"],\"top\":[\"thin\",\"#ffffff\"],\"left\":[\"thin\",\"#ffffff\"],\"right\":[\"thin\",\"#ffffff\"]},\"color\":\"#000100\"},{\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#ffffff\"],\"top\":[\"thin\",\"#ffffff\"],\"left\":[\"thin\",\"#ffffff\"],\"right\":[\"thin\",\"#ffffff\"]},\"color\":\"#000100\",\"font\":{\"size\":15}},{\"color\":\"#000100\",\"font\":{\"size\":15}},{\"textwrap\":true,\"color\":\"#fe0000\"}],\"validations\":[],\"cols\":{\"3\":{\"width\":69},\"7\":{\"width\":61},\"len\":50},\"merges\":[\"D1:E1\",\"D2:E2\",\"F2:H2\"]}', NULL, 'https://static.jeecg.com/designreport/images/fb_1630235434383.png', 'admin', '2021-08-26 19:36:41', 'admin', '2021-08-29 19:10:34', 0, NULL, NULL, 1, 3500, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('592957394477469696', '20201215151426612465700180', '存储过程示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1689,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":48},\"1\":{\"width\":107},\"2\":{\"width\":142},\"3\":{\"width\":144},\"4\":{\"width\":142},\"5\":{\"width\":130},\"6\":{\"width\":131},\"7\":{\"width\":235},\"8\":{\"width\":230},\"9\":{\"width\":148},\"10\":{\"width\":132},\"len\":100},\"area\":false,\"excel_config_id\":\"592957394477469696\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"存储过程示例\",\"style\":64,\"merge\":[0,1],\"height\":44},\"2\":{},\"3\":{\"style\":68,\"merge\":[0,2],\"height\":57,\"text\":\" \"}},\"height\":57},\"1\":{\"cells\":{\"1\":{\"text\":\"职务\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"雇佣日期\",\"style\":51},\"6\":{\"text\":\"家庭电话\",\"style\":51},\"7\":{\"text\":\"出生日期\",\"style\":51},\"8\":{\"text\":\"户口所在地\",\"style\":51},\"9\":{\"text\":\"联系地址\",\"style\":51},\"10\":{\"text\":\"紧急联系人\",\"style\":51},\"11\":{\"style\":51,\"text\":\"分类\"}},\"height\":46},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{pop.group(id)}\",\"style\":54,\"aggregate\":\"group\"},\"3\":{\"text\":\"#{pop.group(name)}\",\"style\":54,\"aggregate\":\"group\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.gtime}\",\"style\":56},\"6\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"7\":{\"text\":\"#{pop.birth}\",\"style\":56},\"8\":{\"text\":\"#{pop.hukou}\",\"style\":58},\"9\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"10\":{\"text\":\"#{pop.jperson}\",\"style\":57},\"11\":{\"style\":57,\"text\":\"#{pop.type}\"}},\"isDrag\":true,\"height\":35},\"5\":{\"cells\":{\"2\":{\"text\":\"\"}},\"isDrag\":true},\"len\":99},\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgLine truncated
INSERT INTO `jimu_report` VALUES ('6059e405dd9c66a6d38e00841d2e40cc', '566777', '处方笺', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":10,\"sci\":5,\"eri\":10,\"eci\":6,\"width\":72,\"height\":25},\"excel_config_id\":\"6059e405dd9c66a6d38e00841d2e40cc\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false},\"rows\":{\"0\":{\"cells\":{\"3\":{\"style\":80,\"text\":\" \"}},\"height\":96},\"1\":{\"cells\":{\"1\":{\"style\":24,\"text\":\" \"},\"2\":{\"style\":25,\"text\":\" \"},\"3\":{\"style\":25,\"text\":\" \"},\"4\":{\"style\":25,\"text\":\" \"},\"5\":{\"style\":25,\"text\":\" \"},\"6\":{\"style\":25,\"text\":\" \"},\"7\":{\"style\":25,\"text\":\" \"},\"8\":{\"style\":25,\"text\":\" \"},\"9\":{\"style\":25,\"text\":\" \"},\"10\":{\"style\":25,\"text\":\" \"},\"11\":{\"style\":25,\"text\":\" \"},\"12\":{\"style\":26,\"text\":\" \"}},\"height\":18},\"2\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":27},\"2\":{\"merge\":[0,9],\"text\":\"智能医学院处方笺\",\"style\":38},\"3\":{\"style\":12,\"text\":\" \"},\"4\":{\"style\":12,\"text\":\" \"},\"5\":{\"style\":12,\"text\":\" \"},\"6\":{\"style\":12,\"text\":\" \"},\"7\":{\"style\":12,\"text\":\" \"},\"8\":{\"style\":12,\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"style\":12,\"text\":\" \"},\"11\":{\"style\":12,\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"},\"13\":{\"style\":80}},\"height\":124},\"3\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":46},\"2\":{\"merge\":[0,1],\"text\":\"姓名:\",\"style\":4},\"3\":{\"style\":4,\"text\":\" \"},\"4\":{\"text\":\"${yonghu.yphone}\"},\"5\":{\"text\":\"性别:\",\"style\":42},\"6\":{\"text\":\"${yonghu.ysex}\",\"style\":42},\"7\":{\"text\":\"年龄:\",\"style\":47},\"8\":{\"text\":\"${yonghu.yage}\"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \",\"style\":42},\"11\":{\"style\":69,\"text\":\" \",\"merge\":[0,1]},\"12\":{\"style\":43,\"text\":\" \"},\"13\":{\"style\":80}},\"isDrag\":true},\"4\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":74},\"2\":{\"style\":4,\"merge\":[0,1],\"text\":\"单位:\"},\"3\":{\"style\":4,\"text\":\" \"},\"4\":{\"text\":\"${yonghu.danwei}\"},\"5\":{\"text\":\"电话:\"},\"6\":{\"text\":\"${yonghu.yphone}\",\"merge\":[0,5]},\"7\":{\"text\":\" \"},\"8\":{\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"},\"15\":{\"text\":\"\"}},\"isDrag\":true,\"height\":29},\"5\":{\"cells\":{\"1\":{\"style\":31,\"text\":\" \"},\"2\":{\"merge\":[0,1],\"text\":\"初步诊断:\",\"style\":4},\"3\":{\"text\":\" \",\"style\":4},\"4\":{\"text\":\"${yonghu.yjieguo}\",\"merge\":[0,7]},\"5\":{\"text\":\" \"},\"6\":{\"text\":\" \"},\"7\":{\"text\":\" \"},\"8\":{\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"}},\"isDrag\":true,\"height\":34},\"6\":{\"cells\":{\"1\":{\"text\":\" RP:\",\"merge\":[0,2],\"style\":79},\"2\":{\"style\":11,\"text\":\" \"},\"3\":{\"style\":11,\"text\":\" \"},\"4\":{\"style\":39,\"text\":\" \"},\"5\":{\"style\":0,\"text\":\" \"},\"6\":{\"style\":0,\"text\":\" \"},\"7\":{\"style\":0,\"text\":\" \"},\"8\":{\"style\":0,\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"style\":0,\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"},\"14\":{},\"16\":{}},\"height\":79},\"7\":{\"cells\":{\"1\":{\"text\":\".\",\"style\":48},\"2\":{\"text\":\"\",\"style\":1},\"3\":{\"text\":\"#{yaopin.name}\",\"rendered\":\"\",\"merge\":[0,1]},\"5\":{},\"6\":{},\"7\":{\"text\":\"#{yaopin.percent}\",\"merge\":[0,1]},\"9\":{},\"10\":{},\"11\":{\"text\":\"\"},\"12\":{\"style\":28,\"text\":\" \"},\"14\":{}},\"isDrag\":true,\"height\":37},\"8\":{\"cells\":{\"1\":{\"style\":31,\"text\":\" \"},\"2\":{\"text\":\" \"},\"3\":{\"text\":\" \"},\"4\":{\"text\":\" \"},\"5\":{\"text\":\" \"},\"6\":{\"text\":\" \"},\"7\":{\"text\":\" \"},\"8\":{\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"}},\"height\":27},\"9\":{\"cells\":{\"1\":{\"style\":31,\"text\":\" \"},\"2\":{\"text\":\"医嘱:\",\"style\":76},\"3\":{\"text\":\"${yonghu.yizhu}\",\"style\":6,\"merge\":[0,8]},\"4\":{\"text\":\" \"},\"5\":{\"text\":\" \"},\"6\":{\"text\":\" \"},\"7\":{\"text\":\" \"},\"8\":{\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"}},\"isDrag\":true},\"10\":{\"cells\":{\"1\":{\"style\":31,\"text\":\" \"},\"2\":{\"text\":\"药品费\",\"style\":6,\"merge\":[0,1]},\"3\":{\"text\":\" \"},\"4\":{\"text\":\"${yonghu.yprice}\",\"style\":6},\"5\":{\"merge\":[0,1],\"text\":\"中成药费\",\"style\":6},\"6\":{\"text\":\" \"},\"7\":{\"style\":6,\"text\":\" \"},\"8\":{\"text\":\"治疗费\",\"merge\":[0,2],\"style\":6},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"style\":6,\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"}},\"isDrag\":trueLine truncated
INSERT INTO `jimu_report` VALUES ('6d6bdcb5e820c301ea32789e3ae43c44', '1223', '供电公司抢修单', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":16,\"sci\":2,\"eri\":16,\"eci\":6,\"width\":555,\"height\":107},\"printElWidth\":718,\"excel_config_id\":\"6d6bdcb5e820c301ea32789e3ae43c44\",\"printElHeight\":1047,\"rows\":{\"0\":{\"cells\":{},\"height\":11},\"1\":{\"cells\":{\"1\":{\"text\":\"供电公司抢修竣工单\",\"merge\":[0,5],\"style\":39},\"2\":{\"style\":39},\"3\":{\"style\":39},\"4\":{\"style\":39},\"5\":{\"style\":39},\"6\":{\"style\":39}},\"height\":84},\"2\":{\"cells\":{\"1\":{\"text\":\"填报单位:\",\"style\":26},\"2\":{\"text\":\"#{qiangxiu.danwei}\",\"style\":27},\"3\":{\"style\":27},\"4\":{\"text\":\"\",\"style\":27},\"5\":{\"text\":\"填报日期:\",\"style\":26},\"6\":{\"text\":\"#{qiangxiu.time}\",\"style\":27}}},\"3\":{\"cells\":{\"1\":{\"text\":\"填报名称:\",\"style\":26},\"2\":{\"text\":\"#{qiangxiu.ktime}\",\"style\":27},\"3\":{\"style\":27},\"4\":{\"style\":27},\"5\":{\"text\":\"项目编号:\",\"style\":26},\"6\":{\"text\":\"#{qiangxiu.wtime}\",\"style\":27}}},\"4\":{\"cells\":{\"1\":{\"style\":28},\"2\":{\"style\":28},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":28},\"6\":{\"style\":28}},\"height\":10},\"5\":{\"cells\":{\"1\":{\"text\":\"项目批准核算\",\"style\":29},\"2\":{\"text\":\"#{qiangxiu.yusuan}\",\"style\":30,\"merge\":[0,4]}},\"height\":89},\"6\":{\"cells\":{\"1\":{\"text\":\"开工日期\",\"style\":32},\"2\":{\"style\":33,\"text\":\"#{qiangxiu.ktime}\",\"merge\":[0,1]},\"3\":{\"style\":28},\"4\":{\"style\":34,\"text\":\"完工日期\"},\"5\":{\"style\":33,\"merge\":[0,1],\"text\":\"#{qiangxiu.wtime}\"},\"6\":{\"style\":28}},\"height\":31},\"7\":{\"cells\":{\"1\":{\"text\":\"完工主要内容\",\"style\":32},\"2\":{\"style\":33,\"text\":\"#{qiangxiu.neirong}\",\"merge\":[0,4]}},\"height\":71},\"8\":{\"cells\":{\"1\":{\"text\":\"形成能力\",\"style\":32},\"2\":{\"style\":33,\"merge\":[0,4],\"text\":\"#{qiangxiu.nengli}\"},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":28},\"6\":{\"style\":28}},\"height\":49},\"9\":{\"cells\":{\"1\":{\"text\":\"目标效益验收意见\",\"style\":32},\"2\":{\"style\":35,\"text\":\"#{qiangxiu.yijian}\",\"merge\":[0,4]}},\"height\":100},\"10\":{\"cells\":{\"1\":{\"style\":37,\"text\":\" \",\"merge\":[0,3]},\"2\":{\"style\":28},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":37,\"text\":\"#{qiangxiu.time1}\",\"merge\":[0,1]},\"6\":{\"style\":28}}},\"11\":{\"cells\":{\"1\":{\"text\":\"实施质量验收评价\",\"style\":32},\"2\":{\"style\":35,\"text\":\"#{qiangxiu.pingjia}\",\"merge\":[0,4]}},\"height\":99},\"12\":{\"cells\":{\"1\":{\"style\":33,\"merge\":[0,3]},\"2\":{\"style\":28},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":33,\"merge\":[0,1],\"text\":\"#{qiangxiu.time1}\"},\"6\":{\"style\":28}}},\"13\":{\"cells\":{\"1\":{\"text\":\"验收总结\",\"style\":32},\"2\":{\"style\":35,\"text\":\"#{qiangxiu.zongjie}\",\"rendered\":\"\",\"merge\":[0,4]}},\"height\":80},\"14\":{\"cells\":{\"1\":{\"text\":\"责任单位意见\",\"style\":32},\"2\":{\"style\":33,\"text\":\"#{qiangxiu.zongjie}\",\"merge\":[0,4]}},\"height\":67},\"15\":{\"cells\":{\"1\":{\"text\":\"责任单位审核人\",\"style\":32},\"2\":{\"style\":33,\"merge\":[0,1],\"text\":\"#{qiangxiu.dshenhe}\"},\"3\":{\"style\":28},\"4\":{\"style\":34,\"text\":\"日期\"},\"5\":{\"style\":33,\"text\":\"#{qiangxiu.time3}\",\"merge\":[0,1]},\"6\":{\"style\":28}},\"height\":42},\"16\":{\"cells\":{\"1\":{\"text\":\"生技部审批意见\",\"style\":32},\"2\":{\"style\":33,\"text\":\"#{qiangxiu.zongjie}\",\"merge\":[0,4]}},\"height\":107},\"17\":{\"cells\":{\"1\":{\"text\":\"生技部主任\",\"style\":32},\"2\":{\"style\":33,\"merge\":[0,1],\"text\":\"#{qiangxiu.zhuren}\"},\"3\":{\"style\":28},\"4\":{\"style\":34,\"text\":\"日期\"},\"5\":{\"style\":33,\"text\":\"#{qiangxiu.time4}\",\"merge\":[0,1]},\"6\":{\"style\":28}},\"height\":41},\"18\":{\"cells\":{\"1\":{\"style\":28},\"2\":{\"style\":28},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":28},\"6\":{\"style\":28}}},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":700,\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#ffffff\"},{\"Line truncated
INSERT INTO `jimu_report` VALUES ('753506001105539072', '20221118170243', '分版错误报表', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paginationShow\":false,\"paginationLocation\":\"middle\",\"headerFooterShow\":false,\"headerLocation\":\"left\",\"headerText\":\"\",\"footerLocation\":\"left\",\"footerText\":\"\",\"fontsize\":28,\"rotationAngle\":-45,\"watermarkColor\":\"#d5d5d5\",\"watermarkText\":\"积木报表\",\"watermarkShow\":true},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1035,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":144},\"1\":{\"width\":391},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"753506001105539072\",\"hiddenCells\":[],\"zonedEditionList\":[{\"sci\":0,\"sri\":7,\"eci\":1,\"eri\":8,\"db\":\"test02\",\"index\":1}],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"序号\",\"style\":0},\"1\":{\"text\":\"图片\",\"style\":0},\"2\":{\"text\":\"批次号\",\"style\":0},\"3\":{\"text\":\"款式编码\",\"style\":0},\"4\":{\"text\":\"款式名称\",\"style\":0},\"5\":{\"text\":\"颜色\",\"style\":0},\"6\":{\"text\":\"交期\",\"style\":0}},\"height\":25},\"1\":{\"cells\":{\"0\":{\"style\":0,\"text\":\"=row()\"},\"1\":{\"style\":0,\"text\":\"#{test01.s_cover_img_url}\",\"rendered\":\"\",\"config\":\"\",\"display\":\"img\"},\"2\":{\"style\":0,\"text\":\"#{test01.s_lot_no}\"},\"3\":{\"style\":0,\"text\":\"#{test01.s_item_code}\"},\"4\":{\"style\":0,\"text\":\"#{test01.s_full_name}\"},\"5\":{\"style\":0,\"text\":\"#{test01.modelcolor}\"},\"6\":{\"style\":0,\"text\":\"#{test01.d_delivery_date}\"}}},\"2\":{\"cells\":{\"1\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"7\":{\"cells\":{\"0\":{\"text\":\"code\"},\"1\":{\"text\":\"name\"}}},\"8\":{\"cells\":{\"0\":{\"text\":\"#{test02.suit_item_code}\"},\"1\":{\"text\":\"#{test02.suit_full_name}\"}}},\"len\":101},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}}],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[]}', NULL, NULL, '15629196826', '2022-11-18 17:02:43', 'admin', '2024-12-03 15:26:27', 0, NULL, NULL, 0, 74, NULL, NULL, NULL, '1', 1, NULL);
INSERT INTO `jimu_report` VALUES ('7905022412733a0c68dc7b4ef8947489', '8996445', '介绍信', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":1,\"eri\":3,\"eci\":11,\"width\":678,\"height\":216},\"excel_config_id\":\"7905022412733a0c68dc7b4ef8947489\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{},\"12\":{}},\"height\":11},\"1\":{\"cells\":{},\"height\":24},\"2\":{\"cells\":{},\"isDrag\":true,\"height\":43},\"3\":{\"cells\":{\"0\":{\"text\":\" \",\"style\":46},\"1\":{\"merge\":[0,10],\"text\":\"介绍信\",\"style\":337}},\"height\":216},\"4\":{\"cells\":{\"1\":{\"text\":\"${jieshaoxin.name}\",\"style\":338,\"merge\":[0,3]},\"5\":{\"text\":\":\",\"style\":339}},\"isDrag\":true,\"height\":80},\"5\":{\"cells\":{\"1\":{\"text\":\"兹介绍我局\",\"style\":340,\"merge\":[0,5]},\"7\":{\"text\":\"${jieshaoxin.value}\",\"style\":341},\"8\":{\"text\":\"同志\",\"style\":339},\"9\":{\"text\":\"${jieshaoxin.percent}\",\"style\":339},\"10\":{\"text\":\"人,前往你处\",\"style\":339,\"merge\":[0,1]}},\"isDrag\":true,\"height\":42},\"6\":{\"cells\":{\"1\":{\"text\":\"${jieshaoxin.shiqing}\",\"style\":342,\"merge\":[0,5]},\"15\":{\"text\":\"\"}},\"isDrag\":true,\"height\":48},\"7\":{\"cells\":{\"1\":{\"style\":343,\"text\":\" \"},\"2\":{\"style\":344,\"merge\":[0,5],\"text\":\"请予接洽并给予帮助。\"}},\"height\":56},\"8\":{\"cells\":{},\"height\":15},\"9\":{\"cells\":{},\"height\":11},\"10\":{\"cells\":{\"8\":{\"text\":\" \",\"style\":316,\"merge\":[0,3]}},\"height\":39},\"11\":{\"cells\":{\"8\":{\"merge\":[0,2],\"text\":\"单位盖章\",\"style\":347},\"11\":{\"merge\":[0,1],\"style\":316,\"text\":\" \"}},\"height\":84},\"12\":{\"cells\":{\"1\":{\"merge\":[0,2],\"text\":\" \",\"style\":317},\"4\":{\"merge\":[0,2],\"text\":\" \",\"style\":346},\"7\":{\"text\":\"(有效时间:至\",\"style\":317},\"8\":{\"text\":\"${jieshaoxin.gdata}\",\"style\":316,\"merge\":[0,2]},\"11\":{\"style\":348,\"text\":\"止)\"}},\"isDrag\":true,\"height\":30},\"13\":{\"cells\":{\"1\":{\"merge\":[12,11]}}},\"17\":{\"cells\":{},\"isDrag\":true},\"len\":89},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":699,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"left\"},{\"align\":\"left\",\"underline\":true},{\"underline\":true},{\"align\":\"center\",\"underline\":true},{\"align\":\"center\"},{\"align\":\"center\",\"underline\":false},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"left\",\"font\":{\"size\":16}},{\"font\":{\"size\":16}},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16}},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":16}},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16}},{\"align\":\"left\",\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"bold\":true}},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"left\",\"font\":{\"size\":16,\"bold\":false}},{\"font\":{\"size\":16,\"bold\":false}},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":16,\"bold\":false}},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":false}},{\"font\":{\"bold\":false}},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":false}},{\"align\":\"left\",\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"font\":{\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"font\":{\"size\":12}},{\"align\":\"left\",\"font\":{\"size\":12,\"bold\":false},\"color\":\"#3f3f3f\"},{\"font\":{\"size\":12,\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":12,\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":Line truncated
INSERT INTO `jimu_report` VALUES ('7c02c224a2db56d0350069650033f702', '895666', '核查评估表', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":5,\"sci\":18,\"eri\":5,\"eci\":18,\"width\":53,\"height\":46},\"printElWidth\":718,\"excel_config_id\":\"7c02c224a2db56d0350069650033f702\",\"printElHeight\":1047,\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"XX县(市、区)YY低保第三方核查评估汇总表\",\"merge\":[0,21],\"style\":386},\"2\":{\"style\":386},\"3\":{\"style\":386},\"4\":{\"style\":386},\"5\":{\"style\":386},\"6\":{\"style\":386},\"7\":{\"style\":386},\"8\":{\"style\":386},\"9\":{\"style\":386},\"10\":{\"style\":386},\"11\":{\"style\":386},\"12\":{\"style\":386},\"13\":{\"style\":386},\"14\":{\"style\":386},\"15\":{\"style\":386},\"16\":{\"style\":386},\"17\":{\"style\":386},\"18\":{\"style\":386},\"19\":{\"style\":386},\"20\":{\"style\":386},\"21\":{\"style\":386},\"22\":{\"style\":386}},\"height\":70},\"1\":{\"cells\":{\"1\":{\"merge\":[0,2],\"style\":403,\"text\":\" 北京市林翠社区\"},\"2\":{\"style\":398,\"text\":\" \"},\"3\":{\"style\":398,\"text\":\" \"},\"4\":{\"merge\":[0,2],\"text\":\"镇(乡、街道办事处)\",\"style\":399},\"5\":{\"style\":399},\"6\":{\"style\":399},\"7\":{\"style\":399,\"merge\":[0,7]},\"8\":{\"style\":400},\"9\":{\"style\":400},\"10\":{\"style\":400},\"11\":{\"style\":400},\"12\":{\"style\":400},\"13\":{\"style\":400},\"14\":{\"style\":400},\"15\":{\"merge\":[0,7],\"text\":\"单位:人、元、套、平方米\",\"style\":398},\"16\":{\"style\":401},\"17\":{\"style\":401},\"18\":{\"style\":401},\"19\":{\"style\":401},\"20\":{\"style\":401},\"21\":{\"style\":401},\"22\":{\"style\":401}}},\"2\":{\"cells\":{\"1\":{\"style\":114},\"2\":{\"style\":114},\"3\":{\"style\":114},\"4\":{\"style\":114},\"5\":{\"style\":114},\"6\":{\"style\":114},\"7\":{\"style\":114},\"8\":{\"style\":114},\"9\":{\"style\":114},\"10\":{\"style\":114},\"11\":{\"style\":114},\"12\":{\"style\":114},\"13\":{\"style\":114},\"14\":{\"style\":114},\"15\":{\"style\":114},\"16\":{\"style\":114},\"17\":{\"style\":114},\"18\":{\"style\":114},\"19\":{\"style\":114},\"20\":{\"style\":114},\"21\":{\"style\":114},\"22\":{\"style\":114}},\"height\":14},\"3\":{\"cells\":{\"1\":{\"style\":406,\"text\":\"村(社区)名称\",\"merge\":[1,0]},\"2\":{\"style\":407,\"text\":\"户主名称\",\"merge\":[1,0]},\"3\":{\"style\":407,\"text\":\"保障编号\",\"merge\":[1,0]},\"4\":{\"style\":408,\"text\":\"家庭人口\",\"merge\":[1,0]},\"5\":{\"style\":409,\"text\":\"家庭住址\",\"merge\":[1,0]},\"6\":{\"style\":409,\"text\":\"联系电话\",\"merge\":[1,0]},\"7\":{\"style\":408,\"text\":\"身份证号码\",\"merge\":[1,0]},\"8\":{\"style\":409,\"text\":\"原保障\",\"merge\":[0,2]},\"9\":{\"style\":377,\"text\":\" \"},\"10\":{\"style\":377,\"text\":\" \"},\"11\":{\"text\":\"核减后月人均收入\",\"style\":408,\"merge\":[1,0]},\"12\":{\"merge\":[0,5],\"text\":\"保障建议\",\"style\":410},\"13\":{\"style\":379,\"text\":\" \"},\"14\":{\"style\":379,\"text\":\" \"},\"15\":{\"style\":379,\"text\":\" \"},\"16\":{\"style\":379,\"text\":\" \"},\"17\":{\"style\":379,\"text\":\" \"},\"18\":{\"text\":\"是否新增对象\",\"style\":411,\"merge\":[1,0]},\"19\":{\"text\":\"建议取消原因\",\"style\":409,\"merge\":[0,3]},\"20\":{\"style\":377,\"text\":\" \"},\"21\":{\"style\":377,\"text\":\" \"},\"22\":{\"style\":377,\"text\":\" \"}}},\"4\":{\"cells\":{\"1\":{\"style\":381,\"text\":\" \"},\"2\":{\"style\":407,\"text\":\" \"},\"3\":{\"style\":382,\"text\":\" \"},\"4\":{\"style\":408,\"text\":\" \"},\"5\":{\"style\":377,\"text\":\" \"},\"6\":{\"style\":409,\"text\":\" \"},\"7\":{\"style\":383,\"text\":\" \"},\"8\":{\"text\":\"户数\",\"style\":412},\"9\":{\"style\":411,\"text\":\"人口\"},\"10\":{\"style\":413,\"text\":\"金额\"},\"11\":{\"style\":383,\"text\":\" \"},\"12\":{\"text\":\"保障类型\",\"style\":408},\"13\":{\"style\":413,\"text\":\"人口\"},\"14\":{\"style\":408,\"text\":\"差额补助\"},\"15\":{\"style\":408,\"text\":\"全额补助\"},\"16\":{\"style\":408,\"text\":\"增发补助\"},\"17\":{\"style\":408,\"text\":\"合计补助\"},\"18\":{\"style\":411,\"text\":\" \"},\"19\":{\"style\":408,\"text\":\"收入超标\"},\"20\":{\"style\":406,\"text\":\"机动车超标\"},\"21\":{\"style\":410,\"text\":\"死亡\"},\"22\":{\"style\":410,\"text\":\"其他\"}},\"height\":50},\"5\":{\"cells\":{\"1\":{\"style\":414,\"aggregate\":\"select\",\"rendered\":\"\",\"text\":\"#{hecha.name}\"},\"2\":{\"style\":414,\"text\":\"#{hecha.hname}\"},\"3\":{\"style\":414,\"text\":\"#{hecha.num}\"},\"4\":{\"style\":414,\"text\":\"#{hecha.knum}\"},\"5\":{\"style\":414,\"text\":\"#{hecha.zhuzhi}\"},\"6\":{\"style\":414,\"text\":\"#{hecha.phone}\"},\"7\":{\"style\":414,\"text\":\"#{hecha.scard}\"},\"8\":{\"style\":414,\"text\":\"#{hecha.yhnum}\"},\"9\":{\"style\":414,\"text\":\"#{hecha.yren}\"},\"10\":{\"style\":414,\"text\":\"#{hecha.yjine}\"},\"11\":{\"style\":414,\"tLine truncated
INSERT INTO `jimu_report` VALUES ('850286412532121600', '20230812182254', 'api测试', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"850286412532121600\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"zonedEditionList\":[],\"rows\":{\"3\":{\"cells\":{\"1\":{\"text\":\"#{aaa.ctotal}\"},\"2\":{\"text\":\"#{aaa.cname}\"}}},\"len\":200},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":300,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[],\"validations\":[],\"cols\":{\"len\":100},\"merges\":[]}', NULL, NULL, 'jeecg', '2023-08-12 18:22:55', NULL, '2023-08-12 18:22:55', 0, NULL, NULL, 0, 11, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('850315907339223040', '20210309142400__0615', '简单分组报表副本0615', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":2,\"eri\":3,\"eci\":2,\"width\":100,\"height\":54},\"excel_config_id\":\"850315907339223040\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":4,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"1\":{\"height\":0,\"text\":\"纵向员工信息登记表\",\"style\":2,\"merge\":[0,5]}},\"height\":40},\"2\":{\"cells\":{\"1\":{\"text\":\"部门\",\"style\":15},\"2\":{\"text\":\"学历\",\"style\":15},\"3\":{\"text\":\"姓名\",\"style\":15},\"4\":{\"text\":\"性别\",\"style\":15},\"5\":{\"text\":\"年龄\",\"style\":15},\"6\":{\"text\":\"薪水\",\"style\":15}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"style\":17,\"text\":\"#{tt.group(department)}\",\"aggregate\":\"group\",\"textOrders\":\"人事部|研发部\",\"sort\":\"desc\"},\"2\":{\"style\":17,\"text\":\"#{tt.group(education)}\",\"aggregate\":\"group\",\"sort\":\"default\",\"textOrders\":\"本科|专科\"},\"3\":{\"style\":17,\"text\":\"#{tt.name}\",\"sort\":\"default\",\"textOrders\":\"\"},\"4\":{\"style\":17,\"text\":\"#{tt.sex}\"},\"5\":{\"style\":17,\"text\":\"#{tt.age}\"},\"6\":{\"style\":17,\"text\":\"#{tt.salary}\"}},\"height\":54},\"len\":100},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"1000\",\"btnList\":[1,2,3,4,5,6,7,8,9]},\"groupField\":\"tt.department\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":687,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"bold\":true}},{\"font\":{\"bold\":true,\"size\":16}},{\"font\":{\"bold\":true,\"size\":16},\"align\":\"center\"},{\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#bdd7ee\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#bdd7ee\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#9cc2e6\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#9cc2e6\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\"}],\"validations\":[],\"isGroup\":true,\"cols\":{\"0\":{\"width\":34},\"1\":{\"width\":119},\"3\":{\"width\":117},\"6\":{\"width\":117},\"7\":{\"width\":22},\"len\":100},\"merges\":[\"B2:G2\"]}', NULL, 'https://static.jeecg.com/designreport/images/QQ截图20210309142558_1615271174044.png', 'jeecg', '2023-08-12 20:18:41', 'admin', '2023-08-13 18:57:03', 0, NULL, NULL, 0, 87, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('850318855100268544', '20210127172112__9627', '多级循环表头报表副本9627', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":434,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":36},\"1\":{\"width\":87},\"2\":{\"width\":132},\"3\":{\"width\":179},\"len\":100},\"area\":{\"sri\":5,\"sci\":0,\"eri\":5,\"eci\":99,\"width\":10034,\"height\":25},\"excel_config_id\":\"850318855100268544\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\",\"rendered\":\"\"},\"1\":{\"text\":\"各地区商品销售额一栏表\",\"merge\":[0,2],\"style\":6}},\"height\":83},\"1\":{\"cells\":{\"1\":{\"text\":\"地区|销量|时间\",\"style\":2,\"lineStart\":\"lefttop\",\"rendered\":\"\",\"merge\":[1,1],\"height\":74},\"3\":{\"style\":30,\"text\":\"#{xs.groupRight(year)}年\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":40},\"2\":{\"cells\":{\"3\":{\"style\":8,\"text\":\"#{xs.groupRight(mouth)}\",\"aggregate\":\"group\",\"direction\":\"right\",\"sort\":\"default\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\"#{xs.group(diqu)}\",\"style\":28,\"aggregate\":\"group\"},\"2\":{\"style\":28,\"text\":\"#{xs.group(class)}\",\"aggregate\":\"group\"},\"3\":{\"style\":29,\"text\":\"#{xs.dynamic(sales)}\",\"aggregate\":\"dynamic\",\"rendered\":\"\",\"decimalPlaces\":\"0\"}},\"height\":38},\"4\":{\"cells\":{\"1\":{\"style\":24,\"text\":\"总计\"},\"2\":{\"text\":\"=cnmoney(::D5)\",\"style\":34},\"3\":{\"style\":25,\"text\":\"=SUM(D4)\"}},\"height\":37},\"7\":{\"cells\":{\"1\":{}}},\"9\":{\"cells\":{\"1\":{}}},\"len\":99},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"xs.diqu\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"font\":{\"size\":16}},{\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"size\":16,\"bold\":true},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#fe0000\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"color\":\"#fe0000\"},{\"color\":\"#ffffff\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\Line truncated
INSERT INTO `jimu_report` VALUES ('850709188564844544', '20210729233805__4750', '表达式示例副本4750', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":0,\"eri\":3,\"eci\":0,\"width\":100,\"height\":25},\"excel_config_id\":\"850709188564844544\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"1000222.22\"},\"1\":{\"linkIds\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"\",\"style\":18,\"text\":\"=cnmoney(A1)\"},\"3\":{\"style\":16,\"text\":\"\"},\"4\":{\"text\":\"\"}},\"height\":43},\"1\":{\"cells\":{\"1\":{\"style\":12,\"text\":\"日期函数\",\"merge\":[0,3],\"height\":25},\"6\":{\"style\":12,\"text\":\"字符串函数\",\"merge\":[0,3],\"height\":25}},\"height\":34},\"2\":{\"cells\":{\"1\":{\"text\":\"函数名称\",\"style\":17},\"2\":{\"text\":\"表达式\",\"style\":17},\"3\":{\"text\":\"常量参数\",\"style\":17},\"4\":{\"text\":\"数据集参数\",\"style\":17},\"6\":{\"text\":\"函数名称\",\"style\":17},\"7\":{\"text\":\"表达式\",\"style\":17},\"8\":{\"text\":\"常量参数\",\"style\":17},\"9\":{\"text\":\"数据集参数\",\"style\":17}}},\"3\":{\"cells\":{\"1\":{\"text\":\"date()\",\"style\":4},\"2\":{\"text\":\"date(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=date(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=date(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"text\":\"char()\",\"style\":4,\"merge\":[1,0],\"height\":50},\"7\":{\"text\":\"char(22269)\",\"style\":4},\"8\":{\"text\":\"=char(22269)\",\"style\":4},\"9\":{\"style\":4,\"text\":\" \"}}},\"4\":{\"cells\":{\"1\":{\"text\":\"time()\",\"style\":4},\"2\":{\"text\":\"time(\\\"12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=time(\\\"12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=time(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"7\":{\"text\":\"char(101)\",\"style\":4},\"8\":{\"text\":\"=char(101)\",\"style\":4},\"9\":{\"style\":4,\"text\":\" \"}}},\"5\":{\"cells\":{\"1\":{\"text\":\"now()\",\"merge\":[3,0],\"height\":100,\"style\":4,\"linkIds\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"\"},\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":5},\"4\":{\"text\":\"=now()\",\"style\":5},\"6\":{\"style\":4,\"text\":\"cnmoney()\",\"merge\":[2,0],\"height\":75},\"7\":{\"text\":\"cnmoney(341.234)\",\"style\":4},\"8\":{\"style\":4,\"text\":\"=cnmoney(341.234)\"},\"9\":{\"style\":4,\"text\":\"=cnmoney(${jm_expression.num})\"}}},\"6\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":6},\"4\":{\"text\":\"=now()\",\"style\":6},\"7\":{\"text\":\"cnmoney(341.234,\\\"b\\\")\",\"style\":4},\"8\":{\"text\":\"=cnmoney(341.234,\\\"b\\\")\",\"style\":4},\"9\":{\"style\":4,\"text\":\"=cnmoney(${jm_expression.num},\\\"b\\\")\"}}},\"7\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":7},\"4\":{\"text\":\"=now()\",\"style\":7},\"7\":{\"text\":\"cnmoney(341.234,\\\"bw\\\")\",\"style\":4},\"8\":{\"text\":\"=cnmoney(341.234,\\\"bw\\\")\",\"style\":4},\"9\":{\"text\":\"=cnmoney(${jm_expression.num},\\\"bw\\\")\",\"style\":4}}},\"8\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":8},\"4\":{\"text\":\"=now()\",\"style\":8},\"6\":{\"text\":\"concat()\",\"style\":4},\"7\":{\"text\":\"concat(\'hello \',\'word\',\' !\')\",\"style\":4},\"8\":{\"text\":\"=concat(\'hello \',\'world\',\' !\')\",\"style\":4},\"9\":{\"text\":\"=concat(\'${jm_expression.upper}\',\' world\',\' !\')\",\"style\":4}}},\"9\":{\"cells\":{\"1\":{\"text\":\"year()\",\"style\":4},\"2\":{\"text\":\"year(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=year(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=year(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"text\":\"lower()\",\"style\":4},\"7\":{\"text\":\"lower(\'HELLOW\')\",\"style\":4},\"8\":{\"text\":\"=lower(\'HELLOW\')\",\"style\":4},\"9\":{\"text\":\"=lower(\\\"${jm_expression.upper}\\\") \",\"style\":4}}},\"10\":{\"cells\":{\"1\":{\"text\":\"month()\",\"style\":4},\"2\":{\"text\":\"month(\\\"2021-07-29 12:11:10\\\") \",\"style\":4},\"3\":{\"text\":\"=month(\\\"2021-07-29 12:11:10\\\") \",\"style\":4},\"4\":{\"text\":\"=month(\\\"${jm_expression.create_time}\\\") \",\"style\":4},\"6\":{\"text\":\"upper()\",\"style\":4},\"7\":{\"text\":\"upper(\'world\')\",\"style\":4},\"8\":{\"text\":\"=upper(\'world\')\",\"style\":4},\"9\":{\"text\":\"=upper(\'${jm_expression.lower}\')\",\"style\":4}}},\"11\":{\"cells\":{\"1\":{\"text\":\"day()\",\"style\":4},\"2\":{\"text\":\"day(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=day(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=day(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"style\":4,Line truncated
INSERT INTO `jimu_report` VALUES ('850710545531240448', '20230813222715', 'SSD', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"850710545531240448\",\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"2\":{\"cells\":{\"1\":{\"text\":\"12.34\"},\"2\":{\"text\":\"=cnmoney(B3)\"}}},\"len\":200},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":300,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[],\"validations\":[],\"cols\":{\"len\":100},\"merges\":[]}', NULL, NULL, 'admin', '2023-08-13 22:27:15', 'admin', '2023-09-25 15:13:07', 0, NULL, NULL, 0, 24, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `jimu_report` VALUES ('864668240323870720', '20201202175858__2053', '乡村振兴普惠金融服务平台副本2053', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"col\":5,\"backgroud\":{\"image\":\"\",\"color\":\"#fff\",\"enabled\":false},\"url\":\"\",\"colspan\":6,\"offsetX\":0,\"layer_id\":\"reOVgCVG6ZPWh5c1\",\"offsetY\":0,\"extData\":{\"dbCode\":\"ditu1\",\"dataType\":\"api\",\"xText\":\"\",\"dataId1\":\"\",\"source\":\"\",\"isTiming\":true,\"target\":\"\",\"dataId\":\"864668240575528960\",\"series\":\"type\",\"yText\":\"\",\"axisY\":\"value\",\"axisX\":\"name\",\"chartType\":\"map.scatter\",\"id\":\"reOVgCVG6ZPWh5c1\",\"apiStatus\":\"1\",\"intervalTime\":\"5\"},\"rowspan\":12,\"width\":\"568\",\"row\":1,\"config\":\"{\\\"geo\\\":{\\\"map\\\":\\\"shandong\\\",\\\"zoom\\\":0.8,\\\"label\\\":{\\\"color\\\":\\\"#19DEF4\\\",\\\"fontSize\\\":12,\\\"show\\\":true},\\\"itemStyle\\\":{\\\"borderWidth\\\":0.5,\\\"areaColor\\\":\\\"#0C514B\\\",\\\"borderColor\\\":\\\"#000\\\"},\\\"emphasis\\\":{\\\"label\\\":{\\\"color\\\":\\\"#19DEF4\\\"},\\\"itemStyle\\\":{\\\"areaColor\\\":\\\"#0A2B34\\\"}},\\\"regions\\\":[],\\\"layoutSize\\\":600,\\\"roam\\\":true,\\\"layoutCenter\\\":[\\\"50%\\\",\\\"50%\\\"]},\\\"series\\\":[{\\\"encode\\\":{\\\"value\\\":[2]},\\\"data\\\":[{\\\"name\\\":\\\"济南市\\\",\\\"value\\\":[117.000923,36.675807,255]},{\\\"name\\\":\\\"青岛市\\\",\\\"value\\\":[120.355173,36.082982,300]},{\\\"name\\\":\\\"淄博市\\\",\\\"value\\\":[118.047648,36.814939,130]},{\\\"name\\\":\\\"枣庄市\\\",\\\"value\\\":[117.557964,34.856424,150]}],\\\"name\\\":\\\"\\\",\\\"emphasis\\\":{\\\"label\\\":{\\\"show\\\":true}},\\\"itemStyle\\\":{\\\"color\\\":\\\"#FFFF01\\\"},\\\"coordinateSystem\\\":\\\"geo\\\",\\\"label\\\":{\\\"formatter\\\":\\\"{b}\\\",\\\"show\\\":false,\\\"position\\\":\\\"right\\\"},\\\"type\\\":\\\"scatter\\\"}],\\\"chartType\\\":\\\"map\\\",\\\"tooltip\\\":{\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":18}},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":5,\\\"text\\\":\\\"主要城市空气质量\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#c23531\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":18},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"height\":\"435\",\"virtualCellRange\":[[1,5],[1,6],[1,7],[1,8],[1,9],[1,10]]},{\"col\":11,\"backgroud\":{\"image\":\"\",\"color\":\"#fff\",\"enabled\":false},\"url\":\"\",\"colspan\":3,\"offsetX\":0,\"layer_id\":\"Kkx8cQxh41KDHQKJ\",\"offsetY\":0,\"extData\":{\"dbCode\":\"wunian\",\"dataType\":\"api\",\"xText\":\"\",\"isTiming\":true,\"dataId\":\"864668240407756800\",\"chartId\":\"\",\"series\":\"type\",\"yText\":\"\",\"axisY\":\"value\",\"axisX\":\"name\",\"chartType\":\"line.area\",\"apiStatus\":\"1\",\"intervalTime\":\"5\"},\"rowspan\":4,\"width\":\"357\",\"row\":3,\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"玉米\\\",\\\"大豆\\\",\\\"花生\\\",\\\"高粱\\\",\\\"小麦\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":55,\\\"left\\\":60,\\\"bottom\\\":40,\\\"right\\\":24},\\\"series\\\":[{\\\"areaStyle\\\":{\\\"color\\\":\\\"#6CE6BC\\\",\\\"opacity\\\":0.4},\\\"data\\\":[1000879,3400879,2300879,2400879,3000],\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"isArea\\\":true,\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#9DE4D1\\\"},\\\"step\\\":false,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"line\\\",\\\"smooth\\\":false}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":10,\\\"text\\\":\\\"五年产业变化趋势\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#81E1B6\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"height\":\"147\",\"virtualCellRange\":[[3,11],[3,12],[3,13]]},{\"col\":11,\"backgroud\":{\"image\":\"\",\"color\":\"#fff\",\"enabled\":false},\"url\":\"\",\"colspan\":3,\"offsetX\":0,\"layer_id\":\"a7MjSGYTQuijDpR4\",\"offsetY\":0,\"extData\":{Line truncated
INSERT INTO `jimu_report` VALUES ('873354273768964096', '20231015100547', '测试sql', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"873354273768964096\",\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"3\":{\"cells\":{\"1\":{\"text\":\"#{sql01.dict_name}\"},\"2\":{\"text\":\"#{sql01.dict_code}\"}}},\"len\":200},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":300,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[],\"validations\":[],\"cols\":{\"len\":100},\"merges\":[]}', NULL, NULL, 'admin', '2023-10-15 10:05:48', 'admin', '2023-10-16 16:51:46', 0, NULL, NULL, 0, 7, NULL, NULL, NULL, '2', 0, NULL);
INSERT INTO `jimu_report` VALUES ('891572767673122816', '20231204163842', '导出报错', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paginationShow\":false,\"paginationLocation\":\"middle\",\"headerFooterShow\":false,\"headerLocation\":\"left\",\"headerText\":\"\",\"footerLocation\":\"left\",\"footerText\":\"\",\"fontsize\":28,\"rotationAngle\":-45,\"watermarkColor\":\"#d5d5d5\",\"watermarkText\":\"积木报表\",\"watermarkShow\":true},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":600,\"autofilter\":{},\"validations\":[],\"cols\":{\"len\":100},\"chartList\":[{\"row\":0,\"col\":0,\"colspan\":6,\"rowspan\":19,\"width\":\"586\",\"height\":\"457\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"销量\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":\\\"auto\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"data\\\":[\\\"衬衫\\\",\\\"羊毛衫\\\",\\\"雪纺衫\\\",\\\"裤子\\\",\\\"高跟鞋\\\",\\\"袜子\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"服饰\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":60,\\\"left\\\":60,\\\"bottom\\\":60,\\\"right\\\":60},\\\"series\\\":[{\\\"barWidth\\\":50,\\\"data\\\":[5,20,36,10,10,20],\\\"name\\\":\\\"销量\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#c43632\\\",\\\"barBorderRadius\\\":0},\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":18}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"top\\\":\\\"5\\\",\\\"left\\\":\\\"left\\\",\\\"show\\\":true,\\\"text\\\":\\\"某站点用户访问来源\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#c23531\\\",\\\"fontSize\\\":18,\\\"fontWeight\\\":\\\"bolder\\\"}}}\",\"url\":\"\",\"extData\":{\"chartId\":\"bar.simple\",\"chartType\":\"bar.simple\"},\"layer_id\":\"ZyBqS2hMYJbibekG\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"image\":\"\",\"color\":\"#fff\",\"enabled\":false},\"virtualCellRange\":[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5]]}],\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"891572767673122816\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"1\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"2\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"3\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"4\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"5\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"}}},\"len\":100},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":false,\"name\":\"sheet1\",\"styles\":[],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[]}', NULL, NULL, 'admin', '2023-12-04 16:38:43', 'admin', '2024-10-22 11:28:55', 0, NULL, NULL, 0, 23, NULL, NULL, NULL, '2', 1, NULL);
INSERT INTO `jimu_report` VALUES ('891612623430320128', '20231204191802', '查询1', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"pyGroupEngine\":false,\"excel_config_id\":\"891612623430320128\",\"printConfig\":{\"layout\":\"portrait\",\"paginationShow\":false,\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"paginationLocation\":\"middle\",\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"2\":{\"cells\":{\"1\":{\"text\":\"#{s1.id}\"},\"2\":{\"text\":\"#{s1.name}\"},\"3\":{\"text\":\"#{s1.gtime}\"}}},\"6\":{\"cells\":{\"1\":{}}},\"len\":200},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":549,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[],\"validations\":[],\"cols\":{\"1\":{\"width\":164},\"3\":{\"width\":185},\"len\":100},\"merges\":[]}', NULL, NULL, 'admin', '2023-12-04 19:18:03', 'admin', '2024-03-31 05:14:43', 0, NULL, NULL, 0, 73, NULL, NULL, NULL, '2', 0, NULL);
INSERT INTO `jimu_report` VALUES ('948079358232330240', '20240508145843', '测试大数据导出excel', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paginationShow\":false,\"paginationLocation\":\"middle\",\"headerFooterShow\":false,\"headerLocation\":\"left\",\"headerText\":\"\",\"footerLocation\":\"left\",\"footerText\":\"\",\"fontsize\":28,\"rotationAngle\":-45,\"watermarkColor\":\"#d5d5d5\",\"watermarkText\":\"积木报表\",\"watermarkShow\":true},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"fillFormToolbar\":{\"show\":true,\"btnList\":[\"save\",\"subTable_add\",\"verify\",\"subTable_del\",\"print\",\"close\",\"first\",\"prev\",\"next\",\"paging\",\"total\",\"last\"]},\"freeze\":\"A1\",\"dataRectWidth\":1207,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":34},\"5\":{\"width\":128},\"11\":{\"width\":145},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"948079358232330240\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"2\":{\"cells\":{\"1\":{\"style\":1,\"text\":\"ID\"},\"2\":{\"style\":1,\"text\":\"日志类型\"},\"3\":{\"style\":1,\"text\":\"日志内容\"},\"4\":{\"style\":1,\"text\":\"用户ID\"},\"5\":{\"style\":1,\"text\":\"用户账号\"},\"6\":{\"style\":1,\"text\":\"IP地址\"},\"7\":{\"style\":1,\"text\":\"方法\"},\"8\":{\"style\":1,\"text\":\"请求地址\"},\"9\":{\"style\":1,\"text\":\"请求参数\"},\"10\":{\"style\":1,\"text\":\"耗时\"},\"11\":{\"style\":1,\"text\":\"创建时间\"}}},\"3\":{\"cells\":{\"1\":{\"style\":0,\"text\":\"#{ceshibig.id}\"},\"2\":{\"style\":0,\"text\":\"#{ceshibig.log_type}\"},\"3\":{\"style\":0,\"text\":\"#{ceshibig.log_content}\"},\"4\":{\"style\":0,\"text\":\"#{ceshibig.userid}\"},\"5\":{\"style\":0,\"text\":\"#{ceshibig.username}\"},\"6\":{\"style\":0,\"text\":\"#{ceshibig.ip}\"},\"7\":{\"style\":0,\"text\":\"#{ceshibig.method}\"},\"8\":{\"style\":0,\"text\":\"#{ceshibig.request_url}\"},\"9\":{\"style\":0,\"text\":\"#{ceshibig.request_param}\"},\"10\":{\"style\":0,\"text\":\"#{ceshibig.cost_time}\"},\"11\":{\"style\":0,\"text\":\"#{ceshibig.create_time}\"}}},\"8\":{\"cells\":{\"5\":{}}},\"9\":{\"cells\":{\"3\":{\"text\":\"\",\"fixedHead\":1}}},\"len\":201},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[1,2,3,4,5,6,7,8,9]},\"fixedPrintHeadRows\":[{\"sri\":9,\"sci\":3,\"eri\":9,\"eci\":3}],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#a7d08c\"}],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[]}', NULL, NULL, 'admin', '2024-05-08 14:58:43', 'admin', '2025-03-12 19:54:33', 0, NULL, NULL, 0, 265, NULL, NULL, NULL, '2', 2, NULL);
INSERT INTO `jimu_report` VALUES ('94b04a1ed7c17f8e96baa6d89fb90758', '3698522', '员工请假单', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":0,\"sci\":8,\"eri\":100,\"eci\":13,\"width\":600,\"height\":2732},\"excel_config_id\":\"94b04a1ed7c17f8e96baa6d89fb90758\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"0\":{\"text\":\"员工请假单\",\"style\":100,\"merge\":[0,7]},\"1\":{\"style\":100,\"text\":\" \"},\"2\":{\"style\":100,\"text\":\" \"},\"3\":{\"style\":100,\"text\":\" \"},\"4\":{\"style\":100,\"text\":\" \"},\"5\":{\"style\":100,\"text\":\" \"},\"6\":{\"style\":100,\"text\":\" \"},\"7\":{\"style\":100,\"text\":\" \"}},\"height\":65},\"2\":{\"cells\":{\"0\":{\"text\":\"单位:北极星\",\"style\":101,\"merge\":[0,2]},\"1\":{\"style\":101,\"text\":\" \"},\"2\":{\"style\":101,\"text\":\" \"},\"3\":{\"style\":102,\"text\":\" \"},\"4\":{\"style\":102,\"text\":\" \"},\"5\":{\"style\":102,\"text\":\" \"},\"6\":{\"style\":102,\"text\":\" \"},\"7\":{\"style\":102,\"text\":\" \"}},\"height\":38},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":119},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"text\":\"工作岗位\",\"style\":120},\"3\":{\"style\":119,\"text\":\" \"},\"4\":{\"text\":\"工作时间\",\"style\":119},\"5\":{\"style\":119,\"text\":\" \"},\"6\":{\"text\":\"出生日期\",\"style\":119},\"7\":{\"style\":119,\"text\":\" \"}}},\"4\":{\"cells\":{\"0\":{\"text\":\"请选择假类型\",\"style\":121,\"merge\":[4,0]},\"1\":{\"text\":\"年休假\",\"style\":120},\"2\":{\"style\":120,\"text\":\"病、事假\"},\"3\":{\"style\":120,\"text\":\"探亲假\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"婚、丧假\"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"生育假\"}},\"height\":29},\"5\":{\"cells\":{\"0\":{\"style\":0,\"text\":\" \"},\"1\":{\"text\":\"1、公岭满1~9年(5天)\",\"style\":122},\"2\":{\"style\":119,\"text\":\"1、病假\"},\"3\":{\"style\":119,\"text\":\"1、未婚探父母(20天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"1、婚假(3天)\"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"1、流产\"}},\"height\":25},\"6\":{\"cells\":{\"0\":{\"style\":0,\"text\":\" \"},\"1\":{\"style\":123,\"text\":\"2、公岭满10~19年(10天)\"},\"2\":{\"style\":119,\"text\":\"2、事假\"},\"3\":{\"style\":119,\"text\":\"2、已婚探父母(20天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"2、晚婚假(13天)\"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"2、产假\"}}},\"7\":{\"cells\":{\"0\":{\"style\":0,\"text\":\" \"},\"1\":{\"style\":123,\"text\":\"3、公岭满20年(15天)\"},\"2\":{\"style\":119,\"text\":\" \"},\"3\":{\"style\":119,\"text\":\"3、探配偶(30天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"3、丧假(3天)\"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"3、哺乳假\"}}},\"8\":{\"cells\":{\"0\":{\"style\":0,\"text\":\" \"},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"style\":119,\"text\":\" \"},\"3\":{\"style\":119,\"text\":\"探亲地点:\",\"merge\":[0,2]},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"4、陪护假\"}}},\"9\":{\"cells\":{\"0\":{\"style\":124,\"text\":\"请假时间\"},\"1\":{\"style\":125,\"merge\":[0,6],\"text\":\"2020年02-30 至2020年02-03-30\"}},\"height\":46},\"10\":{\"cells\":{\"0\":{\"style\":126,\"text\":\"审批人员及意见\"},\"1\":{\"merge\":[0,6],\"style\":127,\"text\":\"同意\"}},\"height\":89},\"11\":{\"cells\":{\"0\":{\"text\":\"备注\",\"style\":119},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"text\":\"请假人签名\",\"style\":119},\"3\":{\"merge\":[0,4],\"style\":119,\"text\":\" \"}},\"height\":90},\"12\":{\"cells\":{\"0\":{\"merge\":[0,7],\"style\":120,\"text\":\"请假审批表一式两份,考勤员与人力资源部门各存一份\"}},\"height\":25},\"len\":101},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":794,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"freeze\":\"A1\",\"dataRectWidth\":789,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"textwrap\":true},{\"textwrap\":false},{\"textwrap\":true,\"valign\":\"middle\"},{\"textwrap\":false,\"valign\":\"middle\"},{\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\Line truncated
INSERT INTO `jimu_report` VALUES ('975549294469992448', '20240723101422', '简单表达式混合运算', NULL, NULL, 'datainfo', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1097,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":81},\"1\":{\"width\":55},\"2\":{\"width\":144},\"3\":{\"width\":143},\"4\":{\"width\":112},\"5\":{\"width\":129},\"7\":{\"width\":333},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"excel_config_id\":\"975549294469992448\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"1\"},\"1\":{},\"2\":{\"text\":\"SUM(A1,A2)\"},\"3\":{\"text\":\"=SUM(A1,A2)\"},\"4\":{\"text\":\"SUM(A1:A10)\"},\"5\":{\"text\":\"=SUM(A1:A10)\"}}},\"1\":{\"cells\":{\"0\":{\"text\":\"2\"},\"1\":{},\"2\":{\"text\":\"SUM(A1,A2)*2\"},\"3\":{\"text\":\"=SUM(A1,A2)*2\"},\"4\":{\"text\":\"SUM(A1:A10)*2\"},\"5\":{\"text\":\"=SUM(A1:A10)*2\"},\"6\":{},\"7\":{\"text\":\"=2+SUM(A1,A2)*2 \"}}},\"2\":{\"cells\":{\"0\":{\"text\":\"3\"},\"2\":{\"text\":\"SUM(A1,A2)/2\"},\"3\":{\"text\":\"=SUM(A1,A2)/2\"},\"4\":{\"text\":\"SUM(A1:A10)/2\"},\"5\":{\"text\":\"=SUM(A1:A10)/2\"},\"7\":{\"text\":\"=A1*A2\"}}},\"3\":{\"cells\":{\"0\":{\"text\":\"4\"},\"2\":{\"text\":\"SUM(A1,A2)+2\"},\"3\":{\"text\":\"=SUM(A1,A2)+2\"},\"4\":{\"text\":\"SUM(A1:A10)+2\"},\"5\":{\"text\":\"=SUM(A1:A10)+2\"}}},\"4\":{\"cells\":{\"0\":{\"text\":\"5\"},\"2\":{\"text\":\"SUM(A1,A2)-2\"},\"3\":{\"text\":\"=SUM(A1,A2)-2\"},\"4\":{\"text\":\"SUM(A1:A10)-2\"},\"5\":{\"text\":\"=SUM(A1:A10)-2\"},\"7\":{}}},\"5\":{\"cells\":{\"0\":{\"text\":\"6\"}}},\"6\":{\"cells\":{\"0\":{\"text\":\"7\"},\"2\":{\"text\":\"MAX(A1,A2)\"},\"3\":{\"text\":\"=MAX(A1,A2)\"},\"4\":{\"text\":\"MAX(A1:A10)\"},\"5\":{\"text\":\"=MAX(A1:A10)\"}}},\"7\":{\"cells\":{\"0\":{\"text\":\"8\"},\"2\":{\"text\":\"MAX(A1,A2)*2\"},\"3\":{\"text\":\"=MAX(A1,A2)*2\"},\"4\":{\"text\":\"MAX(A1:A10)*2\"},\"5\":{\"text\":\"=MAX(A1:A10)*2\"}}},\"8\":{\"cells\":{\"0\":{\"text\":\"9\"},\"2\":{\"text\":\"MAX(A1,A2)/2\"},\"3\":{\"text\":\"=MAX(A1,A2)/2\"},\"4\":{\"text\":\"MAX(A1:A10)/2\"},\"5\":{\"text\":\"=MAX(A1:A10)/2\"}}},\"9\":{\"cells\":{\"0\":{\"text\":\"10\"},\"2\":{\"text\":\"MAX(A1,A2)+2\"},\"3\":{\"text\":\"=MAX(A1,A2)+2\"},\"4\":{\"text\":\"MAX(A1:A10)+2\"},\"5\":{\"text\":\"=MAX(A1:A10)+2\"}}},\"10\":{\"cells\":{\"0\":{},\"2\":{\"text\":\"MAX(A1,A2)-2\"},\"3\":{\"text\":\"=MAX(A1,A2)-2\"},\"4\":{\"text\":\"MAX(A1:A10)-2\"},\"5\":{\"text\":\"=MAX(A1:A10)-2\"}}},\"11\":{\"cells\":{\"0\":{}}},\"12\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)\"},\"3\":{\"text\":\"=MIN(A1,A2)\"},\"4\":{\"text\":\"MIN(A1:A10)\"},\"5\":{\"text\":\"=MIN(A1:A10)\"}}},\"13\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)*2\"},\"3\":{\"text\":\"=MIN(A1,A2)*2\"},\"4\":{\"text\":\"MIN(A1:A10)*2\"},\"5\":{\"text\":\"=MIN(A1:A10)*2\"}}},\"14\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)/2\"},\"3\":{\"text\":\"=MIN(A1,A2)/2\"},\"4\":{\"text\":\"MIN(A1:A10)/2\"},\"5\":{\"text\":\"=MIN(A1:A10)/2\"}}},\"15\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)+2\"},\"3\":{\"text\":\"=MIN(A1,A2)+2\"},\"4\":{\"text\":\"MIN(A1:A10)+2\"},\"5\":{\"text\":\"=MIN(A1:A10)+2\"}}},\"16\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)-2\"},\"3\":{\"text\":\"=MIN(A1,A2)-2\"},\"4\":{\"text\":\"MIN(A1:A10)-2\"},\"5\":{\"text\":\"=MIN(A1:A10)-2\"}}},\"18\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)\"},\"4\":{\"text\":\"AVERAGE(A1:A10)\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)\"}}},\"19\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)*2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)*2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)*2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)*2\"}}},\"20\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)/2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)/2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)/2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)/2\"}}},\"21\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)+2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)+2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)+2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)+2\"}}},\"22\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)-2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)-2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)-2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)-2\"}}},\"24\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)\"}}},\"25\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)*2\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)*2\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)*2\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)*2\"}}},\"26\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)/2\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)/2\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)/2\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)/2\"}}},\"27\":{\"cells\":{\"2\":{\"text\":\"COULine truncated
INSERT INTO `jimu_report` VALUES ('989065112487022592', '20240823093133__1750', '在线填报-员工信息登记', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":698,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":76},\"1\":{\"width\":114},\"2\":{\"width\":87},\"3\":{\"width\":99},\"4\":{\"width\":65},\"5\":{\"width\":126},\"6\":{\"width\":131},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"api\",\"code\":\"api\",\"name\":\"api\",\"isMain\":true,\"isEdit\":true,\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/submit/handle\"}],\"excel_config_id\":\"989065112487022592\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"merge\":[1,6],\"height\":90,\"text\":\"员工信息登记表\",\"style\":6}},\"height\":45},\"1\":{\"cells\":{},\"height\":45},\"2\":{\"cells\":{\"0\":{\"text\":\"编号\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"no\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"patternErrorTip\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"年龄\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"InputNumber\",\"component\":\"InputNumber\",\"field\":\"age\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"precision\":0,\"isLimitMinNum\":false,\"minNum\":0,\"isLimitMaxNum\":false,\"maxNum\":100,\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"age\"}]},\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"填写时间\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-time\",\"component\":\"DatePicker\",\"field\":\"create_time\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd HH:mm:ss\",\"defaultValue\":\"\"},\"style\":7,\"text\":\" \"},\"6\":{\"merge\":[3,0],\"height\":180,\"fillForm\":{\"componentFlag\":\"JUploadImage\",\"component\":\"JUploadImage\",\"field\":\"photo\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":false,\"maxUploadNum\":1,\"h_align\":\"center\"},\"style\":7,\"text\":\" \"}},\"height\":45},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"text\":\" \",\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"name\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"name\"},{\"dbTable\":\"test_form_submit1\",\"dbField\":\"name\"}],\"label\":\"A5\",\"labelText\":\"姓名\",\"pattern\":\"\",\"patternErrorTip\":\"\"}},\"2\":{\"text\":\"性别\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"sex\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"男\",\"value\":\"1\"},{\"label\":\"女\",\"value\":\"2\"}],\"apiUrl\":\"\",\"dictCode\":\"sex1\",\"dictName\":\"性别\"},\"style\":8,\"text\":\" \"},\"4\":{\"text\":\"出生日期\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"brithday\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\"},\"style\":7,\"text\":\" \"},\"8\":{}},\"height\":45},\"4\":{\"cells\":{\"0\":{\"text\":\"民族\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"nation\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"label\":\"选项2\",\"value\":\"2\"},{\"label\":\"选项3\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"minzu\",\"dictName\":\"民族\",\"multiple\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"政治面貌\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"politics\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"politics\"}],\"dataSource\":\"api\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"laLine truncated
INSERT INTO `jimu_report` VALUES ('993022657672290304', '20240909152438', '填报-SQL数据集填报', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":800,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":100},\"2\":{\"width\":200},\"3\":{\"width\":100},\"4\":{\"width\":200},\"5\":{\"width\":100},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":50},\"area\":{\"sri\":3,\"sci\":4,\"eri\":3,\"eci\":4,\"width\":200,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"JEZX3M1725874665916\",\"name\":\"个人简历数据源\",\"isMain\":true,\"isEdit\":false,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_resume\",\"idField\":\"id\",\"idStrategy\":\"ATOMIC\",\"fkField\":\"\"}],\"excel_config_id\":\"993022657672290304\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"个人简历\",\"merge\":[0,3],\"height\":68,\"style\":1}},\"height\":68},\"1\":{\"cells\":{\"1\":{\"text\":\"基本资料\",\"style\":5,\"merge\":[0,3],\"height\":38},\"5\":{\"style\":7,\"text\":\" \"}},\"height\":38},\"2\":{\"cells\":{\"1\":{\"text\":\"姓名:\",\"style\":8,\"fillFormLabel\":\"*\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725873834685_524574\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[2,1],\"label\":\"B3\",\"labelText\":\"姓名:\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"name\"}]}},\"3\":{\"text\":\"性别:\",\"style\":3,\"fillFormLabel\":\"*\"},\"4\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"key_1725873880502_783022\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[2,3],\"label\":\"D3\",\"labelText\":\"性别:\",\"dataSource\":\"static\",\"options\":[{\"label\":\"男\",\"value\":\"2\"},{\"label\":\"女\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"\",\"dictName\":\"\",\"h_align\":\"left\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"sex\"}]}}},\"height\":45},\"3\":{\"cells\":{\"1\":{\"text\":\"出生日期:\",\"style\":8},\"2\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"key_1725874244968_631595\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"birthday\"}]}},\"3\":{\"text\":\"联系方式:\",\"style\":3,\"fillFormLabel\":\"*\"},\"4\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725874490222_904616\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[3,3],\"label\":\"D4\",\"labelText\":\"联系方式:\",\"pattern\":\"^1[3456789]\\\\d{9}$\",\"patternErrorTip\":\"请输入联系方式\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"phone\"}]}}},\"height\":45},\"4\":{\"cells\":{\"1\":{\"text\":\"邮箱:\",\"style\":8,\"fillFormLabel\":\"*\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725874502475_096195\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[4,1],\"label\":\"B5\",\"labelText\":\"邮箱Line truncated
INSERT INTO `jimu_report` VALUES ('993379996736724992', '20240910150558', '填报-数据回填默认值', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":700,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":100},\"2\":{\"width\":200},\"3\":{\"width\":100},\"4\":{\"width\":200},\"5\":{\"width\":100},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":50},\"area\":{\"sri\":7,\"sci\":4,\"eri\":7,\"eci\":4,\"width\":200,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"XD0MNV1725953085646\",\"name\":\"客户信息\",\"isMain\":true,\"isEdit\":false,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_customer\",\"idField\":\"id\",\"idStrategy\":\"ATOMIC\",\"fkField\":\"\"}],\"excel_config_id\":\"993379996736724992\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"客户信息填报\",\"merge\":[0,3],\"height\":45,\"style\":2},\"2\":{\"style\":1},\"3\":{\"style\":1},\"4\":{\"style\":1}},\"height\":45},\"1\":{\"cells\":{\"1\":{\"fillFormLabel\":\"*\",\"text\":\"客户编码:\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725952020136_537695\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[1,1],\"label\":\"B2\",\"labelText\":\"编码:\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"code\"}]},\"text\":\"${customer.code}\"},\"3\":{\"text\":\"客户名称:\"},\"4\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725952087795_823337\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"name\"}]},\"text\":\"${customer.name}\"}},\"height\":45},\"2\":{\"cells\":{\"1\":{\"text\":\"成立时间:\"},\"2\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"key_1725952093712_154026\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"clsj\"}]},\"text\":\"${customer.clsj}\"},\"3\":{\"text\":\"负责人:\"},\"4\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725952106388_677899\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"fzr\"}]},\"text\":\"${customer.fzr}\"}},\"height\":45},\"3\":{\"cells\":{\"1\":{\"text\":\"地址:\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725952123735_789002\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"address\"}]},\"text\":\"${customer.address}\"},\"3\":{\"text\":\"营业类型:\"},\"4\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"key_1725952138363_461836\",\"placeholder\":\"\",\"required\":false,\"requirLine truncated
INSERT INTO `jimu_report` VALUES ('994504692756684800', '20240913173325', '填报-订单(主子表)', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"record\":[{\"sci\":1,\"eci\":6,\"sri\":8,\"eri\":8}],\"range\":[{\"sci\":1,\"eci\":6,\"sri\":8,\"eri\":8}],\"group\":[{\"sci\":1,\"eci\":6,\"sri\":8,\"eri\":8}]},\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1053,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":118},\"2\":{\"width\":200},\"3\":{\"width\":114},\"4\":{\"width\":200},\"5\":{\"width\":121},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":50},\"area\":{\"sri\":3,\"sci\":6,\"eri\":3,\"eci\":6,\"width\":200,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"VVD7LX1726213552409\",\"name\":\"订单基本信息表\",\"isMain\":true,\"isEdit\":true,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_order\",\"idField\":\"id\",\"idStrategy\":\"ASSIGN_UUID\",\"fkField\":\"\"},{\"type\":\"sql\",\"code\":\"A0SAP01726586326761\",\"name\":\"订单产品表\",\"isMain\":false,\"isEdit\":false,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_order_pros\",\"idField\":\"id\",\"idStrategy\":\"ASSIGN_UUID\",\"fkField\":\"main_id\"}],\"excel_config_id\":\"994504692756684800\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,5],\"style\":3,\"text\":\"销售订单\",\"height\":68}},\"height\":68},\"1\":{\"cells\":{\"1\":{\"style\":2,\"text\":\"订单基本信息\"}},\"height\":45},\"2\":{\"cells\":{\"1\":{\"fillFormLabel\":\"*\",\"text\":\"订单名称:\"},\"2\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726199340345_559456\",\"requiredRelevanceCell\":[2,1],\"componentFlag\":\"input-text\",\"labelText\":\"订单名称:\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"B3\",\"required\":true,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_order\",\"dbField\":\"order_name\"}]}},\"3\":{\"fillFormLabel\":\"*\",\"text\":\"订单签订日期:\"},\"4\":{\"fillForm\":{\"component\":\"DatePicker\",\"field\":\"key_1726199370746_752748\",\"requiredRelevanceCell\":[2,3],\"dateFormat\":\"yyyy-MM-dd\",\"componentFlag\":\"DatePicker-date\",\"defaultValue\":\"\",\"labelText\":\"订单签订日期:\",\"requiredTip\":\"不能为空~\",\"placeholder\":\"\",\"label\":\"D3\",\"required\":true,\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_order\",\"dbField\":\"order_sign_date\"}]}},\"5\":{\"text\":\"订单交付日期\"},\"6\":{\"fillForm\":{\"component\":\"DatePicker\",\"field\":\"key_1726199393569_219915\",\"requiredRelevanceCell\":\"\",\"dateFormat\":\"yyyy-MM-dd\",\"componentFlag\":\"DatePicker-date\",\"defaultValue\":\"\",\"labelText\":\"\",\"requiredTip\":\"不能为空~\",\"placeholder\":\"\",\"label\":\"\",\"required\":false,\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_order\",\"dbField\":\"order_delivery_date\"}]}}},\"height\":45},\"3\":{\"cells\":{\"1\":{\"fillFormLabel\":\"*\",\"text\":\"客户名称:\"},\"2\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726199416385_785272\",\"requiredRelevanceCell\":[3,1],\"componentFlag\":\"input-text\",\"labelText\":\"客户名称:\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"B4\",\"required\":true,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_order\",\"dbField\":\"order_coms\"}]}},\"3\":{\"fillFormLabel\":\"*\",\"text\":\"客户联系人:\"},\"4\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726199420480_498286\",\"reLine truncated
INSERT INTO `jimu_report` VALUES ('994504711236788224', '20240913173330', '填报-行编辑', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"record\":[{\"sci\":1,\"eci\":8,\"sri\":2,\"eri\":2}],\"range\":[{\"sci\":1,\"eci\":8,\"sri\":2,\"eri\":2}],\"group\":[{\"sci\":1,\"eci\":8,\"sri\":2,\"eri\":2}]},\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1144,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":114},\"2\":{\"width\":166},\"3\":{\"width\":100},\"4\":{\"width\":132},\"5\":{\"width\":100},\"6\":{\"width\":121},\"7\":{\"width\":111},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":50},\"area\":{\"sri\":2,\"sci\":4,\"eri\":2,\"eci\":4,\"width\":132,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"XHOT301726209790234\",\"name\":\"客户信息\",\"isMain\":true,\"isEdit\":true,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_customer\",\"idField\":\"id\",\"idStrategy\":\"ATOMIC\",\"fkField\":\"\"}],\"excel_config_id\":\"994504711236788224\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,7],\"style\":3,\"text\":\"客户信息维护\",\"height\":45}},\"height\":45},\"1\":{\"cells\":{\"1\":{\"style\":1,\"text\":\"客户编码\",\"fillFormLabel\":\"*\"},\"2\":{\"style\":1,\"text\":\"客户名称\",\"fillFormLabel\":\"*\"},\"3\":{\"style\":1,\"text\":\"客户联系人\"},\"4\":{\"style\":1,\"text\":\"客户联系方式\"},\"5\":{\"style\":1,\"text\":\"客户地址\"},\"6\":{\"style\":1,\"text\":\"客户类型\"},\"7\":{\"style\":1,\"text\":\"负责人\"},\"8\":{\"style\":1,\"text\":\"负责人部门\"}},\"height\":45},\"2\":{\"cells\":{\"1\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207046872_844925\",\"requiredRelevanceCell\":[1,1],\"componentFlag\":\"input-text\",\"labelText\":\"客户编码\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"B2\",\"required\":true,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"code\"}]}},\"2\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207048683_605614\",\"requiredRelevanceCell\":[1,2],\"componentFlag\":\"input-text\",\"labelText\":\"客户名称\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"C2\",\"required\":true,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"name\"}]}},\"3\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207050474_901111\",\"requiredRelevanceCell\":\"\",\"componentFlag\":\"input-text\",\"labelText\":\"\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"\",\"required\":false,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"fzr\"}]}},\"4\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207054327_134572\",\"requiredRelevanceCell\":\"\",\"componentFlag\":\"input-text\",\"labelText\":\"\",\"requiredTip\":\"不能为空~\",\"pattern\":\"^1[3456789]\\\\d{9}$\",\"placeholder\":\"\",\"label\":\"\",\"required\":false,\"patternErrorTip\":\"请输入正确手机号\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"phone\"}]}},\"5\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207056124_372216\",\"requiredRelevanceCell\":\"\",\"componentFlag\":\"input-text\",\"labelText\":\"\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"\",\"required\":false,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"address\"}]}},\"6\":{\"fillForm\":{\Line truncated
INSERT INTO `jimu_report` VALUES ('a250846887abe01217aab173d3006489', '56663', '不动产打印', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"a250846887abe01217aab173d3006489\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"${budong.name}\",\"virtual\":\"TyDjQJrN7mqW5MdT\",\"style\":20},\"1\":{\"text\":\"${budong.time}\",\"virtual\":\"TyDjQJrN7mqW5MdT\",\"style\":20},\"2\":{\"text\":\"${budong.didian}\",\"virtual\":\"TyDjQJrN7mqW5MdT\",\"style\":21},\"3\":{\"text\":\"${budong.bianhao}\",\"virtual\":\"TyDjQJrN7mqW5MdT\",\"style\":46},\"4\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"5\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"6\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"7\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"8\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"9\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"}},\"isDrag\":true,\"height\":47},\"1\":{\"cells\":{},\"height\":23},\"2\":{\"cells\":{\"0\":{\"text\":\"\",\"style\":0},\"1\":{\"text\":\" ${budong.yname}\",\"style\":21,\"merge\":[0,2]}},\"isDrag\":true,\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\" ${budong.chanquan}\",\"style\":0,\"merge\":[0,2],\"rendered\":\"\"},\"5\":{\"text\":\"${budong.beizhu}\",\"merge\":[5,3]},\"10\":{}},\"isDrag\":true,\"height\":39},\"4\":{\"cells\":{\"1\":{\"text\":\" ${budong.zhuzhi}\",\"style\":39,\"merge\":[0,2]},\"10\":{}},\"isDrag\":true,\"height\":33},\"5\":{\"cells\":{\"1\":{\"text\":\" ${budong.danyuan}\",\"style\":0,\"merge\":[0,2],\"rendered\":\"\"},\"10\":{}},\"isDrag\":true,\"height\":53},\"6\":{\"cells\":{\"1\":{\"text\":\" ${budong.type}\",\"style\":0,\"merge\":[0,2]},\"10\":{}},\"isDrag\":true,\"height\":47},\"7\":{\"cells\":{\"1\":{\"text\":\" ${budong.xtype}\",\"style\":0,\"merge\":[0,2]}},\"isDrag\":true,\"height\":38},\"8\":{\"cells\":{\"1\":{\"text\":\" ${budong.suoyou}\",\"style\":0,\"merge\":[0,2]}},\"isDrag\":true,\"height\":31},\"9\":{\"cells\":{\"1\":{\"text\":\" ${budong.mianji}\",\"style\":0,\"merge\":[0,2]},\"6\":{\"text\":\"\",\"rendered\":\"\"}},\"isDrag\":true,\"height\":45},\"10\":{\"cells\":{\"1\":{\"text\":\" ${budong.riqi}\",\"style\":0,\"merge\":[0,2]}},\"isDrag\":true,\"height\":26},\"11\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":0,\"merge\":[0,2]}},\"height\":29},\"12\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":0},\"2\":{\"text\":\"${budong.chanquan}\",\"style\":0,\"merge\":[5,1]}},\"isDrag\":true},\"13\":{\"cells\":{}},\"14\":{\"cells\":{}},\"15\":{\"cells\":{}},\"16\":{\"cells\":{},\"height\":32},\"17\":{\"cells\":{},\"isDrag\":true,\"height\":29},\"18\":{\"cells\":{\"2\":{\"style\":0,\"text\":\"\"}}},\"len\":100,\"-1\":{\"cells\":{\"0\":{\"text\":\"#{budong.zhuzhi}\"},\"-1\":{\"text\":\"#{budong.suoyou}\"}},\"isDrag\":true}},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"bold\":true}},{\"font\":{\"italic\":true}},{\"font\":{\"italic\":true,\"bold\":true}},{\"font\":{\"italic\":true,\"bold\":false}},{\"font\":{\"italic\":false,\"bold\":false}},{\"font\":{\"italic\":false,\"bold\":true}},{\"align\":\"left\"},{\"align\":\"center\"},{\"align\":\"right\"},{\"align\":\"left\",\"valign\":\"top\"},{\"align\":\"left\",\"valign\":\"top\",\"font\":{\"bold\":true}},{\"font\":{\"bold\":false}},{\"align\":\"left\",\"valign\":\"bottom\"},{\"valign\":\"bottom\"},{\"align\":\"center\",\"valign\":\"bottom\"},{\"textwrap\":true},{\"font\":{\"bold\":true},\"valign\":\"bottom\"},{\"font\":{\"italic\":false,\"bold\":true},\"valign\":\"top\"},{\"valign\":\"top\"},{\"textwrap\":true,\"font\":{\"bold\":true}},{\"align\":\"center\",\"valign\":\"bottom\",\"font\":{\"bold\":true}},{\"align\":\"left\",\"valign\":\"bottom\",\"font\":{\"bold\":true}},{\"align\":\"left\",\"valign\":\"bottom\",\"font\":{\"bold\":true,\"size\":8}},{\"font\":{\"bold\":true,\"size\":8},\"valign\":\"bottom\"},{\"align\":\"center\",\"valign\":\"bottom\",\"font\":{\"bold\":true,\"size\":8}},{\"align\":\"left\",\"valign\":\"middle\",\"font\":{\"bold\":true}},{\"align\":\"left\",\"valign\":\"middle\"},{\"font\":{\"italic\":false,\"bold\":true},\"valign\":\"bottom\"},{\"font\":{\"italic\":false,\"bold\":true},\"valign\":\"middle\"},{\"valign\":\"middle\"},{\"font\":{\"italic\":true,\"bold\":true},\"valign\":\"middle\"},{\"valign\":\"middle\",\"font\":{\"italic\":true}},{\"valign\":\"middle\",\"font\":{\"italic\":false}},{\"font\":{\"italic\":false,\"bold\":false},\"valign\":\"middle\"},{\"align\":\"center\",\"valign\":\"middle\",\"font\":{\"bold\":true,\"size\":8}},{\"font\":{\"bold\":true,\"size\":8},\"valign\":\"middle\"},{\"align\":\"left\",\"valign\":\"middle\",\"font\":{\"bold\":true,\Line truncated
INSERT INTO `jimu_report` VALUES ('a9f068972508920cd4aab831814f0c04', '23445', '逮捕证', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":1,\"eri\":3,\"eci\":13,\"width\":631,\"height\":60},\"excel_config_id\":\"a9f068972508920cd4aab831814f0c04\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"style\":63,\"text\":\" \"},\"2\":{\"text\":\" \",\"merge\":[0,9],\"style\":63},\"12\":{\"style\":63,\"text\":\" \"},\"13\":{\"style\":63,\"text\":\" \"},\"14\":{\"style\":63,\"text\":\" \"}},\"isDrag\":true,\"height\":55},\"1\":{\"cells\":{\"1\":{\"style\":424,\"text\":\"兰州市经济侦查大队\",\"rendered\":\"\",\"merge\":[0,13],\"height\":128},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"14\":{},\"15\":{\"style\":81,\"text\":\" \"}},\"height\":128},\"2\":{\"cells\":{\"1\":{\"style\":430,\"text\":\"逮捕令\",\"merge\":[0,13],\"height\":41},\"15\":{\"style\":81,\"text\":\" \"}},\"height\":41},\"3\":{\"cells\":{\"1\":{\"style\":431,\"merge\":[0,12],\"text\":\"第123459663号\"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":60},\"4\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"text\":\" 根据《中华人民共和国刑事诉讼法》第七十八条之规定,\",\"style\":346,\"merge\":[0,11]},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":43},\"5\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":341,\"text\":\"经\",\"merge\":[0,1]},\"4\":{\"text\":\"${pdaibu.pname}\",\"style\":342,\"merge\":[0,9]},\"14\":{\"style\":323,\"text\":\" \"}},\"isDrag\":true,\"height\":47},\"6\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":344,\"text\":\" \",\"merge\":[0,2]},\"5\":{\"merge\":[0,3],\"text\":\"批准,兹由我局对涉嫌\",\"style\":338},\"9\":{\"text\":\"${pdaibu.shiqing}\",\"style\":347,\"merge\":[0,4],\"rendered\":\"\"},\"14\":{\"style\":323,\"text\":\" \"}},\"isDrag\":true,\"height\":49},\"7\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":341,\"text\":\"的\"},\"3\":{\"text\":\"${pdaibu.fname}\",\"style\":345,\"merge\":[0,1]},\"5\":{\"text\":\"(性别\",\"style\":343},\"6\":{\"text\":\"${pdaibu.fsex}\",\"style\":347,\"merge\":[0,1],\"rendered\":\"\"},\"8\":{\"style\":346,\"text\":\"出生日期\"},\"9\":{\"text\":\"${pdaibu.cdata}\",\"style\":345,\"merge\":[0,4]},\"14\":{\"style\":323,\"text\":\" \"}},\"isDrag\":true,\"height\":51},\"8\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"text\":\"${pdaibu.zhuzhi}\",\"style\":345,\"merge\":[0,7]},\"10\":{\"style\":341,\"text\":\"执行逮捕,送兰州\",\"merge\":[0,3]},\"14\":{\"style\":323,\"text\":\" \"}},\"isDrag\":true,\"height\":51},\"9\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":341,\"merge\":[0,6],\"text\":\"市经济侦查大队羁押。\"},\"9\":{\"style\":341,\"text\":\" \"},\"10\":{\"style\":341,\"text\":\" \"},\"11\":{\"merge\":[4,0],\"height\":304},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":57},\"10\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"4\":{\"style\":338,\"virtual\":\"DId4FGTLnP3vfp4y\",\"text\":\" \"},\"5\":{\"style\":338,\"virtual\":\"DId4FGTLnP3vfp4y\",\"text\":\" \"},\"6\":{\"style\":338,\"virtual\":\"DId4FGTLnP3vfp4y\",\"text\":\" \"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":61},\"11\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"6\":{\"style\":376,\"merge\":[0,2],\"text\":\" \"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":83},\"12\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"merge\":[0,6],\"style\":338,\"text\":\" \"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":14},\"13\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":351,\"text\":\" \"},\"8\":{\"style\":380,\"text\":\"公安局印\"},\"9\":{\"text\":\" \",\"virtual\":\"qU4IfccOePYNTSG8\"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":89},\"14\":{\"cells\":{\"0\":{},\"1\":{\"style\":81,\"text\":\" \"},\"14\":{\"style\":323,\"text\":\" \"},\"15\":{\"style\":324,\"text\":\" \"}},\"height\":12},\"15\":{\"cells\":{\"0\":{\"style\":323,\"text\":\" \"},\"1\":{\"style\":63,\"text\":\" \"},\"2\":{\"style\":325,\"text\":\" \"},\"3\":{\"style\":63,\"text\":\" \"},\"4\":{\"style\":63,\"text\":\" \"},\"5\":{\"style\":63,\"text\":\" \"},\"6\":{\"text\":\" \",\"style\":432},\"7\":{\"style\":63,\"text\":\" \"},\"8\":{\"style\":63,\"text\":\" \"},\"9\":{\"style\":63,\"text\":\" \"},\"10\":{\"merge\":[0,3],\"height\":148,\"text\":\"${pdaibu.gdata}\",\"style\":63},\"14\":{\"style\":63,\"text\":\" \"},\"15\":{\"style\":81,\"text\":\" \"}},\"isDrag\":true,\"height\":148},\"len\":88},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSizeLine truncated
INSERT INTO `jimu_report` VALUES ('b35e8d615b4e408e49dbf36805d3641c', '2020121515142661246673', '数据钻取报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":2,\"sci\":1,\"eri\":2,\"eci\":1,\"width\":107,\"height\":50},\"excel_config_id\":\"b35e8d615b4e408e49dbf36805d3641c\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false},\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"1\":{\"text\":\"部门\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"雇佣日期\",\"style\":51},\"6\":{\"text\":\"家庭电话\",\"style\":51},\"7\":{\"text\":\"出生日期\",\"style\":51},\"8\":{\"text\":\"户口所在地\",\"style\":51},\"9\":{\"text\":\"联系地址\",\"style\":51},\"10\":{\"text\":\"紧急联系人\",\"style\":51}},\"height\":37},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\",\"linkIds\":\"845814975569416192\",\"rendered\":\"\",\"config\":\"\",\"display\":\"link\"},\"2\":{\"text\":\"#{pop.id}\",\"style\":54,\"aggregate\":\"select\"},\"3\":{\"text\":\"#{pop.name}\",\"style\":54,\"aggregate\":\"select\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.gtime}\",\"style\":56},\"6\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"7\":{\"text\":\"#{pop.birth}\",\"style\":56},\"8\":{\"text\":\"#{pop.hukou}\",\"style\":58},\"9\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"10\":{\"text\":\"#{pop.jperson}\",\"style\":57},\"22\":{},\"23\":{}},\"isDrag\":true,\"height\":50},\"len\":68},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":1569,\"displayConfig\":{\"1\":{\"barcodeContent\":\"#{pop.id}\",\"format\":\"CODE128\",\"width\":\"50\",\"height\":\"100\",\"displayValue\":false,\"text\":\"jmreport\",\"fontOptions\":\"\",\"font\":\"monospace\",\"textAlign\":\"center\",\"textPosition\":\"bottom\",\"textMargin\":2,\"fontSize\":20,\"background\":\"#fff\",\"lineColor\":\"#000\",\"margin\":10,\"containerWidth\":105,\"containerHeight\":25},\"11\":{\"text\":\"\\n\",\"width\":227,\"height\":227,\"colorDark\":\"#000000\",\"colorLight\":\"#ffffff\"}},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9},\"align\":\"ceLine truncated
INSERT INTO `jimu_report` VALUES ('f6ee801e8bdc28ba9d63f95dc65ccd79', '4556633', '采购单', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":13,\"sci\":6,\"eri\":13,\"eci\":6,\"width\":82,\"height\":25},\"excel_config_id\":\"f6ee801e8bdc28ba9d63f95dc65ccd79\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"采购单\",\"style\":21,\"merge\":[0,6]}},\"height\":75},\"1\":{\"cells\":{\"1\":{\"text\":\"产品名称\",\"style\":23},\"2\":{\"text\":\"产品数量\",\"style\":23},\"3\":{\"text\":\"单价\",\"style\":23},\"4\":{\"text\":\"库存量\",\"style\":23},\"5\":{\"text\":\"库存总值\",\"style\":23},\"6\":{\"text\":\"订购量\",\"style\":23},\"7\":{\"text\":\"二次订购量\",\"style\":23}},\"height\":34},\"2\":{\"cells\":{\"1\":{\"style\":24,\"text\":\"#{caigou.cname}\"},\"2\":{\"style\":24,\"text\":\"#{caigou.cnum}\"},\"3\":{\"style\":24,\"text\":\"#{caigou.cprice}\"},\"4\":{\"style\":24,\"text\":\"#{caigou.ctotal}\"},\"5\":{\"style\":24,\"text\":\"#{caigou.tp}\"},\"6\":{\"style\":24,\"text\":\"#{caigou.dtotal}\"},\"7\":{\"style\":24,\"text\":\"#{caigou.ztotal}\"}},\"height\":34},\"5\":{\"cells\":{\"1\":{\"text\":\"\"}},\"isDrag\":true},\"6\":{\"cells\":{\"1\":{\"text\":\"\"}},\"isDrag\":true},\"7\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"\"}},\"isDrag\":true},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":682,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"color\":\"#000100\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]}},{\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]},\"bgcolor\":\"#01b0f1\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#01b0f1\"},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"align\":\"center\",\"font\":{\"size\":18}},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#9cc2e6\"},{\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true,\"name\":\"宋体\"}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#9cc2e6\",\"font\":{\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#9cc2e6\",\"font\":{\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"align\":\"center\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true,\"name\":\"Microsoft YaHei\"}},{\"font\":{\"name\":\"Microsoft YaHeLine truncated
INSERT INTO `jimu_report` VALUES ('1011880586225221632', '20210108104603__0642', '实习证明副本0642', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":907,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":69},\"1\":{\"width\":41},\"4\":{\"width\":119},\"5\":{\"width\":147},\"6\":{\"width\":31},\"len\":100},\"area\":{\"sri\":5,\"sci\":9,\"eri\":5,\"eci\":9,\"width\":100,\"height\":29},\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"1011880586225221632\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\"},\"1\":{\"text\":\"\"}}},\"1\":{\"cells\":{\"0\":{\"text\":\"\"}}},\"3\":{\"cells\":{\"2\":{\"text\":\"\",\"rendered\":\"\"}}},\"5\":{\"cells\":{\"9\":{\"text\":\"1\"}},\"height\":29},\"6\":{\"cells\":{\"2\":{\"text\":\" \",\"style\":2},\"9\":{}},\"height\":34},\"7\":{\"cells\":{\"2\":{\"merge\":[0,4],\"text\":\"实习证明\",\"style\":2}},\"height\":41},\"8\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":3},\"2\":{\"text\":\"\"}}},\"9\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":3},\"2\":{\"text\":\" \",\"style\":3},\"3\":{\"text\":\"\"}},\"isDrag\":true,\"height\":33},\"10\":{\"cells\":{\"2\":{\"text\":\"${tt.name}\",\"style\":11},\"3\":{\"text\":\"同学在我公司与 2020年4月1日 至 2020年5月1日 实习。\",\"style\":19,\"merge\":[0,3],\"height\":34}},\"height\":34},\"11\":{\"cells\":{},\"height\":28},\"12\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":6},\"2\":{\"style\":13,\"text\":\"${tt.pingjia}\",\"merge\":[3,4],\"height\":129}},\"height\":36},\"13\":{\"cells\":{},\"height\":29},\"14\":{\"cells\":{},\"height\":33},\"15\":{\"cells\":{},\"height\":31},\"16\":{\"cells\":{}},\"17\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"特此证明!\",\"style\":12}}},\"20\":{\"cells\":{\"2\":{\"text\":\"\"},\"3\":{\"text\":\" \",\"style\":3},\"4\":{\"text\":\"\"}}},\"21\":{\"cells\":{\"4\":{\"text\":\"\"}}},\"22\":{\"cells\":{\"3\":{\"text\":\" \",\"style\":3},\"4\":{\"text\":\"证明人:\",\"style\":11},\"5\":{\"text\":\"${tt.lingdao}\",\"style\":12}}},\"23\":{\"cells\":{\"4\":{\"text\":\"\"},\"5\":{\"text\":\"${tt.shijian}\",\"style\":15}}},\"len\":100},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":{\"path\":\"https://static.jeecg.com/designreport/images/11_1611283832037.png\",\"repeat\":\"no-repeat\",\"width\":\"\",\"height\":\"\"},\"name\":\"sheet1\",\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"font\":{\"size\":14}},{\"align\":\"center\",\"font\":{\"size\":16}},{\"align\":\"right\"},{\"align\":\"left\"},{\"align\":\"left\",\"valign\":\"top\"},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":true},{\"font\":{\"size\":16}},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":false},{\"textwrap\":false},{\"textwrap\":true},{\"align\":\"right\",\"font\":{\"size\":12}},{\"font\":{\"size\":12}},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":true,\"font\":{\"size\":12}},{\"textwrap\":true,\"font\":{\"size\":12}},{\"align\":\"left\",\"font\":{\"size\":12}},{\"font\":{\"size\":12},\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"size\":14}},{\"font\":{\"size\":10}},{\"textwrap\":false,\"font\":{\"size\":12}}],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[\"C8:G8\",\"D11:G11\",\"C13:G16\"]}', NULL, 'https://static.jeecg.com/designreport/images/未标题-1_1610074948259.png', 'admin', '2024-10-31 16:19:02', 'admin', '2024-12-22 10:33:25', 0, NULL, NULL, 0, 159, NULL, NULL, NULL, '1', 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('1011880759647109120', '20240823093133__4370', '在线填报-员工信息登记副本4370', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":698,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":76},\"1\":{\"width\":114},\"2\":{\"width\":87},\"3\":{\"width\":99},\"4\":{\"width\":65},\"5\":{\"width\":126},\"6\":{\"width\":131},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"api\",\"code\":\"api\",\"name\":\"api\",\"isMain\":true,\"isEdit\":true,\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/submit/handle\"}],\"excel_config_id\":\"989065112487022592\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"merge\":[1,6],\"height\":90,\"text\":\"员工信息登记表\",\"style\":6}},\"height\":45},\"1\":{\"cells\":{},\"height\":45},\"2\":{\"cells\":{\"0\":{\"text\":\"编号\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"no\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"patternErrorTip\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"年龄\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"InputNumber\",\"component\":\"InputNumber\",\"field\":\"age\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"precision\":0,\"isLimitMinNum\":false,\"minNum\":0,\"isLimitMaxNum\":false,\"maxNum\":100,\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"age\"}]},\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"填写时间\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-time\",\"component\":\"DatePicker\",\"field\":\"create_time\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd HH:mm:ss\",\"defaultValue\":\"\"},\"style\":7,\"text\":\" \"},\"6\":{\"merge\":[3,0],\"height\":180,\"fillForm\":{\"componentFlag\":\"JUploadImage\",\"component\":\"JUploadImage\",\"field\":\"photo\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":false,\"maxUploadNum\":1,\"h_align\":\"center\"},\"style\":7,\"text\":\" \"}},\"height\":45},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"text\":\" \",\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"name\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"name\"},{\"dbTable\":\"test_form_submit1\",\"dbField\":\"name\"}],\"label\":\"A5\",\"labelText\":\"姓名\",\"pattern\":\"\",\"patternErrorTip\":\"\"}},\"2\":{\"text\":\"性别\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"sex\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"男\",\"value\":\"1\"},{\"label\":\"女\",\"value\":\"2\"}],\"apiUrl\":\"\",\"dictCode\":\"sex1\",\"dictName\":\"性别\"},\"style\":8,\"text\":\" \"},\"4\":{\"text\":\"出生日期\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"brithday\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\"},\"style\":7,\"text\":\" \"},\"8\":{}},\"height\":45},\"4\":{\"cells\":{\"0\":{\"text\":\"民族\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"nation\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"label\":\"选项2\",\"value\":\"2\"},{\"label\":\"选项3\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"minzu\",\"dictName\":\"民族\",\"multiple\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"政治面貌\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"politics\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"politics\"}],\"dataSource\":\"api\",\"options\":[{\"label\":\"选项1\",\"value\":\Line truncated
INSERT INTO `jimu_report` VALUES ('1038706553753010176', '20240909152438__0626', '填报-SQL数据集填报副本0626', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"fillFormToolbar\":{\"show\":true,\"btnList\":[\"save\",\"subTable_add\",\"verify\",\"subTable_del\",\"print\",\"close\",\"first\",\"prev\",\"next\",\"paging\",\"total\",\"last\"]},\"freeze\":\"A1\",\"dataRectWidth\":800,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":100},\"2\":{\"width\":200},\"3\":{\"width\":100},\"4\":{\"width\":200},\"5\":{\"width\":100},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"JEZX3M1725874665916\",\"name\":\"个人简历数据源\",\"isMain\":true,\"isEdit\":false,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_resume\",\"idField\":\"id\",\"idStrategy\":\"ATOMIC\",\"fkField\":\"\"}],\"excel_config_id\":\"1038706553753010176\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"个人简历\",\"merge\":[0,3],\"height\":68,\"style\":1}},\"height\":68},\"1\":{\"cells\":{\"1\":{\"text\":\"基本资料\",\"style\":5,\"merge\":[0,3],\"height\":38},\"5\":{\"style\":7,\"text\":\" \"}},\"height\":38},\"2\":{\"cells\":{\"1\":{\"text\":\"姓名:\",\"style\":8,\"fillFormLabel\":\"*\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725873834685_524574\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[2,1],\"label\":\"B3\",\"labelText\":\"姓名:\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"name\"}]}},\"3\":{\"text\":\"性别:\",\"style\":3,\"fillFormLabel\":\"*\"},\"4\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"key_1725873880502_783022\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[2,3],\"label\":\"D3\",\"labelText\":\"性别:\",\"dataSource\":\"static\",\"options\":[{\"label\":\"男\",\"value\":\"2\"},{\"label\":\"女\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"\",\"dictName\":\"\",\"h_align\":\"left\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"sex\"}]}}},\"height\":45},\"3\":{\"cells\":{\"1\":{\"text\":\"出生日期:\",\"style\":8},\"2\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"key_1725874244968_631595\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"birthday\"}]}},\"3\":{\"text\":\"联系方式:\",\"style\":3,\"fillFormLabel\":\"*\"},\"4\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725874490222_904616\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[3,3],\"label\":\"D4\",\"labelText\":\"联系方式:\",\"pattern\":\"^1[3456789]\\\\d{9}$\",\"patternErrorTip\":\"请输入联系方式\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"phone\"}]}}},\"height\":45},\"4\":{\"cells\":{\"1\":{\"text\":\"邮箱:\",\"style\":8,\"fillFormLabel\":\"*\"},\"2\":{\"fillForm\":{\"componentFlag\":\"inputLine truncated
INSERT INTO `jimu_report` VALUES ('1063967011732750336', '20250324095205', '测试填报11', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"fillFormToolbar\":{\"show\":true,\"btnList\":[\"save\",\"subTable_add\",\"verify\",\"subTable_del\",\"print\",\"close\",\"first\",\"prev\",\"next\",\"paging\",\"total\",\"last\",\"exportPDF\",\"exportExcel\"]},\"freeze\":\"A1\",\"dataRectWidth\":200,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":100},\"2\":{\"width\":200},\"3\":{\"width\":100},\"4\":{\"width\":200},\"5\":{\"width\":100},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"50\":{\"width\":200},\"51\":{\"width\":100},\"52\":{\"width\":200},\"53\":{\"width\":100},\"54\":{\"width\":200},\"55\":{\"width\":100},\"56\":{\"width\":200},\"57\":{\"width\":100},\"58\":{\"width\":200},\"59\":{\"width\":100},\"60\":{\"width\":200},\"61\":{\"width\":100},\"62\":{\"width\":200},\"63\":{\"width\":100},\"64\":{\"width\":200},\"65\":{\"width\":100},\"66\":{\"width\":200},\"67\":{\"width\":100},\"68\":{\"width\":200},\"69\":{\"width\":100},\"70\":{\"width\":200},\"71\":{\"width\":100},\"72\":{\"width\":200},\"73\":{\"width\":100},\"74\":{\"width\":200},\"75\":{\"width\":100},\"76\":{\"width\":200},\"77\":{\"width\":100},\"78\":{\"width\":200},\"79\":{\"width\":100},\"80\":{\"width\":200},\"81\":{\"width\":100},\"82\":{\"width\":200},\"83\":{\"width\":100},\"84\":{\"width\":200},\"85\":{\"width\":100},\"86\":{\"width\":200},\"87\":{\"width\":100},\"88\":{\"width\":200},\"89\":{\"width\":100},\"90\":{\"width\":200},\"91\":{\"width\":100},\"92\":{\"width\":200},\"93\":{\"width\":100},\"94\":{\"width\":200},\"95\":{\"width\":100},\"96\":{\"width\":200},\"97\":{\"width\":100},\"98\":{\"width\":200},\"99\":{\"width\":100},\"len\":100},\"area\":{\"sri\":5,\"sci\":2,\"eri\":5,\"eci\":2,\"width\":200,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"1063967011732750336\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{},\"height\":45},\"1\":{\"cells\":{},\"height\":45},\"2\":{\"cells\":{\"1\":{\"text\":\"1212\"},\"2\":{\"fillForm\":{\"componentFlag\":\"JDepartment\",\"component\":\"JDepartment\",\"field\":\"key_1742781130261_232674\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"unique\":false,\"requiredRelevanceCell\":\"\",\"dbFieldBind\":[],\"label\":\"\",\"labelText\":\"\",\"disabled\":false,\"readonly\":false,\"hidden\":false,\"multiple\":false,\"apiUrl\":\"\"}}},\"height\":45},\"3\":{\"cells\":{},\"height\":45},\"4\":{\"cells\":{},\"height\":45},\"5\":{\"cells\":{},\"height\":45},\"6\":{\"cells\":{},\"height\":45},\"7\":{\"cells\":{},\"height\":45},\"8\":{\"cells\":{},\"height\":45},\"9\":{\"cells\":{},\"height\":45},\"10\":{\"cells\":{},\"height\":45},\"11\":{\"cells\":{},\"height\":45},\"12\":{\"cells\":{},\"height\":45},\"13\":{\"cells\":{},\"height\":45},\"14\":{\"cells\":{},\"height\":45},\"15\":{\"cells\":{},\"height\":45},\"16\":{\"cells\":{},\"height\":45},\"17\":{\"cells\":{},\"height\":45},\"18\":{\"cells\":{},\"height\":45},\"19\":{\"cells\":{},\"height\":45},\"20\":{\"cells\":{},\"height\":45},\"21\":{\"cells\":{},\"height\":45},\"22\":{\"cells\":{},\"height\":45},\"23\":{\"cells\":{},\"height\":45},\"24\":{\"cells\":{},\"height\":45},\"25\":{\"cells\":{},\"height\":45},\"26\":{\"cells\":{},\"height\":45},\"27\":{\"cells\":{},\"height\":45},\"28\":{\"cells\":{},\"height\":45},\"29\":{\"cells\":{},\"height\":45},\"30\":{\"cells\":{},\"height\":45},\"31\":{\"cells\":{},\"height\":45},\"Line truncated
INSERT INTO `jimu_report` VALUES ('1298922907493339136', '20200827180435', '员工信息横向统计表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":9,\"sci\":3,\"eri\":9,\"eci\":3,\"width\":100,\"height\":25},\"excel_config_id\":\"1298922907493339136\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"1\":{\"cells\":{\"0\":{\"text\":\"员工信息横向统计表\",\"style\":9,\"merge\":[0,11]}},\"height\":97},\"2\":{\"cells\":{\"1\":{\"text\":\"部门\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(department)}\",\"style\":11,\"direction\":\"right\",\"rendered\":\"\"}},\"isDrag\":true,\"height\":40},\"3\":{\"cells\":{\"1\":{\"text\":\"学历\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(education)}\",\"style\":11,\"direction\":\"right\"}},\"isDrag\":true,\"height\":39},\"4\":{\"cells\":{\"1\":{\"text\":\"性别\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(sex)}\",\"style\":11,\"direction\":\"right\"}},\"isDrag\":true,\"height\":41},\"5\":{\"cells\":{\"1\":{\"text\":\"年龄\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(age)}\",\"style\":11}},\"isDrag\":true,\"height\":39},\"6\":{\"cells\":{\"1\":{\"text\":\"姓名\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(name)}\",\"style\":11,\"direction\":\"right\"}},\"isDrag\":true,\"height\":40},\"7\":{\"cells\":{\"1\":{\"text\":\"薪水\",\"style\":7},\"2\":{\"text\":\"#{hex.customGroup(salary)}\",\"style\":11,\"direction\":\"right\"}},\"isDrag\":true,\"height\":36},\"8\":{\"cells\":{\"2\":{\"direction\":\"right\"}},\"isDrag\":true},\"9\":{\"cells\":{\"3\":{\"aggregate\":\"group\",\"direction\":\"right\"}},\"isDrag\":true},\"11\":{\"cells\":{},\"isDrag\":true},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":204,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"align\":\"center\"},{\"align\":\"center\",\"font\":{\"bold\":true}},{\"align\":\"center\",\"font\":{\"bold\":true,\"size\":14}},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"bold\":true,\"size\":14,\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"bold\":false,\"size\":14,\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"宋体\"},\"align\":\"center\"}],\"validations\":[],\"cols\":{\"0\":{\"width\":44},\"1\":{\"width\":79},\"2\":{\"width\":81},\"len\":50},\"merges\":[\"A2:L2\"]}', NULL, 'https://static.jeecg.com/designreport/images/QQ截图20210127135515_1611726986233.png', 'admin', '2020-08-27 18:04:35', 'admin', '2021-08-04 18:53:48', 0, NULL, NULL, 1, 2575, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('1314846205892759552', '20201010163252', 'XXX有限公司员工登记表', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":33,\"sci\":12,\"eri\":33,\"eci\":12,\"width\":100,\"height\":25},\"excel_config_id\":\"1314846205892759552\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,8]},\"10\":{}},\"height\":22},\"1\":{\"cells\":{\"2\":{\"style\":87,\"text\":\" \"},\"3\":{\"style\":87,\"text\":\" \"},\"4\":{\"style\":87,\"text\":\" \"},\"5\":{\"style\":87,\"text\":\" \"},\"6\":{\"style\":87,\"text\":\" \"},\"7\":{\"style\":87,\"text\":\" \"},\"8\":{\"style\":87,\"text\":\" \"},\"9\":{\"style\":87,\"text\":\" \"}},\"height\":24},\"2\":{\"cells\":{\"1\":{\"text\":\"所在部门\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.department}\",\"style\":23,\"merge\":[0,2]},\"5\":{\"text\":\"职务\",\"style\":93},\"6\":{\"text\":\"${yuangongjiben.post}\",\"style\":23},\"7\":{\"text\":\"填写日期\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.data}\",\"style\":23,\"merge\":[0,1]}},\"isDrag\":true,\"height\":36},\"3\":{\"cells\":{\"1\":{\"text\":\"姓名\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.name}\",\"style\":23},\"3\":{\"text\":\"性别\",\"style\":93},\"4\":{\"text\":\"${yuangongjiben.sex}\",\"style\":23},\"5\":{\"text\":\"出生日期\",\"style\":93},\"6\":{\"text\":\"${yuangongjiben.birth}\",\"style\":23},\"7\":{\"text\":\"政治面貌\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.political}\",\"style\":26,\"merge\":[0,1]},\"9\":{\"style\":7,\"text\":\" \"}},\"isDrag\":true,\"height\":33},\"4\":{\"cells\":{\"1\":{\"text\":\"机关\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.office}\",\"style\":23},\"3\":{\"style\":93,\"text\":\"民族\"},\"4\":{\"text\":\"${yuangongjiben.nation}\",\"style\":23},\"5\":{\"style\":93,\"text\":\"健康状况\"},\"6\":{\"text\":\"${yuangongjiben.health}\",\"style\":23},\"7\":{\"style\":93,\"text\":\"户籍类型\"},\"8\":{\"text\":\"${yuangongjiben.register}\",\"style\":26},\"9\":{\"style\":35,\"text\":\" \",\"merge\":[3,0],\"virtual\":\"AgnPgVOpFUlD88BW\"}},\"isDrag\":true,\"height\":31},\"5\":{\"cells\":{\"1\":{\"text\":\"最高学历\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.education}\",\"style\":23},\"3\":{\"text\":\"所学专业\",\"style\":93},\"4\":{\"text\":\"${yuangongjiben.major}\",\"style\":23,\"merge\":[0,2]},\"7\":{\"text\":\"毕业时间\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.gdata}\",\"style\":23}},\"isDrag\":true,\"height\":35},\"6\":{\"cells\":{\"1\":{\"text\":\"电子邮箱\",\"style\":93},\"2\":{\"text\":\"${yuangongjiben.mailbox}\",\"style\":23},\"3\":{\"text\":\"手机号\",\"style\":93},\"4\":{\"text\":\"${yuangongjiben.telphone}\",\"style\":23,\"merge\":[0,2]},\"7\":{\"text\":\"家庭电话\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.homephone}\",\"style\":23}},\"isDrag\":true,\"height\":38},\"7\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"第一次参加工作时间\",\"style\":93},\"3\":{\"text\":\"${yuangongjiben.pworktime}\",\"style\":133,\"merge\":[0,2]},\"6\":{\"style\":93,\"text\":\"入职时间\"},\"7\":{\"text\":\"${yuangongjiben.entrytime}\",\"style\":24,\"merge\":[0,1]}},\"isDrag\":true,\"height\":27},\"8\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"毕业院校\",\"style\":93},\"3\":{\"text\":\"${yuangongjiben.school}\",\"style\":24,\"merge\":[0,2]},\"6\":{\"style\":93,\"text\":\"身份证号\"},\"7\":{\"text\":\"${yuangongjiben.idcard}\",\"style\":24,\"merge\":[0,2]}},\"isDrag\":true,\"height\":34},\"9\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"入党(团)时间、地点\",\"style\":94},\"3\":{\"text\":\"${yuangongjiben.entrytime}\",\"style\":24,\"merge\":[0,2]},\"6\":{\"text\":\"婚姻状况\",\"style\":93},\"7\":{\"text\":\"${yuangongjiben.marital}\",\"style\":23},\"8\":{\"text\":\"有无子女\",\"style\":93},\"9\":{\"text\":\"${yuangongjiben.children}\",\"style\":23}},\"isDrag\":true,\"height\":33},\"10\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"户口所在街道名称\",\"style\":93},\"3\":{\"text\":\"${yuangongjiben.hukoustreet}\",\"style\":24,\"merge\":[0,2]},\"6\":{\"merge\":[0,1],\"text\":\"户口所在地邮编\",\"style\":93},\"8\":{\"text\":\"${yuangongjiben.hukounum}\",\"style\":23,\"merge\":[0,1]}},\"isDrag\":true,\"height\":38},\"11\":{\"cells\":{\"1\":{\"text\":\"户口所在地地址\",\"style\":96,\"merge\":[2,1]},\"3\":{\"text\":\"${yuangongjiben.hukoudi}\",\"style\":26,\"merge\":[2,6]}},\"isDrag\":true},\"13\":{\"cells\":{\"12\":{\"text\":\"\"}},\"isDrag\":true},\"14\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"现居住地址\",\"style\":98},\"3\":{\"text\":\"${yuangongjiben.currentdi}\",\"style\":26,\"merge\":[0,2]},\"6\":{\"style\":98,\"merge\":[0,1],\"text\":\"现居住地址邮编\"},\"8\":{\"text\":\"${yuangongjLine truncated
INSERT INTO `jimu_report` VALUES ('1331429368098066432', '20201125104813', '制作业产能监控大屏', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":2,\"col\":5,\"colspan\":8,\"rowspan\":8,\"width\":\"893\",\"height\":\"206\",\"config\":\"{\\\"yAxis\\\":[{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"value\\\"},{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"value\\\"}],\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\",\\\"17\\\",\\\"18\\\",\\\"19\\\",\\\"20\\\",\\\"21\\\",\\\"22\\\",\\\"23\\\",\\\"24\\\",\\\"25\\\",\\\"26\\\",\\\"27\\\",\\\"28\\\",\\\"29\\\",\\\"30\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"type\\\":\\\"category\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"计划生产\\\",\\\"实际完成量\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"right\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"grid\\\":{\\\"top\\\":56,\\\"left\\\":34,\\\"bottom\\\":37,\\\"right\\\":53},\\\"series\\\":[{\\\"barWidth\\\":8,\\\"itemStyle\\\":{\\\"color\\\":\\\"#70BDD1\\\"},\\\"barMinHeight\\\":2,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"labelPositionArray\\\":[{\\\"value\\\":\\\"top\\\",\\\"text\\\":\\\"上方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"left\\\",\\\"text\\\":\\\"左边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"right\\\",\\\"text\\\":\\\"右边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"bottom\\\",\\\"text\\\":\\\"下方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"inside\\\",\\\"text\\\":\\\"内部\\\",\\\"type\\\":\\\"bar\\\"}]},\\\"type\\\":\\\"bar\\\",\\\"name\\\":\\\"计划生产\\\",\\\"data\\\":[100,130,1400,108,200,130,160,180,200,300,110,120,130,140,150,100,100,100,100,100,200,300,110,120,130,140,105,120,150,100],\\\"typeData\\\":[{\\\"name\\\":\\\"实际完成量\\\",\\\"type\\\":\\\"line\\\"}]},{\\\"itemStyle\\\":{\\\"color\\\":\\\"#D69071\\\"},\\\"symbolSize\\\":8,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"labelPositionArray\\\":[{\\\"value\\\":\\\"top\\\",\\\"text\\\":\\\"上方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"left\\\",\\\"text\\\":\\\"左边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"right\\\",\\\"text\\\":\\\"右边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"bottom\\\",\\\"text\\\":\\\"下方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"inside\\\",\\\"text\\\":\\\"内部\\\",\\\"type\\\":\\\"bar\\\"}]},\\\"type\\\":\\\"line\\\",\\\"yAxisIndex\\\":1,\\\"name\\\":\\\"实际完成量\\\",\\\"data\\\":[100,130,140,108,200,130,160,180,200,300,110,120,130,140,150,100,100,100,100,100,200,300,110,120,130,140,105,120,150,100],\\\"typeData\\\":[{\\\"name\\\":\\\"实际完成量\\\",\\\"type\\\":\\\"line\\\"}]}],\\\"chartType\\\":\\\"linebar\\\",\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"crossStyle\\\":{\\\"color\\\":\\\"#999\\\"},\\\"type\\\":\\\"cross\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"left\\\":\\\"center\\\",\\\"show\\\":true,\\\"text\\\":\\\"日生产效率监控\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"14\\\",\\\"fontWeight\\\":\\\"normal\\\"},\\\"top\\\":10}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1331474698436915202\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"rishengchan\",\"chartType\":\"mixed.linebar\",\"isTiming\":true,\"intervalTime\":\"5\"},\"layer_id\":\"Or4klM9AZSLine truncated
INSERT INTO `jimu_report` VALUES ('1331503965770223616', '20201125155042', '房屋销售综合展示大屏', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":13,\"colspan\":4,\"rowspan\":6,\"width\":\"323\",\"height\":\"148\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":34,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"高层\\\",\\\"小高层\\\",\\\"写字楼\\\",\\\"厂房\\\",\\\"公寓\\\",\\\"别墅\\\",\\\"厂房\\\",\\\"四合院\\\",\\\"loft\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":50,\\\"left\\\":30,\\\"bottom\\\":44,\\\"right\\\":24},\\\"series\\\":[{\\\"areaStyle\\\":null,\\\"data\\\":[20,25,10,5,9,1,5,1,20],\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"isArea\\\":false,\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#D04672\\\"},\\\"step\\\":false,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"line\\\",\\\"smooth\\\":true}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":10,\\\"text\\\":\\\"房形分析\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1331922734933987329\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"fangyuan\",\"chartType\":\"line.smooth\",\"isTiming\":true,\"intervalTime\":\"5\"},\"layer_id\":\"nk6I2RCefm9scS1k\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,13],[1,14],[1,15]]},{\"row\":2,\"col\":1,\"colspan\":3,\"rowspan\":14,\"width\":\"337\",\"height\":\"342\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"缤纷南郡\\\",\\\"中航华府\\\",\\\"3中家属楼\\\",\\\"幸福家园\\\",\\\"水晶国际\\\",\\\"绿城小区\\\",\\\"缤纷南郡二期\\\",\\\"国奥家园\\\",\\\"西西胡同\\\",\\\"融创学府\\\",\\\"蓝湾国际\\\",\\\"广发小区\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"房子\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":false,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"grid\\\":{\\\"top\\\":60,\\\"left\\\":71,\\\"bottom\\\":39,\\\"right\\\":29},\\\"series\\\":[{\\\"barWidth\\\":13,\\\"data\\\":[2,2,2,3,4,3,3,5,2,7,4,8],\\\"name\\\":\\\"房子\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#67994B\\\",\\\"barBorderRadius\\\":7},\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[]}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"left\\\":\\\"left\\\",\\\"show\\\":true,\\\"text\\\":\\\"各楼盘成交量排名\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"14\\\",\\\"fontWeight\\\":\\\"normal\\\"},\\\"top\\\":10}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\Line truncated
INSERT INTO `jimu_report` VALUES ('1333962561053396992', '20201202103422', '房地产大屏', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":1,\"colspan\":4,\"rowspan\":9,\"width\":\"359\",\"height\":\"223\",\"config\":\"{\\\"yAxis\\\":[{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#1E90FF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"value\\\"},{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#1E90FF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"value\\\"}],\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"萧山\\\",\\\"主城\\\",\\\"余杭\\\",\\\"江东\\\",\\\"阜阳\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#1E90FF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"type\\\":\\\"category\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"出让资金(亿元)\\\",\\\"出让面积(万平方米)\\\"],\\\"top\\\":\\\"bottom\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFD700\\\",\\\"fontSize\\\":\\\"8\\\"}},\\\"grid\\\":{\\\"top\\\":55,\\\"left\\\":36,\\\"bottom\\\":65,\\\"right\\\":50},\\\"series\\\":[{\\\"barWidth\\\":15,\\\"itemStyle\\\":{\\\"color\\\":\\\"#2249B1\\\",\\\"barBorderRadius\\\":0},\\\"barMinHeight\\\":2,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"labelPositionArray\\\":[{\\\"value\\\":\\\"top\\\",\\\"text\\\":\\\"上方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"left\\\",\\\"text\\\":\\\"左边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"right\\\",\\\"text\\\":\\\"右边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"bottom\\\",\\\"text\\\":\\\"下方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"inside\\\",\\\"text\\\":\\\"内部\\\",\\\"type\\\":\\\"bar\\\"}]},\\\"type\\\":\\\"bar\\\",\\\"name\\\":\\\"出让资金(亿元)\\\",\\\"data\\\":[90,100,80,20,30],\\\"typeData\\\":[{\\\"name\\\":\\\"出让资金(亿元)\\\",\\\"type\\\":\\\"bar\\\"},{\\\"name\\\":\\\"出让面积(万平方米)\\\",\\\"type\\\":\\\"line\\\"}]},{\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"itemStyle\\\":{\\\"color\\\":\\\"#D8807E\\\"},\\\"step\\\":false,\\\"smooth\\\":false,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"labelPositionArray\\\":[{\\\"value\\\":\\\"top\\\",\\\"text\\\":\\\"上方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"left\\\",\\\"text\\\":\\\"左边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"right\\\",\\\"text\\\":\\\"右边\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"bottom\\\",\\\"text\\\":\\\"下方\\\",\\\"type\\\":\\\"bar\\\"},{\\\"value\\\":\\\"inside\\\",\\\"text\\\":\\\"内部\\\",\\\"type\\\":\\\"bar\\\"}]},\\\"type\\\":\\\"line\\\",\\\"yAxisIndex\\\":1,\\\"name\\\":\\\"出让面积(万平方米)\\\",\\\"data\\\":[70,90,40,10,20],\\\"typeData\\\":[{\\\"name\\\":\\\"出让资金(亿元)\\\",\\\"type\\\":\\\"bar\\\"},{\\\"name\\\":\\\"出让面积(万平方米)\\\",\\\"type\\\":\\\"line\\\"}]}],\\\"chartType\\\":\\\"linebar\\\",\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"crossStyle\\\":{\\\"color\\\":\\\"#999\\\"},\\\"type\\\":\\\"cross\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"left\\\":\\\"left\\\",\\\"show\\\":true,\\\"text\\\":\\\"土地出让面积走势\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"14\\\",\\\"fontWeight\\\":\\\"normal\\\"},\\\"top\\\":10}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1333968597264900097\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"mianji\",\"chartType\":\"mixed.linebar\",\"isTiming\":true,\"intervalTime\":\"5\",\"chartId\":\"\"},\"layer_id\":\"MqcEkZ87DgSKlNKU\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":\"\",\"color\":\"#fff\"Line truncated
INSERT INTO `jimu_report` VALUES ('1334028738995818496', '20201202145702', '大数据可视化展示平台', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":6,\"colspan\":5,\"rowspan\":14,\"width\":\"499\",\"height\":\"348\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"1月\\\",\\\"2月\\\",\\\"3月\\\",\\\"4月\\\",\\\"5月\\\",\\\"6月\\\",\\\"7月\\\",\\\"8月\\\",\\\"9月\\\",\\\"10月\\\",\\\"11月\\\",\\\"12月\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#EEEEEE\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"2017\\\",\\\"2018\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"vertical\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"grid\\\":{\\\"top\\\":68,\\\"left\\\":35,\\\"bottom\\\":45,\\\"right\\\":31},\\\"series\\\":[{\\\"barWidth\\\":9,\\\"data\\\":[2,3,3,9,15,12,6,4,6,7,4,10],\\\"name\\\":\\\"2017\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#49BCF7\\\",\\\"barBorderRadius\\\":8},\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[]},{\\\"barWidth\\\":9,\\\"data\\\":[1,4,5,11,12,9,5,6,6,3,3,9],\\\"name\\\":\\\"2018\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#62C98D\\\",\\\"barBorderRadius\\\":8},\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[]}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"left\\\":\\\"left\\\",\\\"show\\\":true,\\\"text\\\":\\\"柱形图标题\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"14\\\",\\\"fontWeight\\\":\\\"normal\\\"},\\\"top\\\":10}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1334052375119273986\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"zhuxingtu1\",\"chartType\":\"bar.multi\",\"isTiming\":true,\"intervalTime\":\"5\",\"chartId\":\"\"},\"layer_id\":\"aELaGxHbJDssfJ1j\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,6],[1,7],[1,8],[1,9],[1,10]]},{\"row\":1,\"col\":11,\"colspan\":4,\"rowspan\":7,\"width\":\"402\",\"height\":\"171\",\"config\":\"{\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"图例1\\\",\\\"图例2\\\",\\\"图例3\\\",\\\"图例4\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":false,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"series\\\":[{\\\"isRose\\\":true,\\\"data\\\":[{\\\"name\\\":\\\"图例1\\\",\\\"value\\\":10,\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(98,201,141,1)\\\"}},{\\\"name\\\":\\\"图例2\\\",\\\"value\\\":15,\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(45,140,240,1)\\\"}},{\\\"name\\\":\\\"图例3\\\",\\\"value\\\":25,\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(76,185,207,1)\\\"}},{\\\"name\\\":\\\"图例4\\\",\\\"value\\\":30,\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(83,182,102,1)\\\"}}],\\\"isRadius\\\":false,\\\"roseType\\\":\\\"radius\\\",\\\"notCount\\\":false,\\\"center\\\":[\\\"170\\\",\\\"90\\\"],\\\"name\\\":\\\"\\\",\\\"minAngle\\\":0,\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"outside\\\",\\\"textStyle\\\":{\\\"fontSize\\\":\\\"10\\\",\\\"fontWeight\\\":\\\"normal\\\"}},\\\"type\\\":\\\"pie\\\",\\\"radius\\\":\\\"50%\\\",\\\"autoSort\\\":false}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":5,\\\"text\\\":\\\"饼图1\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dLine truncated
INSERT INTO `jimu_report` VALUES ('1334074491629867008', '20201202175858', '乡村振兴普惠金融服务平台', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":5,\"colspan\":6,\"rowspan\":12,\"width\":\"568\",\"height\":\"435\",\"config\":\"{\\\"geo\\\":{\\\"map\\\":\\\"shandong\\\",\\\"zoom\\\":0.8,\\\"label\\\":{\\\"color\\\":\\\"#19DEF4\\\",\\\"fontSize\\\":12,\\\"show\\\":true},\\\"itemStyle\\\":{\\\"borderWidth\\\":0.5,\\\"areaColor\\\":\\\"#0C514B\\\",\\\"borderColor\\\":\\\"#000\\\"},\\\"emphasis\\\":{\\\"label\\\":{\\\"color\\\":\\\"#19DEF4\\\"},\\\"itemStyle\\\":{\\\"areaColor\\\":\\\"#0A2B34\\\"}},\\\"regions\\\":[],\\\"layoutSize\\\":600,\\\"roam\\\":true,\\\"layoutCenter\\\":[\\\"50%\\\",\\\"50%\\\"]},\\\"series\\\":[{\\\"encode\\\":{\\\"value\\\":[2]},\\\"data\\\":[{\\\"name\\\":\\\"济南市\\\",\\\"value\\\":[117.000923,36.675807,255]},{\\\"name\\\":\\\"青岛市\\\",\\\"value\\\":[120.355173,36.082982,300]},{\\\"name\\\":\\\"淄博市\\\",\\\"value\\\":[118.047648,36.814939,130]},{\\\"name\\\":\\\"枣庄市\\\",\\\"value\\\":[117.557964,34.856424,150]}],\\\"name\\\":\\\"\\\",\\\"emphasis\\\":{\\\"label\\\":{\\\"show\\\":true}},\\\"itemStyle\\\":{\\\"color\\\":\\\"#FFFF01\\\"},\\\"coordinateSystem\\\":\\\"geo\\\",\\\"label\\\":{\\\"formatter\\\":\\\"{b}\\\",\\\"show\\\":false,\\\"position\\\":\\\"right\\\"},\\\"type\\\":\\\"scatter\\\"}],\\\"chartType\\\":\\\"map\\\",\\\"tooltip\\\":{\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":18}},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":5,\\\"text\\\":\\\"主要城市空气质量\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#c23531\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":18},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1335909918854725633\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"ditu1\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"chartType\":\"map.scatter\",\"isTiming\":true,\"intervalTime\":\"5\",\"id\":\"reOVgCVG6ZPWh5c1\"},\"layer_id\":\"reOVgCVG6ZPWh5c1\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,5],[1,6],[1,7],[1,8],[1,9],[1,10]]},{\"row\":3,\"col\":11,\"colspan\":3,\"rowspan\":4,\"width\":\"357\",\"height\":\"147\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"玉米\\\",\\\"大豆\\\",\\\"花生\\\",\\\"高粱\\\",\\\"小麦\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":55,\\\"left\\\":60,\\\"bottom\\\":40,\\\"right\\\":24},\\\"series\\\":[{\\\"areaStyle\\\":{\\\"color\\\":\\\"#6CE6BC\\\",\\\"opacity\\\":0.4},\\\"data\\\":[1000879,3400879,2300879,2400879,3000],\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"isArea\\\":true,\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#9DE4D1\\\"},\\\"step\\\":false,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"line\\\",\\\"smooth\\\":false}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":10,\\\"text\\\":\\\"五年产业变化趋势\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#81E1B6\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"1334083843610648578\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"wunian\",\"chartType\":\"line.area\",\"chartId\":\"\",\"isTiming\":true,\"intervalTime\":\"5\"},\"layer_id\":\"Kkx8cQxh41KDHQKJ\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[3,11],[3,12],[3,13]]},{\"row\":8,\"col\":11,\"colspan\":3,\"rowspan\":5,\"width\":\"355\",\"height\":\"216\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSizLine truncated
INSERT INTO `jimu_report` VALUES ('1334420681185566722', '202012031408346166', '学校经费一览表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":6,\"sci\":20,\"eri\":6,\"eci\":20,\"width\":59,\"height\":25},\"excel_config_id\":\"1334420681185566722\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"学校经费一览表\",\"merge\":[0,22],\"style\":10}},\"height\":72},\"1\":{\"cells\":{\"1\":{\"text\":\"学校类别\",\"style\":221,\"merge\":[4,0]},\"2\":{\"merge\":[4,0],\"style\":222,\"text\":\"学校名称\"},\"3\":{\"text\":\"财政教育经费投入(万元)\",\"merge\":[0,8],\"style\":84},\"12\":{\"text\":\"其他投入\",\"merge\":[0,7],\"style\":84},\"20\":{\"style\":84,\"text\":\"补充资料\",\"merge\":[0,4]}},\"height\":28},\"2\":{\"cells\":{\"3\":{\"text\":\"总计\",\"style\":117,\"merge\":[3,0]},\"4\":{\"text\":\"教育事业费\",\"style\":117,\"merge\":[0,6]},\"11\":{\"text\":\"基础拨款\",\"style\":117,\"merge\":[3,0]},\"12\":{\"text\":\"村投入\",\"style\":117,\"merge\":[0,4]},\"17\":{\"text\":\"社会捐款\",\"style\":117,\"merge\":[0,2]},\"20\":{\"style\":126,\"merge\":[0,4],\"text\":\"信息化建设\"}},\"height\":24},\"3\":{\"cells\":{\"4\":{\"merge\":[0,1],\"text\":\"合计\",\"style\":121},\"6\":{\"merge\":[2,0],\"text\":\"人员经费\",\"style\":121},\"7\":{\"merge\":[2,0],\"text\":\"日常公用费用\",\"style\":123},\"8\":{\"merge\":[0,2],\"text\":\"项目经费\",\"style\":121},\"12\":{\"merge\":[2,0],\"text\":\"合计\",\"style\":121},\"13\":{\"merge\":[0,3],\"text\":\"其中\",\"style\":121},\"17\":{\"merge\":[2,0],\"text\":\"合计\",\"style\":121},\"18\":{\"merge\":[0,1],\"text\":\"其中\",\"style\":121},\"20\":{\"merge\":[2,0],\"text\":\"本年投入金额(万元)\",\"style\":230},\"21\":{\"merge\":[0,1],\"text\":\"电脑数(台数)\",\"style\":121},\"23\":{\"merge\":[0,1],\"text\":\"校园网数(个)\",\"style\":121}}},\"4\":{\"cells\":{\"4\":{\"merge\":[1,0],\"text\":\"金额\",\"style\":126},\"5\":{\"merge\":[1,0],\"text\":\"比上年增长(%)\",\"style\":127},\"8\":{\"merge\":[1,0],\"text\":\"合计\",\"style\":121},\"9\":{\"merge\":[0,1],\"text\":\"其中\",\"style\":121},\"13\":{\"merge\":[1,0],\"text\":\"人员经费\",\"style\":131},\"14\":{\"merge\":[1,0],\"text\":\"日常公用费用\",\"style\":131},\"15\":{\"merge\":[1,0],\"text\":\"项目经费\",\"style\":131},\"16\":{\"merge\":[1,0],\"text\":\"基建投入\",\"style\":131},\"18\":{\"merge\":[1,0],\"text\":\"项目经费\",\"style\":131},\"19\":{\"merge\":[1,0],\"text\":\"基础投入\",\"style\":131},\"21\":{\"merge\":[1,0],\"text\":\"合计\",\"style\":121},\"22\":{\"merge\":[1,0],\"text\":\"本年购置数\",\"style\":121},\"23\":{\"style\":121,\"merge\":[1,0],\"text\":\"合计\"},\"24\":{\"merge\":[1,0],\"text\":\"本年建成数\",\"style\":121}}},\"5\":{\"cells\":{\"9\":{\"text\":\"标准化建设\",\"style\":131},\"10\":{\"text\":\"信息化建设\",\"style\":121}}},\"6\":{\"cells\":{\"1\":{\"text\":\"#{laiyuan.group(class)}\",\"style\":233,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{laiyuan.school}\",\"style\":234},\"3\":{\"style\":240,\"text\":\"=SUM(E7,I7)\",\"decimalPlaces\":\"0\"},\"4\":{\"style\":240,\"text\":\"=SUM(G7,H7)\",\"decimalPlaces\":\"0\"},\"5\":{\"text\":\"#{laiyuan.lv}\",\"style\":12},\"6\":{\"text\":\"#{laiyuan.renyuan_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"7\":{\"text\":\"#{laiyuan.richang_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"8\":{\"style\":239,\"text\":\"=SUM(J7,K7)\",\"decimalPlaces\":\"0\"},\"9\":{\"text\":\"#{laiyuan.biaozhun_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"10\":{\"text\":\"#{laiyuan.xinxi_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"11\":{\"text\":\"#{laiyuan.jichubokuan_jy}\",\"style\":239,\"decimalPlaces\":\"0\"},\"12\":{\"text\":\"=SUM(N7,O7)\",\"style\":239,\"decimalPlaces\":\"0\"},\"13\":{\"text\":\"#{laiyuan.renyuan_ct}\",\"style\":239,\"decimalPlaces\":\"0\"},\"14\":{\"text\":\"#{laiyuan.richang_ct}\",\"style\":239,\"decimalPlaces\":\"0\"},\"15\":{\"text\":\"#{laiyuan.xiangmu_ct}\",\"style\":239,\"decimalPlaces\":\"0\"},\"16\":{\"text\":\"#{laiyuan.jichubokuan_ct}\",\"style\":239,\"decimalPlaces\":\"0\"},\"17\":{\"text\":\"=SUM(S7,T7)\",\"style\":239,\"decimalPlaces\":\"0\"},\"18\":{\"text\":\"#{laiyuan.xiangmu_sh}\",\"style\":239,\"decimalPlaces\":\"0\"},\"19\":{\"text\":\"#{laiyuan.jichubokuan_sh}\",\"style\":239,\"decimalPlaces\":\"0\"},\"20\":{\"style\":239,\"text\":\"=SUM(V7,X7)\",\"decimalPlaces\":\"0\"},\"21\":{\"style\":239,\"text\":\"#{laiyuan.diannao}\",\"decimalPlaces\":\"0\"},\"22\":{\"text\":\"#{laiyuan.diannao}\",\"style\":239,\"decimalPlaces\":\"0\"},\"23\":{\"style\":239,\"text\":\"#{laiyuan.xiaoyuanwang}\",\"decimalPlaces\":\"0\"},\"24\":{\"text\":\"#{laiyuan.xiaoyuanwang}\",\"style\":239,\"decimalPlaces\":\"0\"}},\"isDrag\":true},\Line truncated
INSERT INTO `jimu_report` VALUES ('1334457419857793024', '20201203192154', '超市各地区销售额', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":7,\"sci\":2,\"eri\":7,\"eci\":2,\"width\":85,\"height\":25},\"excel_config_id\":\"1334457419857793024\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"各地区商品销售额一栏表\",\"merge\":[0,18],\"style\":13}},\"height\":82},\"1\":{\"cells\":{\"1\":{\"text\":\"地区|类型|时间\",\"lineStart\":\"lefttop\",\"style\":56,\"merge\":[1,1],\"height\":50},\"3\":{\"text\":\"2020年\",\"style\":46,\"merge\":[0,12]},\"16\":{\"text\":\"2019年\",\"style\":46,\"merge\":[0,9]}}},\"2\":{\"cells\":{\"3\":{\"text\":\"12月\",\"style\":46},\"4\":{\"text\":\"11月\",\"style\":46},\"5\":{\"text\":\"10月\",\"style\":46},\"6\":{\"text\":\"9月\",\"style\":46},\"7\":{\"text\":\"8月\",\"style\":46},\"8\":{\"text\":\"7月\",\"style\":46},\"9\":{\"text\":\"6月\",\"style\":46},\"10\":{\"text\":\"5月\",\"style\":46},\"11\":{\"text\":\"4月\",\"style\":46},\"12\":{\"text\":\"3月\",\"style\":46},\"13\":{\"text\":\"2月\",\"style\":46},\"14\":{\"text\":\"1月\",\"style\":46},\"15\":{\"text\":\"本年小计\",\"style\":46},\"16\":{\"text\":\"12月\",\"style\":46},\"17\":{\"text\":\"11月\",\"style\":46},\"18\":{\"text\":\"10月\",\"style\":46},\"19\":{\"text\":\"9月\",\"style\":46},\"20\":{\"text\":\"8月\",\"style\":46},\"21\":{\"text\":\"7月\",\"style\":46},\"22\":{\"text\":\"6月\",\"style\":46},\"23\":{\"text\":\"5月\",\"style\":46},\"24\":{\"text\":\"4月\",\"style\":46},\"25\":{\"text\":\"本年小计\",\"style\":46}}},\"3\":{\"cells\":{\"1\":{\"text\":\"#{xiaoshou.group(diqu)}\",\"style\":51,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{xiaoshou.class}\",\"style\":51},\"3\":{\"text\":\"#{xiaoshou.sales_11}\",\"style\":21,\"decimalPlaces\":\"0\"},\"4\":{\"text\":\"#{xiaoshou.sales_12}\",\"style\":21,\"decimalPlaces\":\"0\"},\"5\":{\"text\":\"#{xiaoshou.sales_13}\",\"style\":21,\"decimalPlaces\":\"0\"},\"6\":{\"text\":\"#{xiaoshou.sales_14}\",\"style\":21,\"decimalPlaces\":\"0\"},\"7\":{\"text\":\"#{xiaoshou.sales_15}\",\"style\":21,\"decimalPlaces\":\"0\"},\"8\":{\"text\":\"#{xiaoshou.sales_16}\",\"style\":21,\"decimalPlaces\":\"0\"},\"9\":{\"text\":\"#{xiaoshou.sales_17}\",\"style\":21,\"decimalPlaces\":\"0\"},\"10\":{\"text\":\"#{xiaoshou.sales_18}\",\"style\":21,\"decimalPlaces\":\"0\"},\"11\":{\"text\":\"#{xiaoshou.sales_19}\",\"style\":21,\"decimalPlaces\":\"0\"},\"12\":{\"text\":\"#{xiaoshou.sales_20}\",\"style\":21,\"decimalPlaces\":\"0\"},\"13\":{\"text\":\"#{xiaoshou.sales_21}\",\"style\":21,\"decimalPlaces\":\"0\"},\"14\":{\"text\":\"#{xiaoshou.sales_22}\",\"style\":21,\"decimalPlaces\":\"0\"},\"15\":{\"style\":48,\"text\":\"=SUM(D4:O4)\",\"decimalPlaces\":\"0\"},\"16\":{\"text\":\"#{xiaoshou.sales_31}\",\"style\":21,\"decimalPlaces\":\"0\"},\"17\":{\"text\":\"#{xiaoshou.sales_32}\",\"style\":21,\"decimalPlaces\":\"0\"},\"18\":{\"text\":\"#{xiaoshou.sales_33}\",\"style\":21,\"decimalPlaces\":\"0\"},\"19\":{\"text\":\"#{xiaoshou.sales_34}\",\"style\":21,\"decimalPlaces\":\"0\"},\"20\":{\"text\":\"#{xiaoshou.sales_35}\",\"style\":21,\"decimalPlaces\":\"0\"},\"21\":{\"text\":\"#{xiaoshou.sales_36}\",\"style\":21,\"decimalPlaces\":\"0\"},\"22\":{\"text\":\"#{xiaoshou.sales_37}\",\"style\":21,\"decimalPlaces\":\"0\"},\"23\":{\"text\":\"#{xiaoshou.sales_38}\",\"style\":21,\"decimalPlaces\":\"0\"},\"24\":{\"text\":\"#{xiaoshou.sales_39}\",\"style\":21,\"decimalPlaces\":\"0\"},\"25\":{\"style\":48,\"text\":\"=SUM(Q4:Y4)\",\"decimalPlaces\":\"0\"}},\"isDrag\":true},\"4\":{\"cells\":{\"1\":{\"text\":\"合计\",\"style\":52,\"rendered\":\"\",\"merge\":[0,1]},\"3\":{\"text\":\"=SUM(D4)\",\"style\":55},\"4\":{\"text\":\"=SUM(E4)\",\"style\":55},\"5\":{\"text\":\"=SUM(F4)\",\"style\":55},\"6\":{\"text\":\"=SUM(G4)\",\"style\":55},\"7\":{\"text\":\"=SUM(H4)\",\"style\":55},\"8\":{\"text\":\"=SUM(I4)\",\"style\":55},\"9\":{\"text\":\"=SUM(J4)\",\"style\":55},\"10\":{\"text\":\"=SUM(K4)\",\"style\":55},\"11\":{\"text\":\"=SUM(L4)\",\"style\":55},\"12\":{\"text\":\"=SUM(M4)\",\"style\":55},\"13\":{\"text\":\"=SUM(N4)\",\"style\":55},\"14\":{\"text\":\"=SUM(O4)\",\"style\":55},\"15\":{\"text\":\"=SUM(P4)\",\"style\":55},\"16\":{\"text\":\"=SUM(Q4)\",\"style\":55},\"17\":{\"text\":\"=SUM(R4)\",\"style\":55},\"18\":{\"text\":\"=SUM(S4)\",\"style\":55},\"19\":{\"text\":\"=SUM(T4)\",\"style\":55},\"20\":{\"text\":\"=SUM(U4)\",\"style\":55},\"21\":{\"text\":\"=SUM(V4)\",\"style\":55},\"22\":{\"text\":\"=SUM(W4)\",\"style\":55},\"23\":{\"text\":\"=SUM(X4)\",\"style\":55},\"24\":{\"text\":\"=SUM(Y4)\",\"style\":55},\"25\":{\"text\":\"=SUM(Z4)\",\"style\":55}},\"isDrag\":true},\"len\":99},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},Line truncated
INSERT INTO `jimu_report` VALUES ('1334696790477377536', '20201204111149', '学校收入一览表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":11,\"sci\":4,\"eri\":11,\"eci\":4,\"width\":92,\"height\":25},\"excel_config_id\":\"1334696790477377536\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"学校收入一览表\",\"style\":25,\"merge\":[0,13]}},\"height\":71},\"1\":{\"cells\":{\"1\":{\"text\":\"校园信息\",\"merge\":[1,2],\"style\":40},\"4\":{\"text\":\"学生信息\",\"merge\":[1,2],\"style\":40},\"7\":{\"merge\":[1,5],\"style\":42,\"text\":\"收款信息\"},\"13\":{\"merge\":[0,11],\"text\":\"确认收入信息\",\"style\":43}},\"height\":23},\"2\":{\"cells\":{\"13\":{\"merge\":[0,3],\"text\":\"2020.09\",\"style\":46},\"17\":{\"merge\":[0,3],\"text\":\"2020.10\",\"style\":46},\"21\":{\"text\":\"合计\",\"style\":46,\"merge\":[0,3]}},\"height\":40},\"3\":{\"cells\":{\"1\":{\"text\":\"所属城际\",\"style\":50},\"2\":{\"text\":\"所属校园\",\"style\":50},\"3\":{\"text\":\"NC帐套\",\"style\":50},\"4\":{\"text\":\"学号\",\"style\":50},\"5\":{\"text\":\"姓名\",\"style\":50},\"6\":{\"text\":\"性质\",\"style\":50},\"7\":{\"text\":\"缴费金额\",\"style\":50},\"8\":{\"text\":\"缴费时间\",\"style\":50},\"9\":{\"text\":\"缴费性质\",\"style\":50},\"10\":{\"text\":\"缴费所属期间\",\"style\":50},\"11\":{\"text\":\"缴费月份数\",\"style\":50},\"12\":{\"text\":\"缴费方式\",\"style\":50},\"13\":{\"text\":\"全部\",\"style\":50},\"14\":{\"text\":\"学费\",\"style\":50},\"15\":{\"text\":\"餐费\",\"style\":50},\"16\":{\"text\":\"校车费\",\"style\":50},\"17\":{\"text\":\"全部\",\"style\":50},\"18\":{\"text\":\"学费\",\"style\":50},\"19\":{\"text\":\"餐费\",\"style\":50},\"20\":{\"text\":\"校车费\",\"style\":50},\"21\":{\"text\":\"全部\",\"style\":50},\"22\":{\"text\":\"学费\",\"style\":50},\"23\":{\"text\":\"餐费\",\"style\":50},\"24\":{\"text\":\"校车费\",\"style\":50}}},\"4\":{\"cells\":{\"1\":{\"text\":\"#{shouru.group(city)}\",\"style\":45,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{shouru.group(school)}\",\"style\":45,\"aggregate\":\"group\"},\"3\":{\"text\":\"#{shouru.ncnum}\",\"style\":35,\"aggregate\":\"select\"},\"4\":{\"text\":\"#{shouru.num}\",\"style\":35},\"5\":{\"text\":\"#{shouru.name}\",\"style\":35},\"6\":{\"text\":\"#{shouru.class}\",\"style\":35},\"7\":{\"text\":\"#{shouru.pay}\",\"style\":35},\"8\":{\"text\":\"#{shouru.paytime}\",\"style\":35},\"9\":{\"text\":\"#{shouru.payclass}\",\"style\":35},\"10\":{\"text\":\"#{shouru.pay1}\",\"style\":35},\"11\":{\"text\":\"#{shouru.paymoth}\",\"style\":35},\"12\":{\"text\":\"#{shouru.pay2}\",\"style\":35},\"13\":{\"style\":33,\"text\":\"=SUM(O5:Q5)\"},\"14\":{\"text\":\"#{shouru.tuition_09}\",\"style\":35},\"15\":{\"text\":\"#{shouru.meals_09}\",\"style\":35},\"16\":{\"text\":\"#{shouru.busfee_09}\",\"style\":35},\"17\":{\"style\":33,\"text\":\"=SUM(S5:U5)\"},\"18\":{\"text\":\"#{shouru.tuition_10}\",\"style\":35},\"19\":{\"text\":\"#{shouru.meals_10}\",\"style\":35},\"20\":{\"text\":\"#{shouru.busfee_10}\",\"style\":35},\"21\":{\"style\":68,\"text\":\"=SUM(W5,X5)\"},\"22\":{\"style\":35,\"text\":\"=SUM(O5,S5)\"},\"23\":{\"style\":35,\"text\":\"=SUM(P5,T5)\"},\"24\":{\"style\":35,\"text\":\"=SUM(Q5,U5)\"}},\"isDrag\":true,\"height\":35},\"5\":{\"cells\":{\"1\":{\"style\":15,\"text\":\"合计\",\"rendered\":\"\",\"merge\":[0,1]},\"3\":{\"style\":66,\"text\":\" \"},\"4\":{\"style\":66,\"text\":\" \"},\"5\":{\"style\":66,\"text\":\" \"},\"6\":{\"style\":66,\"text\":\" \"},\"7\":{\"style\":66,\"text\":\" \"},\"8\":{\"style\":66,\"text\":\" \"},\"9\":{\"style\":66,\"text\":\" \"},\"10\":{\"style\":66,\"text\":\" \"},\"11\":{\"style\":66,\"text\":\" \"},\"12\":{\"style\":66,\"text\":\" \"},\"13\":{\"style\":15,\"text\":\"=SUM(N5)\"},\"14\":{\"style\":66,\"text\":\" \"},\"15\":{\"style\":66,\"text\":\" \"},\"16\":{\"style\":66,\"text\":\" \"},\"17\":{\"style\":15,\"text\":\"=SUM(R5)\"},\"18\":{\"text\":\" \",\"style\":66},\"19\":{\"style\":66,\"text\":\" \"},\"20\":{\"style\":66,\"text\":\" \"},\"21\":{\"style\":15,\"text\":\"=SUM(V5)\"},\"22\":{\"style\":15,\"text\":\"=SUM(W5)\"},\"23\":{\"style\":15,\"text\":\"=SUM(X5)\"},\"24\":{\"style\":15,\"text\":\"=SUM(Y5)\"}}},\"16\":{\"cells\":{\"1\":{}}},\"17\":{\"cells\":{\"1\":{}}},\"len\":101},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"shouru.city\",\"freeze\":\"A1\",\"dataRectWidth\":1983,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\"},{\"bgcolor\":\"#ffffff\Line truncated
INSERT INTO `jimu_report` VALUES ('1334757703079301120', '20201204151358', '车间零件完工一览表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":8,\"sci\":11,\"eri\":8,\"eci\":11,\"width\":100,\"height\":25},\"excel_config_id\":\"1334757703079301120\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"车间零件完工一览表\",\"merge\":[0,12],\"style\":23}},\"height\":81},\"1\":{\"cells\":{\"1\":{\"text\":\"车间\",\"style\":22},\"2\":{\"text\":\"成品名称\",\"style\":22},\"3\":{\"text\":\"半成品名称\",\"style\":22},\"4\":{\"text\":\"完工时间\",\"style\":22},\"5\":{\"text\":\"状态\",\"style\":22},\"6\":{\"text\":\"成品属性\",\"style\":22},\"7\":{\"text\":\"工单号\",\"style\":22},\"8\":{\"text\":\"工单数量\",\"style\":22},\"9\":{\"text\":\"计划数量\",\"style\":22},\"10\":{\"text\":\"完成数量\",\"style\":22},\"11\":{\"text\":\"UPH\",\"style\":22},\"12\":{\"text\":\"H/C\",\"style\":22},\"13\":{\"text\":\"计划时间\",\"style\":22},\"14\":{\"text\":\"良率\",\"style\":22},\"15\":{\"text\":\"备注\",\"style\":22}},\"height\":55},\"2\":{\"cells\":{\"1\":{\"text\":\"#{chejian.group(city)}\",\"style\":16,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{chejian.finish}\",\"style\":14},\"3\":{\"text\":\"#{chejian.semifinish}\",\"style\":14},\"4\":{\"text\":\"#{chejian.time}\",\"style\":14},\"5\":{\"text\":\"#{chejian.state}\",\"style\":14},\"6\":{\"text\":\"#{chejian.attribute}\",\"style\":14},\"7\":{\"text\":\"#{chejian.num}\",\"style\":14},\"8\":{\"text\":\"#{chejian.gnum}\",\"style\":14},\"9\":{\"text\":\"#{chejian.jnum}\",\"style\":14},\"10\":{\"text\":\"#{chejian.wnum}\",\"style\":14},\"11\":{\"text\":\"#{chejian.uph}\",\"style\":24},\"12\":{\"text\":\"#{chejian.hc}\",\"style\":14},\"13\":{\"text\":\"#{chejian.jtime}\",\"style\":14},\"14\":{\"text\":\"#{chejian.yield}\",\"style\":14},\"15\":{\"text\":\"#{chejian.beizhu}\",\"style\":14}},\"isDrag\":true,\"height\":35},\"3\":{\"cells\":{\"11\":{\"text\":\"\"}}},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"groupField\":\"chejian.city\",\"freeze\":\"A1\",\"dataRectWidth\":1494,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#309fc6\"},{\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"font\":{\"bold\":true}},{\"font\":{\"bold\":true,\"size\":16}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9},\"align\":\"center\",\"bgcolor\":\"#\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9},\"align\":\"center\",\"bgcolor\":\"#b2ddec\"},{\"font\":{\"size\":8}},{\"align\":\"center\",\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":8},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8},\"align\":\"center\",\"bgcolor\":\"#b2ddec\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#309fc6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",Line truncated
INSERT INTO `jimu_report` VALUES ('1338370016550195200', '20201214142804', '条形码报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":7,\"eri\":5,\"eci\":7,\"width\":105,\"height\":145},\"excel_config_id\":\"1338370016550195200\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[1,6],\"text\":\"居民身份证申领登记表\",\"style\":39}},\"height\":73},\"1\":{\"cells\":{\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"height\":28},\"2\":{\"cells\":{\"0\":{\"text\":\"\",\"rendered\":\"\"},\"1\":{\"text\":\"受理单位(盖章)珠海市公安局\",\"merge\":[0,3],\"style\":36},\"5\":{\"text\":\" \"},\"6\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"normal\"},\"7\":{\"text\":\" \"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\"姓名\",\"style\":24},\"2\":{\"style\":7,\"rendered\":\"\",\"text\":\"${tm.name}\"},\"3\":{\"text\":\"性别\",\"style\":16},\"4\":{\"style\":7,\"text\":\"${tm.sex}\"},\"5\":{\"text\":\"民族\",\"style\":16},\"6\":{\"style\":7,\"text\":\"${tm.nation}\"},\"7\":{\"text\":\"${tm.tp}\",\"style\":7,\"rendered\":\"h45oR9LiU0yMyTha\",\"display\":\"img\",\"merge\":[2,0],\"height\":145},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":47},\"4\":{\"cells\":{\"1\":{\"text\":\"出生日期\",\"style\":24},\"2\":{\"style\":32,\"merge\":[0,4],\"text\":\"${tm.birth}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"normal\"},\"10\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":47},\"5\":{\"cells\":{\"1\":{\"text\":\"常住户口所在地住址\",\"style\":21},\"2\":{\"style\":7,\"merge\":[0,4],\"text\":\"${tm.zhuzhi}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\",\"display\":\"normal\"},\"10\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":51},\"6\":{\"cells\":{\"1\":{\"text\":\"公民身份证\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,5],\"text\":\"${tm.card}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"10\":{\"text\":\"\",\"rendered\":\"\"}},\"isDrag\":true,\"height\":49},\"7\":{\"cells\":{\"1\":{\"text\":\"有限期限\",\"style\":24},\"2\":{\"style\":34,\"merge\":[0,1],\"text\":\"${tm.ydate}\"},\"4\":{\"text\":\"签发机关\",\"style\":24},\"5\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.qfjg}\"},\"9\":{\"text\":\"\",\"rendered\":\"\"},\"10\":{\"text\":\"\",\"rendered\":\"\"}},\"isDrag\":true,\"height\":50},\"8\":{\"cells\":{\"1\":{\"text\":\"申领原因\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,5],\"text\":\"${tm.slyy}\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\",\"rendered\":\"\"},\"10\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":55},\"9\":{\"cells\":{\"1\":{\"text\":\"受理时间\",\"style\":24},\"2\":{\"style\":32,\"merge\":[0,1],\"text\":\"${tm.sdate}\"},\"4\":{\"text\":\"受理号\",\"style\":24},\"5\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.shao}\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":49},\"10\":{\"cells\":{\"1\":{\"text\":\"承办人\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,1],\"text\":\"${tm.cbr}\"},\"4\":{\"text\":\"受理单位领导\",\"style\":24},\"5\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.sld}\"},\"11\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"normal\"}},\"isDrag\":true,\"height\":42},\"11\":{\"cells\":{\"1\":{\"text\":\"申请(监护)人签名\",\"style\":21},\"2\":{\"style\":7,\"merge\":[0,1],\"text\":\"${tm.sr}\"},\"4\":{\"text\":\"申请(监护)人联系电话\",\"style\":21},\"5\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.jphone}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"11\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":59},\"12\":{\"cells\":{\"1\":{\"text\":\"领证人签名\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,1],\"text\":\"${tm.lzr}\"},\"4\":{\"text\":\"领证时间\",\"style\":24},\"5\":{\"style\":32,\"merge\":[0,2],\"text\":\"${tm.ldate}\"},\"11\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":57},\"13\":{\"cells\":{\"1\":{\"text\":\"是否通过邮政特快专递方式领取二代\",\"merge\":[0,1],\"style\":24},\"3\":{\"style\":7,\"merge\":[0,4],\"text\":\"${tm.sk}\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}},\"isDrag\":true,\"height\":50},\"14\":{\"cells\":{\"1\":{\"text\":\"投递地址\",\"style\":24},\"2\":{\"style\":7,\"merge\":[0,2],\"text\":\"${tm.dizhi}\"},\"5\Line truncated
INSERT INTO `jimu_report` VALUES ('1338744112815411200', '20201215151426', '简单条件查询报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1302,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":40},\"1\":{\"width\":107},\"2\":{\"width\":143},\"3\":{\"width\":106},\"4\":{\"width\":80},\"5\":{\"width\":85},\"6\":{\"width\":118},\"7\":{\"width\":120},\"8\":{\"width\":164},\"9\":{\"width\":139},\"len\":50},\"area\":false,\"excel_config_id\":\"1338744112815411200\",\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"1\":{\"text\":\"职务\",\"style\":92},\"2\":{\"text\":\"雇员ID\",\"style\":92},\"3\":{\"text\":\"姓名\",\"style\":92},\"4\":{\"text\":\"性别\",\"style\":92},\"5\":{\"style\":92,\"text\":\"年龄\"},\"6\":{\"text\":\"雇佣日期\",\"style\":92},\"7\":{\"text\":\"家庭电话\",\"style\":92},\"8\":{\"text\":\"出生日期\",\"style\":92},\"9\":{\"text\":\"户口所在地\",\"style\":92},\"10\":{\"text\":\"联系地址\",\"style\":92},\"11\":{\"text\":\"紧急联系人\",\"style\":92}},\"height\":43},\"2\":{\"cells\":{\"1\":{\"style\":21,\"text\":\"#{pop.group(update_by)}\",\"aggregate\":\"group\"},\"2\":{\"style\":21,\"text\":\"#{pop.id}\"},\"3\":{\"style\":21,\"text\":\"#{pop.name}\"},\"4\":{\"style\":21,\"text\":\"#{pop.sex}\"},\"5\":{\"style\":21,\"text\":\"#{pop.age}\"},\"6\":{\"style\":24,\"text\":\"#{pop.gtime}\",\"rendered\":\"\"},\"7\":{\"style\":21,\"text\":\"#{pop.jphone}\"},\"8\":{\"style\":24,\"text\":\"#{pop.birth}\"},\"9\":{\"style\":21,\"text\":\"#{pop.hukou}\"},\"10\":{\"style\":21,\"text\":\"#{pop.laddress}\"},\"11\":{\"style\":21,\"text\":\"#{pop.jperson}\"}},\"height\":34},\"3\":{\"cells\":{}},\"4\":{\"cells\":{\"4\":{\"text\":\"\"}}},\"5\":{\"cells\":{\"1\":{\"style\":95,\"text\":\"备注:\"},\"2\":{\"style\":96,\"text\":\" \"},\"3\":{\"style\":96,\"text\":\" \"},\"4\":{\"style\":96,\"text\":\" \"},\"5\":{\"style\":97,\"text\":\" \"},\"6\":{\"style\":96,\"text\":\" \"},\"7\":{\"style\":98,\"text\":\" \"}}},\"6\":{\"cells\":{\"1\":{\"style\":99,\"text\":\"1、支持模糊查询,需要输入 “*+字符串”或 “字符串+* ”或“*+字符串+*”,如:张* / *丽 / *亚*;\",\"merge\":[0,6]}}},\"7\":{\"cells\":{\"1\":{\"style\":99,\"text\":\"2、以上“出生日期”为时间类型;\",\"merge\":[0,6]}}},\"8\":{\"cells\":{\"1\":{\"style\":99,\"text\":\"3、以上“雇佣日期”为日期类型\",\"merge\":[0,6]}}},\"9\":{\"cells\":{\"1\":{\"text\":\"4、以上“姓名”为字符串类型,支持精准查询和模糊查询;\",\"style\":100,\"merge\":[0,6]}}},\"10\":{\"cells\":{\"1\":{\"text\":\"5、以上\\\"年龄\\\"为数字类型,支持精准查询和范围查询;\",\"style\":101,\"merge\":[0,6]}}},\"len\":100,\"\":{\"cells\":{\"NaN\":{\"text\":\"\",\"rendered\":\"\"}}}},\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":Line truncated
INSERT INTO `jimu_report` VALUES ('1338769064067076098', '202012151514266124', '多选条件查询报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"1338769064067076098\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{}},\"1\":{\"cells\":{\"1\":{\"text\":\"职务\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"雇佣日期\",\"style\":51},\"6\":{\"text\":\"家庭电话\",\"style\":51},\"7\":{\"text\":\"出生日期\",\"style\":51},\"8\":{\"text\":\"户口所在地\",\"style\":51},\"9\":{\"text\":\"联系地址\",\"style\":51},\"10\":{\"text\":\"紧急联系人\",\"style\":51}},\"height\":46},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{pop.group(id)}\",\"style\":54,\"aggregate\":\"group\"},\"3\":{\"text\":\"#{pop.group(name)}\",\"style\":54,\"aggregate\":\"group\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.gtime}\",\"style\":56},\"6\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"7\":{\"text\":\"#{pop.birth}\",\"style\":56},\"8\":{\"text\":\"#{pop.hukou}\",\"style\":58},\"9\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"10\":{\"text\":\"#{pop.jperson}\",\"style\":57}},\"isDrag\":true,\"height\":35},\"5\":{\"cells\":{\"2\":{\"text\":\"\"}},\"isDrag\":true},\"len\":99},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"freeze\":\"A1\",\"dataRectWidth\":1560,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9},\"align\":\"left\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bLine truncated
INSERT INTO `jimu_report` VALUES ('1339478701846433792', '20201217155313', '企业实时报表', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":5,\"col\":12,\"colspan\":0,\"rowspan\":0,\"width\":\"244\",\"height\":\"128\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"合肥\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":false,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"销售额\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":false,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"grid\\\":{\\\"top\\\":10,\\\"left\\\":49,\\\"bottom\\\":16,\\\"right\\\":45},\\\"series\\\":[{\\\"barWidth\\\":9,\\\"data\\\":[800],\\\"name\\\":\\\"销售额\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"rgba(146,119,252,1)\\\"},\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"right\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#689AFB\\\",\\\"fontSize\\\":\\\"10\\\",\\\"fontWeight\\\":\\\"normal\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[],\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":5,\\\"text\\\":\\\"销售额城市排名\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"0\",\"dataId\":\"1339495346077728770\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"chengshi\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTiming\":true,\"intervalTime\":\"5\",\"chartType\":\"bar.multi.horizontal\"},\"layer_id\":\"qQHpevWlqElpRQUl\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[5,12],[5,13],[5,14]]},{\"row\":6,\"col\":1,\"colspan\":0,\"rowspan\":0,\"width\":\"302\",\"height\":\"337\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"江苏\\\",\\\"山东\\\",\\\"安徽\\\",\\\"江西\\\",\\\"河北\\\",\\\"吉林\\\",\\\"黑龙江\\\",\\\"重庆\\\",\\\"广东\\\",\\\"上海\\\",\\\"哈尔滨\\\",\\\"福建\\\",\\\"四川\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":false,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"legend\\\":{\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"销售额\\\"],\\\"top\\\":\\\"top\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"left\\\":\\\"center\\\",\\\"show\\\":false,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"grid\\\":{\\\"top\\\":20,\\\"left\\\":45,\\\"bottom\\\":16,\\\"right\\\":46},\\\"series\\\":[{\\\"barWidth\\\":13,\\\"data\\\":[100,800,1200,1700,2500,4000,5800,6500,7000,7500,8000,8800,9500],\\\"name\\\":\\\"销售额\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":5,\\\"color\\\":\\\"rgba(67,184,251,1)\\\"},\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"right\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#689AFB\\\",\\\"fontSize\\\":\\\"10\\\",\\\"fontWeight\\\":\\\"normal\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"typeData\\\":[],\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\"Line truncated
INSERT INTO `jimu_report` VALUES ('1339859143477039104', '20201218170625', '全国连锁超市会员分析', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":5,\"colspan\":6,\"rowspan\":13,\"width\":\"499\",\"height\":\"344\",\"config\":\"{\\\"geo\\\":{\\\"map\\\":100000,\\\"mapCode\\\":[100000],\\\"mapName\\\":\\\"中华人民共和国\\\",\\\"mapLevel\\\":\\\"0\\\",\\\"mapType\\\":\\\"0\\\",\\\"zoom\\\":0.5,\\\"label\\\":{\\\"color\\\":\\\"#ffffff\\\",\\\"fontSize\\\":\\\"8\\\",\\\"show\\\":true},\\\"itemStyle\\\":{\\\"borderWidth\\\":0.5,\\\"areaColor\\\":\\\"rgba(4,140,156,1)\\\",\\\"borderColor\\\":\\\"#000\\\"},\\\"emphasis\\\":{\\\"label\\\":{\\\"color\\\":\\\"rgba(255,255,255,1)\\\"},\\\"itemStyle\\\":{\\\"areaColor\\\":\\\"rgba(5,106,112,1)\\\"}},\\\"regions\\\":[],\\\"layoutSize\\\":600,\\\"roam\\\":true,\\\"layoutCenter\\\":[\\\"50%\\\",\\\"50%\\\"]},\\\"series\\\":[{\\\"encode\\\":{\\\"value\\\":[2]},\\\"data\\\":[{\\\"name\\\":\\\"北京\\\",\\\"value\\\":[116.405285,39.904989,\\\"6500\\\"]},{\\\"name\\\":\\\"河北\\\",\\\"value\\\":[114.502461,38.045474,\\\"3500\\\"]},{\\\"name\\\":\\\"天津\\\",\\\"value\\\":[117.190182,39.125596,\\\"3000\\\"]},{\\\"name\\\":\\\"山东\\\",\\\"value\\\":[117.000923,36.675807,\\\"2500\\\"]},{\\\"name\\\":\\\"福建\\\",\\\"value\\\":[119.306239,26.075302,\\\"6500\\\"]},{\\\"name\\\":\\\"上海\\\",\\\"value\\\":[121.472644,31.231706,\\\"7500\\\"]}],\\\"name\\\":\\\"value\\\",\\\"emphasis\\\":{\\\"label\\\":{\\\"show\\\":true}},\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(255,135,11,1)\\\"},\\\"coordinateSystem\\\":\\\"geo\\\",\\\"label\\\":{\\\"formatter\\\":\\\"{b}\\\",\\\"show\\\":false,\\\"position\\\":\\\"right\\\"},\\\"type\\\":\\\"scatter\\\",\\\"symbolSize\\\":6}],\\\"chartType\\\":\\\"map\\\",\\\"tooltip\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"show\\\":true},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":5,\\\"text\\\":\\\"全国省份分布\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#0B0B0B\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":\\\"13\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"sql\",\"apiStatus\":\"\",\"apiUrl\":\"\",\"dataId\":\"c73e1f3325b926081641d918921d2bcd\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"\",\"yText\":\"value\",\"xText\":\"name\",\"dbCode\":\"ditu\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTiming\":true,\"intervalTime\":\"5\",\"chartType\":\"map.scatter\",\"id\":\"\"},\"layer_id\":\"7iI8sg3C12WgjU7y\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,5],[1,6],[1,7],[1,8],[1,9]]},{\"row\":1,\"col\":10,\"colspan\":3,\"rowspan\":13,\"width\":\"296\",\"height\":\"344\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"8\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"8\\\"}},\\\"data\\\":[\\\"顾客\\\",\\\"二星\\\",\\\"一星\\\",\\\"明星\\\",\\\"总监\\\",\\\"三星\\\",\\\"大使\\\",\\\"高级\\\",\\\"金鹰\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":59,\\\"left\\\":43,\\\"bottom\\\":48,\\\"right\\\":32},\\\"series\\\":[{\\\"barWidth\\\":10,\\\"data\\\":[394,515,334,150,54,50,17,7,2],\\\"name\\\":\\\"value\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#208ae9\\\"},\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":\\\"10\\\",\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":10,\\\"text\\\":\\\"不同荣衔等级会员数量\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#000000\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":\\\"13\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"sql\",\"apiStatus\":\"0\",\"apiUrl\":\"\",\"dataId\":\"1339870475496497153\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"value\",\"xText\":\"name\",\"dbCode\":\"pp\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTLine truncated
INSERT INTO `jimu_report` VALUES ('1347373863746539520', '20210108104603', '实习证明', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":16,\"sci\":5,\"eri\":16,\"eci\":5,\"width\":147,\"height\":25},\"excel_config_id\":\"1347373863746539520\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\"},\"1\":{\"text\":\"\"}}},\"1\":{\"cells\":{\"0\":{\"text\":\"\"}}},\"3\":{\"cells\":{\"2\":{\"text\":\"\",\"rendered\":\"\"}}},\"5\":{\"cells\":{},\"height\":29},\"6\":{\"cells\":{\"2\":{\"text\":\"\",\"style\":2}},\"height\":34},\"7\":{\"cells\":{\"2\":{\"merge\":[0,4],\"text\":\"实习证明\",\"style\":2}},\"height\":41},\"8\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":3},\"2\":{\"text\":\"\"}}},\"9\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":3},\"2\":{\"text\":\"\",\"style\":3},\"3\":{\"text\":\"\"}},\"isDrag\":true,\"height\":33},\"10\":{\"cells\":{\"2\":{\"text\":\"${tt.name}\",\"style\":11},\"3\":{\"text\":\"同学在我公司与 2020年4月1日 至 2020年5月1日 实习。\",\"style\":19,\"merge\":[0,3],\"height\":34}},\"height\":34},\"11\":{\"cells\":{},\"height\":28},\"12\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":6},\"2\":{\"style\":13,\"text\":\"${tt.pingjia}\",\"merge\":[3,4],\"height\":129}},\"height\":36},\"13\":{\"cells\":{},\"height\":29},\"14\":{\"cells\":{},\"height\":33},\"15\":{\"cells\":{},\"height\":31},\"16\":{\"cells\":{}},\"17\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"特此证明!\",\"style\":12}}},\"20\":{\"cells\":{\"2\":{\"text\":\"\"},\"3\":{\"text\":\"\",\"style\":3},\"4\":{\"text\":\"\"}}},\"21\":{\"cells\":{\"4\":{\"text\":\"\"}}},\"22\":{\"cells\":{\"3\":{\"text\":\"\",\"style\":3},\"4\":{\"text\":\"证明人:\",\"style\":11},\"5\":{\"text\":\"${tt.lingdao}\",\"style\":12}}},\"23\":{\"cells\":{\"4\":{\"text\":\"\"},\"5\":{\"text\":\"${tt.shijian}\",\"style\":15}}},\"len\":100},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":576,\"displayConfig\":{},\"background\":{\"path\":\"https://static.jeecg.com/designreport/images/11_1611283832037.png\",\"repeat\":\"no-repeat\",\"width\":\"\",\"height\":\"\"},\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"font\":{\"size\":14}},{\"align\":\"center\",\"font\":{\"size\":16}},{\"align\":\"right\"},{\"align\":\"left\"},{\"align\":\"left\",\"valign\":\"top\"},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":true},{\"font\":{\"size\":16}},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":false},{\"textwrap\":false},{\"textwrap\":true},{\"align\":\"right\",\"font\":{\"size\":12}},{\"font\":{\"size\":12}},{\"align\":\"left\",\"valign\":\"top\",\"textwrap\":true,\"font\":{\"size\":12}},{\"textwrap\":true,\"font\":{\"size\":12}},{\"align\":\"left\",\"font\":{\"size\":12}},{\"font\":{\"size\":12},\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"size\":14}},{\"font\":{\"size\":10}},{\"textwrap\":false,\"font\":{\"size\":12}}],\"validations\":[],\"cols\":{\"0\":{\"width\":69},\"1\":{\"width\":41},\"4\":{\"width\":119},\"5\":{\"width\":147},\"6\":{\"width\":31},\"len\":50},\"merges\":[\"C8:G8\",\"D11:G11\",\"C13:G16\"]}', NULL, 'https://static.jeecg.com/designreport/images/未标题-1_1610074948259.png', 'admin', '2021-01-08 10:46:04', 'ohbaK6VQpkyqEV2FJss0ZtzWCT3w', '2021-08-04 18:06:29', 0, NULL, NULL, 1, 722, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('1350035590569136128', '20210115190242', '简单明细表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[{\"sci\":1,\"sri\":2,\"eci\":7,\"eri\":5,\"index\":1,\"db\":\"uiu\"}],\"area\":{\"sri\":2,\"sci\":2,\"eri\":2,\"eci\":3,\"width\":177,\"height\":42},\"excel_config_id\":\"1350035590569136128\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"1\":{\"cells\":{\"1\":{\"text\":\"员工信息明细表\",\"merge\":[0,5],\"style\":32},\"9\":{\"text\":\"\"}},\"height\":64},\"2\":{\"cells\":{\"1\":{\"text\":\"姓名:\",\"style\":28,\"loopBlock\":1,\"rendered\":\"\",\"config\":\"\"},\"2\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.name}\"},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"所在部门:\",\"style\":29,\"loopBlock\":1},\"5\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.department}\",\"rendered\":\"\",\"config\":\"\"},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"merge\":[2,0],\"height\":75,\"rendered\":\"emtfhoFfcAJTOI4v\",\"config\":\"11\",\"style\":9,\"text\":\"#{uiu.tm}\",\"display\":\"qrcode\",\"loopBlock\":1},\"9\":{\"text\":\"\"},\"10\":{\"text\":\"\"},\"11\":{\"text\":\"\"}},\"height\":42},\"3\":{\"cells\":{\"1\":{\"text\":\"年龄:\",\"style\":28,\"loopBlock\":1},\"2\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.age}\"},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"学历:\",\"style\":29,\"loopBlock\":1},\"5\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.education}\"},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"text\":\"\",\"loopBlock\":1},\"9\":{\"text\":\"\"},\"10\":{\"text\":\"\"},\"15\":{\"text\":\"\"}},\"height\":35},\"4\":{\"cells\":{\"1\":{\"text\":\"性别:\",\"style\":28,\"loopBlock\":1},\"2\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.sex}\"},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"薪水:\",\"style\":29,\"loopBlock\":1},\"5\":{\"style\":30,\"merge\":[0,1],\"loopBlock\":1,\"text\":\"#{uiu.salary}\"},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"text\":\"\",\"loopBlock\":1},\"9\":{\"text\":\"\"},\"10\":{\"text\":\"\"},\"12\":{\"text\":\"\"}},\"height\":35},\"5\":{\"cells\":{\"1\":{\"text\":\"\",\"loopBlock\":1},\"2\":{\"text\":\"\",\"loopBlock\":1},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"\",\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"text\":\"\",\"loopBlock\":1},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"9\":{\"text\":\"\"}},\"height\":17},\"6\":{\"cells\":{\"11\":{\"text\":\"\"}}},\"7\":{\"cells\":{\"7\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"10\":{\"text\":\"\"}}},\"8\":{\"cells\":{\"6\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"7\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"},\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"10\":{\"cells\":{\"7\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"13\":{\"cells\":{\"8\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"freeze\":\"A1\",\"dataRectWidth\":688,\"displayConfig\":{\"1\":{\"text\":\"#{uiu.tm}\",\"width\":112,\"height\":112,\"colorDark\":\"#000000\",\"colorLight\":\"#ffffff\"},\"11\":{\"text\":\"#{uiu.tm}\",\"width\":117,\"height\":117,\"colorDark\":\"#000000\",\"colorLight\":\"#ffffff\"},\"111\":{\"barcodeContent\":\"dsad\",\"format\":\"CODE128\",\"width\":\"6\",\"height\":39,\"displayValue\":false,\"text\":\"jmreport\",\"fontOptions\":\"\",\"font\":\"monospace\",\"textAlign\":\"center\",\"textPosition\":\"bottom\",\"textMargin\":2,\"fontSize\":20,\"background\":\"#fff\",\"lineColor\":\"#000\",\"margin\":10,\"containerWidth\":100,\"containerHeight\":39}},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"name\":\"宋体\"}},{\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"font\":{\"name\":\"宋体\",\"size\":8}},{\"font\":{\"name\":\"宋体\",\"size\":8},\"color\":\"#000100\"},{\"font\":{\"name\":\"宋体\",\"size\":10}},{\"font\":{\"name\":\"宋体\",\"size\":12}},{\"font\":{\"name\":\"宋体\",\"size\":11}},{\"font\":{\"name\":\"宋体\",\"size\":10},\"color\":\"#000100\"},{\"font\":{\"name\":\"宋体\",\"size\":10},\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"name\":\"宋体\",\"size\":10},\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\"Line truncated
INSERT INTO `jimu_report` VALUES ('1351426064915763200', '20210119150810', '循环表头交叉分组报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":2,\"sci\":1,\"eri\":3,\"eci\":2,\"width\":171,\"height\":56},\"excel_config_id\":\"1351426064915763200\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"1\":{\"merge\":[0,5],\"text\":\"各个城市销售表\",\"style\":2}},\"height\":57},\"2\":{\"cells\":{\"1\":{\"text\":\"区域|售额额|时间\",\"lineStart\":\"lefttop\",\"rendered\":\"\",\"style\":43,\"merge\":[1,1],\"height\":56},\"3\":{\"text\":\"#{tt.groupRight(moth)}\",\"merge\":[0,3],\"aggregate\":\"group\",\"direction\":\"right\",\"style\":56}},\"height\":22},\"3\":{\"cells\":{\"3\":{\"text\":\"销售额\",\"style\":28},\"4\":{\"text\":\"捐赠\",\"style\":28},\"5\":{\"text\":\"比例\",\"style\":28},\"6\":{\"style\":28,\"text\":\"小计\"}},\"height\":34},\"4\":{\"cells\":{\"1\":{\"style\":34,\"text\":\"#{tt.group(region)}\",\"aggregate\":\"group\",\"rendered\":\"\"},\"2\":{\"text\":\"#{tt.group(province)}\",\"aggregate\":\"group\",\"style\":33},\"3\":{\"style\":57,\"text\":\"#{tt.dynamic(sales_1)}\",\"aggregate\":\"dynamic\",\"decimalPlaces\":\"0\"},\"4\":{\"style\":57,\"text\":\"#{tt.dynamic(gift_1)}\",\"aggregate\":\"dynamic\",\"decimalPlaces\":\"0\"},\"5\":{\"style\":32,\"text\":\"#{tt.dynamic(proportion_1)}\",\"aggregate\":\"dynamic\"},\"6\":{\"style\":57,\"text\":\"#{tt.dynamic(sales_1+gift_1)}\",\"aggregate\":\"dynamic\",\"rendered\":\"\",\"decimalPlaces\":\"0\"}},\"height\":37},\"5\":{\"cells\":{\"1\":{\"style\":47,\"text\":\"合计\",\"merge\":[0,1],\"height\":0},\"3\":{\"style\":48,\"text\":\"=SUM(D5)\"},\"4\":{\"style\":48,\"text\":\"=SUM(E5)\"},\"5\":{\"style\":48,\"text\":\" \"},\"6\":{\"style\":48,\"text\":\"=SUM(G5)\"},\"8\":{\"text\":\"\"}}},\"6\":{\"cells\":{\"6\":{\"text\":\"\",\"rendered\":\"\"},\"8\":{\"text\":\"\",\"rendered\":\"\"}}},\"7\":{\"cells\":{}},\"8\":{\"cells\":{\"1\":{\"text\":\"\",\"aggregate\":\"dynamic\"},\"2\":{\"text\":\"\"}}},\"9\":{\"cells\":{\"1\":{\"text\":\"\",\"aggregate\":\"dynamic\"},\"2\":{\"text\":\"\"},\"3\":{\"text\":\"\"},\"4\":{\"text\":\"\",\"rendered\":\"\",\"display\":\"normal\"},\"5\":{\"text\":\"\",\"rendered\":\"\"}}},\"10\":{\"cells\":{\"1\":{\"text\":\"\",\"aggregate\":\"dynamic\"},\"5\":{\"text\":\"\",\"rendered\":\"\"}}},\"11\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"\"},\"4\":{\"text\":\"\",\"rendered\":\"\"}}},\"12\":{\"cells\":{\"1\":{\"text\":\"\"},\"5\":{}}},\"13\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"\"}}},\"14\":{\"cells\":{\"2\":{\"text\":\"\"}}},\"16\":{\"cells\":{\"1\":{\"text\":\"\"}}},\"17\":{\"cells\":{\"1\":{\"text\":\"\",\"aggregate\":\"dynamic\"}}},\"len\":96},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"tt.region\",\"freeze\":\"A1\",\"dataRectWidth\":505,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"size\":14}},{\"font\":{\"size\":14,\"bold\":true}},{\"font\":{\"size\":14,\"bold\":true},\"align\":\"center\"},{\"align\":\"center\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#02a274\"},{\"bgcolor\":\"#02a274\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#02a274\"},{\"bgcolor\":\"#02a274\",\"align\":\"center\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#02a274\",\"align\":\"center\",\"color\":\"#ffffff\"},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\"},{\"align\":\"left\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#f1f9f6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#ddefe8\"},{Line truncated
INSERT INTO `jimu_report` VALUES ('1351736257377603584', '20210120114031', 'API查询条件报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"printElWidth\":718,\"excel_config_id\":\"1351736257377603584\",\"printElHeight\":1047,\"rows\":{\"1\":{\"cells\":{\"1\":{\"text\":\"销售单\",\"merge\":[0,6],\"style\":8,\"decimalPlaces\":\"4\"},\"2\":{\"style\":8},\"3\":{\"style\":8},\"4\":{\"style\":8},\"5\":{\"style\":8},\"6\":{\"style\":8},\"7\":{\"style\":8},\"8\":{\"style\":5},\"9\":{\"style\":5},\"10\":{\"style\":5},\"11\":{\"style\":5},\"12\":{\"style\":5},\"13\":{\"style\":5},\"14\":{\"style\":5},\"15\":{\"style\":5},\"16\":{\"style\":5},\"17\":{\"style\":5},\"18\":{\"style\":5},\"19\":{\"style\":5},\"20\":{\"style\":5},\"21\":{\"style\":5},\"22\":{\"style\":5},\"23\":{\"style\":5},\"24\":{\"style\":5},\"25\":{\"style\":5}},\"height\":68},\"2\":{\"cells\":{\"1\":{\"text\":\"商品编码\",\"style\":15},\"2\":{\"text\":\"商品名称\",\"style\":15},\"3\":{\"text\":\"销售时间\",\"style\":15},\"4\":{\"text\":\"销售数据量\",\"style\":15},\"5\":{\"text\":\"定价\",\"style\":15},\"6\":{\"text\":\"优惠价\",\"style\":15},\"7\":{\"text\":\"付款金额\",\"style\":15},\"8\":{\"style\":5},\"9\":{\"style\":5},\"10\":{\"style\":5},\"11\":{\"style\":5},\"12\":{\"style\":5},\"13\":{\"style\":5},\"14\":{\"style\":5},\"15\":{\"style\":5},\"16\":{\"style\":5},\"17\":{\"style\":5},\"18\":{\"style\":5},\"19\":{\"style\":5},\"20\":{\"style\":5},\"21\":{\"style\":5},\"22\":{\"style\":5},\"23\":{\"style\":5},\"24\":{\"style\":5},\"25\":{\"style\":5}},\"height\":42},\"3\":{\"cells\":{\"1\":{\"style\":18,\"text\":\"#{xb.id}\"},\"2\":{\"style\":18,\"text\":\"#{xb.cname}\"},\"3\":{\"style\":18,\"text\":\"#{xb.riqi}\"},\"4\":{\"style\":18,\"text\":\"#{xb.dtotal}\"},\"5\":{\"style\":19,\"text\":\"#{xb.cprice}\",\"decimalPlaces\":\"4\"},\"6\":{\"style\":19,\"text\":\"#{xb.cprice}\",\"decimalPlaces\":\"1\"},\"7\":{\"style\":18,\"text\":\"#{xb.tp}\"},\"8\":{\"text\":\"\"}}},\"6\":{\"cells\":{\"2\":{\"text\":\"\"}}},\"7\":{\"cells\":{\"5\":{\"style\":17,\"text\":\" \"}}},\"8\":{\"cells\":{\"2\":{\"text\":\"\"}}},\"len\":98,\"-1\":{\"cells\":{\"-1\":{\"text\":\"#{xb.username}\"}}}},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":692,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"font\":{\"size\":18}},{\"font\":{\"size\":18,\"bold\":true}},{\"align\":\"center\"},{\"font\":{\"size\":18,\"bold\":true},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"font\":{\"size\":18,\"bold\":true,\"name\":\"宋体\"},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"}},{\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"},\"color\":\"#ffffff\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"},\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"},\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"align\":\"center\"},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"align\":\"center\",\"format\":\"number\"},{\"font\":{\"name\":\"宋体\"},\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\Line truncated
INSERT INTO `jimu_report` VALUES ('1354358750907076608', '20210127172112', '多级循环表头报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":306,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":36},\"1\":{\"width\":87},\"2\":{\"width\":80},\"3\":{\"width\":103},\"len\":50},\"area\":{\"sri\":1,\"sci\":3,\"eri\":1,\"eci\":3,\"width\":103,\"height\":40},\"excel_config_id\":\"1354358750907076608\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\",\"rendered\":\"\"},\"1\":{\"text\":\"各地区商品销售额一栏表\",\"merge\":[0,2],\"style\":6}},\"height\":83},\"1\":{\"cells\":{\"1\":{\"text\":\"地区|销量|时间\",\"style\":2,\"lineStart\":\"lefttop\",\"rendered\":\"\",\"merge\":[1,1],\"height\":74},\"3\":{\"style\":30,\"text\":\"#{xs.groupRight(year)}年\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":40},\"2\":{\"cells\":{\"3\":{\"style\":8,\"text\":\"#{xs.groupRight(mouth)}\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\"#{xs.group(diqu)}\",\"style\":28,\"aggregate\":\"group\"},\"2\":{\"style\":28,\"text\":\"#{xs.group(class)}\",\"aggregate\":\"group\"},\"3\":{\"style\":29,\"text\":\"#{xs.dynamic(sales)}\",\"aggregate\":\"dynamic\",\"rendered\":\"\",\"decimalPlaces\":\"0\"}},\"height\":38},\"4\":{\"cells\":{\"1\":{\"style\":24,\"text\":\"总计\",\"merge\":[0,1]},\"3\":{\"style\":25,\"text\":\"=SUM(D4)\"}},\"height\":37},\"8\":{\"cells\":{\"1\":{}}},\"10\":{\"cells\":{\"1\":{}}},\"len\":100},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"xs.diqu\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"font\":{\"size\":16}},{\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"size\":16,\"bold\":true},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#fe0000\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"color\":\"#fe0000\"},{\"color\":\"#ffffff\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"border\":{\"bottom\":Line truncated
INSERT INTO `jimu_report` VALUES ('1356492523694067712', '20210202144134', '基本图形示例', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"row\":1,\"col\":1,\"colspan\":5,\"rowspan\":8,\"width\":\"478\",\"height\":\"247\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type \\\":\\\"value\\\"},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"rotate\\\":0,\\\"interval\\\":0},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"data\\\":[\\\"周一\\\",\\\"周二\\\",\\\"周三\\\",\\\"周四\\\",\\\"周五\\\",\\\"周六\\\",\\\"周日\\\"],\\\"show\\\":true,\\\"type\\\":\\\"category\\\"},\\\"legend\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"top\\\":\\\"top\\\",\\\"left\\\":\\\"right\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"直接访问\\\",\\\"邮件营销\\\",\\\"联盟广告\\\"],\\\"show\\\":true},\\\"grid\\\":{\\\"top\\\":50,\\\"left\\\":38,\\\"bottom\\\":33,\\\"right\\\":23},\\\"series\\\":[{\\\"barWidth\\\":8,\\\"data\\\":[320,332,301,334,390,330,320],\\\"name\\\":\\\"直接访问\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#63b2ee\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}},{\\\"barWidth\\\":8,\\\"data\\\":[120,132,101,134,90,230,210],\\\"name\\\":\\\"邮件营销\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#eddd86\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}},{\\\"barWidth\\\":8,\\\"data\\\":[220,182,191,234,290,330,310],\\\"name\\\":\\\"联盟广告\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#76da91\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"show\\\":true,\\\"axisPointer\\\":{\\\"type\\\":\\\"shadow\\\"},\\\"trigger\\\":\\\"axis\\\"},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":5,\\\"text\\\":\\\"多数据对比柱形图\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#000000\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":\\\"12\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"chartId\":\"bar.multi\",\"chartType\":\"bar.multi\"},\"layer_id\":\"gcqy2xAR9FYjBqX1\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,1],[1,2],[1,3],[1,4],[1,5]]},{\"row\":1,\"col\":13,\"colspan\":5,\"rowspan\":8,\"width\":\"448\",\"height\":\"247\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"周一\\\",\\\"周二\\\",\\\"周三\\\",\\\"周四\\\",\\\"周五\\\",\\\"周六\\\",\\\"周日\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"type\\\":\\\"category\\\"},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#DAD7D7\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":true},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"type \\\":\\\"value\\\"},\\\"legend\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"top\\\":\\\"top\\\",\\\"left\\\":\\\"center\\\",\\\"orient\\\":\\\"horizontal\\\",\\\"padding\\\":[25,20,25,10],\\\"data\\\":[\\\"利润\\\",\\\"支出\\\",\\\"收入\\\"],\\\"show\\\":true},\\\"grid\\\":{\\\"top\\\":54,\\\"left\\\":46,\\\"bottom\\\":35,\\\"right\\\":28},\\\"series\Line truncated
INSERT INTO `jimu_report` VALUES ('1369170965166166016', '20210309142400', '简单分组报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"1369170965166166016\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":4,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"rows\":{\"1\":{\"cells\":{\"1\":{\"height\":0,\"text\":\"纵向员工信息登记表\",\"style\":2,\"merge\":[0,5]}},\"height\":40},\"2\":{\"cells\":{\"1\":{\"text\":\"部门\",\"style\":15},\"2\":{\"text\":\"学历\",\"style\":15},\"3\":{\"text\":\"性别\",\"style\":15},\"4\":{\"text\":\"年龄\",\"style\":15},\"5\":{\"text\":\"姓名\",\"style\":15},\"6\":{\"text\":\"薪水\",\"style\":15}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"style\":17,\"text\":\"#{tt.group(department)}\",\"aggregate\":\"group\"},\"2\":{\"style\":17,\"text\":\"#{tt.group(education)}\",\"aggregate\":\"group\"},\"3\":{\"style\":17,\"text\":\"#{tt.sex}\"},\"4\":{\"style\":17,\"text\":\"#{tt.age}\"},\"5\":{\"style\":17,\"text\":\"#{tt.name}\"},\"6\":{\"style\":17,\"text\":\"#{tt.salary}\"}},\"height\":54},\"len\":100},\"dbexps\":[],\"dicts\":[],\"groupField\":\"tt.department\",\"freeze\":\"A1\",\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"bold\":true}},{\"font\":{\"bold\":true,\"size\":16}},{\"font\":{\"bold\":true,\"size\":16},\"align\":\"center\"},{\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#bdd7ee\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#bdd7ee\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#9cc2e6\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#9cc2e6\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\"}],\"validations\":[],\"isGroup\":true,\"cols\":{\"0\":{\"width\":34},\"1\":{\"width\":119},\"3\":{\"width\":117},\"6\":{\"width\":117},\"7\":{\"width\":22},\"len\":100},\"merges\":[\"B2:G2\"]}', NULL, 'https://static.jeecg.com/designreport/images/QQ截图20210309142558_1615271174044.png', 'admin', '2021-03-09 14:24:00', 'admin', '2021-08-04 21:36:40', 0, NULL, NULL, 1, 42584, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('519c1c6f4d1f584ae8fa5b43b45acdc7', '56623333333', '销售单', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":2,\"sci\":7,\"eri\":2,\"eci\":7,\"width\":88,\"height\":32},\"excel_config_id\":\"519c1c6f4d1f584ae8fa5b43b45acdc7\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"销售单\",\"style\":40,\"merge\":[0,6],\"loopBlock\":0},\"2\":{\"style\":41,\"loopBlock\":0},\"3\":{\"style\":41,\"loopBlock\":0},\"4\":{\"style\":41,\"loopBlock\":0},\"5\":{\"style\":41,\"loopBlock\":0},\"6\":{\"style\":41,\"loopBlock\":0},\"7\":{\"style\":41,\"loopBlock\":0}},\"height\":86},\"1\":{\"cells\":{\"1\":{\"text\":\"商品编码\",\"style\":65,\"rendered\":\"\",\"loopBlock\":1},\"2\":{\"text\":\"商品名称\",\"style\":65,\"loopBlock\":1},\"3\":{\"text\":\"销售时间\",\"style\":65,\"loopBlock\":1},\"4\":{\"text\":\"销售数量\",\"style\":65,\"loopBlock\":1},\"5\":{\"text\":\"定价\",\"style\":65,\"loopBlock\":1},\"6\":{\"text\":\"优惠价\",\"style\":65,\"loopBlock\":1},\"7\":{\"text\":\"付款金额\",\"style\":65,\"loopBlock\":1}},\"height\":33},\"2\":{\"cells\":{\"1\":{\"text\":\"#{xiaoshou.bianma}\",\"style\":66,\"loopBlock\":1},\"2\":{\"text\":\"#{xiaoshou.cname}\",\"style\":66,\"loopBlock\":1},\"3\":{\"text\":\"#{xiaoshou.ctime}\",\"style\":67,\"loopBlock\":1},\"4\":{\"text\":\"#{xiaoshou.cnum}\",\"style\":66,\"loopBlock\":1},\"5\":{\"text\":\"#{xiaoshou.cprice}\",\"style\":66,\"loopBlock\":1},\"6\":{\"text\":\"#{xiaoshou.yprice}\",\"style\":66,\"loopBlock\":1},\"7\":{\"text\":\"#{xiaoshou.ctotal}\",\"style\":68,\"rendered\":\"\",\"decimalPlaces\":\"0\",\"loopBlock\":1}},\"isDrag\":true,\"height\":32},\"3\":{\"cells\":{\"1\":{\"style\":44,\"text\":\"\",\"loopBlock\":1},\"2\":{\"style\":44,\"loopBlock\":1},\"3\":{\"style\":44,\"loopBlock\":1},\"4\":{\"style\":44,\"loopBlock\":1},\"5\":{\"style\":44,\"text\":\"\",\"loopBlock\":1},\"6\":{\"text\":\"\",\"style\":45,\"loopBlock\":1},\"7\":{\"style\":46,\"text\":\"=SUM(H3)\",\"loopBlock\":1}},\"isDrag\":true,\"height\":73},\"4\":{\"cells\":{\"1\":{\"text\":\"\",\"loopBlock\":1},\"2\":{\"text\":\"\",\"loopBlock\":1},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"\",\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1},\"6\":{\"text\":\"\",\"loopBlock\":1},\"7\":{\"text\":\"\",\"loopBlock\":1}}},\"5\":{\"cells\":{},\"isDrag\":true},\"6\":{\"cells\":{\"9\":{\"text\":\"\",\"decimalPlaces\":\"\"}},\"isDrag\":true},\"7\":{\"cells\":{\"2\":{\"text\":\"\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"isDrag\":true},\"8\":{\"cells\":{\"7\":{\"text\":\"\",\"decimalPlaces\":\"\"}}},\"9\":{\"cells\":{\"10\":{\"text\":\"\",\"decimalPlaces\":\"\"}}},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":704,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"color\":\"#000100\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]}},{\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]},\"bgcolor\":\"#01b0f1\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#01b0f1\"},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"align\":\"center\",\"font\":{\"size\":18}},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#fed964\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#fdc101\"},{\"align\":\"centLine truncated
INSERT INTO `jimu_report` VALUES ('537516331017523200', '202101201140313273', '主子报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":682,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":39},\"1\":{\"width\":73},\"2\":{\"width\":89},\"3\":{\"width\":101},\"4\":{\"width\":80},\"len\":100},\"area\":{\"sri\":4,\"sci\":2,\"eri\":4,\"eci\":2,\"width\":89,\"height\":25},\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"537516331017523200\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,6],\"height\":0,\"text\":\"订货商信息\",\"style\":8}},\"height\":57},\"1\":{\"cells\":{\"1\":{\"text\":\"订单编号:\",\"style\":10},\"2\":{\"merge\":[0,2],\"height\":0,\"style\":42,\"text\":\"${gg.dGoodsCode}\"}},\"height\":34},\"2\":{\"cells\":{\"1\":{\"text\":\"订单地址:\",\"style\":10},\"2\":{\"merge\":[0,1],\"height\":0,\"style\":42,\"text\":\"${gg.dAddress}\"},\"4\":{\"text\":\"订单日期:\",\"style\":10},\"5\":{\"merge\":[0,1],\"height\":0,\"style\":42,\"text\":\"${gg.dArrivalDate}\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\"订单姓名:\",\"style\":10},\"2\":{\"merge\":[0,1],\"height\":0,\"style\":42,\"text\":\"${gg.dName}\"},\"4\":{\"text\":\"到货日期:\",\"style\":10},\"5\":{\"merge\":[0,1],\"height\":0,\"style\":42,\"text\":\"${gg.dGoodsDate}\"}},\"height\":31},\"5\":{\"cells\":{\"1\":{\"text\":\"订单详情\",\"merge\":[0,6],\"style\":31,\"decimalPlaces\":\"4\"},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{}},\"height\":51},\"6\":{\"cells\":{\"1\":{\"text\":\"商品编码\",\"style\":15},\"2\":{\"text\":\"商品名称\",\"style\":15},\"3\":{\"text\":\"销售时间\",\"style\":15},\"4\":{\"text\":\"销售数据量\",\"style\":15},\"5\":{\"text\":\"定价\",\"style\":15},\"6\":{\"text\":\"优惠价\",\"style\":15},\"7\":{\"text\":\"付款金额\",\"style\":15}},\"height\":42},\"7\":{\"cells\":{\"1\":{\"style\":18,\"text\":\"#{xb.id}\"},\"2\":{\"style\":18,\"text\":\"#{xb.cname}\"},\"3\":{\"style\":18,\"text\":\"#{xb.riqi}\"},\"4\":{\"style\":18,\"text\":\"#{xb.dtotal}\"},\"5\":{\"style\":19,\"text\":\"#{xb.cprice}\",\"decimalPlaces\":\"4\"},\"6\":{\"style\":19,\"text\":\"#{xb.cprice}\",\"decimalPlaces\":\"1\"},\"7\":{\"style\":18,\"text\":\"#{xb.tp}\"},\"8\":{\"text\":\"\"}}},\"10\":{\"cells\":{\"1\":{\"style\":39,\"text\":\"备注:\"},\"2\":{\"text\":\" \",\"style\":33},\"3\":{\"style\":33,\"text\":\" \"},\"4\":{\"style\":33,\"text\":\" \"},\"5\":{\"style\":33,\"text\":\" \"},\"6\":{\"style\":33,\"text\":\" \"},\"7\":{\"style\":34,\"text\":\" \"}}},\"11\":{\"cells\":{\"1\":{\"style\":41,\"merge\":[0,6],\"height\":0,\"text\":\"1、查看信息,在浏览器输入“?did=1”或“?did=2”\"}},\"height\":37},\"12\":{\"cells\":{\"1\":{\"style\":35,\"text\":\" \"},\"2\":{\"text\":\" \"},\"7\":{\"style\":36,\"text\":\" \"}}},\"13\":{\"cells\":{\"1\":{\"style\":37,\"text\":\" \"},\"2\":{\"style\":28,\"text\":\" \"},\"3\":{\"style\":28,\"text\":\" \"},\"4\":{\"style\":28,\"text\":\" \"},\"5\":{\"style\":28,\"text\":\" \"},\"6\":{\"style\":28,\"text\":\" \"},\"7\":{\"style\":38,\"text\":\" \"}}},\"len\":102,\"-1\":{\"cells\":{\"-1\":{\"text\":\"#{xb.username}\"}}}},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"font\":{\"size\":18}},{\"font\":{\"size\":18,\"bold\":true}},{\"align\":\"center\"},{\"font\":{\"size\":18,\"bold\":true},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"font\":{\"size\":18,\"bold\":true,\"name\":\"宋体\"},\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"}},{\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"},\"color\":\"#ffffff\"},{\"Line truncated
INSERT INTO `jimu_report` VALUES ('537521675550674944', '20201215151426612466731464', '数据联动报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":0,\"marginY\":10,\"layout\":\"portrait\"},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":2571,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":48},\"1\":{\"width\":107},\"2\":{\"width\":99},\"3\":{\"width\":133},\"4\":{\"width\":96},\"5\":{\"width\":130},\"6\":{\"width\":119},\"7\":{\"width\":235},\"8\":{\"width\":124},\"9\":{\"width\":148},\"10\":{\"width\":132},\"23\":{\"width\":344},\"len\":50},\"chartList\":[{\"row\":1,\"col\":8,\"colspan\":0,\"rowspan\":0,\"width\":\"504\",\"height\":\"276\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12},\\\"rotate\\\":0,\\\"interval\\\":0},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"data\\\":[\\\"张三\\\",\\\"张三\\\"],\\\"show\\\":true,\\\"name\\\":\\\"\\\"},\\\"grid\\\":{\\\"top\\\":60,\\\"left\\\":41,\\\"bottom\\\":43,\\\"right\\\":27},\\\"series\\\":[{\\\"barWidth\\\":23,\\\"data\\\":[25,25],\\\"name\\\":\\\"age\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"#ffc001\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":\\\"12\\\",\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":true},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":18}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":\\\"5\\\",\\\"text\\\":\\\"员工基本信息\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#000000\\\",\\\"fontWeight\\\":\\\"bold\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"sql\",\"apiStatus\":\"\",\"apiUrl\":\"\",\"dataId\":\"537522718405644288\",\"axisX\":\"name\",\"axisY\":\"age\",\"series\":\"\",\"yText\":\"age\",\"xText\":\"name\",\"dbCode\":\"hh\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTiming\":\"\",\"intervalTime\":\"\",\"chartType\":\"bar.simple\",\"id\":\"\",\"chartId\":\"mfVOveSMUgcmPLZH\"},\"layer_id\":\"mfVOveSMUgcmPLZH\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[1,8],[1,9],[1,10],[1,11],[1,12]]}],\"area\":{\"sri\":2,\"sci\":1,\"eri\":2,\"eci\":1,\"width\":107,\"height\":61},\"excel_config_id\":\"537521675550674944\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{}},\"1\":{\"cells\":{\"1\":{\"text\":\"职务编号\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"家庭电话\",\"style\":51},\"6\":{\"text\":\"出生日期\",\"style\":51},\"7\":{\"text\":\"联系地址\",\"style\":51},\"8\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"},\"9\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"},\"10\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"},\"11\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"},\"12\":{\"text\":\" \",\"virtual\":\"mfVOveSMUgcmPLZH\"}},\"height\":46},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\",\"linkIds\":\"845811279070580736\",\"rendered\":\"\",\"config\":\"\",\"display\":\"link\"},\"2\":{\"text\":\"#{pop.id}\",\"style\":54,\"aggregate\":\"select\"},\"3\":{\"text\":\"#{pop.name}\",\"style\":54,\"aggregate\":\"select\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"6\":{\"text\":\"#{pop.birth}\",\"style\":56},\"7\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"19\":{\"style\":52,\"rendered\":\"\",\"config\":\"\",\"text\":\" \"},\"20\":{\"style\":52,\"text\":\" \",\"rendered\":\"\",\"config\":\"\",\"display\":\"normal\"},\"21\":{\"style\":52,\"rendered\":\"\",\"config\":\"\",\"text\":\" \"},\"22\":{\"style\":52,\"rendered\":\"\",\"config\":\"\",\"text\":\" \"}},\"isDrag\":true,\"height\":61},\"14\":{\"cells\":{}},\"len\":68},\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{\"1\":{\"barcodeContent\":\"#{pop.id}\",\"format\":\Line truncated
INSERT INTO `jimu_report` VALUES ('53c82a76f837d5661dceec7d93afafec', '5678', '阜阳检票数查询', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"53c82a76f837d5661dceec7d93afafec\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":66},\"3\":{\"style\":67,\"merge\":[0,3],\"text\":\"阜阳火车站检票数\"}},\"height\":63},\"1\":{\"cells\":{},\"height\":20},\"2\":{\"cells\":{\"1\":{\"text\":\"日期:\",\"style\":68},\"2\":{\"text\":\"${gongsi.tdata}\",\"style\":69},\"4\":{\"style\":66,\"text\":\"制表人:\"},\"5\":{\"text\":\"${gongsi.gname}\",\"style\":66},\"7\":{\"text\":\" \",\"merge\":[0,1],\"style\":70}},\"isDrag\":true},\"3\":{\"cells\":{\"1\":{\"text\":\"班次\",\"merge\":[1,0],\"style\":71},\"2\":{\"text\":\"发车时间\",\"merge\":[1,0],\"style\":71},\"3\":{\"text\":\"是否放空\",\"merge\":[1,0],\"style\":71},\"4\":{\"text\":\"路线\",\"merge\":[0,1],\"style\":71},\"6\":{\"text\":\"核载座位数\",\"merge\":[1,0],\"style\":71},\"7\":{\"merge\":[1,0],\"style\":71,\"text\":\"检票数\"},\"8\":{\"merge\":[1,0],\"style\":71,\"text\":\"实载率(%)\"}}},\"4\":{\"cells\":{\"4\":{\"text\":\"从\",\"style\":71},\"5\":{\"text\":\"到\",\"style\":71}},\"height\":25},\"5\":{\"cells\":{\"1\":{\"style\":73,\"text\":\"#{jianpiao.bnum}\"},\"2\":{\"style\":73,\"text\":\"#{jianpiao.ftime}\"},\"3\":{\"style\":73,\"text\":\"#{jianpiao.sfkong}\"},\"4\":{\"style\":73,\"text\":\"#{jianpiao.kaishi}\"},\"5\":{\"style\":73,\"text\":\"#{jianpiao.jieshu}\"},\"6\":{\"style\":73,\"text\":\"#{jianpiao.hezairen}\"},\"7\":{\"style\":73,\"text\":\"#{jianpiao.jpnum}\"},\"8\":{\"style\":73,\"text\":\"#{jianpiao.shihelv}\"}},\"height\":33},\"6\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":11}},\"isDrag\":true},\"7\":{\"cells\":{\"2\":{\"style\":11,\"text\":\" \"}}},\"8\":{\"cells\":{}},\"9\":{\"cells\":{}},\"10\":{\"cells\":{}},\"11\":{\"cells\":{}},\"12\":{\"cells\":{}},\"13\":{\"cells\":{}},\"14\":{\"cells\":{}},\"len\":96,\"-1\":{\"cells\":{\"-1\":{\"text\":\"${gongsi.id}\"}},\"isDrag\":true}},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":703,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{},{\"border\":{\"bottom\":[\"thin\",\"#7f7f7f\"],\"top\":[\"thin\",\"#7f7f7f\"],\"left\":[\"thin\",\"#7f7f7f\"],\"right\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#7f7f7f\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"right\":[\"thin\",\"#7f7f7f\"],\"bottom\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"bottom\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"right\":[\"thin\",\"#7f7f7f\"]}},{\"align\":\"center\",\"font\":{\"size\":16}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"bold\":true}},{\"Line truncated
INSERT INTO `jimu_report` VALUES ('542152544408129536', '20210414112811', '图表联动报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"chartList\":[{\"row\":3,\"col\":5,\"colspan\":4,\"rowspan\":7,\"width\":\"556\",\"height\":\"318\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"rotate\\\":0,\\\"interval\\\":0},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"data\\\":[\\\"1月\\\",\\\"2月\\\",\\\"3月\\\",\\\"4月\\\",\\\"5月\\\",\\\"6月\\\",\\\"7月\\\",\\\"8月\\\",\\\"9月\\\",\\\"10月\\\",\\\"11月\\\",\\\"12月\\\"],\\\"show\\\":true,\\\"name\\\":\\\"\\\"},\\\"grid\\\":{\\\"top\\\":30,\\\"left\\\":48,\\\"bottom\\\":42,\\\"right\\\":18},\\\"series\\\":[{\\\"areaStyle\\\":null,\\\"data\\\":[10000,80000,50000,70000,100000,70000,59000,30000,90000,80000,90000,30000],\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"isArea\\\":false,\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"rgba(33,176,246,1)\\\"},\\\"step\\\":false,\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"line\\\",\\\"smooth\\\":false}],\\\"tooltip\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":5,\\\"text\\\":\\\"每月订单金额\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#c23531\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":18},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"542187081431339008\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"yu\",\"dataId1\":\"\",\"source\":\"\",\"target\":\"\",\"isTiming\":false,\"intervalTime\":\"0\",\"linkIds\":\"\",\"chartType\":\"line.simple\",\"chartId\":\"4gWTCuSf3N2pRy9U\",\"id\":\"4gWTCuSf3N2pRy9U\"},\"layer_id\":\"4gWTCuSf3N2pRy9U\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"enabled\":false,\"color\":\"#fff\",\"image\":\"\"},\"virtualCellRange\":[[3,5],[3,6],[3,7],[3,8]]},{\"row\":3,\"col\":1,\"colspan\":4,\"rowspan\":7,\"width\":\"398\",\"height\":\"317\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false},\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"rotate\\\":0,\\\"interval\\\":0},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"data\\\":[\\\"张三\\\",\\\"李四\\\",\\\"小米\\\",\\\"lili\\\",\\\"王伟\\\",\\\"菲菲\\\",\\\"洋洋\\\",\\\"王轩\\\",\\\"李中\\\",\\\"韩寒\\\"],\\\"show\\\":true,\\\"name\\\":\\\"\\\"},\\\"grid\\\":{\\\"top\\\":30,\\\"left\\\":60,\\\"bottom\\\":42,\\\"right\\\":23},\\\"series\\\":[{\\\"barWidth\\\":10,\\\"data\\\":[3400879,2400879,2300879,1000879,900000,700000,590000,300000,90000,9000],\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"barBorderRadius\\\":0,\\\"color\\\":\\\"rgba(33,176,246,1)\\\"},\\\"label\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"},\\\"position\\\":\\\"top\\\",\\\"show\\\":false},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2,\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontWeight\\\":\\\"bolder\\\"}}],\\\"tooltip\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"},\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":\\\"5\\\",\\\"text\\\":\\\"某站点用户访问来源\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#0CF1F6\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":18},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,20]}}\",\"url\":\"\",\"extData\":{\"dataType\":\"api\",\"apiStatus\":\"1\",\"dataId\":\"542158608528658432\",\"axisX\":\"name\",\"axisY\":\"value\",\"series\":\"type\",\"yText\":\"\",\"xText\":\"\",\"dbCode\":\"xs\Line truncated
INSERT INTO `jimu_report` VALUES ('580749470334275584', '20210729233805', '表达式示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"580749470334275584\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"更多表达式请查看详细文档。\",\"linkIds\":\"580872825561501696\",\"rendered\":\"\",\"config\":\"\",\"display\":\"link\",\"merge\":[0,1],\"height\":43,\"style\":18}},\"height\":43},\"1\":{\"cells\":{\"1\":{\"style\":12,\"text\":\"日期函数\",\"merge\":[0,3],\"height\":25},\"6\":{\"style\":12,\"text\":\"字符串函数\",\"merge\":[0,3],\"height\":25}},\"height\":34},\"2\":{\"cells\":{\"1\":{\"text\":\"函数名称\",\"style\":17},\"2\":{\"text\":\"表达式\",\"style\":17},\"3\":{\"text\":\"常量参数\",\"style\":17},\"4\":{\"text\":\"数据集参数\",\"style\":17},\"6\":{\"text\":\"函数名称\",\"style\":17},\"7\":{\"text\":\"表达式\",\"style\":17},\"8\":{\"text\":\"常量参数\",\"style\":17},\"9\":{\"text\":\"数据集参数\",\"style\":17}}},\"3\":{\"cells\":{\"1\":{\"text\":\"date()\",\"style\":4},\"2\":{\"text\":\"date(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=date(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=date(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"text\":\"char()\",\"style\":4,\"merge\":[1,0],\"height\":50},\"7\":{\"text\":\"char(22269)\",\"style\":4},\"8\":{\"text\":\"=char(22269)\",\"style\":4},\"9\":{\"style\":4,\"text\":\" \"}}},\"4\":{\"cells\":{\"1\":{\"text\":\"time()\",\"style\":4},\"2\":{\"text\":\"time(\\\"12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=time(\\\"12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=time(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"7\":{\"text\":\"char(101)\",\"style\":4},\"8\":{\"text\":\"=char(101)\",\"style\":4},\"9\":{\"style\":4,\"text\":\" \"}}},\"5\":{\"cells\":{\"1\":{\"text\":\"now()\",\"merge\":[3,0],\"height\":100,\"style\":4,\"linkIds\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"\"},\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":5},\"4\":{\"text\":\"=now()\",\"style\":5},\"6\":{\"style\":4,\"text\":\"cnmoney()\",\"merge\":[2,0],\"height\":75},\"7\":{\"text\":\"cnmoney(341.234)\",\"style\":4},\"8\":{\"style\":4,\"text\":\"=cnmoney(341.234)\"},\"9\":{\"style\":4,\"text\":\"=cnmoney(${jm_expression.num})\"}}},\"6\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":6},\"4\":{\"text\":\"=now()\",\"style\":6},\"7\":{\"text\":\"cnmoney(341.234,\\\"b\\\")\",\"style\":4},\"8\":{\"text\":\"=cnmoney(341.234,\\\"b\\\")\",\"style\":4},\"9\":{\"style\":4,\"text\":\"=cnmoney(${jm_expression.num},\\\"b\\\")\"}}},\"7\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":7},\"4\":{\"text\":\"=now()\",\"style\":7},\"7\":{\"text\":\"cnmoney(341.234,\\\"bw\\\")\",\"style\":4},\"8\":{\"text\":\"=cnmoney(341.234,\\\"bw\\\")\",\"style\":4},\"9\":{\"text\":\"=cnmoney(${jm_expression.num},\\\"bw\\\")\",\"style\":4}}},\"8\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":8},\"4\":{\"text\":\"=now()\",\"style\":8},\"6\":{\"text\":\"concat()\",\"style\":4},\"7\":{\"text\":\"concat(\'hello \',\'word\',\' !\')\",\"style\":4},\"8\":{\"text\":\"=concat(\'hello \',\'world\',\' !\')\",\"style\":4},\"9\":{\"text\":\"=concat(\'${jm_expression.upper}\',\' world\',\' !\')\",\"style\":4}}},\"9\":{\"cells\":{\"1\":{\"text\":\"year()\",\"style\":4},\"2\":{\"text\":\"year(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=year(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=year(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"text\":\"lower()\",\"style\":4},\"7\":{\"text\":\"lower(\'HELLOW\')\",\"style\":4},\"8\":{\"text\":\"=lower(\'HELLOW\')\",\"style\":4},\"9\":{\"text\":\"=lower(\\\"${jm_expression.upper}\\\") \",\"style\":4}}},\"10\":{\"cells\":{\"1\":{\"text\":\"month()\",\"style\":4},\"2\":{\"text\":\"month(\\\"2021-07-29 12:11:10\\\") \",\"style\":4},\"3\":{\"text\":\"=month(\\\"2021-07-29 12:11:10\\\") \",\"style\":4},\"4\":{\"text\":\"=month(\\\"${jm_expression.create_time}\\\") \",\"style\":4},\"6\":{\"text\":\"upper()\",\"style\":4},\"7\":{\"text\":\"upper(\'world\')\",\"style\":4},\"8\":{\"text\":\"=upper(\'world\')\",\"style\":4},\"9\":{\"text\":\"=upper(\'${jm_expression.lower}\')\",\"style\":4}}},\"11\":{\"cells\":{\"1\":{\"text\":\"day()\",\"style\":4},\"2\":{\"text\":\"day(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=day(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=day(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"style\":4,\"text\":\" \"},\"7\":{\"style\":4,\"text\":\" \"},\"8\":{\"style\":4,\"text\":\" \"},\"9\Line truncated
INSERT INTO `jimu_report` VALUES ('590432931076722688', '2020121515142661246570', '查询条件示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1694,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":48},\"1\":{\"width\":107},\"2\":{\"width\":147},\"3\":{\"width\":144},\"4\":{\"width\":142},\"5\":{\"width\":130},\"6\":{\"width\":131},\"7\":{\"width\":235},\"8\":{\"width\":230},\"9\":{\"width\":148},\"10\":{\"width\":132},\"len\":50},\"area\":false,\"excel_config_id\":\"590432931076722688\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"查询条件示例\",\"style\":64,\"merge\":[0,1],\"height\":44},\"2\":{},\"3\":{\"style\":68,\"text\":\"说明:查询控件配置;默认值设置;CSS增强配置;参考文档:http://report.jeecg.com/2373403\",\"merge\":[0,2],\"height\":57}},\"height\":57},\"1\":{\"cells\":{\"1\":{\"text\":\"职务\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"雇佣日期\",\"style\":51},\"6\":{\"text\":\"家庭电话\",\"style\":51},\"7\":{\"text\":\"出生日期\",\"style\":51},\"8\":{\"text\":\"户口所在地\",\"style\":51},\"9\":{\"text\":\"联系地址\",\"style\":51},\"10\":{\"text\":\"紧急联系人\",\"style\":51},\"11\":{\"style\":51,\"text\":\"分类\"}},\"height\":46},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{pop.group(id)}\",\"style\":54,\"aggregate\":\"group\"},\"3\":{\"text\":\"#{pop.group(name)}\",\"style\":54,\"aggregate\":\"group\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.gtime}\",\"style\":56},\"6\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"7\":{\"text\":\"#{pop.birth}\",\"style\":56},\"8\":{\"text\":\"#{pop.hukou}\",\"style\":58},\"9\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"10\":{\"text\":\"#{pop.jperson}\",\"style\":57},\"11\":{\"style\":57,\"text\":\"#{pop.type}\"}},\"isDrag\":true,\"height\":35},\"5\":{\"cells\":{\"2\":{\"text\":\"\"}},\"isDrag\":true},\"len\":99},\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbLine truncated
INSERT INTO `jimu_report` VALUES ('590442764001693696', '202101271721121257', '纵向分组小计示例3', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"layout\":\"portrait\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"C4\",\"dataRectWidth\":718,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":36},\"1\":{\"width\":95},\"2\":{\"width\":95},\"3\":{\"width\":105},\"4\":{\"width\":141},\"5\":{\"width\":246},\"6\":{\"width\":155},\"len\":100},\"area\":{\"sri\":3,\"sci\":2,\"eri\":3,\"eci\":2,\"width\":95,\"height\":38},\"excel_config_id\":\"590442764001693696\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"rendered\":\"\",\"text\":\"\"},\"1\":{\"merge\":[0,2],\"style\":6,\"text\":\"纵向分组小计示例3\"},\"5\":{\"style\":30,\"text\":\"说明:本示例涉及纵向分组小计,横向动态列;地区设为小计分组依据;销量设为求和;年份倒序;月份默认正序\"}},\"height\":83},\"1\":{\"cells\":{\"1\":{\"rendered\":\"\",\"lineStart\":\"lefttop\",\"merge\":[1,1],\"style\":2,\"text\":\"地区|销量|时间\",\"height\":74},\"3\":{\"style\":8,\"text\":\"#{xs.groupRight(year)}年\",\"sort\":\"desc\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":40},\"2\":{\"cells\":{\"3\":{\"style\":8,\"text\":\"#{xs.groupRight(mouth)}\",\"sort\":\"default\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"funcname\":\"\",\"subtotal\":\"groupField\",\"style\":28,\"text\":\"#{xs.group(diqu)}\",\"aggregate\":\"group\"},\"2\":{\"style\":28,\"text\":\"#{xs.group(class)}\",\"aggregate\":\"group\"},\"3\":{\"decimalPlaces\":\"0\",\"funcname\":\"SUM\",\"rendered\":\"\",\"subtotal\":\"\",\"style\":29,\"text\":\"#{xs.dynamic(sales)}\",\"aggregate\":\"dynamic\"}},\"height\":38},\"4\":{\"cells\":{\"1\":{\"merge\":[0,1],\"style\":24,\"text\":\"总计\"},\"3\":{\"style\":25,\"text\":\"=sum(D4)\"}},\"height\":37},\"8\":{\"cells\":{\"1\":{}}},\"10\":{\"cells\":{\"1\":{}}},\"len\":100},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"xs.diqu\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"font\":{\"size\":16}},{\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"bottom\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\",\"color\":\"#fe0000\"},{\"color\":\"#fe0000\"},{\"color\":\"#ffffff\"},{\"border\":{\Line truncated
INSERT INTO `jimu_report` VALUES ('590808622016319488', '20210826175031', '纵向分组小计示例1', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":55,\"sci\":6,\"eri\":55,\"eci\":6,\"width\":100,\"height\":25},\"excel_config_id\":\"590808622016319488\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,1],\"height\":61,\"text\":\"纵向分组小计示例1\",\"style\":18},\"3\":{\"text\":\"说明:地区、省份设置为纵向分组并且地区设置为分组依据;销售额设为求和;参考文档:http://report.jeecg.com/2333594\",\"style\":20,\"merge\":[0,2],\"height\":61}},\"height\":85},\"1\":{\"cells\":{\"1\":{\"text\":\"地区|销售额|日期\",\"lineStart\":\"lefttop\",\"style\":16,\"merge\":[1,1],\"height\":66},\"3\":{\"text\":\"#{jm.groupRight(year)}\",\"direction\":\"right\",\"style\":16}},\"height\":35},\"2\":{\"cells\":{\"3\":{\"text\":\"#{jm.groupRight(month)}\",\"aggregate\":\"group\",\"direction\":\"right\",\"style\":16}},\"height\":31},\"3\":{\"cells\":{\"1\":{\"text\":\"#{jm.group(areaname)}\",\"aggregate\":\"group\",\"subtotal\":\"groupField\",\"funcname\":\"\",\"style\":0},\"2\":{\"text\":\"#{jm.group(dept)}\",\"style\":0,\"aggregate\":\"group\",\"funcname\":\"\"},\"3\":{\"text\":\"#{jm.dynamic(settleamount)}\",\"aggregate\":\"dynamic\",\"style\":0,\"subtotal\":\"\",\"funcname\":\"SUM\"}}},\"len\":21},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"jm.areaname\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":454,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#d8d8d8\"},{\"bgcolor\":\"#d8d8d8\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#71ae47\"},{\"bgcolor\":\"#71ae47\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#c45a10\"},{\"bgcolor\":\"#c45a10\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#7f7f7f\"},{\"bgcolor\":\"#7f7f7f\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#ffffff\"},{\"bgcolor\":\"#ffffff\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#d0cecf\"},{\"bgcolor\":\"#d0cecf\"},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"bgcolor\":\"#d0cecf\"},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"bgcolor\":\"#f2f2f2\"},{\"bgcolor\":\"#f2f2f2\"},{\"font\":{\"size\":14}},{\"textwrap\":true},{\"textwrap\":true,\"color\":\"#fe0000\"},{\"color\":\"#fe0000\"}],\"validations\":[],\"isGroup\":true,\"cols\":{\"0\":{\"width\":154},\"5\":{\"width\":121},\"len\":50},\"merges\":[\"B1:C1\",\"D1:F1\",\"B2:C3\"]}', NULL, 'https://static.jeecg.com/designreport/images/fz1_1630235763858.png', 'admin', '2021-08-26 17:50:31', 'admin', '2023-07-31 16:45:31', 0, NULL, NULL, 1, 2885, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('590812531803901952', '202108261750310852', '纵向分组小计示例2', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":8,\"sci\":1,\"eri\":8,\"eci\":1,\"width\":80,\"height\":25},\"excel_config_id\":\"590812531803901952\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"3\":{\"text\":\" \",\"style\":27},\"5\":{\"text\":\"\"},\"7\":{\"merge\":[0,2],\"height\":56,\"style\":27,\"text\":\" \"}},\"height\":59},\"1\":{\"cells\":{\"1\":{\"text\":\"纵向分组小计示例2\",\"merge\":[0,2],\"height\":56,\"style\":27},\"4\":{\"text\":\"说明:区域(areaname)、省份(dept)纵向分组;单价(price)、金额(amount)设置动态属性;小计设置compute行内计算compute(price*amount);参考文档:http://report.jeecg.com/2333594\",\"merge\":[0,4],\"height\":54,\"style\":29}},\"height\":54},\"2\":{\"cells\":{\"1\":{\"text\":\"区域\",\"style\":21,\"merge\":[2,0],\"height\":81},\"2\":{\"merge\":[2,0],\"height\":81,\"text\":\"省份\",\"style\":21},\"3\":{\"merge\":[0,2],\"height\":31,\"style\":21,\"text\":\"#{jm.groupRight(year)}年\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":35},\"3\":{\"cells\":{\"3\":{\"merge\":[0,2],\"height\":25,\"style\":21,\"text\":\"#{jm.groupRight(month)}月\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":34},\"4\":{\"cells\":{\"3\":{\"text\":\"单价\",\"style\":21},\"4\":{\"text\":\"金额\",\"style\":21},\"5\":{\"text\":\"小计\",\"style\":21}},\"height\":35},\"5\":{\"cells\":{\"1\":{\"text\":\"#{jm.group(areaname)}\",\"aggregate\":\"group\",\"subtotal\":\"groupField\",\"funcname\":\"\",\"style\":17},\"2\":{\"text\":\"#{jm.group(dept)}\",\"style\":17,\"aggregate\":\"group\",\"funcname\":\"\"},\"3\":{\"text\":\"#{jm.dynamic(price)}\",\"style\":26,\"aggregate\":\"dynamic\"},\"4\":{\"style\":26,\"text\":\"#{jm.dynamic(amount)}\",\"aggregate\":\"dynamic\",\"subtotal\":\"\",\"funcname\":\"SUM\"},\"5\":{\"text\":\"#{jm.compute(price*amount)}\",\"aggregate\":\"dynamic\",\"style\":26,\"subtotal\":\"\",\"funcname\":\"SUM\"}}},\"9\":{\"cells\":{},\"height\":37},\"len\":10},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"jm.areaname\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":656,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#d8d8d8\"},{\"bgcolor\":\"#d8d8d8\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#71ae47\"},{\"bgcolor\":\"#71ae47\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#c45a10\"},{\"bgcolor\":\"#c45a10\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#7f7f7f\"},{\"bgcolor\":\"#7f7f7f\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#ffffff\"},{\"bgcolor\":\"#ffffff\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#d0cecf\"},{\"bgcolor\":\"#d0cecf\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#f2f2f2\"},{\"bgcolor\":\"#f2f2f2\"},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#0c0c0c\"],\"top\":[\"thin\",\"#0c0c0c\"],\"left\":[\"thin\",\"#0c0c0c\"],\"right\":[\"thin\",\"#0c0c0c\"]}},{\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]}},{\"border\":{\"bottom\":[\"thin\",\"#3f3f3f\"],\"top\":[\"thin\",\"#3f3f3f\"],\"left\":[\"thin\",\"#3f3f3f\"],\"right\":[\"thin\",\"#3f3f3f\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"bgcolor\":\"#f2f2f2\"},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\"Line truncated
INSERT INTO `jimu_report` VALUES ('590831722099462144', '20210826192130', '分栏示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[{\"sci\":1,\"sri\":2,\"eci\":5,\"eri\":5,\"index\":1,\"db\":\"jm\",\"loopTime\":3}],\"area\":{\"sri\":1,\"sci\":5,\"eri\":1,\"eci\":6,\"width\":154,\"height\":59},\"excel_config_id\":\"590831722099462144\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{},\"height\":44},\"1\":{\"cells\":{\"2\":{\"style\":13,\"text\":\"\"},\"4\":{\"style\":14},\"5\":{\"style\":15,\"text\":\"分栏示例\",\"merge\":[0,1],\"height\":59},\"6\":{\"style\":16},\"8\":{\"style\":9,\"text\":\"说明:需要对多行区域进行循环且分栏展示时,则进行循环块设置并指定横向循环次数;参考文档:http://report.jeecg.com/2373085\",\"merge\":[0,2],\"height\":59}},\"height\":59},\"2\":{\"cells\":{\"1\":{\"text\":\"\",\"loopBlock\":1},\"2\":{\"text\":\"职员信息\",\"style\":2,\"merge\":[0,1],\"height\":34,\"loopBlock\":1},\"3\":{\"loopBlock\":1},\"4\":{\"text\":\"\",\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1}},\"height\":51},\"3\":{\"cells\":{\"1\":{\"text\":\"姓名\",\"style\":4,\"loopBlock\":1},\"2\":{\"text\":\"性别\",\"style\":4,\"loopBlock\":1},\"3\":{\"text\":\"职务\",\"style\":4,\"loopBlock\":1},\"4\":{\"text\":\"联系方式\",\"style\":4,\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1}},\"height\":31},\"4\":{\"cells\":{\"1\":{\"text\":\"#{jm.name}\",\"style\":0,\"loopBlock\":1},\"2\":{\"text\":\"#{jm.sex}\",\"style\":0,\"loopBlock\":1},\"3\":{\"text\":\"#{jm.update_by}\",\"style\":0,\"loopBlock\":1},\"4\":{\"text\":\"#{jm.jphone}\",\"style\":0,\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1}}},\"5\":{\"cells\":{\"1\":{\"text\":\"\",\"loopBlock\":1},\"2\":{\"loopBlock\":1},\"3\":{\"text\":\"\",\"loopBlock\":1},\"4\":{\"text\":\"\",\"loopBlock\":1},\"5\":{\"text\":\"\",\"loopBlock\":1}},\"height\":34},\"len\":103},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"freeze\":\"A1\",\"dataRectWidth\":817,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"size\":14}},{\"font\":{\"size\":14},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"size\":11}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"size\":11},\"bgcolor\":\"#f2f2f2\"},{\"font\":{\"size\":12}},{\"font\":{\"size\":15}},{\"font\":{\"size\":15},\"align\":\"center\"},{\"textwrap\":true},{\"textwrap\":true,\"color\":\"#fe0000\"},{\"color\":\"#fe0000\"},{\"textwrap\":true,\"color\":\"#000100\"},{\"color\":\"#000100\"},{\"textwrap\":true,\"color\":\"#000100\",\"font\":{\"size\":15}},{\"color\":\"#000100\",\"font\":{\"size\":15}},{\"color\":\"#000100\",\"font\":{\"size\":18}},{\"font\":{\"size\":18}}],\"validations\":[],\"cols\":{\"0\":{\"width\":72},\"3\":{\"width\":101},\"4\":{\"width\":90},\"5\":{\"width\":54},\"len\":50},\"merges\":[\"I2:K2\",\"C3:D3\",\"F2:G2\"]}', NULL, 'https://static.jeecg.com/designreport/images/fl_1630235558373.png', 'admin', '2021-08-26 19:21:30', 'admin', '2021-08-29 19:12:38', 0, NULL, NULL, 1, 2549, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('590835562513256448', '20210826193641', '分版示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":1,\"sci\":8,\"eri\":1,\"eci\":8,\"width\":100,\"height\":65},\"excel_config_id\":\"590835562513256448\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[{\"sci\":4,\"sri\":3,\"eci\":6,\"eri\":4,\"db\":\"flapi\",\"index\":1},{\"sci\":8,\"sri\":4,\"eci\":9,\"eri\":5,\"db\":\"flapi\",\"index\":2}],\"rows\":{\"0\":{\"cells\":{\"3\":{\"text\":\"\",\"style\":9,\"merge\":[0,1],\"height\":72}},\"height\":60},\"1\":{\"cells\":{\"3\":{\"style\":18,\"text\":\"分版示例\",\"merge\":[0,1],\"height\":65},\"5\":{\"merge\":[0,2],\"height\":65,\"text\":\"说明:当报表左侧已有表格,右侧仍需要展示表格时,需使用分版功能;参考文档:http://report.jeecg.com/2373086\",\"style\":20},\"6\":{\"style\":15},\"7\":{\"style\":15}},\"height\":65},\"2\":{\"cells\":{\"1\":{\"text\":\"表1\",\"style\":7},\"5\":{\"text\":\"表2\",\"style\":7}},\"height\":41},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":2},\"1\":{\"text\":\"性别\",\"style\":2},\"2\":{\"text\":\"年龄\",\"style\":2},\"4\":{\"text\":\"省份\",\"style\":2,\"zonedEdition\":1},\"5\":{\"style\":2,\"zonedEdition\":1,\"text\":\"月份\"},\"6\":{\"style\":2,\"zonedEdition\":1,\"text\":\"金额\"},\"8\":{\"text\":\"表3\",\"style\":8}},\"height\":35},\"4\":{\"cells\":{\"0\":{\"text\":\"#{jm.name}\",\"style\":0},\"1\":{\"text\":\"#{jm.sex}\",\"style\":0},\"2\":{\"text\":\"#{jm.age}\",\"style\":0},\"4\":{\"text\":\"#{flapi.dept}\",\"style\":0,\"zonedEdition\":1},\"5\":{\"style\":0,\"zonedEdition\":1,\"text\":\"#{flapi.month}月\"},\"6\":{\"style\":0,\"zonedEdition\":1,\"text\":\"#{flapi.amount}\"},\"8\":{\"text\":\"年份\",\"style\":2,\"zonedEdition\":2},\"9\":{\"text\":\"金额\",\"style\":2,\"zonedEdition\":2}},\"height\":30},\"5\":{\"cells\":{\"8\":{\"text\":\"#{flapi.year}年\",\"style\":0,\"zonedEdition\":2},\"9\":{\"text\":\"#{flapi.settleamount}\",\"style\":0,\"zonedEdition\":2}}},\"len\":103},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"freeze\":\"A1\",\"dataRectWidth\":930,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"size\":12}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"size\":12},\"bgcolor\":\"#f2f2f2\"},{},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#f2f2f2\"},{\"font\":{\"size\":15}},{\"font\":{\"size\":12}},{\"font\":{\"size\":12},\"align\":\"center\"},{\"font\":{\"size\":12},\"align\":\"right\"},{\"font\":{\"size\":15},\"align\":\"center\"},{\"font\":{\"size\":15},\"align\":\"left\"},{\"textwrap\":true},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#fe0000\"],\"top\":[\"thin\",\"#fe0000\"],\"left\":[\"thin\",\"#fe0000\"],\"right\":[\"thin\",\"#fe0000\"]}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#ffffff\"],\"top\":[\"thin\",\"#ffffff\"],\"left\":[\"thin\",\"#ffffff\"],\"right\":[\"thin\",\"#ffffff\"]}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#ffffff\"],\"top\":[\"thin\",\"#ffffff\"],\"left\":[\"thin\",\"#ffffff\"],\"right\":[\"thin\",\"#ffffff\"]},\"color\":\"#fe0000\"},{\"color\":\"#fe0000\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#ffffff\"],\"top\":[\"thin\",\"#ffffff\"],\"left\":[\"thin\",\"#ffffff\"],\"right\":[\"thin\",\"#ffffff\"]},\"color\":\"#000100\"},{\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#ffffff\"],\"top\":[\"thin\",\"#ffffff\"],\"left\":[\"thin\",\"#ffffff\"],\"right\":[\"thin\",\"#ffffff\"]},\"color\":\"#000100\",\"font\":{\"size\":15}},{\"color\":\"#000100\",\"font\":{\"size\":15}},{\"textwrap\":true,\"color\":\"#fe0000\"}],\"validations\":[],\"cols\":{\"3\":{\"width\":69},\"7\":{\"width\":61},\"len\":50},\"merges\":[\"D1:E1\",\"D2:E2\",\"F2:H2\"]}', NULL, 'https://static.jeecg.com/designreport/images/fb_1630235434383.png', 'admin', '2021-08-26 19:36:41', 'admin', '2021-08-29 19:10:34', 0, NULL, NULL, 1, 3500, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('592957394477469696', '20201215151426612465700180', '存储过程示例', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1689,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":48},\"1\":{\"width\":107},\"2\":{\"width\":142},\"3\":{\"width\":144},\"4\":{\"width\":142},\"5\":{\"width\":130},\"6\":{\"width\":131},\"7\":{\"width\":235},\"8\":{\"width\":230},\"9\":{\"width\":148},\"10\":{\"width\":132},\"len\":100},\"area\":false,\"excel_config_id\":\"592957394477469696\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"存储过程示例\",\"style\":64,\"merge\":[0,1],\"height\":44},\"2\":{},\"3\":{\"style\":68,\"merge\":[0,2],\"height\":57,\"text\":\" \"}},\"height\":57},\"1\":{\"cells\":{\"1\":{\"text\":\"职务\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"雇佣日期\",\"style\":51},\"6\":{\"text\":\"家庭电话\",\"style\":51},\"7\":{\"text\":\"出生日期\",\"style\":51},\"8\":{\"text\":\"户口所在地\",\"style\":51},\"9\":{\"text\":\"联系地址\",\"style\":51},\"10\":{\"text\":\"紧急联系人\",\"style\":51},\"11\":{\"style\":51,\"text\":\"分类\"}},\"height\":46},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\"},\"2\":{\"text\":\"#{pop.group(id)}\",\"style\":54,\"aggregate\":\"group\"},\"3\":{\"text\":\"#{pop.group(name)}\",\"style\":54,\"aggregate\":\"group\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.gtime}\",\"style\":56},\"6\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"7\":{\"text\":\"#{pop.birth}\",\"style\":56},\"8\":{\"text\":\"#{pop.hukou}\",\"style\":58},\"9\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"10\":{\"text\":\"#{pop.jperson}\",\"style\":57},\"11\":{\"style\":57,\"text\":\"#{pop.type}\"}},\"isDrag\":true,\"height\":35},\"5\":{\"cells\":{\"2\":{\"text\":\"\"}},\"isDrag\":true},\"len\":99},\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgLine truncated
INSERT INTO `jimu_report` VALUES ('6059e405dd9c66a6d38e00841d2e40cc', '566777', '处方笺', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":10,\"sci\":5,\"eri\":10,\"eci\":6,\"width\":72,\"height\":25},\"excel_config_id\":\"6059e405dd9c66a6d38e00841d2e40cc\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false},\"rows\":{\"0\":{\"cells\":{\"3\":{\"style\":80,\"text\":\" \"}},\"height\":96},\"1\":{\"cells\":{\"1\":{\"style\":24,\"text\":\" \"},\"2\":{\"style\":25,\"text\":\" \"},\"3\":{\"style\":25,\"text\":\" \"},\"4\":{\"style\":25,\"text\":\" \"},\"5\":{\"style\":25,\"text\":\" \"},\"6\":{\"style\":25,\"text\":\" \"},\"7\":{\"style\":25,\"text\":\" \"},\"8\":{\"style\":25,\"text\":\" \"},\"9\":{\"style\":25,\"text\":\" \"},\"10\":{\"style\":25,\"text\":\" \"},\"11\":{\"style\":25,\"text\":\" \"},\"12\":{\"style\":26,\"text\":\" \"}},\"height\":18},\"2\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":27},\"2\":{\"merge\":[0,9],\"text\":\"智能医学院处方笺\",\"style\":38},\"3\":{\"style\":12,\"text\":\" \"},\"4\":{\"style\":12,\"text\":\" \"},\"5\":{\"style\":12,\"text\":\" \"},\"6\":{\"style\":12,\"text\":\" \"},\"7\":{\"style\":12,\"text\":\" \"},\"8\":{\"style\":12,\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"style\":12,\"text\":\" \"},\"11\":{\"style\":12,\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"},\"13\":{\"style\":80}},\"height\":124},\"3\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":46},\"2\":{\"merge\":[0,1],\"text\":\"姓名:\",\"style\":4},\"3\":{\"style\":4,\"text\":\" \"},\"4\":{\"text\":\"${yonghu.yphone}\"},\"5\":{\"text\":\"性别:\",\"style\":42},\"6\":{\"text\":\"${yonghu.ysex}\",\"style\":42},\"7\":{\"text\":\"年龄:\",\"style\":47},\"8\":{\"text\":\"${yonghu.yage}\"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \",\"style\":42},\"11\":{\"style\":69,\"text\":\" \",\"merge\":[0,1]},\"12\":{\"style\":43,\"text\":\" \"},\"13\":{\"style\":80}},\"isDrag\":true},\"4\":{\"cells\":{\"1\":{\"text\":\" \",\"style\":74},\"2\":{\"style\":4,\"merge\":[0,1],\"text\":\"单位:\"},\"3\":{\"style\":4,\"text\":\" \"},\"4\":{\"text\":\"${yonghu.danwei}\"},\"5\":{\"text\":\"电话:\"},\"6\":{\"text\":\"${yonghu.yphone}\",\"merge\":[0,5]},\"7\":{\"text\":\" \"},\"8\":{\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"},\"15\":{\"text\":\"\"}},\"isDrag\":true,\"height\":29},\"5\":{\"cells\":{\"1\":{\"style\":31,\"text\":\" \"},\"2\":{\"merge\":[0,1],\"text\":\"初步诊断:\",\"style\":4},\"3\":{\"text\":\" \",\"style\":4},\"4\":{\"text\":\"${yonghu.yjieguo}\",\"merge\":[0,7]},\"5\":{\"text\":\" \"},\"6\":{\"text\":\" \"},\"7\":{\"text\":\" \"},\"8\":{\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"}},\"isDrag\":true,\"height\":34},\"6\":{\"cells\":{\"1\":{\"text\":\" RP:\",\"merge\":[0,2],\"style\":79},\"2\":{\"style\":11,\"text\":\" \"},\"3\":{\"style\":11,\"text\":\" \"},\"4\":{\"style\":39,\"text\":\" \"},\"5\":{\"style\":0,\"text\":\" \"},\"6\":{\"style\":0,\"text\":\" \"},\"7\":{\"style\":0,\"text\":\" \"},\"8\":{\"style\":0,\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"style\":0,\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"},\"14\":{},\"16\":{}},\"height\":79},\"7\":{\"cells\":{\"1\":{\"text\":\".\",\"style\":48},\"2\":{\"text\":\"\",\"style\":1},\"3\":{\"text\":\"#{yaopin.name}\",\"rendered\":\"\",\"merge\":[0,1]},\"5\":{},\"6\":{},\"7\":{\"text\":\"#{yaopin.percent}\",\"merge\":[0,1]},\"9\":{},\"10\":{},\"11\":{\"text\":\"\"},\"12\":{\"style\":28,\"text\":\" \"},\"14\":{}},\"isDrag\":true,\"height\":37},\"8\":{\"cells\":{\"1\":{\"style\":31,\"text\":\" \"},\"2\":{\"text\":\" \"},\"3\":{\"text\":\" \"},\"4\":{\"text\":\" \"},\"5\":{\"text\":\" \"},\"6\":{\"text\":\" \"},\"7\":{\"text\":\" \"},\"8\":{\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"}},\"height\":27},\"9\":{\"cells\":{\"1\":{\"style\":31,\"text\":\" \"},\"2\":{\"text\":\"医嘱:\",\"style\":76},\"3\":{\"text\":\"${yonghu.yizhu}\",\"style\":6,\"merge\":[0,8]},\"4\":{\"text\":\" \"},\"5\":{\"text\":\" \"},\"6\":{\"text\":\" \"},\"7\":{\"text\":\" \"},\"8\":{\"text\":\" \"},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"}},\"isDrag\":true},\"10\":{\"cells\":{\"1\":{\"style\":31,\"text\":\" \"},\"2\":{\"text\":\"药品费\",\"style\":6,\"merge\":[0,1]},\"3\":{\"text\":\" \"},\"4\":{\"text\":\"${yonghu.yprice}\",\"style\":6},\"5\":{\"merge\":[0,1],\"text\":\"中成药费\",\"style\":6},\"6\":{\"text\":\" \"},\"7\":{\"style\":6,\"text\":\" \"},\"8\":{\"text\":\"治疗费\",\"merge\":[0,2],\"style\":6},\"9\":{\"text\":\" \"},\"10\":{\"text\":\" \"},\"11\":{\"style\":6,\"text\":\" \"},\"12\":{\"style\":28,\"text\":\" \"}},\"isDrag\":trueLine truncated
INSERT INTO `jimu_report` VALUES ('6d6bdcb5e820c301ea32789e3ae43c44', '1223', '供电公司抢修单', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":16,\"sci\":2,\"eri\":16,\"eci\":6,\"width\":555,\"height\":107},\"printElWidth\":718,\"excel_config_id\":\"6d6bdcb5e820c301ea32789e3ae43c44\",\"printElHeight\":1047,\"rows\":{\"0\":{\"cells\":{},\"height\":11},\"1\":{\"cells\":{\"1\":{\"text\":\"供电公司抢修竣工单\",\"merge\":[0,5],\"style\":39},\"2\":{\"style\":39},\"3\":{\"style\":39},\"4\":{\"style\":39},\"5\":{\"style\":39},\"6\":{\"style\":39}},\"height\":84},\"2\":{\"cells\":{\"1\":{\"text\":\"填报单位:\",\"style\":26},\"2\":{\"text\":\"#{qiangxiu.danwei}\",\"style\":27},\"3\":{\"style\":27},\"4\":{\"text\":\"\",\"style\":27},\"5\":{\"text\":\"填报日期:\",\"style\":26},\"6\":{\"text\":\"#{qiangxiu.time}\",\"style\":27}}},\"3\":{\"cells\":{\"1\":{\"text\":\"填报名称:\",\"style\":26},\"2\":{\"text\":\"#{qiangxiu.ktime}\",\"style\":27},\"3\":{\"style\":27},\"4\":{\"style\":27},\"5\":{\"text\":\"项目编号:\",\"style\":26},\"6\":{\"text\":\"#{qiangxiu.wtime}\",\"style\":27}}},\"4\":{\"cells\":{\"1\":{\"style\":28},\"2\":{\"style\":28},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":28},\"6\":{\"style\":28}},\"height\":10},\"5\":{\"cells\":{\"1\":{\"text\":\"项目批准核算\",\"style\":29},\"2\":{\"text\":\"#{qiangxiu.yusuan}\",\"style\":30,\"merge\":[0,4]}},\"height\":89},\"6\":{\"cells\":{\"1\":{\"text\":\"开工日期\",\"style\":32},\"2\":{\"style\":33,\"text\":\"#{qiangxiu.ktime}\",\"merge\":[0,1]},\"3\":{\"style\":28},\"4\":{\"style\":34,\"text\":\"完工日期\"},\"5\":{\"style\":33,\"merge\":[0,1],\"text\":\"#{qiangxiu.wtime}\"},\"6\":{\"style\":28}},\"height\":31},\"7\":{\"cells\":{\"1\":{\"text\":\"完工主要内容\",\"style\":32},\"2\":{\"style\":33,\"text\":\"#{qiangxiu.neirong}\",\"merge\":[0,4]}},\"height\":71},\"8\":{\"cells\":{\"1\":{\"text\":\"形成能力\",\"style\":32},\"2\":{\"style\":33,\"merge\":[0,4],\"text\":\"#{qiangxiu.nengli}\"},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":28},\"6\":{\"style\":28}},\"height\":49},\"9\":{\"cells\":{\"1\":{\"text\":\"目标效益验收意见\",\"style\":32},\"2\":{\"style\":35,\"text\":\"#{qiangxiu.yijian}\",\"merge\":[0,4]}},\"height\":100},\"10\":{\"cells\":{\"1\":{\"style\":37,\"text\":\" \",\"merge\":[0,3]},\"2\":{\"style\":28},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":37,\"text\":\"#{qiangxiu.time1}\",\"merge\":[0,1]},\"6\":{\"style\":28}}},\"11\":{\"cells\":{\"1\":{\"text\":\"实施质量验收评价\",\"style\":32},\"2\":{\"style\":35,\"text\":\"#{qiangxiu.pingjia}\",\"merge\":[0,4]}},\"height\":99},\"12\":{\"cells\":{\"1\":{\"style\":33,\"merge\":[0,3]},\"2\":{\"style\":28},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":33,\"merge\":[0,1],\"text\":\"#{qiangxiu.time1}\"},\"6\":{\"style\":28}}},\"13\":{\"cells\":{\"1\":{\"text\":\"验收总结\",\"style\":32},\"2\":{\"style\":35,\"text\":\"#{qiangxiu.zongjie}\",\"rendered\":\"\",\"merge\":[0,4]}},\"height\":80},\"14\":{\"cells\":{\"1\":{\"text\":\"责任单位意见\",\"style\":32},\"2\":{\"style\":33,\"text\":\"#{qiangxiu.zongjie}\",\"merge\":[0,4]}},\"height\":67},\"15\":{\"cells\":{\"1\":{\"text\":\"责任单位审核人\",\"style\":32},\"2\":{\"style\":33,\"merge\":[0,1],\"text\":\"#{qiangxiu.dshenhe}\"},\"3\":{\"style\":28},\"4\":{\"style\":34,\"text\":\"日期\"},\"5\":{\"style\":33,\"text\":\"#{qiangxiu.time3}\",\"merge\":[0,1]},\"6\":{\"style\":28}},\"height\":42},\"16\":{\"cells\":{\"1\":{\"text\":\"生技部审批意见\",\"style\":32},\"2\":{\"style\":33,\"text\":\"#{qiangxiu.zongjie}\",\"merge\":[0,4]}},\"height\":107},\"17\":{\"cells\":{\"1\":{\"text\":\"生技部主任\",\"style\":32},\"2\":{\"style\":33,\"merge\":[0,1],\"text\":\"#{qiangxiu.zhuren}\"},\"3\":{\"style\":28},\"4\":{\"style\":34,\"text\":\"日期\"},\"5\":{\"style\":33,\"text\":\"#{qiangxiu.time4}\",\"merge\":[0,1]},\"6\":{\"style\":28}},\"height\":41},\"18\":{\"cells\":{\"1\":{\"style\":28},\"2\":{\"style\":28},\"3\":{\"style\":28},\"4\":{\"style\":28},\"5\":{\"style\":28},\"6\":{\"style\":28}}},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":700,\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#ffffff\"},{\"Line truncated
INSERT INTO `jimu_report` VALUES ('753506001105539072', '20221118170243', '分版错误报表', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paginationShow\":false,\"paginationLocation\":\"middle\",\"headerFooterShow\":false,\"headerLocation\":\"left\",\"headerText\":\"\",\"footerLocation\":\"left\",\"footerText\":\"\",\"fontsize\":28,\"rotationAngle\":-45,\"watermarkColor\":\"#d5d5d5\",\"watermarkText\":\"积木报表\",\"watermarkShow\":true},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1035,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":144},\"1\":{\"width\":391},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"753506001105539072\",\"hiddenCells\":[],\"zonedEditionList\":[{\"sci\":0,\"sri\":7,\"eci\":1,\"eri\":8,\"db\":\"test02\",\"index\":1}],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"序号\",\"style\":0},\"1\":{\"text\":\"图片\",\"style\":0},\"2\":{\"text\":\"批次号\",\"style\":0},\"3\":{\"text\":\"款式编码\",\"style\":0},\"4\":{\"text\":\"款式名称\",\"style\":0},\"5\":{\"text\":\"颜色\",\"style\":0},\"6\":{\"text\":\"交期\",\"style\":0}},\"height\":25},\"1\":{\"cells\":{\"0\":{\"style\":0,\"text\":\"=row()\"},\"1\":{\"style\":0,\"text\":\"#{test01.s_cover_img_url}\",\"rendered\":\"\",\"config\":\"\",\"display\":\"img\"},\"2\":{\"style\":0,\"text\":\"#{test01.s_lot_no}\"},\"3\":{\"style\":0,\"text\":\"#{test01.s_item_code}\"},\"4\":{\"style\":0,\"text\":\"#{test01.s_full_name}\"},\"5\":{\"style\":0,\"text\":\"#{test01.modelcolor}\"},\"6\":{\"style\":0,\"text\":\"#{test01.d_delivery_date}\"}}},\"2\":{\"cells\":{\"1\":{\"text\":\"\",\"rendered\":\"\",\"config\":\"\"}}},\"7\":{\"cells\":{\"0\":{\"text\":\"code\"},\"1\":{\"text\":\"name\"}}},\"8\":{\"cells\":{\"0\":{\"text\":\"#{test02.suit_item_code}\"},\"1\":{\"text\":\"#{test02.suit_full_name}\"}}},\"len\":101},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}}],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[]}', NULL, NULL, '15629196826', '2022-11-18 17:02:43', 'admin', '2024-12-03 15:26:27', 0, NULL, NULL, 0, 74, NULL, NULL, NULL, '1', 1, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('7905022412733a0c68dc7b4ef8947489', '8996445', '介绍信', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":1,\"eri\":3,\"eci\":11,\"width\":678,\"height\":216},\"excel_config_id\":\"7905022412733a0c68dc7b4ef8947489\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{},\"12\":{}},\"height\":11},\"1\":{\"cells\":{},\"height\":24},\"2\":{\"cells\":{},\"isDrag\":true,\"height\":43},\"3\":{\"cells\":{\"0\":{\"text\":\" \",\"style\":46},\"1\":{\"merge\":[0,10],\"text\":\"介绍信\",\"style\":337}},\"height\":216},\"4\":{\"cells\":{\"1\":{\"text\":\"${jieshaoxin.name}\",\"style\":338,\"merge\":[0,3]},\"5\":{\"text\":\":\",\"style\":339}},\"isDrag\":true,\"height\":80},\"5\":{\"cells\":{\"1\":{\"text\":\"兹介绍我局\",\"style\":340,\"merge\":[0,5]},\"7\":{\"text\":\"${jieshaoxin.value}\",\"style\":341},\"8\":{\"text\":\"同志\",\"style\":339},\"9\":{\"text\":\"${jieshaoxin.percent}\",\"style\":339},\"10\":{\"text\":\"人,前往你处\",\"style\":339,\"merge\":[0,1]}},\"isDrag\":true,\"height\":42},\"6\":{\"cells\":{\"1\":{\"text\":\"${jieshaoxin.shiqing}\",\"style\":342,\"merge\":[0,5]},\"15\":{\"text\":\"\"}},\"isDrag\":true,\"height\":48},\"7\":{\"cells\":{\"1\":{\"style\":343,\"text\":\" \"},\"2\":{\"style\":344,\"merge\":[0,5],\"text\":\"请予接洽并给予帮助。\"}},\"height\":56},\"8\":{\"cells\":{},\"height\":15},\"9\":{\"cells\":{},\"height\":11},\"10\":{\"cells\":{\"8\":{\"text\":\" \",\"style\":316,\"merge\":[0,3]}},\"height\":39},\"11\":{\"cells\":{\"8\":{\"merge\":[0,2],\"text\":\"单位盖章\",\"style\":347},\"11\":{\"merge\":[0,1],\"style\":316,\"text\":\" \"}},\"height\":84},\"12\":{\"cells\":{\"1\":{\"merge\":[0,2],\"text\":\" \",\"style\":317},\"4\":{\"merge\":[0,2],\"text\":\" \",\"style\":346},\"7\":{\"text\":\"(有效时间:至\",\"style\":317},\"8\":{\"text\":\"${jieshaoxin.gdata}\",\"style\":316,\"merge\":[0,2]},\"11\":{\"style\":348,\"text\":\"止)\"}},\"isDrag\":true,\"height\":30},\"13\":{\"cells\":{\"1\":{\"merge\":[12,11]}}},\"17\":{\"cells\":{},\"isDrag\":true},\"len\":89},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":699,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"left\"},{\"align\":\"left\",\"underline\":true},{\"underline\":true},{\"align\":\"center\",\"underline\":true},{\"align\":\"center\"},{\"align\":\"center\",\"underline\":false},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"left\",\"font\":{\"size\":16}},{\"font\":{\"size\":16}},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16}},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":16}},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16}},{\"align\":\"left\",\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"bold\":true}},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"left\",\"font\":{\"size\":16,\"bold\":false}},{\"font\":{\"size\":16,\"bold\":false}},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":16,\"bold\":false}},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":false}},{\"font\":{\"bold\":false}},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":false}},{\"align\":\"left\",\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":\"center\",\"underline\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"font\":{\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":\"left\",\"border\":{\"bottom\":[\"thin\",\"#000\"]},\"font\":{\"size\":16,\"bold\":false},\"color\":\"#3f3f3f\"},{\"font\":{\"size\":12}},{\"align\":\"left\",\"font\":{\"size\":12,\"bold\":false},\"color\":\"#3f3f3f\"},{\"font\":{\"size\":12,\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":\"center\",\"underline\":false,\"font\":{\"size\":12,\"bold\":false},\"color\":\"#3f3f3f\"},{\"align\":Line truncated
INSERT INTO `jimu_report` VALUES ('7c02c224a2db56d0350069650033f702', '895666', '核查评估表', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":5,\"sci\":18,\"eri\":5,\"eci\":18,\"width\":53,\"height\":46},\"printElWidth\":718,\"excel_config_id\":\"7c02c224a2db56d0350069650033f702\",\"printElHeight\":1047,\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"XX县(市、区)YY低保第三方核查评估汇总表\",\"merge\":[0,21],\"style\":386},\"2\":{\"style\":386},\"3\":{\"style\":386},\"4\":{\"style\":386},\"5\":{\"style\":386},\"6\":{\"style\":386},\"7\":{\"style\":386},\"8\":{\"style\":386},\"9\":{\"style\":386},\"10\":{\"style\":386},\"11\":{\"style\":386},\"12\":{\"style\":386},\"13\":{\"style\":386},\"14\":{\"style\":386},\"15\":{\"style\":386},\"16\":{\"style\":386},\"17\":{\"style\":386},\"18\":{\"style\":386},\"19\":{\"style\":386},\"20\":{\"style\":386},\"21\":{\"style\":386},\"22\":{\"style\":386}},\"height\":70},\"1\":{\"cells\":{\"1\":{\"merge\":[0,2],\"style\":403,\"text\":\" 北京市林翠社区\"},\"2\":{\"style\":398,\"text\":\" \"},\"3\":{\"style\":398,\"text\":\" \"},\"4\":{\"merge\":[0,2],\"text\":\"镇(乡、街道办事处)\",\"style\":399},\"5\":{\"style\":399},\"6\":{\"style\":399},\"7\":{\"style\":399,\"merge\":[0,7]},\"8\":{\"style\":400},\"9\":{\"style\":400},\"10\":{\"style\":400},\"11\":{\"style\":400},\"12\":{\"style\":400},\"13\":{\"style\":400},\"14\":{\"style\":400},\"15\":{\"merge\":[0,7],\"text\":\"单位:人、元、套、平方米\",\"style\":398},\"16\":{\"style\":401},\"17\":{\"style\":401},\"18\":{\"style\":401},\"19\":{\"style\":401},\"20\":{\"style\":401},\"21\":{\"style\":401},\"22\":{\"style\":401}}},\"2\":{\"cells\":{\"1\":{\"style\":114},\"2\":{\"style\":114},\"3\":{\"style\":114},\"4\":{\"style\":114},\"5\":{\"style\":114},\"6\":{\"style\":114},\"7\":{\"style\":114},\"8\":{\"style\":114},\"9\":{\"style\":114},\"10\":{\"style\":114},\"11\":{\"style\":114},\"12\":{\"style\":114},\"13\":{\"style\":114},\"14\":{\"style\":114},\"15\":{\"style\":114},\"16\":{\"style\":114},\"17\":{\"style\":114},\"18\":{\"style\":114},\"19\":{\"style\":114},\"20\":{\"style\":114},\"21\":{\"style\":114},\"22\":{\"style\":114}},\"height\":14},\"3\":{\"cells\":{\"1\":{\"style\":406,\"text\":\"村(社区)名称\",\"merge\":[1,0]},\"2\":{\"style\":407,\"text\":\"户主名称\",\"merge\":[1,0]},\"3\":{\"style\":407,\"text\":\"保障编号\",\"merge\":[1,0]},\"4\":{\"style\":408,\"text\":\"家庭人口\",\"merge\":[1,0]},\"5\":{\"style\":409,\"text\":\"家庭住址\",\"merge\":[1,0]},\"6\":{\"style\":409,\"text\":\"联系电话\",\"merge\":[1,0]},\"7\":{\"style\":408,\"text\":\"身份证号码\",\"merge\":[1,0]},\"8\":{\"style\":409,\"text\":\"原保障\",\"merge\":[0,2]},\"9\":{\"style\":377,\"text\":\" \"},\"10\":{\"style\":377,\"text\":\" \"},\"11\":{\"text\":\"核减后月人均收入\",\"style\":408,\"merge\":[1,0]},\"12\":{\"merge\":[0,5],\"text\":\"保障建议\",\"style\":410},\"13\":{\"style\":379,\"text\":\" \"},\"14\":{\"style\":379,\"text\":\" \"},\"15\":{\"style\":379,\"text\":\" \"},\"16\":{\"style\":379,\"text\":\" \"},\"17\":{\"style\":379,\"text\":\" \"},\"18\":{\"text\":\"是否新增对象\",\"style\":411,\"merge\":[1,0]},\"19\":{\"text\":\"建议取消原因\",\"style\":409,\"merge\":[0,3]},\"20\":{\"style\":377,\"text\":\" \"},\"21\":{\"style\":377,\"text\":\" \"},\"22\":{\"style\":377,\"text\":\" \"}}},\"4\":{\"cells\":{\"1\":{\"style\":381,\"text\":\" \"},\"2\":{\"style\":407,\"text\":\" \"},\"3\":{\"style\":382,\"text\":\" \"},\"4\":{\"style\":408,\"text\":\" \"},\"5\":{\"style\":377,\"text\":\" \"},\"6\":{\"style\":409,\"text\":\" \"},\"7\":{\"style\":383,\"text\":\" \"},\"8\":{\"text\":\"户数\",\"style\":412},\"9\":{\"style\":411,\"text\":\"人口\"},\"10\":{\"style\":413,\"text\":\"金额\"},\"11\":{\"style\":383,\"text\":\" \"},\"12\":{\"text\":\"保障类型\",\"style\":408},\"13\":{\"style\":413,\"text\":\"人口\"},\"14\":{\"style\":408,\"text\":\"差额补助\"},\"15\":{\"style\":408,\"text\":\"全额补助\"},\"16\":{\"style\":408,\"text\":\"增发补助\"},\"17\":{\"style\":408,\"text\":\"合计补助\"},\"18\":{\"style\":411,\"text\":\" \"},\"19\":{\"style\":408,\"text\":\"收入超标\"},\"20\":{\"style\":406,\"text\":\"机动车超标\"},\"21\":{\"style\":410,\"text\":\"死亡\"},\"22\":{\"style\":410,\"text\":\"其他\"}},\"height\":50},\"5\":{\"cells\":{\"1\":{\"style\":414,\"aggregate\":\"select\",\"rendered\":\"\",\"text\":\"#{hecha.name}\"},\"2\":{\"style\":414,\"text\":\"#{hecha.hname}\"},\"3\":{\"style\":414,\"text\":\"#{hecha.num}\"},\"4\":{\"style\":414,\"text\":\"#{hecha.knum}\"},\"5\":{\"style\":414,\"text\":\"#{hecha.zhuzhi}\"},\"6\":{\"style\":414,\"text\":\"#{hecha.phone}\"},\"7\":{\"style\":414,\"text\":\"#{hecha.scard}\"},\"8\":{\"style\":414,\"text\":\"#{hecha.yhnum}\"},\"9\":{\"style\":414,\"text\":\"#{hecha.yren}\"},\"10\":{\"style\":414,\"text\":\"#{hecha.yjine}\"},\"11\":{\"style\":414,\"tLine truncated
INSERT INTO `jimu_report` VALUES ('850286412532121600', '20230812182254', 'api测试', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"850286412532121600\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"zonedEditionList\":[],\"rows\":{\"3\":{\"cells\":{\"1\":{\"text\":\"#{aaa.ctotal}\"},\"2\":{\"text\":\"#{aaa.cname}\"}}},\"len\":200},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":300,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[],\"validations\":[],\"cols\":{\"len\":100},\"merges\":[]}', NULL, NULL, 'jeecg', '2023-08-12 18:22:55', NULL, '2023-08-12 18:22:55', 0, NULL, NULL, 0, 11, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('850315907339223040', '20210309142400__0615', '简单分组报表副本0615', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":2,\"eri\":3,\"eci\":2,\"width\":100,\"height\":54},\"excel_config_id\":\"850315907339223040\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":4,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"1\":{\"height\":0,\"text\":\"纵向员工信息登记表\",\"style\":2,\"merge\":[0,5]}},\"height\":40},\"2\":{\"cells\":{\"1\":{\"text\":\"部门\",\"style\":15},\"2\":{\"text\":\"学历\",\"style\":15},\"3\":{\"text\":\"姓名\",\"style\":15},\"4\":{\"text\":\"性别\",\"style\":15},\"5\":{\"text\":\"年龄\",\"style\":15},\"6\":{\"text\":\"薪水\",\"style\":15}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"style\":17,\"text\":\"#{tt.group(department)}\",\"aggregate\":\"group\",\"textOrders\":\"人事部|研发部\",\"sort\":\"desc\"},\"2\":{\"style\":17,\"text\":\"#{tt.group(education)}\",\"aggregate\":\"group\",\"sort\":\"default\",\"textOrders\":\"本科|专科\"},\"3\":{\"style\":17,\"text\":\"#{tt.name}\",\"sort\":\"default\",\"textOrders\":\"\"},\"4\":{\"style\":17,\"text\":\"#{tt.sex}\"},\"5\":{\"style\":17,\"text\":\"#{tt.age}\"},\"6\":{\"style\":17,\"text\":\"#{tt.salary}\"}},\"height\":54},\"len\":100},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"1000\",\"btnList\":[1,2,3,4,5,6,7,8,9]},\"groupField\":\"tt.department\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":687,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"bold\":true}},{\"font\":{\"bold\":true,\"size\":16}},{\"font\":{\"bold\":true,\"size\":16},\"align\":\"center\"},{\"align\":\"center\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"align\":\"center\",\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#bdd7ee\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#bdd7ee\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#9cc2e6\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#9cc2e6\"],\"top\":[\"thin\",\"#9cc2e6\"],\"left\":[\"thin\",\"#9cc2e6\"],\"right\":[\"thin\",\"#9cc2e6\"]}},{\"align\":\"center\",\"bgcolor\":\"#9cc2e6\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\"}],\"validations\":[],\"isGroup\":true,\"cols\":{\"0\":{\"width\":34},\"1\":{\"width\":119},\"3\":{\"width\":117},\"6\":{\"width\":117},\"7\":{\"width\":22},\"len\":100},\"merges\":[\"B2:G2\"]}', NULL, 'https://static.jeecg.com/designreport/images/QQ截图20210309142558_1615271174044.png', 'jeecg', '2023-08-12 20:18:41', 'admin', '2023-08-13 18:57:03', 0, NULL, NULL, 0, 87, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('850318855100268544', '20210127172112__9627', '多级循环表头报表副本9627', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":434,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":36},\"1\":{\"width\":87},\"2\":{\"width\":132},\"3\":{\"width\":179},\"len\":100},\"area\":{\"sri\":5,\"sci\":0,\"eri\":5,\"eci\":99,\"width\":10034,\"height\":25},\"excel_config_id\":\"850318855100268544\",\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\",\"rendered\":\"\"},\"1\":{\"text\":\"各地区商品销售额一栏表\",\"merge\":[0,2],\"style\":6}},\"height\":83},\"1\":{\"cells\":{\"1\":{\"text\":\"地区|销量|时间\",\"style\":2,\"lineStart\":\"lefttop\",\"rendered\":\"\",\"merge\":[1,1],\"height\":74},\"3\":{\"style\":30,\"text\":\"#{xs.groupRight(year)}年\",\"aggregate\":\"group\",\"direction\":\"right\"}},\"height\":40},\"2\":{\"cells\":{\"3\":{\"style\":8,\"text\":\"#{xs.groupRight(mouth)}\",\"aggregate\":\"group\",\"direction\":\"right\",\"sort\":\"default\"}},\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\"#{xs.group(diqu)}\",\"style\":28,\"aggregate\":\"group\"},\"2\":{\"style\":28,\"text\":\"#{xs.group(class)}\",\"aggregate\":\"group\"},\"3\":{\"style\":29,\"text\":\"#{xs.dynamic(sales)}\",\"aggregate\":\"dynamic\",\"rendered\":\"\",\"decimalPlaces\":\"0\"}},\"height\":38},\"4\":{\"cells\":{\"1\":{\"style\":24,\"text\":\"总计\"},\"2\":{\"text\":\"=cnmoney(::D5)\",\"style\":34},\"3\":{\"style\":25,\"text\":\"=SUM(D4)\"}},\"height\":37},\"7\":{\"cells\":{\"1\":{}}},\"9\":{\"cells\":{\"1\":{}}},\"len\":99},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"xs.diqu\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"font\":{\"size\":16}},{\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"size\":16,\"bold\":true},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\"},{\"align\":\"center\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\"},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"font\":{\"size\":9}},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#fe0000\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"color\":\"#fe0000\"},{\"color\":\"#ffffff\"},{\"bgcolor\":\"#9cc2e6\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\"#d8d8d8\"],\"right\":[\"thin\",\"#d8d8d8\"]}},{\"bgcolor\":\"#9cc2e6\",\"format\":\"number\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#d8d8d8\"],\"top\":[\"thin\",\"#d8d8d8\"],\"left\":[\"thin\",\Line truncated
INSERT INTO `jimu_report` VALUES ('850709188564844544', '20210729233805__4750', '表达式示例副本4750', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":0,\"eri\":3,\"eci\":0,\"width\":100,\"height\":25},\"excel_config_id\":\"850709188564844544\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"1000222.22\"},\"1\":{\"linkIds\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"\",\"style\":18,\"text\":\"=cnmoney(A1)\"},\"3\":{\"style\":16,\"text\":\"\"},\"4\":{\"text\":\"\"}},\"height\":43},\"1\":{\"cells\":{\"1\":{\"style\":12,\"text\":\"日期函数\",\"merge\":[0,3],\"height\":25},\"6\":{\"style\":12,\"text\":\"字符串函数\",\"merge\":[0,3],\"height\":25}},\"height\":34},\"2\":{\"cells\":{\"1\":{\"text\":\"函数名称\",\"style\":17},\"2\":{\"text\":\"表达式\",\"style\":17},\"3\":{\"text\":\"常量参数\",\"style\":17},\"4\":{\"text\":\"数据集参数\",\"style\":17},\"6\":{\"text\":\"函数名称\",\"style\":17},\"7\":{\"text\":\"表达式\",\"style\":17},\"8\":{\"text\":\"常量参数\",\"style\":17},\"9\":{\"text\":\"数据集参数\",\"style\":17}}},\"3\":{\"cells\":{\"1\":{\"text\":\"date()\",\"style\":4},\"2\":{\"text\":\"date(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=date(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=date(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"text\":\"char()\",\"style\":4,\"merge\":[1,0],\"height\":50},\"7\":{\"text\":\"char(22269)\",\"style\":4},\"8\":{\"text\":\"=char(22269)\",\"style\":4},\"9\":{\"style\":4,\"text\":\" \"}}},\"4\":{\"cells\":{\"1\":{\"text\":\"time()\",\"style\":4},\"2\":{\"text\":\"time(\\\"12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=time(\\\"12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=time(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"7\":{\"text\":\"char(101)\",\"style\":4},\"8\":{\"text\":\"=char(101)\",\"style\":4},\"9\":{\"style\":4,\"text\":\" \"}}},\"5\":{\"cells\":{\"1\":{\"text\":\"now()\",\"merge\":[3,0],\"height\":100,\"style\":4,\"linkIds\":\"\",\"rendered\":\"\",\"config\":\"\",\"display\":\"\"},\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":5},\"4\":{\"text\":\"=now()\",\"style\":5},\"6\":{\"style\":4,\"text\":\"cnmoney()\",\"merge\":[2,0],\"height\":75},\"7\":{\"text\":\"cnmoney(341.234)\",\"style\":4},\"8\":{\"style\":4,\"text\":\"=cnmoney(341.234)\"},\"9\":{\"style\":4,\"text\":\"=cnmoney(${jm_expression.num})\"}}},\"6\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":6},\"4\":{\"text\":\"=now()\",\"style\":6},\"7\":{\"text\":\"cnmoney(341.234,\\\"b\\\")\",\"style\":4},\"8\":{\"text\":\"=cnmoney(341.234,\\\"b\\\")\",\"style\":4},\"9\":{\"style\":4,\"text\":\"=cnmoney(${jm_expression.num},\\\"b\\\")\"}}},\"7\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":7},\"4\":{\"text\":\"=now()\",\"style\":7},\"7\":{\"text\":\"cnmoney(341.234,\\\"bw\\\")\",\"style\":4},\"8\":{\"text\":\"=cnmoney(341.234,\\\"bw\\\")\",\"style\":4},\"9\":{\"text\":\"=cnmoney(${jm_expression.num},\\\"bw\\\")\",\"style\":4}}},\"8\":{\"cells\":{\"2\":{\"text\":\"now()\",\"style\":4},\"3\":{\"text\":\"=now()\",\"style\":8},\"4\":{\"text\":\"=now()\",\"style\":8},\"6\":{\"text\":\"concat()\",\"style\":4},\"7\":{\"text\":\"concat(\'hello \',\'word\',\' !\')\",\"style\":4},\"8\":{\"text\":\"=concat(\'hello \',\'world\',\' !\')\",\"style\":4},\"9\":{\"text\":\"=concat(\'${jm_expression.upper}\',\' world\',\' !\')\",\"style\":4}}},\"9\":{\"cells\":{\"1\":{\"text\":\"year()\",\"style\":4},\"2\":{\"text\":\"year(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=year(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=year(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"text\":\"lower()\",\"style\":4},\"7\":{\"text\":\"lower(\'HELLOW\')\",\"style\":4},\"8\":{\"text\":\"=lower(\'HELLOW\')\",\"style\":4},\"9\":{\"text\":\"=lower(\\\"${jm_expression.upper}\\\") \",\"style\":4}}},\"10\":{\"cells\":{\"1\":{\"text\":\"month()\",\"style\":4},\"2\":{\"text\":\"month(\\\"2021-07-29 12:11:10\\\") \",\"style\":4},\"3\":{\"text\":\"=month(\\\"2021-07-29 12:11:10\\\") \",\"style\":4},\"4\":{\"text\":\"=month(\\\"${jm_expression.create_time}\\\") \",\"style\":4},\"6\":{\"text\":\"upper()\",\"style\":4},\"7\":{\"text\":\"upper(\'world\')\",\"style\":4},\"8\":{\"text\":\"=upper(\'world\')\",\"style\":4},\"9\":{\"text\":\"=upper(\'${jm_expression.lower}\')\",\"style\":4}}},\"11\":{\"cells\":{\"1\":{\"text\":\"day()\",\"style\":4},\"2\":{\"text\":\"day(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"3\":{\"text\":\"=day(\\\"2021-07-29 12:11:10\\\")\",\"style\":4},\"4\":{\"text\":\"=day(\\\"${jm_expression.create_time}\\\")\",\"style\":4},\"6\":{\"style\":4,Line truncated
INSERT INTO `jimu_report` VALUES ('850710545531240448', '20230813222715', 'SSD', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"850710545531240448\",\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"2\":{\"cells\":{\"1\":{\"text\":\"12.34\"},\"2\":{\"text\":\"=cnmoney(B3)\"}}},\"len\":200},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":300,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[],\"validations\":[],\"cols\":{\"len\":100},\"merges\":[]}', NULL, NULL, 'admin', '2023-08-13 22:27:15', 'admin', '2023-09-25 15:13:07', 0, NULL, NULL, 0, 24, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('864668240323870720', '20201202175858__2053', '乡村振兴普惠金融服务平台副本2053', NULL, NULL, '984302961118724096', '{\"loopBlockList\":[],\"chartList\":[{\"col\":5,\"backgroud\":{\"image\":\"\",\"color\":\"#fff\",\"enabled\":false},\"url\":\"\",\"colspan\":6,\"offsetX\":0,\"layer_id\":\"reOVgCVG6ZPWh5c1\",\"offsetY\":0,\"extData\":{\"dbCode\":\"ditu1\",\"dataType\":\"api\",\"xText\":\"\",\"dataId1\":\"\",\"source\":\"\",\"isTiming\":true,\"target\":\"\",\"dataId\":\"864668240575528960\",\"series\":\"type\",\"yText\":\"\",\"axisY\":\"value\",\"axisX\":\"name\",\"chartType\":\"map.scatter\",\"id\":\"reOVgCVG6ZPWh5c1\",\"apiStatus\":\"1\",\"intervalTime\":\"5\"},\"rowspan\":12,\"width\":\"568\",\"row\":1,\"config\":\"{\\\"geo\\\":{\\\"map\\\":\\\"shandong\\\",\\\"zoom\\\":0.8,\\\"label\\\":{\\\"color\\\":\\\"#19DEF4\\\",\\\"fontSize\\\":12,\\\"show\\\":true},\\\"itemStyle\\\":{\\\"borderWidth\\\":0.5,\\\"areaColor\\\":\\\"#0C514B\\\",\\\"borderColor\\\":\\\"#000\\\"},\\\"emphasis\\\":{\\\"label\\\":{\\\"color\\\":\\\"#19DEF4\\\"},\\\"itemStyle\\\":{\\\"areaColor\\\":\\\"#0A2B34\\\"}},\\\"regions\\\":[],\\\"layoutSize\\\":600,\\\"roam\\\":true,\\\"layoutCenter\\\":[\\\"50%\\\",\\\"50%\\\"]},\\\"series\\\":[{\\\"encode\\\":{\\\"value\\\":[2]},\\\"data\\\":[{\\\"name\\\":\\\"济南市\\\",\\\"value\\\":[117.000923,36.675807,255]},{\\\"name\\\":\\\"青岛市\\\",\\\"value\\\":[120.355173,36.082982,300]},{\\\"name\\\":\\\"淄博市\\\",\\\"value\\\":[118.047648,36.814939,130]},{\\\"name\\\":\\\"枣庄市\\\",\\\"value\\\":[117.557964,34.856424,150]}],\\\"name\\\":\\\"\\\",\\\"emphasis\\\":{\\\"label\\\":{\\\"show\\\":true}},\\\"itemStyle\\\":{\\\"color\\\":\\\"#FFFF01\\\"},\\\"coordinateSystem\\\":\\\"geo\\\",\\\"label\\\":{\\\"formatter\\\":\\\"{b}\\\",\\\"show\\\":false,\\\"position\\\":\\\"right\\\"},\\\"type\\\":\\\"scatter\\\"}],\\\"chartType\\\":\\\"map\\\",\\\"tooltip\\\":{\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":18}},\\\"title\\\":{\\\"show\\\":false,\\\"top\\\":5,\\\"text\\\":\\\"主要城市空气质量\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#c23531\\\",\\\"fontWeight\\\":\\\"bolder\\\",\\\"fontSize\\\":18},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"height\":\"435\",\"virtualCellRange\":[[1,5],[1,6],[1,7],[1,8],[1,9],[1,10]]},{\"col\":11,\"backgroud\":{\"image\":\"\",\"color\":\"#fff\",\"enabled\":false},\"url\":\"\",\"colspan\":3,\"offsetX\":0,\"layer_id\":\"Kkx8cQxh41KDHQKJ\",\"offsetY\":0,\"extData\":{\"dbCode\":\"wunian\",\"dataType\":\"api\",\"xText\":\"\",\"isTiming\":true,\"dataId\":\"864668240407756800\",\"chartId\":\"\",\"series\":\"type\",\"yText\":\"\",\"axisY\":\"value\",\"axisX\":\"name\",\"chartType\":\"line.area\",\"apiStatus\":\"1\",\"intervalTime\":\"5\"},\"rowspan\":4,\"width\":\"357\",\"row\":3,\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":0,\\\"textStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"data\\\":[\\\"玉米\\\",\\\"大豆\\\",\\\"花生\\\",\\\"高粱\\\",\\\"小麦\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":55,\\\"left\\\":60,\\\"bottom\\\":40,\\\"right\\\":24},\\\"series\\\":[{\\\"areaStyle\\\":{\\\"color\\\":\\\"#6CE6BC\\\",\\\"opacity\\\":0.4},\\\"data\\\":[1000879,3400879,2300879,2400879,3000],\\\"showSymbol\\\":true,\\\"lineStyle\\\":{\\\"width\\\":2},\\\"symbolSize\\\":5,\\\"isArea\\\":true,\\\"name\\\":\\\"\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#9DE4D1\\\"},\\\"step\\\":false,\\\"label\\\":{\\\"show\\\":false,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"line\\\",\\\"smooth\\\":false}],\\\"tooltip\\\":{\\\"formatter\\\":\\\"{b} : {c}\\\",\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":\\\"10\\\"}},\\\"title\\\":{\\\"show\\\":true,\\\"top\\\":10,\\\"text\\\":\\\"五年产业变化趋势\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#81E1B6\\\",\\\"fontWeight\\\":\\\"normal\\\",\\\"fontSize\\\":\\\"14\\\"},\\\"left\\\":\\\"left\\\",\\\"padding\\\":[5,20,5,10]}}\",\"height\":\"147\",\"virtualCellRange\":[[3,11],[3,12],[3,13]]},{\"col\":11,\"backgroud\":{\"image\":\"\",\"color\":\"#fff\",\"enabled\":false},\"url\":\"\",\"colspan\":3,\"offsetX\":0,\"layer_id\":\"a7MjSGYTQuijDpR4\",\"offsetY\":0,\"extData\":{Line truncated
INSERT INTO `jimu_report` VALUES ('873354273768964096', '20231015100547', '测试sql', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"873354273768964096\",\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"zonedEditionList\":[],\"rows\":{\"3\":{\"cells\":{\"1\":{\"text\":\"#{sql01.dict_name}\"},\"2\":{\"text\":\"#{sql01.dict_code}\"}}},\"len\":200},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":300,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[],\"validations\":[],\"cols\":{\"len\":100},\"merges\":[]}', NULL, NULL, 'admin', '2023-10-15 10:05:48', 'admin', '2023-10-16 16:51:46', 0, NULL, NULL, 0, 7, NULL, NULL, NULL, '2', 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('891572767673122816', '20231204163842', '导出报错', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paginationShow\":false,\"paginationLocation\":\"middle\",\"headerFooterShow\":false,\"headerLocation\":\"left\",\"headerText\":\"\",\"footerLocation\":\"left\",\"footerText\":\"\",\"fontsize\":28,\"rotationAngle\":-45,\"watermarkColor\":\"#d5d5d5\",\"watermarkText\":\"积木报表\",\"watermarkShow\":true},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":600,\"autofilter\":{},\"validations\":[],\"cols\":{\"len\":100},\"chartList\":[{\"row\":0,\"col\":0,\"colspan\":6,\"rowspan\":19,\"width\":\"586\",\"height\":\"457\",\"config\":\"{\\\"yAxis\\\":{\\\"axisLabel\\\":{\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"销量\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"xAxis\\\":{\\\"axisLabel\\\":{\\\"rotate\\\":0,\\\"interval\\\":\\\"auto\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#333\\\",\\\"fontSize\\\":12}},\\\"data\\\":[\\\"衬衫\\\",\\\"羊毛衫\\\",\\\"雪纺衫\\\",\\\"裤子\\\",\\\"高跟鞋\\\",\\\"袜子\\\"],\\\"axisLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"#333\\\"}},\\\"show\\\":true,\\\"name\\\":\\\"服饰\\\",\\\"splitLine\\\":{\\\"lineStyle\\\":{\\\"color\\\":\\\"red\\\",\\\"width\\\":1,\\\"type\\\":\\\"solid\\\"},\\\"show\\\":false}},\\\"grid\\\":{\\\"top\\\":60,\\\"left\\\":60,\\\"bottom\\\":60,\\\"right\\\":60},\\\"series\\\":[{\\\"barWidth\\\":50,\\\"data\\\":[5,20,36,10,10,20],\\\"name\\\":\\\"销量\\\",\\\"itemStyle\\\":{\\\"color\\\":\\\"#c43632\\\",\\\"barBorderRadius\\\":0},\\\"label\\\":{\\\"show\\\":true,\\\"position\\\":\\\"top\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"black\\\",\\\"fontSize\\\":16,\\\"fontWeight\\\":\\\"bolder\\\"}},\\\"type\\\":\\\"bar\\\",\\\"barMinHeight\\\":2}],\\\"tooltip\\\":{\\\"show\\\":true,\\\"textStyle\\\":{\\\"color\\\":\\\"#fff\\\",\\\"fontSize\\\":18}},\\\"title\\\":{\\\"padding\\\":[5,20,5,20],\\\"top\\\":\\\"5\\\",\\\"left\\\":\\\"left\\\",\\\"show\\\":true,\\\"text\\\":\\\"某站点用户访问来源\\\",\\\"textStyle\\\":{\\\"color\\\":\\\"#c23531\\\",\\\"fontSize\\\":18,\\\"fontWeight\\\":\\\"bolder\\\"}}}\",\"url\":\"\",\"extData\":{\"chartId\":\"bar.simple\",\"chartType\":\"bar.simple\"},\"layer_id\":\"ZyBqS2hMYJbibekG\",\"offsetX\":0,\"offsetY\":0,\"backgroud\":{\"image\":\"\",\"color\":\"#fff\",\"enabled\":false},\"virtualCellRange\":[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5]]}],\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"891572767673122816\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"1\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"2\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"3\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"4\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"},\"5\":{\"text\":\" \",\"virtual\":\"ZyBqS2hMYJbibekG\"}}},\"len\":100},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":false,\"name\":\"sheet1\",\"styles\":[],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[]}', NULL, NULL, 'admin', '2023-12-04 16:38:43', 'admin', '2024-10-22 11:28:55', 0, NULL, NULL, 0, 23, NULL, NULL, NULL, '2', 1, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('891612623430320128', '20231204191802', '查询1', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":false,\"pyGroupEngine\":false,\"excel_config_id\":\"891612623430320128\",\"printConfig\":{\"layout\":\"portrait\",\"paginationShow\":false,\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"paginationLocation\":\"middle\",\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"2\":{\"cells\":{\"1\":{\"text\":\"#{s1.id}\"},\"2\":{\"text\":\"#{s1.name}\"},\"3\":{\"text\":\"#{s1.gtime}\"}}},\"6\":{\"cells\":{\"1\":{}}},\"len\":200},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":549,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[],\"validations\":[],\"cols\":{\"1\":{\"width\":164},\"3\":{\"width\":185},\"len\":100},\"merges\":[]}', NULL, NULL, 'admin', '2023-12-04 19:18:03', 'admin', '2024-03-31 05:14:43', 0, NULL, NULL, 0, 73, NULL, NULL, NULL, '2', 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('948079358232330240', '20240508145843', '测试大数据导出excel', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paginationShow\":false,\"paginationLocation\":\"middle\",\"headerFooterShow\":false,\"headerLocation\":\"left\",\"headerText\":\"\",\"footerLocation\":\"left\",\"footerText\":\"\",\"fontsize\":28,\"rotationAngle\":-45,\"watermarkColor\":\"#d5d5d5\",\"watermarkText\":\"积木报表\",\"watermarkShow\":true},\"hidden\":{\"rows\":[],\"cols\":[]},\"queryFormSetting\":{\"useQueryForm\":false,\"dbKey\":\"\",\"idField\":\"\"},\"dbexps\":[],\"dicts\":[],\"fillFormToolbar\":{\"show\":true,\"btnList\":[\"save\",\"subTable_add\",\"verify\",\"subTable_del\",\"print\",\"close\",\"first\",\"prev\",\"next\",\"paging\",\"total\",\"last\"]},\"freeze\":\"A1\",\"dataRectWidth\":1207,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":34},\"5\":{\"width\":128},\"11\":{\"width\":145},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[],\"excel_config_id\":\"948079358232330240\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"2\":{\"cells\":{\"1\":{\"style\":1,\"text\":\"ID\"},\"2\":{\"style\":1,\"text\":\"日志类型\"},\"3\":{\"style\":1,\"text\":\"日志内容\"},\"4\":{\"style\":1,\"text\":\"用户ID\"},\"5\":{\"style\":1,\"text\":\"用户账号\"},\"6\":{\"style\":1,\"text\":\"IP地址\"},\"7\":{\"style\":1,\"text\":\"方法\"},\"8\":{\"style\":1,\"text\":\"请求地址\"},\"9\":{\"style\":1,\"text\":\"请求参数\"},\"10\":{\"style\":1,\"text\":\"耗时\"},\"11\":{\"style\":1,\"text\":\"创建时间\"}}},\"3\":{\"cells\":{\"1\":{\"style\":0,\"text\":\"#{ceshibig.id}\"},\"2\":{\"style\":0,\"text\":\"#{ceshibig.log_type}\"},\"3\":{\"style\":0,\"text\":\"#{ceshibig.log_content}\"},\"4\":{\"style\":0,\"text\":\"#{ceshibig.userid}\"},\"5\":{\"style\":0,\"text\":\"#{ceshibig.username}\"},\"6\":{\"style\":0,\"text\":\"#{ceshibig.ip}\"},\"7\":{\"style\":0,\"text\":\"#{ceshibig.method}\"},\"8\":{\"style\":0,\"text\":\"#{ceshibig.request_url}\"},\"9\":{\"style\":0,\"text\":\"#{ceshibig.request_param}\"},\"10\":{\"style\":0,\"text\":\"#{ceshibig.cost_time}\"},\"11\":{\"style\":0,\"text\":\"#{ceshibig.create_time}\"}}},\"8\":{\"cells\":{\"5\":{}}},\"9\":{\"cells\":{\"3\":{\"text\":\"\",\"fixedHead\":1}}},\"len\":201},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[1,2,3,4,5,6,7,8,9]},\"fixedPrintHeadRows\":[{\"sri\":9,\"sci\":3,\"eri\":9,\"eci\":3}],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"fillFormInfo\":{\"layout\":{\"direction\":\"horizontal\",\"width\":200,\"height\":45}},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#a7d08c\"}],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[]}', NULL, NULL, 'admin', '2024-05-08 14:58:43', 'admin', '2025-03-12 19:54:33', 0, NULL, NULL, 0, 265, NULL, NULL, NULL, '2', 2, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('94b04a1ed7c17f8e96baa6d89fb90758', '3698522', '员工请假单', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":0,\"sci\":8,\"eri\":100,\"eci\":13,\"width\":600,\"height\":2732},\"excel_config_id\":\"94b04a1ed7c17f8e96baa6d89fb90758\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"0\":{\"text\":\"员工请假单\",\"style\":100,\"merge\":[0,7]},\"1\":{\"style\":100,\"text\":\" \"},\"2\":{\"style\":100,\"text\":\" \"},\"3\":{\"style\":100,\"text\":\" \"},\"4\":{\"style\":100,\"text\":\" \"},\"5\":{\"style\":100,\"text\":\" \"},\"6\":{\"style\":100,\"text\":\" \"},\"7\":{\"style\":100,\"text\":\" \"}},\"height\":65},\"2\":{\"cells\":{\"0\":{\"text\":\"单位:北极星\",\"style\":101,\"merge\":[0,2]},\"1\":{\"style\":101,\"text\":\" \"},\"2\":{\"style\":101,\"text\":\" \"},\"3\":{\"style\":102,\"text\":\" \"},\"4\":{\"style\":102,\"text\":\" \"},\"5\":{\"style\":102,\"text\":\" \"},\"6\":{\"style\":102,\"text\":\" \"},\"7\":{\"style\":102,\"text\":\" \"}},\"height\":38},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":119},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"text\":\"工作岗位\",\"style\":120},\"3\":{\"style\":119,\"text\":\" \"},\"4\":{\"text\":\"工作时间\",\"style\":119},\"5\":{\"style\":119,\"text\":\" \"},\"6\":{\"text\":\"出生日期\",\"style\":119},\"7\":{\"style\":119,\"text\":\" \"}}},\"4\":{\"cells\":{\"0\":{\"text\":\"请选择假类型\",\"style\":121,\"merge\":[4,0]},\"1\":{\"text\":\"年休假\",\"style\":120},\"2\":{\"style\":120,\"text\":\"病、事假\"},\"3\":{\"style\":120,\"text\":\"探亲假\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"婚、丧假\"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"生育假\"}},\"height\":29},\"5\":{\"cells\":{\"0\":{\"style\":0,\"text\":\" \"},\"1\":{\"text\":\"1、公岭满1~9年(5天)\",\"style\":122},\"2\":{\"style\":119,\"text\":\"1、病假\"},\"3\":{\"style\":119,\"text\":\"1、未婚探父母(20天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"1、婚假(3天)\"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"1、流产\"}},\"height\":25},\"6\":{\"cells\":{\"0\":{\"style\":0,\"text\":\" \"},\"1\":{\"style\":123,\"text\":\"2、公岭满10~19年(10天)\"},\"2\":{\"style\":119,\"text\":\"2、事假\"},\"3\":{\"style\":119,\"text\":\"2、已婚探父母(20天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"2、晚婚假(13天)\"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"2、产假\"}}},\"7\":{\"cells\":{\"0\":{\"style\":0,\"text\":\" \"},\"1\":{\"style\":123,\"text\":\"3、公岭满20年(15天)\"},\"2\":{\"style\":119,\"text\":\" \"},\"3\":{\"style\":119,\"text\":\"3、探配偶(30天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"3、丧假(3天)\"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"3、哺乳假\"}}},\"8\":{\"cells\":{\"0\":{\"style\":0,\"text\":\" \"},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"style\":119,\"text\":\" \"},\"3\":{\"style\":119,\"text\":\"探亲地点:\",\"merge\":[0,2]},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"4、陪护假\"}}},\"9\":{\"cells\":{\"0\":{\"style\":124,\"text\":\"请假时间\"},\"1\":{\"style\":125,\"merge\":[0,6],\"text\":\"2020年02-30 至2020年02-03-30\"}},\"height\":46},\"10\":{\"cells\":{\"0\":{\"style\":126,\"text\":\"审批人员及意见\"},\"1\":{\"merge\":[0,6],\"style\":127,\"text\":\"同意\"}},\"height\":89},\"11\":{\"cells\":{\"0\":{\"text\":\"备注\",\"style\":119},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"text\":\"请假人签名\",\"style\":119},\"3\":{\"merge\":[0,4],\"style\":119,\"text\":\" \"}},\"height\":90},\"12\":{\"cells\":{\"0\":{\"merge\":[0,7],\"style\":120,\"text\":\"请假审批表一式两份,考勤员与人力资源部门各存一份\"}},\"height\":25},\"len\":101},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":794,\"heightPx\":1047},\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"freeze\":\"A1\",\"dataRectWidth\":789,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"textwrap\":true},{\"textwrap\":false},{\"textwrap\":true,\"valign\":\"middle\"},{\"textwrap\":false,\"valign\":\"middle\"},{\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\Line truncated
INSERT INTO `jimu_report` VALUES ('975549294469992448', '20240723101422', '简单表达式混合运算', NULL, NULL, 'datainfo', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1097,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":81},\"1\":{\"width\":55},\"2\":{\"width\":144},\"3\":{\"width\":143},\"4\":{\"width\":112},\"5\":{\"width\":129},\"7\":{\"width\":333},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"excel_config_id\":\"975549294469992448\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"1\"},\"1\":{},\"2\":{\"text\":\"SUM(A1,A2)\"},\"3\":{\"text\":\"=SUM(A1,A2)\"},\"4\":{\"text\":\"SUM(A1:A10)\"},\"5\":{\"text\":\"=SUM(A1:A10)\"}}},\"1\":{\"cells\":{\"0\":{\"text\":\"2\"},\"1\":{},\"2\":{\"text\":\"SUM(A1,A2)*2\"},\"3\":{\"text\":\"=SUM(A1,A2)*2\"},\"4\":{\"text\":\"SUM(A1:A10)*2\"},\"5\":{\"text\":\"=SUM(A1:A10)*2\"},\"6\":{},\"7\":{\"text\":\"=2+SUM(A1,A2)*2 \"}}},\"2\":{\"cells\":{\"0\":{\"text\":\"3\"},\"2\":{\"text\":\"SUM(A1,A2)/2\"},\"3\":{\"text\":\"=SUM(A1,A2)/2\"},\"4\":{\"text\":\"SUM(A1:A10)/2\"},\"5\":{\"text\":\"=SUM(A1:A10)/2\"},\"7\":{\"text\":\"=A1*A2\"}}},\"3\":{\"cells\":{\"0\":{\"text\":\"4\"},\"2\":{\"text\":\"SUM(A1,A2)+2\"},\"3\":{\"text\":\"=SUM(A1,A2)+2\"},\"4\":{\"text\":\"SUM(A1:A10)+2\"},\"5\":{\"text\":\"=SUM(A1:A10)+2\"}}},\"4\":{\"cells\":{\"0\":{\"text\":\"5\"},\"2\":{\"text\":\"SUM(A1,A2)-2\"},\"3\":{\"text\":\"=SUM(A1,A2)-2\"},\"4\":{\"text\":\"SUM(A1:A10)-2\"},\"5\":{\"text\":\"=SUM(A1:A10)-2\"},\"7\":{}}},\"5\":{\"cells\":{\"0\":{\"text\":\"6\"}}},\"6\":{\"cells\":{\"0\":{\"text\":\"7\"},\"2\":{\"text\":\"MAX(A1,A2)\"},\"3\":{\"text\":\"=MAX(A1,A2)\"},\"4\":{\"text\":\"MAX(A1:A10)\"},\"5\":{\"text\":\"=MAX(A1:A10)\"}}},\"7\":{\"cells\":{\"0\":{\"text\":\"8\"},\"2\":{\"text\":\"MAX(A1,A2)*2\"},\"3\":{\"text\":\"=MAX(A1,A2)*2\"},\"4\":{\"text\":\"MAX(A1:A10)*2\"},\"5\":{\"text\":\"=MAX(A1:A10)*2\"}}},\"8\":{\"cells\":{\"0\":{\"text\":\"9\"},\"2\":{\"text\":\"MAX(A1,A2)/2\"},\"3\":{\"text\":\"=MAX(A1,A2)/2\"},\"4\":{\"text\":\"MAX(A1:A10)/2\"},\"5\":{\"text\":\"=MAX(A1:A10)/2\"}}},\"9\":{\"cells\":{\"0\":{\"text\":\"10\"},\"2\":{\"text\":\"MAX(A1,A2)+2\"},\"3\":{\"text\":\"=MAX(A1,A2)+2\"},\"4\":{\"text\":\"MAX(A1:A10)+2\"},\"5\":{\"text\":\"=MAX(A1:A10)+2\"}}},\"10\":{\"cells\":{\"0\":{},\"2\":{\"text\":\"MAX(A1,A2)-2\"},\"3\":{\"text\":\"=MAX(A1,A2)-2\"},\"4\":{\"text\":\"MAX(A1:A10)-2\"},\"5\":{\"text\":\"=MAX(A1:A10)-2\"}}},\"11\":{\"cells\":{\"0\":{}}},\"12\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)\"},\"3\":{\"text\":\"=MIN(A1,A2)\"},\"4\":{\"text\":\"MIN(A1:A10)\"},\"5\":{\"text\":\"=MIN(A1:A10)\"}}},\"13\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)*2\"},\"3\":{\"text\":\"=MIN(A1,A2)*2\"},\"4\":{\"text\":\"MIN(A1:A10)*2\"},\"5\":{\"text\":\"=MIN(A1:A10)*2\"}}},\"14\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)/2\"},\"3\":{\"text\":\"=MIN(A1,A2)/2\"},\"4\":{\"text\":\"MIN(A1:A10)/2\"},\"5\":{\"text\":\"=MIN(A1:A10)/2\"}}},\"15\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)+2\"},\"3\":{\"text\":\"=MIN(A1,A2)+2\"},\"4\":{\"text\":\"MIN(A1:A10)+2\"},\"5\":{\"text\":\"=MIN(A1:A10)+2\"}}},\"16\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)-2\"},\"3\":{\"text\":\"=MIN(A1,A2)-2\"},\"4\":{\"text\":\"MIN(A1:A10)-2\"},\"5\":{\"text\":\"=MIN(A1:A10)-2\"}}},\"18\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)\"},\"4\":{\"text\":\"AVERAGE(A1:A10)\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)\"}}},\"19\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)*2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)*2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)*2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)*2\"}}},\"20\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)/2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)/2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)/2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)/2\"}}},\"21\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)+2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)+2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)+2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)+2\"}}},\"22\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)-2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)-2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)-2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)-2\"}}},\"24\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)\"}}},\"25\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)*2\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)*2\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)*2\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)*2\"}}},\"26\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)/2\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)/2\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)/2\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)/2\"}}},\"27\":{\"cells\":{\"2\":{\"text\":\"COULine truncated
INSERT INTO `jimu_report` VALUES ('989065112487022592', '20240823093133__1750', '在线填报-员工信息登记', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":698,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":76},\"1\":{\"width\":114},\"2\":{\"width\":87},\"3\":{\"width\":99},\"4\":{\"width\":65},\"5\":{\"width\":126},\"6\":{\"width\":131},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"api\",\"code\":\"api\",\"name\":\"api\",\"isMain\":true,\"isEdit\":true,\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/submit/handle\"}],\"excel_config_id\":\"989065112487022592\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"merge\":[1,6],\"height\":90,\"text\":\"员工信息登记表\",\"style\":6}},\"height\":45},\"1\":{\"cells\":{},\"height\":45},\"2\":{\"cells\":{\"0\":{\"text\":\"编号\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"no\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"patternErrorTip\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"年龄\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"InputNumber\",\"component\":\"InputNumber\",\"field\":\"age\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"precision\":0,\"isLimitMinNum\":false,\"minNum\":0,\"isLimitMaxNum\":false,\"maxNum\":100,\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"age\"}]},\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"填写时间\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-time\",\"component\":\"DatePicker\",\"field\":\"create_time\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd HH:mm:ss\",\"defaultValue\":\"\"},\"style\":7,\"text\":\" \"},\"6\":{\"merge\":[3,0],\"height\":180,\"fillForm\":{\"componentFlag\":\"JUploadImage\",\"component\":\"JUploadImage\",\"field\":\"photo\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":false,\"maxUploadNum\":1,\"h_align\":\"center\"},\"style\":7,\"text\":\" \"}},\"height\":45},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"text\":\" \",\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"name\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"name\"},{\"dbTable\":\"test_form_submit1\",\"dbField\":\"name\"}],\"label\":\"A5\",\"labelText\":\"姓名\",\"pattern\":\"\",\"patternErrorTip\":\"\"}},\"2\":{\"text\":\"性别\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"sex\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"男\",\"value\":\"1\"},{\"label\":\"女\",\"value\":\"2\"}],\"apiUrl\":\"\",\"dictCode\":\"sex1\",\"dictName\":\"性别\"},\"style\":8,\"text\":\" \"},\"4\":{\"text\":\"出生日期\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"brithday\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\"},\"style\":7,\"text\":\" \"},\"8\":{}},\"height\":45},\"4\":{\"cells\":{\"0\":{\"text\":\"民族\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"nation\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"label\":\"选项2\",\"value\":\"2\"},{\"label\":\"选项3\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"minzu\",\"dictName\":\"民族\",\"multiple\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"政治面貌\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"politics\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"politics\"}],\"dataSource\":\"api\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"laLine truncated
INSERT INTO `jimu_report` VALUES ('993022657672290304', '20240909152438', '填报-SQL数据集填报', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"group\":[],\"record\":[],\"range\":[]},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":800,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":100},\"2\":{\"width\":200},\"3\":{\"width\":100},\"4\":{\"width\":200},\"5\":{\"width\":100},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":50},\"area\":{\"sri\":3,\"sci\":4,\"eri\":3,\"eci\":4,\"width\":200,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"JEZX3M1725874665916\",\"name\":\"个人简历数据源\",\"isMain\":true,\"isEdit\":false,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_resume\",\"idField\":\"id\",\"idStrategy\":\"ATOMIC\",\"fkField\":\"\"}],\"excel_config_id\":\"993022657672290304\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"个人简历\",\"merge\":[0,3],\"height\":68,\"style\":1}},\"height\":68},\"1\":{\"cells\":{\"1\":{\"text\":\"基本资料\",\"style\":5,\"merge\":[0,3],\"height\":38},\"5\":{\"style\":7,\"text\":\" \"}},\"height\":38},\"2\":{\"cells\":{\"1\":{\"text\":\"姓名:\",\"style\":8,\"fillFormLabel\":\"*\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725873834685_524574\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[2,1],\"label\":\"B3\",\"labelText\":\"姓名:\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"name\"}]}},\"3\":{\"text\":\"性别:\",\"style\":3,\"fillFormLabel\":\"*\"},\"4\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"key_1725873880502_783022\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[2,3],\"label\":\"D3\",\"labelText\":\"性别:\",\"dataSource\":\"static\",\"options\":[{\"label\":\"男\",\"value\":\"2\"},{\"label\":\"女\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"\",\"dictName\":\"\",\"h_align\":\"left\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"sex\"}]}}},\"height\":45},\"3\":{\"cells\":{\"1\":{\"text\":\"出生日期:\",\"style\":8},\"2\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"key_1725874244968_631595\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"birthday\"}]}},\"3\":{\"text\":\"联系方式:\",\"style\":3,\"fillFormLabel\":\"*\"},\"4\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725874490222_904616\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[3,3],\"label\":\"D4\",\"labelText\":\"联系方式:\",\"pattern\":\"^1[3456789]\\\\d{9}$\",\"patternErrorTip\":\"请输入联系方式\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_resume\",\"dbField\":\"phone\"}]}}},\"height\":45},\"4\":{\"cells\":{\"1\":{\"text\":\"邮箱:\",\"style\":8,\"fillFormLabel\":\"*\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725874502475_096195\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[4,1],\"label\":\"B5\",\"labelText\":\"邮箱Line truncated
INSERT INTO `jimu_report` VALUES ('993379996736724992', '20240910150558', '填报-数据回填默认值', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":700,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":100},\"2\":{\"width\":200},\"3\":{\"width\":100},\"4\":{\"width\":200},\"5\":{\"width\":100},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":50},\"area\":{\"sri\":7,\"sci\":4,\"eri\":7,\"eci\":4,\"width\":200,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"XD0MNV1725953085646\",\"name\":\"客户信息\",\"isMain\":true,\"isEdit\":false,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_customer\",\"idField\":\"id\",\"idStrategy\":\"ATOMIC\",\"fkField\":\"\"}],\"excel_config_id\":\"993379996736724992\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"客户信息填报\",\"merge\":[0,3],\"height\":45,\"style\":2},\"2\":{\"style\":1},\"3\":{\"style\":1},\"4\":{\"style\":1}},\"height\":45},\"1\":{\"cells\":{\"1\":{\"fillFormLabel\":\"*\",\"text\":\"客户编码:\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725952020136_537695\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":[1,1],\"label\":\"B2\",\"labelText\":\"编码:\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"code\"}]},\"text\":\"${customer.code}\"},\"3\":{\"text\":\"客户名称:\"},\"4\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725952087795_823337\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"name\"}]},\"text\":\"${customer.name}\"}},\"height\":45},\"2\":{\"cells\":{\"1\":{\"text\":\"成立时间:\"},\"2\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"key_1725952093712_154026\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"clsj\"}]},\"text\":\"${customer.clsj}\"},\"3\":{\"text\":\"负责人:\"},\"4\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725952106388_677899\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"fzr\"}]},\"text\":\"${customer.fzr}\"}},\"height\":45},\"3\":{\"cells\":{\"1\":{\"text\":\"地址:\"},\"2\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"key_1725952123735_789002\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"requiredRelevanceCell\":\"\",\"label\":\"\",\"labelText\":\"\",\"pattern\":\"\",\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"address\"}]},\"text\":\"${customer.address}\"},\"3\":{\"text\":\"营业类型:\"},\"4\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"key_1725952138363_461836\",\"placeholder\":\"\",\"required\":false,\"requirLine truncated
INSERT INTO `jimu_report` VALUES ('994504692756684800', '20240913173325', '填报-订单(主子表)', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"record\":[{\"sci\":1,\"eci\":6,\"sri\":8,\"eri\":8}],\"range\":[{\"sci\":1,\"eci\":6,\"sri\":8,\"eri\":8}],\"group\":[{\"sci\":1,\"eci\":6,\"sri\":8,\"eri\":8}]},\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1053,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":118},\"2\":{\"width\":200},\"3\":{\"width\":114},\"4\":{\"width\":200},\"5\":{\"width\":121},\"6\":{\"width\":200},\"7\":{\"width\":100},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":50},\"area\":{\"sri\":3,\"sci\":6,\"eri\":3,\"eci\":6,\"width\":200,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"VVD7LX1726213552409\",\"name\":\"订单基本信息表\",\"isMain\":true,\"isEdit\":true,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_order\",\"idField\":\"id\",\"idStrategy\":\"ASSIGN_UUID\",\"fkField\":\"\"},{\"type\":\"sql\",\"code\":\"A0SAP01726586326761\",\"name\":\"订单产品表\",\"isMain\":false,\"isEdit\":false,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_order_pros\",\"idField\":\"id\",\"idStrategy\":\"ASSIGN_UUID\",\"fkField\":\"main_id\"}],\"excel_config_id\":\"994504692756684800\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,5],\"style\":3,\"text\":\"销售订单\",\"height\":68}},\"height\":68},\"1\":{\"cells\":{\"1\":{\"style\":2,\"text\":\"订单基本信息\"}},\"height\":45},\"2\":{\"cells\":{\"1\":{\"fillFormLabel\":\"*\",\"text\":\"订单名称:\"},\"2\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726199340345_559456\",\"requiredRelevanceCell\":[2,1],\"componentFlag\":\"input-text\",\"labelText\":\"订单名称:\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"B3\",\"required\":true,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_order\",\"dbField\":\"order_name\"}]}},\"3\":{\"fillFormLabel\":\"*\",\"text\":\"订单签订日期:\"},\"4\":{\"fillForm\":{\"component\":\"DatePicker\",\"field\":\"key_1726199370746_752748\",\"requiredRelevanceCell\":[2,3],\"dateFormat\":\"yyyy-MM-dd\",\"componentFlag\":\"DatePicker-date\",\"defaultValue\":\"\",\"labelText\":\"订单签订日期:\",\"requiredTip\":\"不能为空~\",\"placeholder\":\"\",\"label\":\"D3\",\"required\":true,\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_order\",\"dbField\":\"order_sign_date\"}]}},\"5\":{\"text\":\"订单交付日期\"},\"6\":{\"fillForm\":{\"component\":\"DatePicker\",\"field\":\"key_1726199393569_219915\",\"requiredRelevanceCell\":\"\",\"dateFormat\":\"yyyy-MM-dd\",\"componentFlag\":\"DatePicker-date\",\"defaultValue\":\"\",\"labelText\":\"\",\"requiredTip\":\"不能为空~\",\"placeholder\":\"\",\"label\":\"\",\"required\":false,\"dateShowType\":\"date\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_order\",\"dbField\":\"order_delivery_date\"}]}}},\"height\":45},\"3\":{\"cells\":{\"1\":{\"fillFormLabel\":\"*\",\"text\":\"客户名称:\"},\"2\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726199416385_785272\",\"requiredRelevanceCell\":[3,1],\"componentFlag\":\"input-text\",\"labelText\":\"客户名称:\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"B4\",\"required\":true,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_order\",\"dbField\":\"order_coms\"}]}},\"3\":{\"fillFormLabel\":\"*\",\"text\":\"客户联系人:\"},\"4\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726199420480_498286\",\"reLine truncated
INSERT INTO `jimu_report` VALUES ('994504711236788224', '20240913173330', '填报-行编辑', NULL, NULL, '1011126161407836160', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"recordSubTableOrCollection\":{\"record\":[{\"sci\":1,\"eci\":8,\"sri\":2,\"eri\":2}],\"range\":[{\"sci\":1,\"eci\":8,\"sri\":2,\"eri\":2}],\"group\":[{\"sci\":1,\"eci\":8,\"sri\":2,\"eri\":2}]},\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1144,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":100},\"1\":{\"width\":114},\"2\":{\"width\":166},\"3\":{\"width\":100},\"4\":{\"width\":132},\"5\":{\"width\":100},\"6\":{\"width\":121},\"7\":{\"width\":111},\"8\":{\"width\":200},\"9\":{\"width\":100},\"10\":{\"width\":200},\"11\":{\"width\":100},\"12\":{\"width\":200},\"13\":{\"width\":100},\"14\":{\"width\":200},\"15\":{\"width\":100},\"16\":{\"width\":200},\"17\":{\"width\":100},\"18\":{\"width\":200},\"19\":{\"width\":100},\"20\":{\"width\":200},\"21\":{\"width\":100},\"22\":{\"width\":200},\"23\":{\"width\":100},\"24\":{\"width\":200},\"25\":{\"width\":100},\"26\":{\"width\":200},\"27\":{\"width\":100},\"28\":{\"width\":200},\"29\":{\"width\":100},\"30\":{\"width\":200},\"31\":{\"width\":100},\"32\":{\"width\":200},\"33\":{\"width\":100},\"34\":{\"width\":200},\"35\":{\"width\":100},\"36\":{\"width\":200},\"37\":{\"width\":100},\"38\":{\"width\":200},\"39\":{\"width\":100},\"40\":{\"width\":200},\"41\":{\"width\":100},\"42\":{\"width\":200},\"43\":{\"width\":100},\"44\":{\"width\":200},\"45\":{\"width\":100},\"46\":{\"width\":200},\"47\":{\"width\":100},\"48\":{\"width\":200},\"49\":{\"width\":100},\"len\":50},\"area\":{\"sri\":2,\"sci\":4,\"eri\":2,\"eci\":4,\"width\":132,\"height\":45},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"sql\",\"code\":\"XHOT301726209790234\",\"name\":\"客户信息\",\"isMain\":true,\"isEdit\":true,\"dbSource\":\"993023560345231360\",\"dbTable\":\"test_customer\",\"idField\":\"id\",\"idStrategy\":\"ATOMIC\",\"fkField\":\"\"}],\"excel_config_id\":\"994504711236788224\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"merge\":[0,7],\"style\":3,\"text\":\"客户信息维护\",\"height\":45}},\"height\":45},\"1\":{\"cells\":{\"1\":{\"style\":1,\"text\":\"客户编码\",\"fillFormLabel\":\"*\"},\"2\":{\"style\":1,\"text\":\"客户名称\",\"fillFormLabel\":\"*\"},\"3\":{\"style\":1,\"text\":\"客户联系人\"},\"4\":{\"style\":1,\"text\":\"客户联系方式\"},\"5\":{\"style\":1,\"text\":\"客户地址\"},\"6\":{\"style\":1,\"text\":\"客户类型\"},\"7\":{\"style\":1,\"text\":\"负责人\"},\"8\":{\"style\":1,\"text\":\"负责人部门\"}},\"height\":45},\"2\":{\"cells\":{\"1\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207046872_844925\",\"requiredRelevanceCell\":[1,1],\"componentFlag\":\"input-text\",\"labelText\":\"客户编码\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"B2\",\"required\":true,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"code\"}]}},\"2\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207048683_605614\",\"requiredRelevanceCell\":[1,2],\"componentFlag\":\"input-text\",\"labelText\":\"客户名称\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"C2\",\"required\":true,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"name\"}]}},\"3\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207050474_901111\",\"requiredRelevanceCell\":\"\",\"componentFlag\":\"input-text\",\"labelText\":\"\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"\",\"required\":false,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"fzr\"}]}},\"4\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207054327_134572\",\"requiredRelevanceCell\":\"\",\"componentFlag\":\"input-text\",\"labelText\":\"\",\"requiredTip\":\"不能为空~\",\"pattern\":\"^1[3456789]\\\\d{9}$\",\"placeholder\":\"\",\"label\":\"\",\"required\":false,\"patternErrorTip\":\"请输入正确手机号\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"phone\"}]}},\"5\":{\"fillForm\":{\"component\":\"Input\",\"field\":\"key_1726207056124_372216\",\"requiredRelevanceCell\":\"\",\"componentFlag\":\"input-text\",\"labelText\":\"\",\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"placeholder\":\"\",\"label\":\"\",\"required\":false,\"patternErrorTip\":\"\",\"dbFieldBind\":[{\"dbTable\":\"993023560345231360,test_customer\",\"dbField\":\"address\"}]}},\"6\":{\"fillForm\":{\Line truncated
INSERT INTO `jimu_report` VALUES ('a250846887abe01217aab173d3006489', '56663', '不动产打印', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":false,\"excel_config_id\":\"a250846887abe01217aab173d3006489\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"${budong.name}\",\"virtual\":\"TyDjQJrN7mqW5MdT\",\"style\":20},\"1\":{\"text\":\"${budong.time}\",\"virtual\":\"TyDjQJrN7mqW5MdT\",\"style\":20},\"2\":{\"text\":\"${budong.didian}\",\"virtual\":\"TyDjQJrN7mqW5MdT\",\"style\":21},\"3\":{\"text\":\"${budong.bianhao}\",\"virtual\":\"TyDjQJrN7mqW5MdT\",\"style\":46},\"4\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"5\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"6\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"7\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"8\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"},\"9\":{\"text\":\" \",\"virtual\":\"TyDjQJrN7mqW5MdT\"}},\"isDrag\":true,\"height\":47},\"1\":{\"cells\":{},\"height\":23},\"2\":{\"cells\":{\"0\":{\"text\":\"\",\"style\":0},\"1\":{\"text\":\" ${budong.yname}\",\"style\":21,\"merge\":[0,2]}},\"isDrag\":true,\"height\":34},\"3\":{\"cells\":{\"1\":{\"text\":\" ${budong.chanquan}\",\"style\":0,\"merge\":[0,2],\"rendered\":\"\"},\"5\":{\"text\":\"${budong.beizhu}\",\"merge\":[5,3]},\"10\":{}},\"isDrag\":true,\"height\":39},\"4\":{\"cells\":{\"1\":{\"text\":\" ${budong.zhuzhi}\",\"style\":39,\"merge\":[0,2]},\"10\":{}},\"isDrag\":true,\"height\":33},\"5\":{\"cells\":{\"1\":{\"text\":\" ${budong.danyuan}\",\"style\":0,\"merge\":[0,2],\"rendered\":\"\"},\"10\":{}},\"isDrag\":true,\"height\":53},\"6\":{\"cells\":{\"1\":{\"text\":\" ${budong.type}\",\"style\":0,\"merge\":[0,2]},\"10\":{}},\"isDrag\":true,\"height\":47},\"7\":{\"cells\":{\"1\":{\"text\":\" ${budong.xtype}\",\"style\":0,\"merge\":[0,2]}},\"isDrag\":true,\"height\":38},\"8\":{\"cells\":{\"1\":{\"text\":\" ${budong.suoyou}\",\"style\":0,\"merge\":[0,2]}},\"isDrag\":true,\"height\":31},\"9\":{\"cells\":{\"1\":{\"text\":\" ${budong.mianji}\",\"style\":0,\"merge\":[0,2]},\"6\":{\"text\":\"\",\"rendered\":\"\"}},\"isDrag\":true,\"height\":45},\"10\":{\"cells\":{\"1\":{\"text\":\" ${budong.riqi}\",\"style\":0,\"merge\":[0,2]}},\"isDrag\":true,\"height\":26},\"11\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":0,\"merge\":[0,2]}},\"height\":29},\"12\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":0},\"2\":{\"text\":\"${budong.chanquan}\",\"style\":0,\"merge\":[5,1]}},\"isDrag\":true},\"13\":{\"cells\":{}},\"14\":{\"cells\":{}},\"15\":{\"cells\":{}},\"16\":{\"cells\":{},\"height\":32},\"17\":{\"cells\":{},\"isDrag\":true,\"height\":29},\"18\":{\"cells\":{\"2\":{\"style\":0,\"text\":\"\"}}},\"len\":100,\"-1\":{\"cells\":{\"0\":{\"text\":\"#{budong.zhuzhi}\"},\"-1\":{\"text\":\"#{budong.suoyou}\"}},\"isDrag\":true}},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"bold\":true}},{\"font\":{\"italic\":true}},{\"font\":{\"italic\":true,\"bold\":true}},{\"font\":{\"italic\":true,\"bold\":false}},{\"font\":{\"italic\":false,\"bold\":false}},{\"font\":{\"italic\":false,\"bold\":true}},{\"align\":\"left\"},{\"align\":\"center\"},{\"align\":\"right\"},{\"align\":\"left\",\"valign\":\"top\"},{\"align\":\"left\",\"valign\":\"top\",\"font\":{\"bold\":true}},{\"font\":{\"bold\":false}},{\"align\":\"left\",\"valign\":\"bottom\"},{\"valign\":\"bottom\"},{\"align\":\"center\",\"valign\":\"bottom\"},{\"textwrap\":true},{\"font\":{\"bold\":true},\"valign\":\"bottom\"},{\"font\":{\"italic\":false,\"bold\":true},\"valign\":\"top\"},{\"valign\":\"top\"},{\"textwrap\":true,\"font\":{\"bold\":true}},{\"align\":\"center\",\"valign\":\"bottom\",\"font\":{\"bold\":true}},{\"align\":\"left\",\"valign\":\"bottom\",\"font\":{\"bold\":true}},{\"align\":\"left\",\"valign\":\"bottom\",\"font\":{\"bold\":true,\"size\":8}},{\"font\":{\"bold\":true,\"size\":8},\"valign\":\"bottom\"},{\"align\":\"center\",\"valign\":\"bottom\",\"font\":{\"bold\":true,\"size\":8}},{\"align\":\"left\",\"valign\":\"middle\",\"font\":{\"bold\":true}},{\"align\":\"left\",\"valign\":\"middle\"},{\"font\":{\"italic\":false,\"bold\":true},\"valign\":\"bottom\"},{\"font\":{\"italic\":false,\"bold\":true},\"valign\":\"middle\"},{\"valign\":\"middle\"},{\"font\":{\"italic\":true,\"bold\":true},\"valign\":\"middle\"},{\"valign\":\"middle\",\"font\":{\"italic\":true}},{\"valign\":\"middle\",\"font\":{\"italic\":false}},{\"font\":{\"italic\":false,\"bold\":false},\"valign\":\"middle\"},{\"align\":\"center\",\"valign\":\"middle\",\"font\":{\"bold\":true,\"size\":8}},{\"font\":{\"bold\":true,\"size\":8},\"valign\":\"middle\"},{\"align\":\"left\",\"valign\":\"middle\",\"font\":{\"bold\":true,\Line truncated
INSERT INTO `jimu_report` VALUES ('a9f068972508920cd4aab831814f0c04', '23445', '逮捕证', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":3,\"sci\":1,\"eri\":3,\"eci\":13,\"width\":631,\"height\":60},\"excel_config_id\":\"a9f068972508920cd4aab831814f0c04\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\"},\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"1\":{\"style\":63,\"text\":\" \"},\"2\":{\"text\":\" \",\"merge\":[0,9],\"style\":63},\"12\":{\"style\":63,\"text\":\" \"},\"13\":{\"style\":63,\"text\":\" \"},\"14\":{\"style\":63,\"text\":\" \"}},\"isDrag\":true,\"height\":55},\"1\":{\"cells\":{\"1\":{\"style\":424,\"text\":\"兰州市经济侦查大队\",\"rendered\":\"\",\"merge\":[0,13],\"height\":128},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"14\":{},\"15\":{\"style\":81,\"text\":\" \"}},\"height\":128},\"2\":{\"cells\":{\"1\":{\"style\":430,\"text\":\"逮捕令\",\"merge\":[0,13],\"height\":41},\"15\":{\"style\":81,\"text\":\" \"}},\"height\":41},\"3\":{\"cells\":{\"1\":{\"style\":431,\"merge\":[0,12],\"text\":\"第123459663号\"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":60},\"4\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"text\":\" 根据《中华人民共和国刑事诉讼法》第七十八条之规定,\",\"style\":346,\"merge\":[0,11]},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":43},\"5\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":341,\"text\":\"经\",\"merge\":[0,1]},\"4\":{\"text\":\"${pdaibu.pname}\",\"style\":342,\"merge\":[0,9]},\"14\":{\"style\":323,\"text\":\" \"}},\"isDrag\":true,\"height\":47},\"6\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":344,\"text\":\" \",\"merge\":[0,2]},\"5\":{\"merge\":[0,3],\"text\":\"批准,兹由我局对涉嫌\",\"style\":338},\"9\":{\"text\":\"${pdaibu.shiqing}\",\"style\":347,\"merge\":[0,4],\"rendered\":\"\"},\"14\":{\"style\":323,\"text\":\" \"}},\"isDrag\":true,\"height\":49},\"7\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":341,\"text\":\"的\"},\"3\":{\"text\":\"${pdaibu.fname}\",\"style\":345,\"merge\":[0,1]},\"5\":{\"text\":\"(性别\",\"style\":343},\"6\":{\"text\":\"${pdaibu.fsex}\",\"style\":347,\"merge\":[0,1],\"rendered\":\"\"},\"8\":{\"style\":346,\"text\":\"出生日期\"},\"9\":{\"text\":\"${pdaibu.cdata}\",\"style\":345,\"merge\":[0,4]},\"14\":{\"style\":323,\"text\":\" \"}},\"isDrag\":true,\"height\":51},\"8\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"text\":\"${pdaibu.zhuzhi}\",\"style\":345,\"merge\":[0,7]},\"10\":{\"style\":341,\"text\":\"执行逮捕,送兰州\",\"merge\":[0,3]},\"14\":{\"style\":323,\"text\":\" \"}},\"isDrag\":true,\"height\":51},\"9\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":341,\"merge\":[0,6],\"text\":\"市经济侦查大队羁押。\"},\"9\":{\"style\":341,\"text\":\" \"},\"10\":{\"style\":341,\"text\":\" \"},\"11\":{\"merge\":[4,0],\"height\":304},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":57},\"10\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"4\":{\"style\":338,\"virtual\":\"DId4FGTLnP3vfp4y\",\"text\":\" \"},\"5\":{\"style\":338,\"virtual\":\"DId4FGTLnP3vfp4y\",\"text\":\" \"},\"6\":{\"style\":338,\"virtual\":\"DId4FGTLnP3vfp4y\",\"text\":\" \"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":61},\"11\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"6\":{\"style\":376,\"merge\":[0,2],\"text\":\" \"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":83},\"12\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"merge\":[0,6],\"style\":338,\"text\":\" \"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":14},\"13\":{\"cells\":{\"1\":{\"style\":81,\"text\":\" \"},\"2\":{\"style\":351,\"text\":\" \"},\"8\":{\"style\":380,\"text\":\"公安局印\"},\"9\":{\"text\":\" \",\"virtual\":\"qU4IfccOePYNTSG8\"},\"14\":{\"style\":323,\"text\":\" \"}},\"height\":89},\"14\":{\"cells\":{\"0\":{},\"1\":{\"style\":81,\"text\":\" \"},\"14\":{\"style\":323,\"text\":\" \"},\"15\":{\"style\":324,\"text\":\" \"}},\"height\":12},\"15\":{\"cells\":{\"0\":{\"style\":323,\"text\":\" \"},\"1\":{\"style\":63,\"text\":\" \"},\"2\":{\"style\":325,\"text\":\" \"},\"3\":{\"style\":63,\"text\":\" \"},\"4\":{\"style\":63,\"text\":\" \"},\"5\":{\"style\":63,\"text\":\" \"},\"6\":{\"text\":\" \",\"style\":432},\"7\":{\"style\":63,\"text\":\" \"},\"8\":{\"style\":63,\"text\":\" \"},\"9\":{\"style\":63,\"text\":\" \"},\"10\":{\"merge\":[0,3],\"height\":148,\"text\":\"${pdaibu.gdata}\",\"style\":63},\"14\":{\"style\":63,\"text\":\" \"},\"15\":{\"style\":81,\"text\":\" \"}},\"isDrag\":true,\"height\":148},\"len\":88},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"pageSizeLine truncated
INSERT INTO `jimu_report` VALUES ('b35e8d615b4e408e49dbf36805d3641c', '2020121515142661246673', '数据钻取报表', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"area\":{\"sri\":2,\"sci\":1,\"eri\":2,\"eci\":1,\"width\":107,\"height\":50},\"excel_config_id\":\"b35e8d615b4e408e49dbf36805d3641c\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false},\"zonedEditionList\":[],\"rows\":{\"1\":{\"cells\":{\"1\":{\"text\":\"部门\",\"style\":51},\"2\":{\"text\":\"雇员ID\",\"style\":51},\"3\":{\"text\":\"姓名\",\"style\":51},\"4\":{\"style\":51,\"text\":\"性别\"},\"5\":{\"text\":\"雇佣日期\",\"style\":51},\"6\":{\"text\":\"家庭电话\",\"style\":51},\"7\":{\"text\":\"出生日期\",\"style\":51},\"8\":{\"text\":\"户口所在地\",\"style\":51},\"9\":{\"text\":\"联系地址\",\"style\":51},\"10\":{\"text\":\"紧急联系人\",\"style\":51}},\"height\":37},\"2\":{\"cells\":{\"1\":{\"text\":\"#{pop.group(update_by)}\",\"style\":61,\"aggregate\":\"group\",\"linkIds\":\"845814975569416192\",\"rendered\":\"\",\"config\":\"\",\"display\":\"link\"},\"2\":{\"text\":\"#{pop.id}\",\"style\":54,\"aggregate\":\"select\"},\"3\":{\"text\":\"#{pop.name}\",\"style\":54,\"aggregate\":\"select\"},\"4\":{\"text\":\"#{pop.sex}\",\"style\":55},\"5\":{\"text\":\"#{pop.gtime}\",\"style\":56},\"6\":{\"text\":\"#{pop.jphone}\",\"style\":57},\"7\":{\"text\":\"#{pop.birth}\",\"style\":56},\"8\":{\"text\":\"#{pop.hukou}\",\"style\":58},\"9\":{\"text\":\"#{pop.laddress}\",\"style\":57},\"10\":{\"text\":\"#{pop.jperson}\",\"style\":57},\"22\":{},\"23\":{}},\"isDrag\":true,\"height\":50},\"len\":68},\"dbexps\":[],\"dicts\":[],\"rpbar\":{\"show\":true,\"btnList\":[]},\"groupField\":\"pop.update_by\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"freeze\":\"A1\",\"dataRectWidth\":1569,\"displayConfig\":{\"1\":{\"barcodeContent\":\"#{pop.id}\",\"format\":\"CODE128\",\"width\":\"50\",\"height\":\"100\",\"displayValue\":false,\"text\":\"jmreport\",\"fontOptions\":\"\",\"font\":\"monospace\",\"textAlign\":\"center\",\"textPosition\":\"bottom\",\"textMargin\":2,\"fontSize\":20,\"background\":\"#fff\",\"lineColor\":\"#000\",\"margin\":10,\"containerWidth\":105,\"containerHeight\":25},\"11\":{\"text\":\"\\n\",\"width\":227,\"height\":227,\"colorDark\":\"#000000\",\"colorLight\":\"#ffffff\"}},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"bgcolor\":\"#5b9cd6\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\"},{\"color\":\"#ffffff\"},{\"align\":\"center\"},{\"bgcolor\":\"#5b9cd6\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\"},{\"bgcolor\":\"#02a274\",\"color\":\"#ffffff\",\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\"},{\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":8}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":8}},{\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"font\":{\"size\":9}},{\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#f1f9f6\",\"font\":{\"size\":9},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#ddefe8\",\"font\":{\"size\":9},\"align\":\"ceLine truncated
INSERT INTO `jimu_report` VALUES ('f6ee801e8bdc28ba9d63f95dc65ccd79', '4556633', '采购单', '', NULL, '984302991393210368', '{\"loopBlockList\":[],\"area\":{\"sri\":13,\"sci\":6,\"eri\":13,\"eci\":6,\"width\":82,\"height\":25},\"excel_config_id\":\"f6ee801e8bdc28ba9d63f95dc65ccd79\",\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10},\"rows\":{\"0\":{\"cells\":{\"1\":{\"text\":\"采购单\",\"style\":21,\"merge\":[0,6]}},\"height\":75},\"1\":{\"cells\":{\"1\":{\"text\":\"产品名称\",\"style\":23},\"2\":{\"text\":\"产品数量\",\"style\":23},\"3\":{\"text\":\"单价\",\"style\":23},\"4\":{\"text\":\"库存量\",\"style\":23},\"5\":{\"text\":\"库存总值\",\"style\":23},\"6\":{\"text\":\"订购量\",\"style\":23},\"7\":{\"text\":\"二次订购量\",\"style\":23}},\"height\":34},\"2\":{\"cells\":{\"1\":{\"style\":24,\"text\":\"#{caigou.cname}\"},\"2\":{\"style\":24,\"text\":\"#{caigou.cnum}\"},\"3\":{\"style\":24,\"text\":\"#{caigou.cprice}\"},\"4\":{\"style\":24,\"text\":\"#{caigou.ctotal}\"},\"5\":{\"style\":24,\"text\":\"#{caigou.tp}\"},\"6\":{\"style\":24,\"text\":\"#{caigou.dtotal}\"},\"7\":{\"style\":24,\"text\":\"#{caigou.ztotal}\"}},\"height\":34},\"5\":{\"cells\":{\"1\":{\"text\":\"\"}},\"isDrag\":true},\"6\":{\"cells\":{\"1\":{\"text\":\"\"}},\"isDrag\":true},\"7\":{\"cells\":{\"1\":{\"text\":\"\"},\"2\":{\"text\":\"\"}},\"isDrag\":true},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":718,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":682,\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"color\":\"#000100\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]}},{\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#01b0f1\"],\"top\":[\"thin\",\"#01b0f1\"],\"left\":[\"thin\",\"#01b0f1\"],\"right\":[\"thin\",\"#01b0f1\"]},\"bgcolor\":\"#01b0f1\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#01b0f1\"},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"align\":\"center\",\"font\":{\"size\":18}},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\"},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#9cc2e6\"},{\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true,\"name\":\"宋体\"}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"bgcolor\":\"#9cc2e6\",\"font\":{\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"align\":\"center\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#9cc2e6\",\"font\":{\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"align\":\"center\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"color\":\"#000100\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"color\":\"#ffffff\",\"border\":{\"bottom\":[\"thin\",\"#bfbfbf\"],\"top\":[\"thin\",\"#bfbfbf\"],\"left\":[\"thin\",\"#bfbfbf\"],\"right\":[\"thin\",\"#bfbfbf\"]},\"bgcolor\":\"#5b9cd6\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true,\"name\":\"Microsoft YaHei\"}},{\"font\":{\"name\":\"Microsoft YaHeLine truncated
-- ----------------------------
-- Table structure for jimu_report_category
@@ -612,7 +642,7 @@ CREATE TABLE `jimu_report_category` (
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`tenant_id` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户id',
`tenant_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户id',
`del_flag` int(1) NULL DEFAULT NULL COMMENT '删除状态(0未删除,1已删除,2临时删除)',
`sort_no` int(11) NULL DEFAULT NULL COMMENT '排序',
PRIMARY KEY (`id`) USING BTREE
@@ -649,7 +679,7 @@ CREATE TABLE `jimu_report_data_source` (
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
`connect_times` int(11) NULL DEFAULT 0 COMMENT '连接失败次数',
`tenant_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
`tenant_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
`type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型(report:报表;drag:仪表盘)',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_jmdatasource_report_id`(`report_id`) USING BTREE,
@@ -1635,7 +1665,7 @@ CREATE TABLE `jimu_report_export_job` (
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人',
`update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
`tenant_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
`tenant_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '积木报表导出计划表' ROW_FORMAT = Dynamic;
@@ -1662,7 +1692,7 @@ CREATE TABLE `jimu_report_export_log` (
`create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`tenant_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
`tenant_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '积木报表自动导出记录表' ROW_FORMAT = Dynamic;
@@ -1788,6 +1818,27 @@ INSERT INTO `jimu_report_export_log` VALUES ('1023775708692971520', '20241203120
INSERT INTO `jimu_report_export_log` VALUES ('1023775960334434304', '202412031207003eSp5T', 'script', 'job', '1023736857874235392', 'PDF', '1011880586225221632', 'F:\\gitcode\\1JimuReport\\jimureport-example\\temp\\jimuAuto\\export\\\\202412031207003eSp5T\\', 'success', NULL, 'admin', '2024-12-03 12:07:00', '2024-12-03 12:07:11', '1');
INSERT INTO `jimu_report_export_log` VALUES ('1023776212009451520', '202412031208009D6Gm8', 'script', 'job', '1023736857874235392', 'PDF', '1011880586225221632', 'F:\\gitcode\\1JimuReport\\jimureport-example\\temp\\jimuAuto\\export\\\\202412031208009D6Gm8\\', 'success', NULL, 'admin', '2024-12-03 12:08:00', '2024-12-03 12:08:11', '1');
-- ----------------------------
-- Table structure for jimu_report_ext_data
-- ----------------------------
DROP TABLE IF EXISTS `jimu_report_ext_data`;
CREATE TABLE `jimu_report_ext_data` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键ID',
`biz_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务类型标识,如 report_share、temp_config 等',
`name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称,展示用',
`descr` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述信息',
`tags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标签,多个用逗号分隔',
`data_value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '实际存储内容',
`metadata` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '元数据,用于存储补充信息',
`status` tinyint(4) NULL DEFAULT 1 COMMENT '状态标识:1正常 0禁用',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改人',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_biz`(`biz_type`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '通用扩展数据表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for jimu_report_icon_lib
-- ----------------------------
@@ -2111,6 +2162,25 @@ INSERT INTO `jimu_report_share` VALUES ('994522516262789120', '99337999673672499
INSERT INTO `jimu_report_share` VALUES ('996923259183734784', '994504711236788224', '/jmreport/shareView/994504711236788224?shareToken=917ddd8e1733c75be1934a500c428a5b', '', '2024-09-20 09:43:57', '1', '0', '0', '917ddd8e1733c75be1934a500c428a5b');
INSERT INTO `jimu_report_share` VALUES ('996923285733679105', '994504692756684800', '/jmreport/shareView/994504692756684800?shareToken=6b03801538b27714965ac4f70f586c1f', '', '2024-09-20 09:44:03', '1', '0', '0', '6b03801538b27714965ac4f70f586c1f');
-- ----------------------------
-- Table structure for jimu_report_sheet
-- ----------------------------
DROP TABLE IF EXISTS `jimu_report_sheet`;
CREATE TABLE `jimu_report_sheet` (
`id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键(Sheet ID)',
`report_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '报表ID',
`sheet_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'Sheet名称',
`sheet_order` int(11) NOT NULL COMMENT '排序(可以为负数,负数表示在默认sheet前面)',
`json_str` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '该sheet的完整jsonStr',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_report_id`(`report_id`) USING BTREE,
INDEX `idx_sheet_order`(`report_id`, `sheet_order`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '报表Sheet表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for onl_drag_comp
-- ----------------------------
@@ -2319,49 +2389,49 @@ INSERT INTO `onl_drag_dataset_head` VALUES ('864649684727169024', 'cc1分组', N
INSERT INTO `onl_drag_dataset_head` VALUES ('874452164751183872', '日志统计', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2023-10-18 10:47:33', 'ceshi', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('874452378731991040', '查询系统日志', '', '874452164751183872', '1011872166805864448', 'select DATE_FORMAT(create_time, \'%Y-%m-%d\') as date,count(*) as num from sys_log group by DATE_FORMAT(create_time, \'%Y-%m-%d\')', '', '0', 'sql', 'get', '2023-10-18 10:48:24', 'ceshi', '2024-10-31 15:49:47', 'admin', NULL, 1);
INSERT INTO `onl_drag_dataset_head` VALUES ('910401375061983232', '库存管理可视化大屏', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-01-25 15:36:52', 'admin', '2024-01-25 17:31:14', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910406419257802752', '库存管理-卡片', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryManagement', '', '0', 'api', 'get', '2024-01-25 15:56:55', 'admin', '2024-01-25 16:02:28', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910419343896526848', 'air库存情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryStatus?type=air', '', '0', 'api', 'get', '2024-01-25 16:48:16', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910423953398874112', 'lite库存情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryStatus?type=lite', '', '0', 'api', 'get', '2024-01-25 17:06:35', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910425301976662016', 'super库存情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryStatus?type=super', '', '0', 'api', 'get', '2024-01-25 17:11:57', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910427052079366144', 'ultra库存情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryStatus?type=ultra', '', '0', 'api', 'get', '2024-01-25 17:18:54', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910430104345690112', '产品库存占比情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryChart?type=storkProportion', '', '0', 'api', 'get', '2024-01-25 17:31:02', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910431120222896128', '仓库状态情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryChart?type=warehouseStatus', '', '0', 'api', 'get', '2024-01-25 17:35:04', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910435726206222336', '当月出库情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryChart?type=outbound', '', '0', 'api', 'get', '2024-01-25 17:53:22', 'admin', '2024-01-25 17:59:40', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910441161197928448', '当月入库情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryChart?type=warehousing', '', '0', 'api', 'get', '2024-01-25 18:14:58', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910442989620871168', '产品库存覆盖率情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryChart?type=coverage', '', '0', 'api', 'get', '2024-01-25 18:22:14', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910447275230674944', '产品库龄分布情况', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryChart?type=stockAge', '', '0', 'api', 'get', '2024-01-25 18:39:15', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910455640270880768', '产品库存状态监控', '', '910401375061983232', '', 'https://apijeecgcom/mock/51/inventoryChart?type=monitor', '', '0', 'api', 'get', '2024-01-25 19:12:30', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910406419257802752', '库存管理-卡片', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryManagement', '', '0', 'api', 'get', '2024-01-25 15:56:55', 'admin', '2024-01-25 16:02:28', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910419343896526848', 'air库存情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryStatus?type=air', '', '0', 'api', 'get', '2024-01-25 16:48:16', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910423953398874112', 'lite库存情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryStatus?type=lite', '', '0', 'api', 'get', '2024-01-25 17:06:35', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910425301976662016', 'super库存情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryStatus?type=super', '', '0', 'api', 'get', '2024-01-25 17:11:57', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910427052079366144', 'ultra库存情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryStatus?type=ultra', '', '0', 'api', 'get', '2024-01-25 17:18:54', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910430104345690112', '产品库存占比情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryChart?type=storkProportion', '', '0', 'api', 'get', '2024-01-25 17:31:02', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910431120222896128', '仓库状态情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryChart?type=warehouseStatus', '', '0', 'api', 'get', '2024-01-25 17:35:04', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910435726206222336', '当月出库情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryChart?type=outbound', '', '0', 'api', 'get', '2024-01-25 17:53:22', 'admin', '2024-01-25 17:59:40', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910441161197928448', '当月入库情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryChart?type=warehousing', '', '0', 'api', 'get', '2024-01-25 18:14:58', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910442989620871168', '产品库存覆盖率情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryChart?type=coverage', '', '0', 'api', 'get', '2024-01-25 18:22:14', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910447275230674944', '产品库龄分布情况', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryChart?type=stockAge', '', '0', 'api', 'get', '2024-01-25 18:39:15', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910455640270880768', '产品库存状态监控', '', '910401375061983232', '', 'http://api.jeecg.com/mock/51/inventoryChart?type=monitor', '', '0', 'api', 'get', '2024-01-25 19:12:30', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910478407196262400', '某电商公司销售运营', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-01-25 20:42:58', 'admin', '2024-01-25 20:43:03', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910478592823574528', '销售状态', '', '910478407196262400', '', 'https://apijeecgcom/mock/51/commerceSalesOperations?type=saleStatus', '', '0', 'api', 'get', '2024-01-25 20:43:42', 'admin', '2024-01-25 20:45:22', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910695134387552256', '各地区订单与仓库情况', '', '910478407196262400', '', 'https://apijeecgcom/mock/51/commerceSalesOperations?type=regionalOrders', '', '0', 'api', 'get', '2024-01-26 11:04:10', 'admin', '2024-01-26 11:34:02', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910708293282349056', '季度目标完成', '', '910478407196262400', '', 'https://apijeecgcom/mock/51/commerceSalesOperations?type=quarterlyFinish', '', '0', 'api', 'get', '2024-01-26 11:56:27', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910721009699045376', '品牌销售占比', '', '910478407196262400', '', 'https://apijeecgcom/mock/51/commerceSalesOperations?type=brandSales', '', '0', 'api', 'get', '2024-01-26 12:46:59', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910732622212677632', '销售地区排行', '', '910478407196262400', '', 'https://apijeecgcom/mock/51/commerceSalesOperations?type=areaRanking', '', '0', 'api', 'get', '2024-01-26 13:33:07', 'admin', '2024-01-26 13:33:13', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910737864308342784', '物流订单接收', '', '910478407196262400', '', 'https://apijeecgcom/mock/51/commerceSalesOperations?type=logisticsOrder', '', '0', 'api', 'get', '2024-01-26 13:53:57', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910740127152128000', '订单产生趋势', '', '910478407196262400', '', 'https://apijeecgcom/mock/51/commerceSalesOperations?type=generatingTrends', '', '0', 'api', 'get', '2024-01-26 14:02:57', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910478592823574528', '销售状态', '', '910478407196262400', '', 'http://api.jeecg.com/mock/51/commerceSalesOperations?type=saleStatus', '', '0', 'api', 'get', '2024-01-25 20:43:42', 'admin', '2024-01-25 20:45:22', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910695134387552256', '各地区订单与仓库情况', '', '910478407196262400', '', 'http://api.jeecg.com/mock/51/commerceSalesOperations?type=regionalOrders', '', '0', 'api', 'get', '2024-01-26 11:04:10', 'admin', '2024-01-26 11:34:02', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910708293282349056', '季度目标完成', '', '910478407196262400', '', 'http://api.jeecg.com/mock/51/commerceSalesOperations?type=quarterlyFinish', '', '0', 'api', 'get', '2024-01-26 11:56:27', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910721009699045376', '品牌销售占比', '', '910478407196262400', '', 'http://api.jeecg.com/mock/51/commerceSalesOperations?type=brandSales', '', '0', 'api', 'get', '2024-01-26 12:46:59', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910732622212677632', '销售地区排行', '', '910478407196262400', '', 'http://api.jeecg.com/mock/51/commerceSalesOperations?type=areaRanking', '', '0', 'api', 'get', '2024-01-26 13:33:07', 'admin', '2024-01-26 13:33:13', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910737864308342784', '物流订单接收', '', '910478407196262400', '', 'http://api.jeecg.com/mock/51/commerceSalesOperations?type=logisticsOrder', '', '0', 'api', 'get', '2024-01-26 13:53:57', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910740127152128000', '订单产生趋势', '', '910478407196262400', '', 'http://api.jeecg.com/mock/51/commerceSalesOperations?type=generatingTrends', '', '0', 'api', 'get', '2024-01-26 14:02:57', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910750333919608832', '物业消防巡检状态', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-01-26 14:43:30', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910750488542625792', '区域基本情况', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=regionBasicInformation', '', '0', 'api', 'get', '2024-01-26 14:44:07', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910754028661030912', '正常设备', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=normalDevice', '', '0', 'api', 'get', '2024-01-26 14:58:11', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910754465934000128', '异常设备', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=abnormalDevice', '', '0', 'api', 'get', '2024-01-26 14:59:55', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910759432656830464', '设备异常明细', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=equipmentDetails', '', '0', 'api', 'get', '2024-01-26 15:19:40', 'admin', '2024-01-26 15:20:43', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910765056765509632', '小区地图分布', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=residentialDistributionMap', '', '0', 'api', 'get', '2024-01-26 15:42:00', 'admin', '2024-01-26 15:43:52', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910773111884398592', '小区分布地图表格', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=residentialDistributionTable', '', '0', 'api', 'get', '2024-01-26 16:14:01', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910776816075587584', '室外消火栓泵', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=deviceCountProportion', '', '0', 'api', 'get', '2024-01-26 16:28:44', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910790230315417600', '区域设备数量 ', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=areaDeviceCount', '', '0', 'api', 'get', '2024-01-26 17:22:02', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910794755508060160', '巡检任务数', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=inspectionTasksCount', '', '0', 'api', 'get', '2024-01-26 17:40:01', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910797586147360768', '巡检任务数表格', '', '910750333919608832', '', 'https://apijeecgcom/mock/51/propertyFireFighting?type=inspectionTasksTable', '', '0', 'api', 'get', '2024-01-26 17:51:16', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910750488542625792', '区域基本情况', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=regionBasicInformation', '', '0', 'api', 'get', '2024-01-26 14:44:07', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910754028661030912', '正常设备', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=normalDevice', '', '0', 'api', 'get', '2024-01-26 14:58:11', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910754465934000128', '异常设备', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=abnormalDevice', '', '0', 'api', 'get', '2024-01-26 14:59:55', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910759432656830464', '设备异常明细', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=equipmentDetails', '', '0', 'api', 'get', '2024-01-26 15:19:40', 'admin', '2024-01-26 15:20:43', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910765056765509632', '小区地图分布', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=residentialDistributionMap', '', '0', 'api', 'get', '2024-01-26 15:42:00', 'admin', '2024-01-26 15:43:52', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910773111884398592', '小区分布地图表格', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=residentialDistributionTable', '', '0', 'api', 'get', '2024-01-26 16:14:01', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910776816075587584', '室外消火栓泵', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=deviceCountProportion', '', '0', 'api', 'get', '2024-01-26 16:28:44', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910790230315417600', '区域设备数量 ', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=areaDeviceCount', '', '0', 'api', 'get', '2024-01-26 17:22:02', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910794755508060160', '巡检任务数', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=inspectionTasksCount', '', '0', 'api', 'get', '2024-01-26 17:40:01', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('910797586147360768', '巡检任务数表格', '', '910750333919608832', '', 'http://api.jeecg.com/mock/51/propertyFireFighting?type=inspectionTasksTable', '', '0', 'api', 'get', '2024-01-26 17:51:16', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911773848785436672', '某连锁饮品销售', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-01-29 10:30:35', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911792028287287296', '销量额', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=salesVolume', '', '0', 'api', 'get', '2024-01-29 11:42:50', 'admin', '2024-01-29 11:46:35', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836343134896128', '单月最高销售量分店 ', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=topSellingBranch', '', '0', 'api', 'get', '2024-01-29 14:38:55', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836426450550784', '单月最高销量品线 ', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=salesLine', '', '0', 'api', 'get', '2024-01-29 14:39:15', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836535531814912', '单月最高销量单品', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=highestSellingItem', '', '0', 'api', 'get', '2024-01-29 14:39:41', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836717715603456', '单月最高销量规格', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=maximumSalesSpecs', '', '0', 'api', 'get', '2024-01-29 14:40:24', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836839023263744', '销售额走势', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=salesTrend', '', '0', 'api', 'get', '2024-01-29 14:40:53', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836922162757632', '销量走势', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=salesTendency', '', '0', 'api', 'get', '2024-01-29 14:41:13', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911837008343121920', '订单销售量 ', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=orderSalesVolume', '', '0', 'api', 'get', '2024-01-29 14:41:34', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911837091507781632', '店铺销售额排名', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=salesRanking', '', '0', 'api', 'get', '2024-01-29 14:41:53', 'admin', '2024-01-29 15:44:55', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911837168896884736', ' 冷热占比', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=coldAndHostProportion', '', '0', 'api', 'get', '2024-01-29 14:42:12', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911845934736392192', '原料支出趋势', '', '911773848785436672', '', 'https://apijeecgcom/mock/51/beverageSales?type=expenditureTrends', '', '0', 'api', 'get', '2024-01-29 15:17:02', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911792028287287296', '销量额', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=salesVolume', '', '0', 'api', 'get', '2024-01-29 11:42:50', 'admin', '2024-01-29 11:46:35', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836343134896128', '单月最高销售量分店 ', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=topSellingBranch', '', '0', 'api', 'get', '2024-01-29 14:38:55', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836426450550784', '单月最高销量品线 ', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=salesLine', '', '0', 'api', 'get', '2024-01-29 14:39:15', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836535531814912', '单月最高销量单品', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=highestSellingItem', '', '0', 'api', 'get', '2024-01-29 14:39:41', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836717715603456', '单月最高销量规格', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=maximumSalesSpecs', '', '0', 'api', 'get', '2024-01-29 14:40:24', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836839023263744', '销售额走势', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=salesTrend', '', '0', 'api', 'get', '2024-01-29 14:40:53', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911836922162757632', '销量走势', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=salesTendency', '', '0', 'api', 'get', '2024-01-29 14:41:13', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911837008343121920', '订单销售量 ', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=orderSalesVolume', '', '0', 'api', 'get', '2024-01-29 14:41:34', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911837091507781632', '店铺销售额排名', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=salesRanking', '', '0', 'api', 'get', '2024-01-29 14:41:53', 'admin', '2024-01-29 15:44:55', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911837168896884736', ' 冷热占比', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=coldAndHostProportion', '', '0', 'api', 'get', '2024-01-29 14:42:12', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911845934736392192', '原料支出趋势', '', '911773848785436672', '', 'http://api.jeecg.com/mock/51/beverageSales?type=expenditureTrends', '', '0', 'api', 'get', '2024-01-29 15:17:02', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911878648998969344', '产品销售数据', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-01-29 17:27:02', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911887596497977344', '本月渠道销售', '', '911878648998969344', '', 'https://api.jeecg.com/mock/51/productSales?type=salesThisMonth', '', '0', 'api', 'get', '2024-01-29 18:02:35', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('911887691259887616', '本月代理商销售排行', '', '911878648998969344', '', 'https://api.jeecg.com/mock/51/productSales?type=salesRanking', '', '0', 'api', 'get', '2024-01-29 18:02:57', 'admin', NULL, NULL, NULL, NULL);
@@ -2683,7 +2753,7 @@ CREATE TABLE `onl_drag_page` (
`theme` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '主题色',
`style` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '面板主题',
`cover_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '封面图',
`des_json` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '仪表盘主配置JSON',
`des_json` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '仪表盘主配置JSON',
`template` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '布局json',
`protection_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '保护码',
`type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件夹类',
@@ -4193,4 +4263,4 @@ END
;;
delimiter ;
SET FOREIGN_KEY_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
+3
View File
@@ -26,3 +26,6 @@ COPY ./8pigxx_codegen.sql /docker-entrypoint-initdb.d
COPY ./99pigxx_bi.sql /docker-entrypoint-initdb.d
COPY ./999pigxx_app.sql /docker-entrypoint-initdb.d
# 微服务版本可以注释掉下面这行
COPY ./0pigxx_boot.sql /docker-entrypoint-initdb.d
+41
View File
@@ -0,0 +1,41 @@
# 使用说明 V6.0 - 单体架构版本
# 1. 先构建单体 JAR: mvn clean install -Pboot -DskipTests
# 2. 启动服务: docker compose -f docker-compose-boot.yml up -d
# 3. 静静等待服务启动
services:
pigx-mysql:
build:
context: ./db
environment:
MYSQL_ROOT_HOST: "%"
MYSQL_ROOT_PASSWORD: root
restart: always
container_name: pigx-mysql
image: pigx-mysql
command: --lower_case_table_names=1
networks:
- spring_cloud_default
pigx-redis:
container_name: pigx-redis
image: registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis
restart: always
networks:
- spring_cloud_default
# 单体的时候注意,服务名称命名为 pigx-gateway 对应前端nginx 配置
pigx-gateway:
build:
context: ./pigx-boot
restart: always
container_name: pigx-boot
image: pigx-boot
ports:
- 9999:9999
networks:
- spring_cloud_default
networks:
spring_cloud_default:
name: spring_cloud_default
driver: bridge
+17 -15
View File
@@ -1,4 +1,4 @@
# 使用说明 V5.9
# 使用说明 V6.0 - 微服务架构版本
# 1. 使用docker-compose 宿主机不需要配置host来发现
# 2. 无需修改源码,根目录 docker-compose up 即可
# 3. 静静等待服务启动
@@ -65,21 +65,12 @@ services:
networks:
- spring_cloud_default
pigx-flow-task:
pigx-flow-biz:
build:
context: ./pigx-flow/pigx-flow-task/pigx-flow-task-biz
context: ./pigx-flow/pigx-flow-biz
restart: always
container_name: pigx-flow-task
image: pigx-flow-task
networks:
- spring_cloud_default
pigx-flow-engine:
build:
context: ./pigx-flow/pigx-flow-engine/pigx-flow-engine-biz
restart: always
container_name: pigx-flow-engine
image: pigx-flow-engine
container_name: pigx-flow-biz
image: pigx-flow-biz
networks:
- spring_cloud_default
@@ -121,6 +112,17 @@ services:
networks:
- spring_cloud_default
pigx-xxl-job-admin:
build:
context: ./pigx-visual/pigx-xxl-job-admin
restart: always
image: pigx-xxl-job-admin
container_name: pigx-xxl-job-admin
ports:
- 9080:9080
networks:
- spring_cloud_default
pigx-codegen:
build:
context: ./pigx-visual/pigx-codegen
@@ -172,5 +174,5 @@ services:
networks:
spring_cloud_default:
name: spring_cloud_default
name: spring_cloud_default
driver: bridge
+36 -36
View File
@@ -1,42 +1,42 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-app-server</artifactId>
<version>5.9.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-app-server</artifactId>
<version>6.2.0</version>
</parent>
<artifactId>pigx-app-server-api</artifactId>
<artifactId>pigx-app-server-api</artifactId>
<dependencies>
<!--core 工具类-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-core</artifactId>
</dependency>
<!--mybatis plus extension,包含了mybatis plus core-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring</artifactId>
</dependency>
<!--feign 工具类-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-feign</artifactId>
</dependency>
<!-- excel 导入导出 -->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-excel</artifactId>
</dependency>
<!-- 脱敏工具类-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-sensitive</artifactId>
</dependency>
</dependencies>
<dependencies>
<!--core 工具类-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-core</artifactId>
</dependency>
<!--mybatis plus extension,包含了mybatis plus core-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring</artifactId>
</dependency>
<!--feign 工具类-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-feign</artifactId>
</dependency>
<!-- excel 导入导出 -->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-excel</artifactId>
</dependency>
<!-- 脱敏工具类-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-sensitive</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,38 @@
package com.pig4cloud.pigx.app.api.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* App 角色底部导航配置请求体。
* <p>
* 后台保存某个系统角色可见的 App Tabbar 列表。公开 Tabbar 由 {@code app_tabbar.login_flag=0}
* 控制,不依赖这里的角色授权。
*
* @author lengleng
* @date 2026-05-09
*/
@Data
@Schema(description = "App角色底部导航配置")
public class AppRoleTabbarDTO implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "角色ID不能为空")
@Schema(description = "系统角色ID")
private Long roleId;
/**
* 该角色可见的登录态 Tabbar ID 列表。
* <p>
* 保存时采用覆盖语义,空列表表示清空该角色的 Tabbar 授权。
*/
@Schema(description = "底部导航ID列表")
private List<Long> tabbarIds = new ArrayList<>();
}
@@ -1,30 +0,0 @@
package com.pig4cloud.pigx.app.api.dto;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@Data
@Schema(description = "APP用户传输对象")
@EqualsAndHashCode(callSuper = true)
public class AppUserDTO extends AppUser {
/**
* 角色ID
*/
@Schema(description = "角色id集合")
private List<Long> role;
/**
* 新密码
*/
@Schema(description = "新密码")
private String newpassword1;
@Schema(description = "验证码")
private String mobileCode;
}
@@ -1,7 +1,7 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.spring.activerecord.Model;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -1,7 +1,7 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.spring.activerecord.Model;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -22,66 +22,66 @@ import java.time.LocalDateTime;
@Schema(description = "文章收藏表")
public class AppArticleCollectEntity extends Model<AppArticleCollectEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 用户ID
*/
@Schema(description = "用户ID")
private Long userId;
/**
* 用户ID
*/
@Schema(description = "用户ID")
private Long userId;
/**
* 文章ID
*/
@Schema(description = "文章ID")
private Long articleId;
/**
* 文章ID
*/
@Schema(description = "文章ID")
private Long articleId;
/**
* 文章标题
*/
@TableField(exist = false)
private String title;
/**
* 文章标题
*/
@TableField(exist = false)
private String title;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新人")
private String updateBy;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新人")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 是否删除
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "是否删除")
private String delFlag;
/**
* 是否删除
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "是否删除")
private String delFlag;
/**
* 图片
@@ -1,7 +1,7 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.spring.activerecord.Model;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -0,0 +1,92 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.spring.activerecord.Model;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 通讯录表
*
* @author pigx
* @date 2025-05-29 17:30:30
*/
@Data
@TenantTable
@TableName("app_contacts")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "通讯录表")
public class AppContactsEntity extends Model<AppContactsEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 联系人
*/
@Schema(description = "联系人")
private String contactName;
/**
* 手机号
*/
@Schema(description = "手机号")
private String contactPhone;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 修改人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "修改人")
private String updateBy;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "修改时间")
private LocalDateTime updateTime;
/**
* 删除标记
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除标记")
private String delFlag;
/**
* 租户ID
*/
@Schema(description = "租户ID")
private Long tenantId;
}
@@ -1,16 +1,20 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.spring.activerecord.Model;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.FieldNameConstants;
import java.time.LocalDateTime;
/**
* 页面
* App 装修页面实体。
* <p>
* 仅对应 {@code app_page} 表,保存页面类型、页面名称和页面组件 JSON。
* 底部 Tabbar 已拆分到 {@code app_tabbar},不要再塞进 {@link #pageData}。
*
* @author lengleng
* @date 2023-06-08 11:19:23
@@ -18,6 +22,7 @@ import java.time.LocalDateTime;
@Data
@TenantTable
@TableName("app_page")
@FieldNameConstants
@EqualsAndHashCode(callSuper = true)
@Schema(description = "页面")
public class AppPageEntity extends Model<AppPageEntity> {
@@ -30,7 +35,7 @@ public class AppPageEntity extends Model<AppPageEntity> {
private Long id;
/**
* 页面类型
* 页面类型,对应 {@link com.pig4cloud.pigx.app.api.enums.PageTypeEnums}
*/
@Schema(description = "页面类型")
private Integer pageType;
@@ -42,7 +47,10 @@ public class AppPageEntity extends Model<AppPageEntity> {
private String pageName;
/**
* 页面数据
* 页面装修组件 JSON。
* <p>
* 只保存页面内部组件,例如搜索、轮播、导航块、服务块等;
* 运行时需要 Tabbar 时由服务层聚合 {@code app_tabbar} 返回。
*/
@Schema(description = "页面数据")
private String pageData;
@@ -1,107 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* app角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Data
@TenantTable
@TableName("app_role")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "app角色表")
public class AppRole extends Model<AppRole> {
private static final long serialVersionUID = 1L;
/**
* roleId
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "roleId")
private Long roleId;
/**
* roleName
*/
@Schema(description = "roleName")
private String roleName;
/**
* roleCode
*/
@Schema(description = "roleCode")
private String roleCode;
/**
* roleDesc
*/
@Schema(description = "roleDesc")
private String roleDesc;
/**
* 创建人
*/
@Schema(description = "创建人")
private String createBy;
/**
* 修改人
*/
@Schema(description = "修改人")
private String updateBy;
/**
* createTime
*/
@Schema(description = "createTime")
private LocalDateTime createTime;
/**
* updateTime
*/
@Schema(description = "updateTime")
private LocalDateTime updateTime;
/**
* delFlag
*/
@Schema(description = "delFlag")
private String delFlag;
/**
* tenantId
*/
@Schema(description = "tenantId", hidden = true)
private Long tenantId;
}
@@ -0,0 +1,37 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.spring.activerecord.Model;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* App 角色底部导航关联实体,以 (role_id, tabbar_id, tenant_id) 为复合主键。
* <p>
* 这里的 roleId 是系统角色 {@code sys_role.role_id}。运行时不会跨库查询 {@code sys_user_role},
* 而是从登录 token 的角色权限中解析 roleId,再回到本表查询可见 Tabbar。
*
* @author lengleng
* @date 2026-05-09
*/
@Data
@TenantTable
@TableName("app_role_tabbar")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "App角色底部导航")
public class AppRoleTabbar extends Model<AppRoleTabbar> {
private static final long serialVersionUID = 1L;
@Schema(description = "系统角色ID")
private Long roleId;
@Schema(description = "底部导航ID")
private Long tabbarId;
@Schema(description = "租户ID", hidden = true)
private Long tenantId;
}
@@ -1,125 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.pig4cloud.pigx.common.core.util.ValidGroup;
import com.pig4cloud.pigx.common.sensitive.annotation.Sensitive;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* app 社交账号登录
*/
@Data
@Schema(description = "第三方账号信息")
@EqualsAndHashCode(callSuper = true)
public class AppSocialDetails extends Model<AppSocialDetails> {
private static final long serialVersionUID = 1L;
/**
* 主鍵
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 类型
*/
@NotBlank(message = "类型不能为空")
@Schema(description = "账号类型")
private String type;
/**
* 描述
*/
@Schema(description = "描述")
private String remark;
/**
* appid
*/
@Sensitive(prefixNoMaskLen = 4, suffixNoMaskLen = 4)
@NotBlank(message = "账号不能为空")
@Schema(description = "appId")
private String appId;
/**
* app_secret
*/
@Sensitive(prefixNoMaskLen = 4, suffixNoMaskLen = 4)
@NotBlank(message = "密钥不能为空", groups = { ValidGroup.Insert.class })
@Schema(description = "app secret")
private String appSecret;
/**
* 回调地址
*/
@Schema(description = "回调地址")
private String redirectUrl;
/**
* 拓展字段
*/
@Schema(description = "拓展字段")
private String ext;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 修改人
*/
@TableField(fill = FieldFill.UPDATE)
@Schema(description = "修改人")
private String updateBy;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
*/
@Schema(description = "更新时间")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/**
* 删除标记
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除标记,1:已删除,0:正常")
private String delFlag;
}
@@ -1,7 +1,7 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.spring.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonRawValue;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.pig4cloud.pigx.common.core.util.TenantTable;
@@ -12,7 +12,10 @@ import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 导航栏
* App 底部导航实体。
* <p>
* 该表是移动端底部 Tabbar 的唯一数据源。图标字段保存 Wot UI 图标名,
* 运行时可见性由 {@link #loginFlag} 和 {@code app_role_tabbar} 共同决定。
*
* @author lengleng
* @date 2023-06-08 11:18:46
@@ -38,19 +41,25 @@ public class AppTabbarEntity extends Model<AppTabbarEntity> {
private String name;
/**
* 未选图标
* 选中态图标名。
* <p>
* 保存 Wot UI 内置图标名称,例如 {@code home-fill}。
*/
@Schema(description = "未选图标")
@Schema(description = "选中态图标名")
private String selected;
/**
* 已选图标
* 未选中态图标名。
* <p>
* 保存 Wot UI 内置图标名称,例如 {@code home}。
*/
@Schema(description = "已选图标")
@Schema(description = "未选中态图标名")
private String unselected;
/**
* 链接地址
* 跳转链接 JSON。
* <p>
* 前端按装修链接结构解析,例如 {@code {"path":"/pages/index/index","type":"shop"}}。
*/
@Schema(description = "链接地址")
@JsonRawValue
@@ -63,6 +72,12 @@ public class AppTabbarEntity extends Model<AppTabbarEntity> {
@Schema(description = "排序值")
private Integer sortOrder;
/**
* 是否需要登录,0=不需要登录也可见,1=登录后按角色授权可见。
*/
@Schema(description = "是否需要登录,0=不需要登录也可见,1=登录后按角色授权可见")
private String loginFlag;
/**
* 创建人
*/
@@ -1,161 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* app用户表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Data
@TenantTable
@TableName("app_user")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "app用户表")
public class AppUser extends Model<AppUser> {
private static final long serialVersionUID = 1L;
/**
* userId
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "userId")
private Long userId;
/**
* 用户名
*/
@Schema(description = "用户名")
private String username;
/**
* 密码
*/
@Schema(description = "密码")
private String password;
/**
* 随机盐
*/
@JsonIgnore
@Schema(description = "随机盐")
private String salt;
/**
* 手机号
*/
@Schema(description = "手机号")
private String phone;
/**
* 头像
*/
@Schema(description = "头像")
private String avatar;
/**
* 昵称
*/
@Schema(description = "拓展字段:昵称")
private String nickname;
/**
* 姓名
*/
@Schema(description = "拓展字段:姓名")
private String name;
/**
* 邮箱
*/
@Schema(description = "拓展字段:邮箱")
private String email;
/**
* 创建人
*/
@Schema(description = "创建人")
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
* 修改人
*/
@Schema(description = "修改人")
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 修改时间
*/
@Schema(description = "修改时间")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/**
* 删除标记
*/
@Schema(description = "删除标记,1:已删除,0:正常")
@TableField(fill = FieldFill.INSERT)
@TableLogic
private String delFlag;
/**
* 所属租户
*/
@Schema(description = "所属租户", hidden = true)
private Long tenantId;
/**
* 最后一次密码修改时间
*/
@Schema(description = "最后一次密码修改时间")
private LocalDateTime lastModifiedTime;
/**
* 锁定标记
*/
@Schema(description = "锁定标记")
private String lockFlag;
/**
* 微信小程序登录openId
*/
@Schema(description = "微信小程序登录openId")
private String wxOpenid;
}
@@ -0,0 +1,28 @@
package com.pig4cloud.pigx.app.api.enums;
/**
* App Server 模块错误编码
*
* @author lengleng
* @date 2022/3/30
*/
public interface AppErrorCodes {
// === App 用户相关 ===
String APP_USER_USERINFO_EMPTY = "app.user.userInfo.empty";
String APP_USER_USERNAME_EXISTING = "app.user.username.existing";
String APP_USER_IMPORT_SUCCEED = "app.user.import.succeed";
String APP_USER_QUERY_ERROR = "app.user.query.error";
// === App 角色相关 ===
String APP_ROLE_ROLENAME_INEXISTENCE = "app.role.roleName.inexistence";
String APP_ROLE_NAMEORCODE_EXISTING = "app.role.nameOrCode.existing";
// === App 短信相关 ===
String APP_SMS_OFTEN = "app.sms.often";
}
@@ -1,11 +1,18 @@
package com.pig4cloud.pigx.app.api.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* 页面类型枚举
* App 装修页面类型枚举。
* <p>
* 页面类型会写入 {@code app_page.page_type},后台保存装修页时根据该枚举回填页面名称。
*
* @author lengleng
* @date 2024/12/22
*/
@Getter
@RequiredArgsConstructor
public enum PageTypeEnums {
/**
* 首页
@@ -18,17 +25,23 @@ public enum PageTypeEnums {
/**
* 客服设置
*/
SERVICE(3, "客服设置");
SERVICE(3, "客服设置"),
/**
* 工作台属性
*/
WORKBENCH(4, "工作台");
/**
* 页面类型编码,和 app_page.page_type 对应。
*/
private final Integer pageType;
/**
* 页面类型展示名称。
*/
private final String name;
PageTypeEnums(Integer pageType, String name) {
this.pageType = pageType;
this.name = name;
}
/**
* 按类型获取名称
*
@@ -44,11 +57,4 @@ public enum PageTypeEnums {
return null;
}
public Integer getPageType() {
return pageType;
}
public String getName() {
return name;
}
}
@@ -0,0 +1,102 @@
package com.pig4cloud.pigx.app.api.vo;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.time.LocalDateTime;
import java.util.List;
/**
* APP 装修页聚合数据。
* <p>
* 对外保持页面字段在顶层,额外追加 {@link #tabbar},避免把底部导航配置重新写回
* {@code app_page.page_data}。
*
* @author lengleng
*/
@Data
@Schema(description = "APP 装修页聚合数据")
public class AppDecorateVO {
/**
* 主键
*/
@Schema(description = "主键")
private Long id;
/**
* 页面类型
*/
@Schema(description = "页面类型")
private Integer pageType;
/**
* 页面名称
*/
@Schema(description = "页面名称")
private String pageName;
/**
* 页面装修组件 JSON,不包含底部 Tabbar。
*/
@Schema(description = "页面数据")
private String pageData;
/**
* 创建人
*/
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 修改人
*/
@Schema(description = "修改人")
private String updateBy;
/**
* 修改时间
*/
@Schema(description = "修改时间")
private LocalDateTime updateTime;
/**
* 删除标记
*/
@Schema(description = "删除标记")
private String delFlag;
/**
* 当前查询场景下可用的底部导航栏。
* <p>
* 后台装修查询返回完整 Tabbar;App 运行时查询返回公开 Tabbar + 当前角色授权 Tabbar。
*/
@Schema(description = "底部导航栏")
private List<AppTabbarEntity> tabbar;
/**
* 根据页面实体和 Tabbar 列表构建装修聚合 VO。
*
* @param page 页面实体,可能为空
* @param tabbar Tabbar 列表
* @return 装修聚合数据
*/
public static AppDecorateVO of(AppPageEntity page, List<AppTabbarEntity> tabbar) {
AppDecorateVO vo = new AppDecorateVO();
if (page != null) {
BeanUtils.copyProperties(page, vo);
}
vo.setTabbar(tabbar);
return vo;
}
}
@@ -1,83 +0,0 @@
package com.pig4cloud.pigx.app.api.vo;
import cn.idev.excel.annotation.ExcelIgnore;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import com.pig4cloud.pigx.common.excel.annotation.ExcelLine;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ColumnWidth(30)
public class AppUserExcelVO {
/**
* 导入时候回显行号
*/
@ExcelLine
@ExcelIgnore
private Long lineNum;
/**
* 主键ID
*/
@ExcelProperty("用户编号")
private Long userId;
/**
* 用户名
*/
@NotBlank(message = "用户名不能为空")
@ExcelProperty("用户名")
private String username;
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空")
@ExcelProperty("手机号")
private String phone;
/**
* 手机号
*/
@NotBlank(message = "昵称不能为空")
@ExcelProperty("昵称")
private String nickname;
/**
* 手机号
*/
@NotBlank(message = "姓名不能为空")
@ExcelProperty("姓名")
private String name;
/**
* 手机号
*/
@NotBlank(message = "邮箱不能为空")
@ExcelProperty("邮箱")
private String email;
/**
* 角色列表
*/
@NotBlank(message = "角色不能为空")
@ExcelProperty("角色")
private String roleNameList;
/**
* 锁定标记
*/
@ExcelProperty("锁定标记,0:正常,9:已锁定")
private String lockFlag;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private LocalDateTime createTime;
}
@@ -1,101 +0,0 @@
package com.pig4cloud.pigx.app.api.vo;
import com.pig4cloud.pigx.app.api.entity.AppRole;
import com.pig4cloud.pigx.common.sensitive.annotation.Sensitive;
import com.pig4cloud.pigx.common.sensitive.core.SensitiveTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class AppUserVO implements Serializable {
/**
* 主键
*/
@Schema(description = "主键")
private Long userId;
/**
* 用户名
*/
@Schema(description = "用户名")
private String username;
/**
* 密码
*/
@Schema(description = "密码")
private String password;
/**
* 手机号
*/
@Schema(description = "手机号")
@Sensitive(type = SensitiveTypeEnum.MOBILE_PHONE)
private String phone;
/**
* 头像
*/
@Schema(description = "头像")
private String avatar;
/**
* 昵称
*/
@Schema(description = "拓展字段:昵称")
private String nickname;
/**
* 姓名
*/
@Schema(description = "拓展字段:姓名")
private String name;
/**
* 邮箱
*/
@Schema(description = "拓展字段:邮箱")
private String email;
/**
* 创建时间
*/
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 删除标记
*/
@Schema(description = "删除标记,1:已删除,0:正常")
private String delFlag;
/**
* 所属租户
*/
@Schema(description = "所属租户")
private Long tenantId;
/**
* 最后一次密码修改时间
*/
@Schema(description = "最后一次密码修改时间")
private LocalDateTime lastModifiedTime;
/**
* 锁定标记
*/
@Schema(description = "锁定标记")
private String lockFlag;
/**
* 角色列表
*/
@Schema(description = "拥有的角色列表")
private List<AppRole> roleList;
}
@@ -1 +0,0 @@
com.pig4cloud.pigx.app.api.feign.RemoteAppUserService
@@ -0,0 +1,14 @@
# App Server Module i18n Messages - English
# App user related
app.user.userInfo.empty=App user information is empty for {0}
app.user.username.existing=Username {0} already exists
app.user.import.succeed=User import succeeded; default password is the phone number
app.user.query.error=Failed to fetch current user information
# App role related
app.role.roleName.inexistence=Role name {0} does not exist
app.role.nameOrCode.existing=Role name or code already exists ({0} {1})
# App SMS related
app.sms.often=Verification code sent too frequently
@@ -0,0 +1,14 @@
# App Server 模块国际化消息 - 中文
# App 用户相关
app.user.userInfo.empty={0} \u7528\u6237\u4FE1\u606F\u4E3A\u7A7A
app.user.username.existing={0} \u7528\u6237\u540D\u5DF2\u5B58\u5728
app.user.import.succeed=\u7528\u6237\u5BFC\u5165\u6210\u529F\uFF0C\u9ED8\u8BA4\u5BC6\u7801\u4E3A\u624B\u673A\u53F7
app.user.query.error=\u83B7\u53D6\u5F53\u524D\u7528\u6237\u4FE1\u606F\u5931\u8D25
# App 角色相关
app.role.roleName.inexistence={0} \u89D2\u8272\u540D\u79F0\u4E0D\u5B58\u5728
app.role.nameOrCode.existing={0} {1} \u89D2\u8272\u540D\u6216\u89D2\u8272\u7F16\u7801\u5DF2\u7ECF\u5B58\u5728
# App 短信相关
app.sms.often=\u9A8C\u8BC1\u7801\u53D1\u9001\u8FC7\u9891\u7E41
+8 -12
View File
@@ -7,21 +7,16 @@
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-app-server</artifactId>
<version>5.9.0</version>
<version>6.2.0</version>
</parent>
<artifactId>pigx-app-server-biz</artifactId>
<dependencies>
<!--必备: undertow容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<!--必备: spring boot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<artifactId>spring-boot-starter-webmvc</artifactId>
</dependency>
<!--必备: 注册中心客户端-->
<dependency>
@@ -64,6 +59,10 @@
<artifactId>pigx-app-server-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-upms-api</artifactId>
</dependency>
<!--必备: log 依赖-->
<dependency>
<groupId>com.pig4cloud</groupId>
@@ -77,12 +76,12 @@
<!--选配: mybatis 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<artifactId>mybatis-plus-spring-boot4-starter</artifactId>
</dependency>
<!--选配: druid 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<artifactId>druid-spring-boot-4-starter</artifactId>
</dependency>
<!--选配: mysql 数据库驱动 -->
<dependency>
@@ -112,9 +111,6 @@
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<loaderImplementation>CLASSIC</loaderImplementation>
</configuration>
</execution>
</executions>
</plugin>
@@ -51,6 +51,7 @@ public class AppArticleCategoryController {
LambdaQueryWrapper<AppArticleCategoryEntity> wrapper = Wrappers.lambdaQuery();
wrapper.like(StrUtil.isNotBlank(appArticleCategory.getName()), AppArticleCategoryEntity::getName,
appArticleCategory.getName());
wrapper.orderByAsc(AppArticleCategoryEntity::getSort, AppArticleCategoryEntity::getId);
return R.ok(appArticleCategoryService.page(page, wrapper));
}
@@ -74,7 +75,8 @@ public class AppArticleCategoryController {
@Inner(value = false)
@GetMapping("/list")
public R list() {
return R.ok(appArticleCategoryService.list());
return R.ok(appArticleCategoryService.list(Wrappers.<AppArticleCategoryEntity>lambdaQuery()
.orderByAsc(AppArticleCategoryEntity::getSort, AppArticleCategoryEntity::getId)));
}
/**
@@ -103,6 +105,24 @@ public class AppArticleCategoryController {
return R.ok(appArticleCategoryService.updateById(appArticleCategory));
}
/**
* 按传入 ID 顺序调整文章分类,保留未选中记录在排序序列中的位置。
* <p>
* 以当前租户内未删除记录的排序值、主键升序为基准,仅重排选中记录占据的位置, 再将全部记录的排序值从 1 起连续重编号。
* @param ids 按目标顺序排列的文章分类 ID;不可为 null 或空,不可包含 null、重复或不可用的 ID
* @return 排序保存成功的响应;校验或更新失败时抛出异常,由统一异常处理器转换响应
* @throws IllegalArgumentException ID 列表为空、包含 null 或重复值,或指定记录已删除、不属于当前租户 或不存在
* @throws IllegalStateException 批量更新返回失败
*/
@Operation(summary = "拖拽排序", description = "按当前列表顺序保存排序")
@SysLog("文章分类排序")
@PutMapping("/sort")
@HasPermission("app_appArticleCategory_edit")
public R sort(@RequestBody List<Long> ids) {
appArticleCategoryService.sort(ids);
return R.ok();
}
/**
* 通过id删除文章分类表
* @param ids id列表
@@ -36,10 +36,12 @@ public class AppArticleController {
private final AppArticleService appArticleService;
/**
* 分页查询
* 分页查询文章资讯。
* <p>
* 返回文章列表时会关联分类名称,供 App 资讯列表和后台管理复用。
* @param page 分页对象
* @param appArticle 文章资讯
* @return
* @return 文章分页结果
*/
@Operation(summary = "分页查询", description = "分页查询")
@Inner(value = false)
@@ -49,9 +51,12 @@ public class AppArticleController {
}
/**
* 通过id查询文章资讯
* @param id id
* @return R
* 查询文章详情。
* <p>
* 会递增访问次数;如果传入 userId,则额外返回该用户是否收藏当前文章。
* @param id 文章 ID
* @param userId 用户 ID,可为空
* @return 文章详情
*/
@Inner(value = false)
@Operation(summary = "通过id查询", description = "通过id查询")
@@ -86,6 +91,24 @@ public class AppArticleController {
return R.ok(appArticleService.updateById(appArticle));
}
/**
* 按传入 ID 顺序调整文章,保留未选中记录在排序序列中的位置。
* <p>
* 以当前租户内未删除记录的排序值、主键升序为基准,仅重排选中记录占据的位置, 再将全部记录的排序值从 1 起连续重编号。
* @param ids 按目标顺序排列的文章 ID;不可为 null 或空,不可包含 null、重复或不可用的 ID
* @return 排序保存成功的响应;校验或更新失败时抛出异常,由统一异常处理器转换响应
* @throws IllegalArgumentException ID 列表为空、包含 null 或重复值,或指定记录已删除、不属于当前租户 或不存在
* @throws IllegalStateException 批量更新返回失败
*/
@Operation(summary = "拖拽排序", description = "按当前列表顺序保存排序")
@SysLog("文章资讯排序")
@PutMapping("/sort")
@HasPermission("app_appArticle_edit")
public R sort(@RequestBody List<Long> ids) {
appArticleService.sort(ids);
return R.ok();
}
/**
* 通过id删除文章资讯
* @param ids id列表
@@ -0,0 +1,122 @@
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.entity.AppContactsEntity;
import com.pig4cloud.pigx.app.service.AppContactsService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import com.pig4cloud.pigx.common.security.annotation.HasPermission;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 通讯录表管理控制器
*
* @author lengleng
* @date 2025/05/29
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appContacts")
@Tag(description = "appContacts", name = "通讯录表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppContactsController {
private final AppContactsService appContactsService;
/**
* 分页查询
*
* @param page 分页对象
* @param appContacts 通讯录表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@HasPermission("app_appContacts_view")
public R getAppContactsPage(@ParameterObject Page page, @ParameterObject AppContactsEntity appContacts) {
return R.ok(appContactsService.pageScope(page, appContacts));
}
/**
* 通过id查询通讯录表
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
@HasPermission("app_appContacts_view")
public R getById(@PathVariable("id") Long id) {
return R.ok(appContactsService.getById(id));
}
/**
* 新增通讯录表
*
* @param appContacts 通讯录表
* @return R
*/
@Operation(summary = "新增通讯录表", description = "新增通讯录表")
@SysLog("新增通讯录表")
@PostMapping
@HasPermission("app_appContacts_add")
public R save(@RequestBody AppContactsEntity appContacts) {
return R.ok(appContactsService.save(appContacts));
}
/**
* 修改通讯录表
*
* @param appContacts 通讯录表
* @return R
*/
@Operation(summary = "修改通讯录表", description = "修改通讯录表")
@SysLog("修改通讯录表")
@PutMapping
@HasPermission("app_appContacts_edit")
public R updateById(@RequestBody AppContactsEntity appContacts) {
return R.ok(appContactsService.updateById(appContacts));
}
/**
* 通过id删除通讯录表
*
* @param ids id列表
* @return R
*/
@Operation(summary = "通过id删除通讯录表", description = "通过id删除通讯录表")
@SysLog("通过id删除通讯录表")
@DeleteMapping
@HasPermission("app_appContacts_del")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appContactsService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 导出excel 表格
*
* @param appContacts 查询条件
* @param ids 导出指定ID
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@HasPermission("app_appContacts_export")
public List<AppContactsEntity> export(AppContactsEntity appContacts, Long[] ids) {
return appContactsService.list(Wrappers.lambdaQuery(appContacts).in(ArrayUtil.isNotEmpty(ids), AppContactsEntity::getId, ids));
}
}
@@ -1,6 +1,5 @@
package com.pig4cloud.pigx.app.controller;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.app.service.AppIndexService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.security.annotation.Inner;
@@ -14,10 +13,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* app 首页控制
* App 运行时页面接口。
* <p>
* 这里的接口主要给移动端调用,返回首页、装修页、底部 Tabbar 等运行时数据。
* 部分接口允许匿名访问,具体可见方法上的 {@link Inner} 配置。
*
* @author lengleng
* @date 2023/6/8
@@ -32,9 +32,11 @@ public class AppIndexController {
private final AppIndexService indexService;
/**
* 获取主页配置
* 获取首页基础数据。
* <p>
* 当前返回首页装修页记录和资讯列表,适合旧版首页一次性拉取基础内容。
*
* @return {@link R }
* @return 首页页面数据和资讯列表
*/
@Inner(value = false)
@GetMapping("/index")
@@ -43,9 +45,11 @@ public class AppIndexController {
}
/**
* 获取移动端appTabbar 配置
* 获取移动端底部导航配置。
* <p>
* 未登录时只返回公开 Tabbar;登录后返回公开 Tabbar + 当前用户角色授权的 Tabbar。
*
* @return {@link R }
* @return 当前访问身份可见的 Tabbar 列表
*/
@Inner(value = false)
@GetMapping("/config")
@@ -54,10 +58,12 @@ public class AppIndexController {
}
/**
* 根据页面类型查询页面配置
* 获取指定页面类型的装修数据。
* <p>
* 返回页面装修 JSON,同时聚合当前访问身份可见的 Tabbar,方便移动端一次请求完成页面渲染。
*
* @param pageType 页面类型
* @return {@link R }
* @return 装修页聚合数据
*/
@Inner(value = false)
@GetMapping("/decorate")
@@ -65,4 +71,16 @@ public class AppIndexController {
return R.ok(indexService.decorate(pageType));
}
/**
* 获取工作台页面装修数据。
* <p>
* 工作台内部按钮权限复用 B 端权限体系,这里不再按 App 专属菜单做二次过滤。
*
* @return 工作台页面数据
*/
@GetMapping("/workbench")
public R workbench() {
return R.ok(indexService.workbench());
}
}
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
* Copyright (c) 2018-2026, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -30,6 +30,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* App 手机验证码接口。
*
* @author lengleng
* @date 2018/11/14
* <p>
@@ -44,6 +46,12 @@ public class AppMobileController {
private final AppMobileService appMobileService;
/**
* 发送 App 手机验证码。
*
* @param mobile 手机号
* @return 发送结果
*/
@Inner(value = false)
@GetMapping("/{mobile}")
public R sendSmsCode(@PathVariable String mobile) {
@@ -3,8 +3,11 @@ package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import com.pig4cloud.pigx.app.api.enums.PageTypeEnums;
import com.pig4cloud.pigx.app.api.vo.AppDecorateVO;
import com.pig4cloud.pigx.app.service.AppPageService;
import com.pig4cloud.pigx.app.service.AppTabbarService;
import com.pig4cloud.pigx.common.core.util.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -17,7 +20,10 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 页面管理
* App 装修页面后台管理接口。
* <p>
* 页面表只保存页面装修组件 JSON,底部 Tabbar 由 {@code app_tabbar} 独立维护;
* 查询装修页时会聚合 Tabbar,便于后台预览。
*
* @author pig
* @date 2023-06-07 16:32:35
@@ -31,24 +37,41 @@ public class AppPageController {
private final AppPageService pageService;
private final AppTabbarService tabbarService;
/**
* 查询文章资讯
* 按页面类型查询后台装修页配置。
* <p>
* 返回结构保持页面字段在顶层,并额外携带完整 Tabbar 列表,用于后台装修预览和 Tabbar 设置区初始化。
*
* @param pageType pageType
* @return R
* @param pageType 页面类型,见 {@link PageTypeEnums}
* @return 页面装修数据和完整 Tabbar 列表
*/
@Operation(summary = "通过页面类型查询", description = "通过页面类型查询")
@GetMapping("/{pageType}")
public R getByPageType(@PathVariable("pageType") Long pageType) {
AppPageEntity appPage = pageService.getOne(Wrappers.<AppPageEntity>lambdaQuery().eq(AppPageEntity::getPageType, pageType));
return R.ok(appPage);
public R getByPageType(@PathVariable("pageType") Integer pageType) {
AppPageEntity appPage = pageService.getOne(Wrappers.<AppPageEntity>lambdaQuery()
.eq(AppPageEntity::getPageType, pageType)
.orderByDesc(AppPageEntity::getCreateTime), false);
List<AppTabbarEntity> tabbarList = tabbarService
.list(Wrappers.<AppTabbarEntity>lambdaQuery().orderByAsc(AppTabbarEntity::getSortOrder).orderByAsc(AppTabbarEntity::getId));
AppDecorateVO decorateVO = AppDecorateVO.of(appPage, tabbarList);
if (appPage == null) {
decorateVO.setPageType(pageType);
decorateVO.setPageName(PageTypeEnums.getNameByType(pageType));
decorateVO.setPageData("[]");
}
return R.ok(decorateVO);
}
/**
* 更新
* 保存页面装修数据。
* <p>
* 同一页面类型只保留一份最新配置;保存时先删除旧记录,再写入新记录。
* Tabbar 不随页面一起保存,需通过 {@link AppTabbarController} 单独维护。
*
* @param page 页面
* @return {@link R }
* @return 保存结果
*/
@Operation(summary = "更新页面", description = "更新页面")
@PutMapping
@@ -58,7 +81,7 @@ public class AppPageController {
.list(Wrappers.<AppPageEntity>lambdaQuery().eq(AppPageEntity::getPageType, page.getPageType()));
if (CollUtil.isNotEmpty(pageEntityList)) {
// 删掉原来类型的页面数据
// app_page 按页面类型覆盖保存,避免同一页面类型存在多份装修数据。
pageService.removeByIds(pageEntityList.stream().map(AppPageEntity::getId).toList());
}
@@ -1,185 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.entity.AppRole;
import com.pig4cloud.pigx.app.api.vo.AppRoleExcelVO;
import com.pig4cloud.pigx.app.service.AppRoleService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.RequestExcel;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.HasPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* app角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/approle")
@Tag(description = "approle", name = "app角色表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppRoleController {
private final AppRoleService appRoleService;
/**
* 分页查询
*
* @param page 分页对象
* @param appRole app角色表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
public R getAppRolePage(Page page, AppRole appRole) {
return R.ok(appRoleService.page(page, Wrappers.<AppRole>lambdaQuery()
.like(StrUtil.isNotBlank(appRole.getRoleName()), AppRole::getRoleName, appRole.getRoleName())));
}
/**
* 查询全部角色
*
* @return
*/
@Operation(summary = "查询全部", description = "查询全部")
@GetMapping("/list")
public R list() {
return R.ok(appRoleService.list(Wrappers.emptyWrapper()));
}
/**
* 通过id查询app角色表
*
* @param roleId id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{roleId}")
public R getById(@PathVariable("roleId") Long roleId) {
return R.ok(appRoleService.getById(roleId));
}
/**
* 通过roleName查询app角色表
*
* @param roleName roleName
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/details/{roleName}")
public R getByUserName(@PathVariable("roleName") String roleName) {
return R.ok(appRoleService.getOne(Wrappers.<AppRole>lambdaQuery().eq(AppRole::getRoleName, roleName)));
}
/**
* 通过roleCode查询app角色表
*
* @param roleCode roleCode
* @return R
*/
@Operation(summary = "通过roleCode查询", description = "通过roleCode查询")
@GetMapping("/detailsByCode/{roleCode}")
public R getByPhone(@PathVariable("roleCode") String roleCode) {
return R.ok(appRoleService.getOne(Wrappers.<AppRole>lambdaQuery().eq(AppRole::getRoleCode, roleCode)));
}
/**
* 新增app角色表
*
* @param appRole app角色表
* @return R
*/
@Operation(summary = "新增app角色表", description = "新增app角色表")
@SysLog("新增app角色表")
@PostMapping
@HasPermission("app_approle_add")
public R save(@RequestBody AppRole appRole) {
return R.ok(appRoleService.save(appRole));
}
/**
* 修改app角色表
*
* @param appRole app角色表
* @return R
*/
@Operation(summary = "修改app角色表", description = "修改app角色表")
@SysLog("修改app角色表")
@PutMapping
@HasPermission("app_approle_edit")
public R updateById(@RequestBody AppRole appRole) {
return R.ok(appRoleService.updateById(appRole));
}
/**
* 通过ids批量删除app角色表
*
* @param ids roleIds
* @return R
*/
@Operation(summary = "通过ids批量删除app角色表", description = "通过ids批量删除app角色表")
@SysLog("通过ids批量删除app角色表")
@DeleteMapping
@HasPermission("app_approle_del")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appRoleService.deleteRoleByIds(ids));
}
/**
* 导出excel 表格
*
* @param appRole 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@HasPermission("app_approle_export")
public List<AppRole> export(AppRole appRole) {
return appRoleService.list(Wrappers.query(appRole));
}
/**
* 导入角色
*
* @param excelVOList 角色列表
* @param bindingResult 错误信息列表
* @return ok fail
*/
@PostMapping("/import")
@HasPermission("app_approle_export")
public R importRole(@RequestExcel List<AppRoleExcelVO> excelVOList, BindingResult bindingResult) {
return appRoleService.importRole(excelVOList, bindingResult);
}
}
@@ -0,0 +1,105 @@
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pig4cloud.pigx.admin.api.entity.SysRole;
import com.pig4cloud.pigx.admin.api.feign.RemoteRoleService;
import com.pig4cloud.pigx.app.api.dto.AppRoleTabbarDTO;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import com.pig4cloud.pigx.app.service.AppRoleTabbarService;
import com.pig4cloud.pigx.app.service.AppTabbarService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.security.annotation.HasPermission;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* App 角色底部导航授权管理接口。
* <p>
* 该接口只维护「系统角色 -> App Tabbar」的授权关系。角色本身仍来自 upms 的 {@code sys_role},
* App 端运行时根据登录 token 中的角色 ID 读取 {@code app_role_tabbar},不跨库 join {@code sys_user_role}。
*
* @author lengleng
* @date 2026-05-09
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/role-tabbar")
@Tag(description = "role-tabbar", name = "App角色底部导航授权")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppRoleTabbarController {
private final RemoteRoleService remoteRoleService;
private final AppTabbarService appTabbarService;
private final AppRoleTabbarService appRoleTabbarService;
/**
* 查询可授权的系统角色列表。
* <p>
* 角色来源于 upms 远程接口,前端可按角色名称做轻量过滤,用于角色 Tabbar 授权页面。
*
* @param roleName 角色名称关键字,可为空
* @return 系统角色列表
*/
@GetMapping("/roles")
@HasPermission("app_role_tabbar_view")
public R<List<SysRole>> roles(@RequestParam(required = false) String roleName) {
R<List<SysRole>> roles = remoteRoleService.getAllRole();
if (!roles.isOk() || roles.getData() == null || StrUtil.isBlank(roleName)) {
return roles;
}
return R.ok(roles.getData()
.stream()
.filter(role -> StrUtil.containsIgnoreCase(role.getRoleName(), roleName))
.toList());
}
/**
* 查询可授权的 App 底部导航列表。
* <p>
* 返回完整 Tabbar 列表,公开 Tabbar 前端可固定勾选,登录可见 Tabbar 由角色授权控制。
*
* @return App Tabbar 列表
*/
@GetMapping("/tabbar")
@HasPermission("app_role_tabbar_view")
public R<List<AppTabbarEntity>> tabbars() {
return R.ok(appTabbarService.list(Wrappers.<AppTabbarEntity>lambdaQuery()
.orderByAsc(AppTabbarEntity::getSortOrder)));
}
/**
* 查询指定角色已授权的 Tabbar ID。
*
* @param roleId 系统角色 ID
* @return 已授权的 Tabbar ID 列表
*/
@GetMapping("/{roleId}")
@HasPermission("app_role_tabbar_view")
public R<List<Long>> roleTabbars(@PathVariable Long roleId) {
return R.ok(appRoleTabbarService.listTabbarIdsByRoleId(roleId));
}
/**
* 保存角色 Tabbar 授权。
* <p>
* 保存采用覆盖语义:先清空该角色原有授权,再写入本次提交的 Tabbar ID 列表。
*
* @param dto 角色 Tabbar 授权请求
* @return 保存结果
*/
@PutMapping
@HasPermission("app_role_tabbar_edit")
public R<Boolean> saveRoleTabbars(@Valid @RequestBody AppRoleTabbarDTO dto) {
return R.ok(appRoleTabbarService.saveRoleTabbars(dto));
}
}
@@ -1,139 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.entity.AppSocialDetails;
import com.pig4cloud.pigx.app.service.AppSocialDetailsService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.ValidGroup;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.HasPermission;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/appsocial")
@AllArgsConstructor
@Tag(description = "social", name = "三方账号管理模块")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppSocialDetailsController {
private final AppSocialDetailsService appSocialDetailsService;
/**
* 社交登录账户简单分页查询
* @param page 分页对象
* @param appSocialDetails 社交登录
* @return
*/
@GetMapping("/page")
public R getSocialDetailsPage(Page page, AppSocialDetails appSocialDetails) {
return R.ok(appSocialDetailsService.page(page, Wrappers.query(appSocialDetails)));
}
/**
* 信息
* @param id id
* @return R
*/
@GetMapping("/{id}")
public R getinfo(@PathVariable("id") Long id) {
return R.ok(appSocialDetailsService.getById(id));
}
/**
* 保存
* @param appSocialDetails
* @return R
*/
@SysLog("保存三方信息")
@PostMapping
@HasPermission("app_social_details_add")
public R save(@Valid @RequestBody AppSocialDetails appSocialDetails) {
return R.ok(appSocialDetailsService.save(appSocialDetails));
}
/**
* 修改
* @param appSocialDetails
* @return R
*/
@SysLog("修改三方信息")
@PutMapping
@HasPermission("app_social_details_edit")
public R updateById(@Validated({ ValidGroup.Update.class }) @RequestBody AppSocialDetails appSocialDetails) {
appSocialDetailsService.updateById(appSocialDetails);
return R.ok(Boolean.TRUE);
}
/**
* 删除
* @param ids
* @return R
*/
@SysLog("删除三方信息")
@DeleteMapping
@HasPermission("app_social_details_del")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appSocialDetailsService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 通过社交账号、手机号查询用户、角色信息
* @param inStr appid@code
* @return
*/
@Inner
@GetMapping("/info/{inStr}")
public R getUserInfo(@PathVariable String inStr) {
return R.ok(appSocialDetailsService.getUserInfo(inStr));
}
/**
* 绑定社交账号
* @param state 类型
* @param code code
* @return
*/
@PostMapping("/bind")
public R bindSocial(String state, String code) {
return R.ok(appSocialDetailsService.bindSocial(state, code));
}
/**
* 导出
*/
@GetMapping("/export")
@ResponseExcel
public List<AppSocialDetails> export(AppSocialDetails appSocialDetails) {
return appSocialDetailsService.list(Wrappers.query(appSocialDetails));
}
}
@@ -2,7 +2,9 @@ package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pig4cloud.pigx.app.api.entity.AppRoleTabbar;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import com.pig4cloud.pigx.app.service.AppRoleTabbarService;
import com.pig4cloud.pigx.app.service.AppTabbarService;
import com.pig4cloud.pigx.common.core.util.R;
import io.swagger.v3.oas.annotations.Operation;
@@ -15,7 +17,10 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 底部导航
* App 底部导航后台管理接口。
* <p>
* Tabbar 是移动端底部入口的数据源,图标字段保存 Wot UI 图标名;
* 是否登录可见由 {@code loginFlag} 控制,登录后再叠加角色授权。
*
* @author pig
* @date 2023-06-07 16:32:35
@@ -29,20 +34,40 @@ public class AppTabbarController {
private final AppTabbarService tabbarService;
private final AppRoleTabbarService roleTabbarService;
/**
* 查询导航列表
* 查询全部底部导航。
* <p>
* 后台维护页面使用完整列表;移动端运行时请走 {@code /app/index/config},
* 由运行时接口按公开/角色授权规则过滤。
*
* @return R
* @return 完整 Tabbar 列表
*/
@Operation(summary = "查询导航列表", description = "查询导航列表")
@GetMapping("/list")
public R list() {
return R.ok(tabbarService.list(Wrappers.<AppTabbarEntity>lambdaQuery().orderByAsc(AppTabbarEntity::getSortOrder)));
return R.ok(tabbarService.list(
Wrappers.<AppTabbarEntity>lambdaQuery().orderByAsc(AppTabbarEntity::getSortOrder).orderByAsc(AppTabbarEntity::getId)));
}
/**
* 批量保存底部导航。
* <p>
* 前端提交的是当前完整 Tabbar 列表。这里会删除数据库中已不存在的 Tabbar,
* 并同步清理角色授权关系,避免 {@code app_role_tabbar} 残留无效 tabbar_id。
*
* @param tabbarEntityList 当前完整 Tabbar 配置
* @return 保存结果
*/
@Operation(summary = "更新导航", description = "更新导航")
@PutMapping
public R update(@RequestBody List<AppTabbarEntity> tabbarEntityList) {
tabbarEntityList.forEach(tabbar -> {
if (tabbar.getLoginFlag() == null) {
tabbar.setLoginFlag("1");
}
});
// 删除不在新增范围的导航菜单
List<Long> idList = tabbarService.list().stream().map(AppTabbarEntity::getId).toList();
List<Long> newIdList = tabbarEntityList.stream().map(AppTabbarEntity::getId).toList();
@@ -53,9 +78,10 @@ public class AppTabbarController {
// 如果有需要删除的菜单,则批量删除
if (CollUtil.isNotEmpty(idsToRemove)) {
tabbarService.removeBatchByIds(idsToRemove);
roleTabbarService.remove(Wrappers.<AppRoleTabbar>lambdaQuery().in(AppRoleTabbar::getTabbarId, idsToRemove));
}
return R.ok(tabbarService.saveOrUpdateBatch(tabbarEntityList));
}
}
}
@@ -1,207 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.api.vo.AppUserExcelVO;
import com.pig4cloud.pigx.app.service.AppUserService;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum;
import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.RequestExcel;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.HasPermission;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* app用户表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appuser")
@Tag(description = "appuser", name = "app用户表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppUserController {
private final AppUserService appUserService;
@Inner
@GetMapping("/info/{username}")
public R info(@PathVariable String username) {
AppUser user = appUserService.getOne(Wrappers.<AppUser>query()
.lambda()
.eq(AppUser::getUsername, username)
.or()
.eq(AppUser::getPhone, username));
if (user == null) {
return R.failed(MsgUtils.getMessage(ErrorCodes.APP_USER_USERINFO_EMPTY, username));
}
return R.ok(appUserService.findUserInfo(user));
}
/**
* 获取当前用户全部信息
* @return 用户信息
*/
@GetMapping(value = { "/info" })
public R info() {
String username = SecurityUtils.getUser().getUsername();
AppUser user = appUserService.getOne(Wrappers.<AppUser>query().lambda().eq(AppUser::getUsername, username));
if (user == null) {
return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_QUERY_ERROR));
}
return R.ok(appUserService.findUserInfo(user));
}
/**
* 分页查询
* @param page 分页对象
* @param appUserDTO app用户表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
public R getAppUserPage(Page page, AppUserDTO appUserDTO) {
return R.ok(appUserService.getUsersWithRolePage(page, appUserDTO));
}
/**
* 通过id查询app用户表
* @param userId id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/details/{userId}")
public R getById(@PathVariable("userId") Long userId) {
return R.ok(appUserService.selectUserVoById(userId));
}
/**
* @return R
*/
@Operation(summary = "通过userName查询", description = "通过userName查询")
@GetMapping("/details")
public R getByUserName(AppUser user) {
AppUser one = appUserService.getOne(Wrappers.query(user), false);
return R.ok(one == null ? null : CommonConstants.SUCCESS);
}
/**
* 新增app用户表
* @param appUser app用户表
* @return R
*/
@Operation(summary = "新增app用户表", description = "新增app用户表")
@SysLog("新增app用户表")
@PostMapping
@HasPermission("app_appuser_add")
public R save(@RequestBody AppUserDTO appUser) {
appUserService.saveUser(appUser);
return R.ok();
}
/**
* 修改app用户表
* @param appUser app用户表
* @return R
*/
@Operation(summary = "修改app用户表", description = "修改app用户表")
@SysLog("修改app用户表")
@PutMapping
@HasPermission("app_appuser_edit")
public R updateById(@RequestBody AppUserDTO appUser) {
return R.ok(appUserService.updateUser(appUser));
}
/**
* 通过id删除app用户表
* @param ids userIds
* @return R
*/
@Operation(summary = "通过ids删除app用户表", description = "通过ids删除app用户表")
@SysLog("通过id删除app用户表")
@DeleteMapping
@HasPermission("app_appuser_del")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appUserService.deleteAppUserByIds(ids));
}
/**
* 导出excel 表格
* @param appUser 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@HasPermission("app_appuser_export")
public List<AppUserExcelVO> export(AppUserDTO appUser) {
return appUserService.listUser(appUser);
}
@SysLog("修改个人信息")
@PutMapping("/edit")
public R updateUserInfo(@Valid @RequestBody AppUserDTO userDto) {
if (UserTypeEnum.TOC.getStatus().equals(SecurityUtils.getUser().getUserType())) {
userDto.setUserId(SecurityUtils.getUser().getId());
// TOC 以手机号为key
userDto.setUsername(SecurityUtils.getUser().getUsername());
}
return appUserService.updateUserInfo(userDto);
}
/**
* 导入用户
* @param excelVOList 用户列表
* @param bindingResult 错误信息列表
* @return R
*/
@PostMapping("/import")
@HasPermission("app_appuser_export")
public R importUser(@RequestExcel List<AppUserExcelVO> excelVOList, BindingResult bindingResult) {
return appUserService.importUser(excelVOList, bindingResult);
}
@Operation(summary = "注册app用户表", description = "注册app用户表")
@SysLog("注册app用户表")
@Inner(value = false)
@PostMapping("/register")
public R register(@RequestBody AppUserDTO appUser) {
return appUserService.registerAppUser(appUser);
}
}
@@ -1,128 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.entity.AppUserRole;
import com.pig4cloud.pigx.app.service.AppUserRoleService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.HasPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 用户角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appuserrole")
@Tag(description = "appuserrole", name = "用户角色表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppUserRoleController {
private final AppUserRoleService appUserRoleService;
/**
* 分页查询
* @param page 分页对象
* @param appUserRole 用户角色表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@HasPermission("app_appuserrole_view")
public R getAppUserRolePage(Page page, AppUserRole appUserRole) {
return R.ok(appUserRoleService.page(page, Wrappers.query(appUserRole)));
}
/**
* 通过id查询用户角色表
* @param userId id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{userId}")
@HasPermission("app_appuserrole_view")
public R getById(@PathVariable("userId") Long userId) {
return R.ok(appUserRoleService.getById(userId));
}
/**
* 新增用户角色表
* @param appUserRole 用户角色表
* @return R
*/
@Operation(summary = "新增用户角色表", description = "新增用户角色表")
@SysLog("新增用户角色表")
@PostMapping
@HasPermission("app_appuserrole_add")
public R save(@RequestBody AppUserRole appUserRole) {
return R.ok(appUserRoleService.save(appUserRole));
}
/**
* 修改用户角色表
* @param appUserRole 用户角色表
* @return R
*/
@Operation(summary = "修改用户角色表", description = "修改用户角色表")
@SysLog("修改用户角色表")
@PutMapping
@HasPermission("app_appuserrole_edit")
public R updateById(@RequestBody AppUserRole appUserRole) {
return R.ok(appUserRoleService.updateById(appUserRole));
}
/**
* 通过id删除用户角色表
* @param userId id
* @return R
*/
@Operation(summary = "通过id删除用户角色表", description = "通过id删除用户角色表")
@SysLog("通过id删除用户角色表")
@DeleteMapping("/{userId}")
@HasPermission("app_appuserrole_del")
public R removeById(@PathVariable Long userId) {
return R.ok(appUserRoleService.removeById(userId));
}
/**
* 导出excel 表格
* @param appUserRole 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@HasPermission("app_appuserrole_export")
public List<AppUserRole> export(AppUserRole appUserRole) {
return appUserRoleService.list(Wrappers.query(appUserRole));
}
}
@@ -1,69 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.handler;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppUser;
/**
* @author lengleng
* @date 2018/11/18
* <p>
* 登录处理器
*/
public interface LoginHandler {
/***
* 数据合法性校验
* @param loginStr 通过用户传入获取唯一标识
* @return
*/
Boolean check(String loginStr);
/**
* 通过用户传入获取唯一标识
* @param loginStr
* @return
*/
String identify(String loginStr);
/**
* 通过openId 获取用户信息
* @param identify
* @return
*/
AppUserInfo info(String identify);
/**
* 处理方法
* @param loginStr 登录参数
* @return
*/
AppUserInfo handle(String loginStr);
/**
* 绑定逻辑
* @param user 用户实体
* @param identify 渠道返回唯一标识
* @return
*/
default Boolean bind(AppUser user, String identify) {
return false;
}
}
@@ -1,122 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.handler;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppSocialDetails;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.mapper.AppSocialDetailsMapper;
import com.pig4cloud.pigx.app.service.AppUserService;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.constant.enums.LoginTypeEnum;
import com.pig4cloud.pigx.common.core.exception.CheckedException;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Objects;
/**
* @author lengleng
* @date 2019年11月02日
* <p>
* 微信小程序
*/
@Slf4j
@Component("APP-MINI")
@AllArgsConstructor
public class MiniAppLoginHandler extends AbstractLoginHandler {
private final AppUserService appUserService;
private final AppSocialDetailsMapper appSocialDetailsMapper;
/**
* 小程序登录传入code
* <p>
* 通过code 调用qq 获取唯一标识
*
* @param code
* @return
*/
@Override
public String identify(String code) {
AppSocialDetails condition = new AppSocialDetails();
condition.setType(LoginTypeEnum.MINI_APP.getType());
AppSocialDetails socialDetails = appSocialDetailsMapper.selectOne(new QueryWrapper<>(condition));
String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(),
socialDetails.getAppSecret(), code);
String result = HttpUtil.get(url);
log.debug("微信小程序响应报文:{}", result);
if (JSONUtil.parseObj(result).containsKey("openid")) {
return JSONUtil.parseObj(result).get("openid").toString();
} else {
log.error("微信小程序登录失败:{}", result);
throw new CheckedException("微信小程序登录失败");
}
}
/**
* openId 获取用户信息
*
* @param openId
* @return
*/
@Override
public AppUserInfo info(String openId) {
AppUser user = appUserService.getOne(Wrappers.<AppUser>query().lambda().eq(AppUser::getWxOpenid, openId));
// 未注册用户自动注册
if (Objects.isNull(user)) {
log.info("微信小程序未绑定:{},创建新的用户", openId);
AppUser appUser = new AppUser();
appUser.setWxOpenid(openId);
appUser.setUsername(openId);
appUser.setCreateBy(openId);
appUser.setUpdateBy(openId);
appUserService.saveOrUpdate(appUser);
AppUserInfo appUserDTO = new AppUserInfo();
appUserDTO.setAppUser(appUser);
return appUserDTO;
}
return appUserService.findUserInfo(user);
}
/**
* 绑定逻辑
*
* @param user 用户实体
* @param identify 渠道返回唯一标识
* @return
*/
@Override
public Boolean bind(AppUser user, String identify) {
user.setWxOpenid(identify);
appUserService.updateById(user);
return true;
}
}
@@ -1,93 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.handler;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.mapper.AppUserMapper;
import com.pig4cloud.pigx.app.service.AppUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Objects;
/**
* @author lengleng
* @date 2018/11/18
*/
@Slf4j
@Component("APP-SMS")
@AllArgsConstructor
public class SmsLoginHandler extends AbstractLoginHandler {
private final AppUserService appUserService;
/**
* 验证码登录传入为手机号 不用不处理
* @param mobile
* @return
*/
@Override
public String identify(String mobile) {
return mobile;
}
/**
* 通过mobile 获取用户信息
* @param identify
* @return
*/
@Override
public AppUserInfo info(String identify) {
AppUser user = appUserService.getOne(Wrappers.<AppUser>query().lambda().eq(AppUser::getPhone, identify));
// 未注册用户自动注册
if (Objects.isNull(user)) {
log.info("手机号未注册:{}", identify);
AppUser appUser = new AppUser();
appUser.setUsername(identify);
appUser.setPhone(identify);
appUser.setCreateBy(identify);
appUser.setUpdateBy(identify);
appUserService.save(appUser);
AppUserInfo appUserDTO = new AppUserInfo();
appUserDTO.setAppUser(appUser);
return appUserDTO;
}
// 返回用户信息
return appUserService.findUserInfo(user);
}
/**
* 绑定逻辑
* @param user 用户实体
* @param identify 渠道返回唯一标识
* @return
*/
@Override
public Boolean bind(AppUser user, String identify) {
user.setPhone(identify);
appUserService.updateById(user);
return true;
}
}
@@ -4,6 +4,9 @@ import com.pig4cloud.pigx.app.api.entity.AppArticleCategoryEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 文章分类 Mapper。
*/
@Mapper
public interface AppArticleCategoryMapper extends PigxBaseMapper<AppArticleCategoryEntity> {
@@ -4,6 +4,9 @@ import com.pig4cloud.pigx.app.api.entity.AppArticleCollectEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 文章收藏 Mapper。
*/
@Mapper
public interface AppArticleCollectMapper extends PigxBaseMapper<AppArticleCollectEntity> {
@@ -4,6 +4,9 @@ import com.pig4cloud.pigx.app.api.entity.AppArticleEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 文章资讯 Mapper。
*/
@Mapper
public interface AppArticleMapper extends PigxBaseMapper<AppArticleEntity> {
@@ -0,0 +1,16 @@
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppContactsEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 通讯录 Mapper。
* <p>
* 继承 {@link PigxBaseMapper} 后可配合数据权限插件执行范围查询。
*/
@Mapper
public interface AppContactsMapper extends PigxBaseMapper<AppContactsEntity> {
}
@@ -4,6 +4,9 @@ import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* App 装修页面 Mapper。
*/
@Mapper
public interface AppPageMapper extends PigxBaseMapper<AppPageEntity> {
@@ -0,0 +1,16 @@
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppRoleTabbar;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* App 角色底部导航 Mapper。
*
* @author lengleng
* @date 2026-05-09
*/
@Mapper
public interface AppRoleTabbarMapper extends PigxBaseMapper<AppRoleTabbar> {
}
@@ -4,6 +4,9 @@ import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* App 底部导航 Mapper。
*/
@Mapper
public interface AppTabbarMapper extends PigxBaseMapper<AppTabbarEntity> {
@@ -1,42 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.api.vo.AppUserVO;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* app用户表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Mapper
public interface AppUserMapper extends PigxBaseMapper<AppUser> {
IPage<AppUserVO> getUserVosPage(Page page, @Param("query") AppUserDTO appUserDTO);
AppUserVO getUserVoById(Long userId);
}
@@ -1,33 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppUserRole;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 用户角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Mapper
public interface AppUserRoleMapper extends PigxBaseMapper<AppUserRole> {
}
@@ -1,8 +1,23 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.spring.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppArticleCategoryEntity;
import java.util.List;
/**
* 文章分类基础服务。
*/
public interface AppArticleCategoryService extends IService<AppArticleCategoryEntity> {
/**
* 按传入 ID 顺序调整文章分类,保留未选中记录在排序序列中的位置。
* <p>
* 以当前租户内未删除记录的排序值、主键升序为基准,仅重排选中记录占据的位置, 再将全部记录的排序值从 1 起连续重编号。
* @param ids 按目标顺序排列的文章分类 ID;不可为 null 或空,不可包含 null、重复或不可用的 ID
* @throws IllegalArgumentException ID 列表为空、包含 null 或重复值,或指定记录已删除、不属于当前租户 或不存在
* @throws IllegalStateException 批量更新返回失败
*/
void sort(List<Long> ids);
}
@@ -3,8 +3,19 @@ package com.pig4cloud.pigx.app.service;
import com.github.yulichang.base.MPJBaseService;
import com.pig4cloud.pigx.app.api.entity.AppArticleCollectEntity;
/**
* 文章收藏服务。
* <p>
* 收藏记录以当前登录用户为维度保存,同一用户对同一文章只允许收藏一次。
*/
public interface AppArticleCollectService extends MPJBaseService<AppArticleCollectEntity> {
/**
* 保存当前用户的文章收藏。
*
* @param appArticleCollect 收藏请求,需包含文章 ID
* @return true=保存成功,false=已收藏或未保存
*/
Boolean saveArticleCollect(AppArticleCollectEntity appArticleCollect);
}
@@ -1,11 +1,26 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.spring.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppArticleEntity;
import java.util.List;
/**
* 文章查询与排序服务,供管理端和 App 文章接口调用。
*/
public interface AppArticleService extends IService<AppArticleEntity> {
/**
* 按传入 ID 顺序调整文章,保留未选中记录在排序序列中的位置。
* <p>
* 以当前租户内未删除记录的排序值、主键升序为基准,仅重排选中记录占据的位置, 再将全部记录的排序值从 1 起连续重编号。
* @param ids 按目标顺序排列的文章 ID;不可为 null 或空,不可包含 null、重复或不可用的 ID
* @throws IllegalArgumentException ID 列表为空、包含 null 或重复值,或指定记录已删除、不属于当前租户 或不存在
* @throws IllegalStateException 批量更新返回失败
*/
void sort(List<Long> ids);
/**
* 获取文章并使阅读数+1
* @param id id
@@ -0,0 +1,23 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.spring.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppContactsEntity;
/**
* 应用联系人服务接口
*
* @author lengleng
* @date 2025/05/29
*/
public interface AppContactsService extends IService<AppContactsEntity> {
/**
* 根据应用联系人实体获取分页范围
*
* @param page 分页对象
* @param contactsEntity 应用联系人实体
* @return 分页范围对象
*/
Page pageScope(Page page, AppContactsEntity contactsEntity);
}
@@ -1,11 +1,15 @@
package com.pig4cloud.pigx.app.service;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.app.api.vo.AppDecorateVO;
import java.util.Map;
/**
* app 页面控制
* App 运行时页面服务。
* <p>
* 负责给移动端聚合首页、装修页、工作台和 Tabbar 配置;
* 后台装修管理接口不直接走这里。
*
* @author lengleng
* @date 2023/6/8
@@ -13,21 +17,33 @@ import java.util.Map;
public interface AppIndexService {
/**
* 首页
* 获取首页基础数据。
*
* @return 首页页面记录和资讯列表
*/
Map<String, Object> index();
/**
* 配置
* @return Map<String, Object>
* 获取运行时配置。
*
* @return 当前访问身份可见的 Tabbar 等配置
*/
Map<String, Object> config();
/**
* 装修
* @param id 装修ID
* @return Map<String, Object>
* 获取指定页面类型的装修页聚合数据。
*
* @param id 页面类型
* @return 装修页聚合数据
*/
AppPageEntity decorate(Integer id);
AppDecorateVO decorate(Integer id);
/**
* 返回工作台页面实体对象。
* <p>
* 工作台按钮权限由 B 端 permission 控制,这里只返回页面装修数据。
*
* @return 工作台页面实体对象
*/
AppPageEntity workbench();
}
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
* Copyright (c) 2018-2026, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -1,8 +1,14 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.spring.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
/**
* App 装修页面基础服务。
* <p>
* 页面组件 JSON 保存在 {@link AppPageEntity#getPageData()},
* 底部 Tabbar 不保存在页面 JSON 中。
*/
public interface AppPageService extends IService<AppPageEntity> {
}
@@ -0,0 +1,40 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.spring.service.IService;
import com.pig4cloud.pigx.app.api.dto.AppRoleTabbarDTO;
import com.pig4cloud.pigx.app.api.entity.AppRoleTabbar;
import java.util.List;
/**
* App 角色底部导航服务,管理系统角色与 App 底部导航的授权关系。
*
* @author lengleng
*/
public interface AppRoleTabbarService extends IService<AppRoleTabbar> {
/**
* 查询指定角色已授权的底部导航 ID 列表。
*
* @param roleId 系统角色 ID
* @return 底部导航 ID 列表
*/
List<Long> listTabbarIdsByRoleId(Long roleId);
/**
* 查询指定角色列表已授权的底部导航 ID 列表。
*
* @param roleIds 系统角色 ID 列表
* @return 底部导航 ID 列表
*/
List<Long> listTabbarIdsByRoleIds(List<Long> roleIds);
/**
* 保存角色底部导航授权。
*
* @param dto 角色底部导航配置
* @return 操作结果
*/
Boolean saveRoleTabbars(AppRoleTabbarDTO dto);
}
@@ -1,47 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppSocialDetails;
/**
* 系统社交登录账号表
*
* @author lengleng
* @date 2018-08-16 21:30:41
*/
public interface AppSocialDetailsService extends IService<AppSocialDetails> {
/**
* 绑定社交账号
* @param state 类型
* @param code code
* @return
*/
Boolean bindSocial(String state, String code);
/**
* 根据入参查询用户信息
* @param inStr
* @return
*/
AppUserInfo getUserInfo(String inStr);
}
@@ -1,8 +1,11 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.spring.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
/**
* App 底部导航基础服务。
*/
public interface AppTabbarService extends IService<AppTabbarEntity> {
}
@@ -1,31 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppUserRole;
/**
* 用户角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
public interface AppUserRoleService extends IService<AppUserRole> {
}
@@ -1,61 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.api.vo.AppUserExcelVO;
import com.pig4cloud.pigx.app.api.vo.AppUserVO;
import com.pig4cloud.pigx.common.core.util.R;
import org.springframework.validation.BindingResult;
import java.util.List;
/**
* app用户表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
public interface AppUserService extends IService<AppUser> {
Boolean updateUser(AppUserDTO appUser);
Boolean saveUser(AppUserDTO appUser);
List<AppUserExcelVO> listUser(AppUserDTO appUser);
IPage getUsersWithRolePage(Page page, AppUserDTO appUserDTO);
AppUserInfo findUserInfo(AppUser user);
R updateUserInfo(AppUserDTO userDto);
AppUserVO selectUserVoById(Long userId);
Boolean deleteAppUserByIds(Long[] ids);
R importUser(List<AppUserExcelVO> excelVOList, BindingResult bindingResult);
R registerAppUser(AppUserDTO appUser);
}
@@ -1,10 +1,18 @@
package com.pig4cloud.pigx.app.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.AppArticleCategoryEntity;
import com.pig4cloud.pigx.app.mapper.AppArticleCategoryMapper;
import com.pig4cloud.pigx.app.service.AppArticleCategoryService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 文章分类表
@@ -16,4 +24,37 @@ import org.springframework.stereotype.Service;
public class AppArticleCategoryServiceImpl extends ServiceImpl<AppArticleCategoryMapper, AppArticleCategoryEntity>
implements AppArticleCategoryService {
/**
* 按传入 ID 顺序调整文章分类,保留未选中记录在排序序列中的位置。
* <p>
* 以当前租户内未删除记录的排序值、主键升序为基准,仅重排选中记录占据的位置, 再将全部记录的排序值从 1 起连续重编号。
* @param ids 按目标顺序排列的文章分类 ID;不可为 null 或空,不可包含 null、重复或不可用的 ID
* @throws IllegalArgumentException ID 列表为空、包含 null 或重复值,或指定记录已删除、不属于当前租户 或不存在
* @throws IllegalStateException 批量更新返回失败
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void sort(List<Long> ids) {
Assert.notEmpty(ids, "排序记录不能为空");
Set<Long> selected = new HashSet<>(ids);
Assert.isTrue(!selected.contains(null) && selected.size() == ids.size(), "排序记录无效");
// 锁定统一顺序,避免重复排序值和分页边界导致拖动后顺序丢失。
List<AppArticleCategoryEntity> records = list(Wrappers.<AppArticleCategoryEntity>lambdaQuery()
.orderByAsc(AppArticleCategoryEntity::getSort, AppArticleCategoryEntity::getId)
.last("FOR UPDATE"));
long matched = records.stream().filter(row -> selected.contains(row.getId())).count();
Assert.isTrue(matched == ids.size(), "记录已变更,请刷新后重试");
List<AppArticleCategoryEntity> updates = new ArrayList<>();
int next = 0;
for (int i = 0; i < records.size(); i++) {
AppArticleCategoryEntity current = records.get(i);
Long id = selected.contains(current.getId()) ? ids.get(next++) : current.getId();
AppArticleCategoryEntity update = new AppArticleCategoryEntity();
update.setId(id);
update.setSort(i + 1);
updates.add(update);
}
Assert.state(updateBatchById(updates), "排序保存失败");
}
}
@@ -1,7 +1,7 @@
package com.pig4cloud.pigx.app.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.AppArticleCollectEntity;
import com.pig4cloud.pigx.app.mapper.AppArticleCollectMapper;
import com.pig4cloud.pigx.app.service.AppArticleCollectService;
@@ -9,7 +9,9 @@ import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import org.springframework.stereotype.Service;
/**
* 文章收藏表
* 文章收藏服务实现。
* <p>
* 收藏归属当前登录用户,保存前会校验同一用户是否已经收藏过同一文章。
*
* @author pig
* @date 2023-06-16 14:33:41
@@ -18,6 +20,12 @@ import org.springframework.stereotype.Service;
public class AppArticleCollectServiceImpl extends ServiceImpl<AppArticleCollectMapper, AppArticleCollectEntity>
implements AppArticleCollectService {
/**
* 保存当前登录用户的文章收藏。
*
* @param appArticleCollect 收藏请求,业务上只需要文章 ID,用户 ID 由登录态写入
* @return true=收藏成功,false=已经收藏
*/
@Override
public Boolean saveArticleCollect(AppArticleCollectEntity appArticleCollect) {
Long id = SecurityUtils.getUser().getId();
@@ -3,7 +3,7 @@ package com.pig4cloud.pigx.app.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.pig4cloud.pigx.app.api.entity.AppArticleCategoryEntity;
import com.pig4cloud.pigx.app.api.entity.AppArticleCollectEntity;
@@ -13,11 +13,20 @@ import com.pig4cloud.pigx.app.mapper.AppArticleMapper;
import com.pig4cloud.pigx.app.service.AppArticleService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Objects;
/**
* 文章资讯
* 文章资讯服务实现。
* <p>
* 负责文章列表关联分类名称、文章详情访问次数递增,以及当前用户收藏状态补充。
*
* @author pig
* @date 2023-06-07 16:32:35
@@ -30,14 +39,17 @@ public class AppArticleServiceImpl extends ServiceImpl<AppArticleMapper, AppArti
private final AppArticleCollectMapper collectMapper;
/**
* 获取文章并使阅读数+1
* @param id id
* @return
* 获取文章详情,并尝试将阅读数加 1。
* <p>
* 如果传入用户 ID,会额外查询该用户是否已收藏当前文章。 阅读数更新使用当前 visit 值作为条件,降低并发覆盖风险。
* @param id 文章 ID
* @param userId 当前用户 ID,可为空
* @return 文章详情
*/
@Override
public AppArticleEntity getArticleAndIncrById(Long id, Long userId) {
AppArticleEntity appArticleEntity = baseMapper.selectById(id);
// 查询是否收藏了
// 登录用户访问详情时,补充当前用户是否已收藏该文章。
if (Objects.nonNull(userId)) {
boolean exists = collectMapper.exists(Wrappers.<AppArticleCollectEntity>lambdaQuery()//
.eq(AppArticleCollectEntity::getArticleId, appArticleEntity.getId())//
@@ -45,10 +57,9 @@ public class AppArticleServiceImpl extends ServiceImpl<AppArticleMapper, AppArti
appArticleEntity.setCollect(exists);
}
// TODO 更新条件需要根据其他指数限制
Integer nowVisit = appArticleEntity.getVisit();
appArticleEntity.setVisit(nowVisit + 1);
// 乐观锁
// 使用旧 visit 值作为更新条件,避免并发访问时直接覆盖最新阅读数。
baseMapper.update(appArticleEntity,
Wrappers.<AppArticleEntity>lambdaQuery()
.eq(AppArticleEntity::getId, id)
@@ -57,10 +68,10 @@ public class AppArticleServiceImpl extends ServiceImpl<AppArticleMapper, AppArti
}
/**
* 分页查询文章列表 包含分类名称
* 分页查询文章列表,并关联分类名称。
* @param page 分页参数
* @param appArticle 文章查询条件
* @return
* @return 文章分页结果,包含分类名称 cname
*/
@Override
public Page pageAndCname(Page page, AppArticleEntity appArticle) {
@@ -70,8 +81,42 @@ public class AppArticleServiceImpl extends ServiceImpl<AppArticleMapper, AppArti
.leftJoin(AppArticleCategoryEntity.class, AppArticleCategoryEntity::getId, AppArticleEntity::getCid)
.like(StrUtil.isNotBlank(appArticle.getAuthor()), AppArticleEntity::getAuthor, appArticle.getAuthor())
.like(StrUtil.isNotBlank(appArticle.getTitle()), AppArticleEntity::getTitle, appArticle.getTitle())
.eq(Objects.nonNull(appArticle.getCid()), AppArticleEntity::getCid, appArticle.getCid());
.eq(Objects.nonNull(appArticle.getCid()), AppArticleEntity::getCid, appArticle.getCid())
.orderByAsc(AppArticleEntity::getSort, AppArticleEntity::getId);
return this.page(page, wrapper);
}
/**
* 按传入 ID 顺序调整文章,保留未选中记录在排序序列中的位置。
* <p>
* 以当前租户内未删除记录的排序值、主键升序为基准,仅重排选中记录占据的位置, 再将全部记录的排序值从 1 起连续重编号。
* @param ids 按目标顺序排列的文章 ID;不可为 null 或空,不可包含 null、重复或不可用的 ID
* @throws IllegalArgumentException ID 列表为空、包含 null 或重复值,或指定记录已删除、不属于当前租户 或不存在
* @throws IllegalStateException 批量更新返回失败
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void sort(List<Long> ids) {
Assert.notEmpty(ids, "排序记录不能为空");
Set<Long> selected = new HashSet<>(ids);
Assert.isTrue(!selected.contains(null) && selected.size() == ids.size(), "排序记录无效");
// 锁定统一顺序,避免重复排序值和分页边界导致拖动后顺序丢失。
List<AppArticleEntity> records = list(Wrappers.<AppArticleEntity>lambdaQuery()
.orderByAsc(AppArticleEntity::getSort, AppArticleEntity::getId)
.last("FOR UPDATE"));
long matched = records.stream().filter(row -> selected.contains(row.getId())).count();
Assert.isTrue(matched == ids.size(), "记录已变更,请刷新后重试");
List<AppArticleEntity> updates = new ArrayList<>();
int next = 0;
for (int i = 0; i < records.size(); i++) {
AppArticleEntity current = records.get(i);
Long id = selected.contains(current.getId()) ? ids.get(next++) : current.getId();
AppArticleEntity update = new AppArticleEntity();
update.setId(id);
update.setSort(i + 1);
updates.add(update);
}
Assert.state(updateBatchById(updates), "排序保存失败");
}
}
@@ -0,0 +1,42 @@
package com.pig4cloud.pigx.app.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.AppContactsEntity;
import com.pig4cloud.pigx.app.mapper.AppContactsMapper;
import com.pig4cloud.pigx.app.service.AppContactsService;
import com.pig4cloud.pigx.common.data.datascope.DataScope;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import org.springframework.stereotype.Service;
/**
* 通讯录服务实现类
* <p>
* 通讯录列表会结合系统数据权限,只返回当前登录用户可见范围内的数据。
*
* @author lengleng
* @date 2025/05/29
*/
@Service
public class AppContactsServiceImpl extends ServiceImpl<AppContactsMapper, AppContactsEntity> implements AppContactsService {
/**
* 根据查询条件分页查询通讯录,并应用数据权限范围。
*
* @param page 分页对象
* @param appContacts 应用联系人实体
* @return 分页范围对象
*/
@Override
public Page pageScope(Page page, AppContactsEntity appContacts) {
LambdaQueryWrapper<AppContactsEntity> wrapper = Wrappers.lambdaQuery();
wrapper.like(StrUtil.isNotBlank(appContacts.getContactName()), AppContactsEntity::getContactName, appContacts.getContactName());
wrapper.like(StrUtil.isNotBlank(appContacts.getContactPhone()), AppContactsEntity::getContactPhone, appContacts.getContactPhone());
DataScope dataScope = new DataScope();
dataScope.setUsername(SecurityUtils.getUser().getUsername());
return baseMapper.selectPageByScope(page, wrapper, dataScope);
}
}
@@ -5,10 +5,14 @@ import com.pig4cloud.pigx.app.api.entity.AppArticleEntity;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import com.pig4cloud.pigx.app.api.enums.PageTypeEnums;
import com.pig4cloud.pigx.app.api.vo.AppDecorateVO;
import com.pig4cloud.pigx.app.mapper.AppArticleMapper;
import com.pig4cloud.pigx.app.mapper.AppPageMapper;
import com.pig4cloud.pigx.app.mapper.AppTabbarMapper;
import com.pig4cloud.pigx.app.service.AppIndexService;
import com.pig4cloud.pigx.app.service.AppRoleTabbarService;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -17,24 +21,33 @@ import java.util.List;
import java.util.Map;
/**
* app 页面控制
* App首页服务实现类
* 实现AppIndexService接口,提供首页数据、导航栏配置以及页面配置等功能。
* <p>
* 该实现面向移动端运行时:Tabbar 会按公开/登录角色授权规则过滤,
* 页面装修数据则保持原始组件 JSON,不在这里做页面组件级权限裁剪。
*
* @author lengleng
* @date 2023/6/8
*/
@Service
@RequiredArgsConstructor
public class AppIndexServiceImpl implements AppIndexService {
private final AppArticleMapper appArticleMapper;
private final AppTabbarMapper appTabbarMapper;
private final AppPageMapper appPageMapper;
private final AppArticleMapper appArticleMapper;
private final AppRoleTabbarService appRoleTabbarService;
/**
* 商城首页 首页数据
* 获取商城首页基础数据。
* <p>
* 旧版首页接口返回首页装修页记录和资讯列表;新版装修页推荐使用 {@link #decorate(Integer)}。
*
* @return 首页页面数据和资讯列表
*/
@Override
public Map<String, Object> index() {
@@ -44,6 +57,7 @@ public class AppIndexServiceImpl implements AppIndexService {
.orderByDesc(AppPageEntity::getCreateTime),
false
);
List<AppArticleEntity> articleList = appArticleMapper
.selectList(Wrappers.<AppArticleEntity>lambdaQuery().orderByDesc(AppArticleEntity::getSort));
response.put("pages", appPageEntity);
@@ -52,29 +66,74 @@ public class AppIndexServiceImpl implements AppIndexService {
}
/**
* 导航栏配置
* 获取运行时配置。
* <p>
* 当前只包含 Tabbar,并按 {@link #listAuthorizedTabbar()} 的规则过滤。
*
* @return Map<String, Object>
* @return 运行时配置集合
*/
@Override
public Map<String, Object> config() {
Map<String, Object> response = new LinkedHashMap<>();
List<AppTabbarEntity> tabbarEntityList = appTabbarMapper
.selectList(Wrappers.<AppTabbarEntity>lambdaQuery().orderByAsc(AppTabbarEntity::getSortOrder));
response.put("tabbar", tabbarEntityList);
response.put("tabbar", listAuthorizedTabbar());
return response;
}
/**
* 根据类型查询页面配置
* 根据页面类型获取最新装修页,并附加当前访问身份可见的 Tabbar。
*
* @param pageType 页面类型
* @return {@link AppPageEntity }
* @return 装修页聚合数据
*/
@Override
public AppPageEntity decorate(Integer pageType) {
return appPageMapper.selectOne(Wrappers.<AppPageEntity>lambdaQuery().eq(AppPageEntity::getPageType, pageType)
.orderByDesc(AppPageEntity::getCreateTime), false);
public AppDecorateVO decorate(Integer pageType) {
AppPageEntity appPageEntity = appPageMapper.selectOne(
Wrappers.<AppPageEntity>lambdaQuery()
.eq(AppPageEntity::getPageType, pageType)
.orderByDesc(AppPageEntity::getCreateTime),
false
);
return AppDecorateVO.of(appPageEntity, listAuthorizedTabbar());
}
/**
* 获取工作台页面数据。
* <p>
* 工作台内部按钮权限复用系统菜单 permission,这里不再读取 App 专属菜单授权。
*
* @return 工作台页面实体
*/
@Override
public AppPageEntity workbench() {
return appPageMapper.selectOne(
Wrappers.<AppPageEntity>lambdaQuery()
.eq(AppPageEntity::getPageType, PageTypeEnums.WORKBENCH.getPageType())
.orderByDesc(AppPageEntity::getCreateTime),
false
);
}
/**
* 查询当前访问身份可见的 Tabbar。
* <p>
* 匿名访问只返回 {@code loginFlag=0} 的公开 Tabbar;登录访问从 token authorities
* 解析角色 ID,再读取 {@code app_role_tabbar} 中授权的 Tabbar,避免跨库 join upms 的
* {@code sys_user_role}。
*
* @return 当前可见的 Tabbar 列表
*/
private List<AppTabbarEntity> listAuthorizedTabbar() {
List<Long> roleIds = SecurityUtils.getUser() == null ? List.of() : SecurityUtils.getRoleIds();
List<Long> tabbarIds = appRoleTabbarService.listTabbarIdsByRoleIds(roleIds);
return appTabbarMapper.selectList(Wrappers.<AppTabbarEntity>lambdaQuery()
.and(wrapper -> {
wrapper.eq(AppTabbarEntity::getLoginFlag, CommonConstants.STATUS_NORMAL);
if (!tabbarIds.isEmpty()) {
wrapper.or().in(AppTabbarEntity::getId, tabbarIds);
}
})
.orderByAsc(AppTabbarEntity::getSortOrder)
.orderByAsc(AppTabbarEntity::getId));
}
}
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
* Copyright (c) 2018-2026, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -20,11 +20,11 @@ package com.pig4cloud.pigx.app.service.impl;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.pig4cloud.pigx.app.api.enums.AppErrorCodes;
import com.pig4cloud.pigx.app.service.AppMobileService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.constant.enums.LoginTypeEnum;
import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.data.cache.RedisUtils;
@@ -33,6 +33,11 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* App 手机验证码服务实现。
* <p>
* 验证码按 {@code 验证码缓存前缀 + 登录类型 + 手机号} 写入 Redis,
* 过期时间使用统一安全常量配置。
*
* @author lengleng
* @date 2018/11/14
* <p>
@@ -43,24 +48,28 @@ import org.springframework.stereotype.Service;
@AllArgsConstructor
public class AppMobileServiceImpl implements AppMobileService {
/**
* 发送手机验证码 TODO: 调用短信网关发送验证码,测试返回前端
* @param mobile mobile
* @return code
*/
@Override
public R<Boolean> sendSmsCode(String mobile) {
String codeObj = RedisUtils.get(CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.APPSMS.getType() + StringPool.AT + mobile);
/**
* 发送手机验证码。
* <p>
* 如果验证码仍在有效期内,则拒绝重复发送。当前实现只生成并缓存验证码,
* 后续接入短信网关时应在生成验证码后调用真实发送能力。
*
* @param mobile 手机号
* @return true=生成成功,false=验证码未过期
*/
@Override
public R<Boolean> sendSmsCode(String mobile) {
String codeObj = RedisUtils.get(CacheConstants.SMS_CODE_KEY + LoginTypeEnum.APPSMS.getType() + StringPool.AT + mobile);
if (StrUtil.isNotBlank(codeObj)) {
log.info("手机号验证码未过期:{},{}", mobile, codeObj);
return R.ok(Boolean.FALSE, MsgUtils.getMessage(ErrorCodes.SYS_APP_SMS_OFTEN));
}
if (StrUtil.isNotBlank(codeObj)) {
log.info("手机号验证码未过期:{},{}", mobile, codeObj);
return R.ok(Boolean.FALSE, MsgUtils.getMessage(AppErrorCodes.APP_SMS_OFTEN));
}
String code = RandomUtil.randomNumbers(Integer.parseInt(SecurityConstants.CODE_SIZE));
log.debug("手机号生成验证码成功:{},{}", mobile, code);
RedisUtils.set(CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.APPSMS.getType() + StringPool.AT + mobile, code, SecurityConstants.CODE_TIME);
return R.ok(Boolean.TRUE);
}
String code = RandomUtil.randomNumbers(Integer.parseInt(SecurityConstants.CODE_SIZE));
log.debug("手机号生成验证码成功:{},{}", mobile, code);
RedisUtils.set(CacheConstants.SMS_CODE_KEY + LoginTypeEnum.APPSMS.getType() + StringPool.AT + mobile, code, SecurityConstants.CODE_TIME);
return R.ok(Boolean.TRUE);
}
}
@@ -1,6 +1,6 @@
package com.pig4cloud.pigx.app.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.app.mapper.AppPageMapper;
import com.pig4cloud.pigx.app.service.AppPageService;
@@ -1,113 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.AppRole;
import com.pig4cloud.pigx.app.api.vo.AppRoleExcelVO;
import com.pig4cloud.pigx.app.mapper.AppRoleMapper;
import com.pig4cloud.pigx.app.service.AppRoleService;
import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.vo.ErrorMessage;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.validation.BindingResult;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* app角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Service
@AllArgsConstructor
public class AppRoleServiceImpl extends ServiceImpl<AppRoleMapper, AppRole> implements AppRoleService {
@Override
public List<AppRole> findRolesByUserId(Long userId) {
return baseMapper.listRolesByUserId(userId);
}
/**
* 删除用户的同时,把role_menu关系删除
* @param ids roleIds
*/
@Override
public Boolean deleteRoleByIds(Long[] ids) {
this.removeBatchByIds(CollUtil.toList(ids));
return Boolean.TRUE;
}
/**
* 导入角色
* @param excelVOList
* @param bindingResult
* @return
*/
@Override
public R importRole(List<AppRoleExcelVO> excelVOList, BindingResult bindingResult) {
// 通用校验获取失败的数据
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
// 个性化校验逻辑
List<AppRole> roleList = this.list();
// 执行数据插入操作 组装 RoleDto
for (AppRoleExcelVO excel : excelVOList) {
Set<String> errorMsg = new HashSet<>();
// 检验角色名称或者角色编码是否存在
boolean existRole = roleList.stream()
.anyMatch(appRole -> excel.getRoleName().equals(appRole.getRoleName())
|| excel.getRoleCode().equals(appRole.getRoleCode()));
if (existRole) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_NAMEORCODE_EXISTING, excel.getRoleName(),
excel.getRoleCode()));
}
// 数据合法情况
if (CollUtil.isEmpty(errorMsg)) {
insertExcelRole(excel);
}
else {
// 数据不合法情况
errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg));
}
}
if (CollUtil.isNotEmpty(errorMessageList)) {
return R.failed(errorMessageList);
}
return R.ok();
}
private void insertExcelRole(AppRoleExcelVO excel) {
AppRole appRole = new AppRole();
appRole.setRoleName(excel.getRoleName());
appRole.setRoleDesc(excel.getRoleDesc());
appRole.setRoleCode(excel.getRoleCode());
this.save(appRole);
}
}
@@ -0,0 +1,83 @@
package com.pig4cloud.pigx.app.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.dto.AppRoleTabbarDTO;
import com.pig4cloud.pigx.app.api.entity.AppRoleTabbar;
import com.pig4cloud.pigx.app.mapper.AppRoleTabbarMapper;
import com.pig4cloud.pigx.app.service.AppRoleTabbarService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
/**
* App 角色底部导航服务实现。
* <p>
* 只访问 app-server 本库的 {@code app_role_tabbar}。运行时角色来源由 Spring Security
* token authorities 提供,避免 app-server 跨库 join upms 的用户角色表。
*
* @author lengleng
* @date 2026-05-09
*/
@Service
@RequiredArgsConstructor
public class AppRoleTabbarServiceImpl extends ServiceImpl<AppRoleTabbarMapper, AppRoleTabbar>
implements AppRoleTabbarService {
@Override
public List<Long> listTabbarIdsByRoleId(Long roleId) {
return roleId == null ? List.of() : listTabbarIdsByRoleIds(List.of(roleId));
}
/**
* 根据多个角色查询可见 Tabbar。
* <p>
* 一个用户可能同时拥有多个角色,因此这里会先对角色 ID 去重,再对查询出的 Tabbar ID 去重。
*
* @param roleIds 系统角色 ID 列表
* @return 去重后的 Tabbar ID 列表
*/
@Override
public List<Long> listTabbarIdsByRoleIds(List<Long> roleIds) {
if (CollUtil.isEmpty(roleIds)) {
return List.of();
}
List<Long> distinctRoleIds = roleIds.stream().filter(Objects::nonNull).distinct().toList();
if (CollUtil.isEmpty(distinctRoleIds)) {
return List.of();
}
return this.list(Wrappers.<AppRoleTabbar>lambdaQuery().in(AppRoleTabbar::getRoleId, distinctRoleIds))
.stream()
.map(AppRoleTabbar::getTabbarId)
.filter(Objects::nonNull)
.distinct()
.toList();
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean saveRoleTabbars(AppRoleTabbarDTO dto) {
// 覆盖保存:后台每次提交的是该角色完整授权结果,先删旧关系再写新关系。
this.remove(Wrappers.<AppRoleTabbar>lambdaQuery().eq(AppRoleTabbar::getRoleId, dto.getRoleId()));
if (CollUtil.isEmpty(dto.getTabbarIds())) {
return Boolean.TRUE;
}
List<AppRoleTabbar> records = dto.getTabbarIds()
.stream()
.filter(Objects::nonNull)
.distinct()
.map(tabbarId -> {
AppRoleTabbar roleTabbar = new AppRoleTabbar();
roleTabbar.setRoleId(dto.getRoleId());
roleTabbar.setTabbarId(tabbarId);
return roleTabbar;
})
.toList();
return this.saveBatch(records);
}
}
@@ -1,86 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service.impl;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppSocialDetails;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.handler.LoginHandler;
import com.pig4cloud.pigx.app.mapper.AppSocialDetailsMapper;
import com.pig4cloud.pigx.app.mapper.AppUserMapper;
import com.pig4cloud.pigx.app.service.AppSocialDetailsService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @author lengleng
* @date 2018年08月16日
*/
@Slf4j
@AllArgsConstructor
@Service("appSocialDetailsService")
public class AppSocialDetailsServiceImpl extends ServiceImpl<AppSocialDetailsMapper, AppSocialDetails>
implements AppSocialDetailsService {
private final Map<String, LoginHandler> loginHandlerMap;
private final CacheManager cacheManager;
private final AppUserMapper appUserMapper;
/**
* 绑定社交账号
* @param type type
* @param code code
* @return
*/
@Override
public Boolean bindSocial(String type, String code) {
LoginHandler loginHandler = loginHandlerMap.get(type);
// 绑定逻辑
String identify = loginHandler.identify(code);
AppUser user = appUserMapper.selectById(SecurityUtils.getUser().getId());
loginHandler.bind(user, identify);
// 更新緩存
cacheManager.getCache(CacheConstants.USER_DETAILS_MINI).evict(user.getUsername());
return Boolean.TRUE;
}
/**
* 根据入参查询用户信息
* @param inStr TYPE@code
* @return
*/
@Override
public AppUserInfo getUserInfo(String inStr) {
String[] inStrs = inStr.split(StringPool.AT);
String type = inStrs[0];
String loginStr = inStr.substring(type.length() + 1);
return loginHandlerMap.get(type).handle(loginStr);
}
}
@@ -1,6 +1,6 @@
package com.pig4cloud.pigx.app.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import com.pig4cloud.pigx.app.mapper.AppTabbarMapper;
import com.pig4cloud.pigx.app.service.AppTabbarService;
@@ -1,34 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.AppUserRole;
import com.pig4cloud.pigx.app.mapper.AppUserRoleMapper;
import com.pig4cloud.pigx.app.service.AppUserRoleService;
import org.springframework.stereotype.Service;
/**
* 用户角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Service
public class AppUserRoleServiceImpl extends ServiceImpl<AppUserRoleMapper, AppUserRole> implements AppUserRoleService {
}
@@ -1,399 +0,0 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppRole;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.api.entity.AppUserRole;
import com.pig4cloud.pigx.app.api.vo.AppUserExcelVO;
import com.pig4cloud.pigx.app.api.vo.AppUserVO;
import com.pig4cloud.pigx.app.mapper.AppUserMapper;
import com.pig4cloud.pigx.app.service.AppRoleService;
import com.pig4cloud.pigx.app.service.AppUserRoleService;
import com.pig4cloud.pigx.app.service.AppUserService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.constant.enums.LoginTypeEnum;
import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum;
import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.data.cache.RedisUtils;
import com.pig4cloud.pigx.common.excel.vo.ErrorMessage;
import com.pig4cloud.pigx.common.security.service.PigxUser;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.validation.BindingResult;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* app用户表服务实现类
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Service
@AllArgsConstructor
@Slf4j
public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> implements AppUserService {
/**
* 密码编码器,用于密码加密
*/
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
/**
* 用户角色关联服务
*/
private final AppUserRoleService appUserRoleService;
/**
* 角色服务
*/
private final AppRoleService appRoleService;
/**
* 缓存管理器
*/
private final CacheManager cacheManager;
/**
* 更新用户信息
* @param userDTO 用户数据传输对象
* @return 更新结果
*/
@Override
@CacheEvict(value = CacheConstants.USER_DETAILS_MINI, key = "#userDTO.username")
public Boolean updateUser(AppUserDTO userDTO) {
// 创建用户实体并复制属性
AppUser appUser = new AppUser();
BeanUtils.copyProperties(userDTO, appUser);
// 如果密码不为空,进行加密处理
if (StrUtil.isNotBlank(userDTO.getPassword())) {
appUser.setPassword(ENCODER.encode(userDTO.getPassword()));
}
// 更新用户基本信息
this.updateById(appUser);
// 删除用户与角色的关联关系
appUserRoleService.remove(Wrappers.<AppUserRole>lambdaQuery().eq(AppUserRole::getUserId, appUser.getUserId()));
// 重新建立用户与角色的关联关系
userDTO.getRole().forEach(roleId -> {
AppUserRole appUserRole = new AppUserRole();
appUserRole.setRoleId(roleId);
appUserRole.setUserId(userDTO.getUserId());
appUserRole.insert();
});
// 清除以手机号为key的用户缓存
AppUser appUserInfo = baseMapper.selectById(userDTO.getUserId());
cacheManager.getCache(CacheConstants.USER_DETAILS_MINI).evict(appUserInfo.getPhone());
return Boolean.TRUE;
}
/**
* 新增用户
* @param userDTO 用户数据传输对象
* @return 保存结果
*/
@Override
public Boolean saveUser(AppUserDTO userDTO) {
// 创建用户实体并复制属性
AppUser appUser = new AppUser();
BeanUtils.copyProperties(userDTO, appUser);
// 设置删除标志为正常状态
appUser.setDelFlag(CommonConstants.STATUS_NORMAL);
// 对密码进行加密
appUser.setPassword(ENCODER.encode(userDTO.getPassword()));
// 插入用户记录
baseMapper.insert(appUser);
// 如果角色列表不为空,建立用户与角色的关联关系
if (CollUtil.isNotEmpty(userDTO.getRole())) {
List<AppUserRole> userRoleList = userDTO.getRole().stream().map(roleId -> {
AppUserRole userRole = new AppUserRole();
userRole.setUserId(appUser.getUserId());
userRole.setRoleId(roleId);
return userRole;
}).toList();
// 批量保存用户角色关联
appUserRoleService.saveBatch(userRoleList);
}
return Boolean.TRUE;
}
/**
* 查询全部用户(用于Excel导出)
* @param appUser 查询条件
* @return 用户Excel视图对象列表
*/
@Override
public List<AppUserExcelVO> listUser(AppUserDTO appUser) {
// 查询所有用户
List<AppUser> appUsers = baseMapper.selectList(null);
// 将用户实体转换为Excel视图对象
List<AppUserExcelVO> appUserExcelVOS = appUsers.stream().map(item -> {
AppUserExcelVO appUserExcelVO = new AppUserExcelVO();
BeanUtils.copyProperties(item, appUserExcelVO);
return appUserExcelVO;
}).toList();
return appUserExcelVOS;
}
/**
* 分页查询用户(包含角色信息)
* @param page 分页参数
* @param appUserDTO 查询条件
* @return 分页结果
*/
@Override
public IPage getUsersWithRolePage(Page page, AppUserDTO appUserDTO) {
return baseMapper.getUserVosPage(page, appUserDTO);
}
/**
* 查询用户详细信息(包含角色和权限)
* @param user 用户对象
* @return 用户信息对象
*/
@Override
public AppUserInfo findUserInfo(AppUser user) {
// 创建用户信息对象
AppUserInfo info = new AppUserInfo();
info.setAppUser(user);
// 设置角色列表(ID数组)
List<Long> roleIds = appRoleService.findRolesByUserId(user.getUserId())
.stream()
.map(AppRole::getRoleId)
.toList();
info.setRoles(ArrayUtil.toArray(roleIds, Long.class));
// 设置权限列表(暂为空)
Set<String> permissions = new HashSet<>();
info.setPermissions(ArrayUtil.toArray(permissions, String.class));
return info;
}
/**
* 更新用户个人信息
* @param userDTO 用户数据传输对象
* @return 操作结果
*/
@Override
@CacheEvict(value = CacheConstants.USER_DETAILS_MINI, key = "#userDTO.username")
public R updateUserInfo(AppUserDTO userDTO) {
// 获取当前登录用户
PigxUser user = SecurityUtils.getUser();
// C端客户修改手机号需要验证短信验证码
if (UserTypeEnum.TOC.getStatus().equals(user.getUserType()) && StrUtil.isNotBlank(userDTO.getPhone())) {
// 构建验证码缓存key
String key = CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.APPSMS.getType() + StringPool.AT
+ userDTO.getPhone();
// 获取缓存中的验证码
String codeObj = RedisUtils.get(key);
// 验证码不匹配,返回错误
if (!userDTO.getMobileCode().equals(codeObj)) {
return R.failed("验证码错误");
}
}
// 更新密码(如果提供了新密码)
if (StrUtil.isNotBlank(userDTO.getPassword())) {
userDTO.setPassword(ENCODER.encode(userDTO.getPassword()));
}
// 获取原用户信息并更新
AppUser appUser = baseMapper.selectById(userDTO.getUserId());
BeanUtils.copyProperties(userDTO, appUser);
// 清除以手机号为key的用户缓存
cacheManager.getCache(CacheConstants.USER_DETAILS_MINI).evict(user.getPhone());
return R.ok(this.updateById(appUser));
}
/**
* 根据用户ID查询用户视图对象
* @param userId 用户ID
* @return 用户视图对象
*/
@Override
public AppUserVO selectUserVoById(Long userId) {
return baseMapper.getUserVoById(userId);
}
/**
* 批量删除用户
* @param ids 用户ID数组
* @return 删除结果
*/
@Override
public Boolean deleteAppUserByIds(Long[] ids) {
// 获取缓存对象
Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS_MINI);
// 清除用户缓存
for (AppUser appUser : baseMapper.selectByIds(CollUtil.toList(ids))) {
cache.evict(appUser.getUsername());
}
// 删除用户角色关联关系
this.appUserRoleService
.remove(Wrappers.<AppUserRole>lambdaQuery().in(AppUserRole::getUserId, CollUtil.toList(ids)));
// 删除用户记录
this.removeBatchByIds(CollUtil.toList(ids));
return Boolean.TRUE;
}
/**
* 注册APP用户
* @param appUser 用户数据传输对象
* @return 操作结果
*/
@Override
public R registerAppUser(AppUserDTO appUser) {
// 检查手机号是否已被注册
List<AppUser> appUserList = baseMapper
.selectList(Wrappers.<AppUser>lambdaQuery().eq(AppUser::getPhone, appUser.getPhone()));
if (CollUtil.isNotEmpty(appUserList)) {
return R.failed("手机号已注册,请使用验证码直接登录");
}
// 验证短信验证码
String key = CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.APPSMS.getType() + StringPool.AT
+ appUser.getPhone();
String codeObj = RedisUtils.get(key);
if (!appUser.getMobileCode().equals(codeObj)) {
return R.failed("验证码错误");
}
// 创建用户并保存
AppUser app = new AppUser();
BeanUtils.copyProperties(appUser, app);
appUser.setUsername(app.getPhone()); // 默认使用手机号作为用户名
appUser.setDelFlag(CommonConstants.STATUS_NORMAL);
appUser.setPassword(ENCODER.encode(appUser.getPassword()));
baseMapper.insert(appUser);
return null;
}
/**
* 导入用户(从Excel导入)
* @param excelVOList Excel数据列表
* @param bindingResult 数据校验结果
* @return 导入结果
*/
@Override
public R importUser(List<AppUserExcelVO> excelVOList, BindingResult bindingResult) {
// 获取通用校验失败的数据
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
// 获取现有用户和角色列表,用于校验
List<AppUser> userList = this.list();
List<AppRole> roleList = appRoleService.list();
// 遍历Excel数据进行处理
for (AppUserExcelVO excel : excelVOList) {
Set<String> errorMsg = new HashSet<>();
// 校验用户名是否已存在
boolean exsitUserName = userList.stream()
.anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername()));
if (exsitUserName) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, excel.getUsername()));
}
// 校验角色名称是否合法
List<String> roleNameList = StrUtil.split(excel.getRoleNameList(), StrUtil.COMMA);
List<AppRole> roleCollList = roleList.stream()
.filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name)))
.toList();
if (roleCollList.size() != roleNameList.size()) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList()));
}
// 数据合法时执行插入
if (CollUtil.isEmpty(errorMsg)) {
insertExcelUser(excel, roleCollList);
}
else {
// 记录不合法数据的错误信息
errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg));
}
}
// 存在错误信息时返回失败
if (CollUtil.isNotEmpty(errorMessageList)) {
return R.failed(errorMessageList);
}
return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED));
}
/**
* 插入Excel导入的用户数据
* @param excel Excel用户数据
* @param roleCollList 角色列表
*/
private void insertExcelUser(AppUserExcelVO excel, List<AppRole> roleCollList) {
// 创建用户DTO并设置基本信息
AppUserDTO userDTO = new AppUserDTO();
userDTO.setUsername(excel.getUsername());
userDTO.setPhone(excel.getPhone());
userDTO.setNickname(excel.getNickname());
userDTO.setName(excel.getName());
userDTO.setEmail(excel.getEmail());
// 批量导入时初始密码设置为手机号
userDTO.setPassword(userDTO.getPhone());
// 获取角色ID列表
List<Long> roleIdList = roleCollList.stream().map(AppRole::getRoleId).toList();
userDTO.setRole(roleIdList);
// 保存用户
this.saveUser(userDTO);
}
}
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pig4cloud.pigx.app.mapper.AppContactsMapper">
<resultMap id="appContactsMap" type="com.pig4cloud.pigx.app.api.entity.AppContactsEntity">
<id property="id" column="id"/>
<result property="contactName" column="contact_name"/>
<result property="contactPhone" column="contact_phone"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
</mapper>
@@ -1,52 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the pig4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pig4cloud.pigx.app.mapper.AppRoleMapper">
<resultMap id="appRoleMap" type="com.pig4cloud.pigx.app.api.entity.AppRole">
<id property="roleId" column="role_id"/>
<result property="roleName" column="role_name"/>
<result property="roleCode" column="role_code"/>
<result property="roleDesc" column="role_desc"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
<select id="listRolesByUserId" resultType="com.pig4cloud.pigx.app.api.entity.AppRole">
SELECT app_role.role_id,
app_role.role_name,
app_role.role_code,
app_role.role_desc,
app_role.create_time,
app_role.update_time,
app_role.del_flag
FROM app_role,
app_user_role
WHERE app_role.role_id = app_user_role.role_id
AND app_role.del_flag = '0'
and app_user_role.user_id = #{userId}
</select>
</mapper>
@@ -9,6 +9,8 @@
<result property="selected" column="selected"/>
<result property="unselected" column="unselected"/>
<result property="link" column="link"/>
<result property="sortOrder" column="sort_order"/>
<result property="loginFlag" column="login_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
@@ -1,97 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the pig4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pig4cloud.pigx.app.mapper.AppUserMapper">
<resultMap id="appUserMap" type="com.pig4cloud.pigx.app.api.vo.AppUserVO">
<id property="userId" column="user_id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="phone" column="phone"/>
<result property="avatar" column="avatar"/>
<result property="nickname" column="nickname"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
<result property="createTime" column="create_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
<result property="lastModifiedTime" column="last_modified_time"/>
<collection property="roleList" ofType="com.pig4cloud.pigx.app.api.entity.AppRole"
select="com.pig4cloud.pigx.app.mapper.AppRoleMapper.listRolesByUserId" column="user_id">
</collection>
</resultMap>
<select id="getUserVosPage" resultMap="appUserMap">
select
u.user_id,
u.username,
u.password,
u.phone,
u.avatar,
u.create_time,
u.del_flag,
u.lock_flag,
u.tenant_id,
u.nickname,
u.name,
u.email
from app_user u
<where>
u.del_flag = '0'
<if test="query.username != null and query.username != ''">
<bind name="usernameLike" value="'%'+query.username+'%'"/>
AND u.username LIKE #{usernameLike}
</if>
</where>
</select>
<sql id="userRoleDeptSql">
u.user_id,
u.username,
u.password,
u.salt,
u.phone,
u.avatar,
u.wx_openid,
u.del_flag,
u.lock_flag,
u.tenant_id,
u.nickname,
u.name,
u.email,
u.create_by,
u.create_time ucreate_time,
u.update_time uupdate_time,
r.role_id
</sql>
<select id="getUserVoById" resultMap="appUserMap">
SELECT
<include refid="userRoleDeptSql"/>
FROM
app_user u
LEFT JOIN app_user_role urole ON urole.user_id = u.user_id
LEFT JOIN app_role r ON r.role_id = urole.role_id
WHERE
u.user_id = #{id}
</select>
</mapper>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the pig4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pig4cloud.pigx.app.mapper.AppUserRoleMapper">
<resultMap id="appUserRoleMap" type="com.pig4cloud.pigx.app.api.entity.AppUserRole">
<id property="userId" column="user_id"/>
<result property="roleId" column="role_id"/>
</resultMap>
</mapper>
+12 -12
View File
@@ -4,18 +4,18 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx</artifactId>
<version>5.9.0</version>
</parent>
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx</artifactId>
<version>6.2.0</version>
</parent>
<artifactId>pigx-app-server</artifactId>
<packaging>pom</packaging>
<artifactId>pigx-app-server</artifactId>
<packaging>pom</packaging>
<!--项目子模块-->
<modules>
<module>pigx-app-server-api</module>
<module>pigx-app-server-biz</module>
</modules>
<!--项目子模块-->
<modules>
<module>pigx-app-server-api</module>
<module>pigx-app-server-biz</module>
</modules>
</project>
+4 -14
View File
@@ -24,7 +24,7 @@
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx</artifactId>
<version>5.9.0</version>
<version>6.2.0</version>
</parent>
<artifactId>pigx-auth</artifactId>
@@ -88,27 +88,20 @@
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-encrypt-api</artifactId>
</dependency>
<!-- 调用验证码核心模块 -->
<!-- 验证码公共能力 -->
<dependency>
<groupId>io.springboot.plugin</groupId>
<artifactId>captcha-core</artifactId>
<version>${captcha.image.version}</version>
</dependency>
<!--滑块验证码-->
<!-- 滑块验证码 -->
<dependency>
<groupId>io.github.pig-mesh.plugin</groupId>
<artifactId>captcha-spring-boot-starter</artifactId>
<version>${captcha.version}</version>
</dependency>
<!--web 模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--undertow容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
<artifactId>spring-boot-starter-webmvc</artifactId>
</dependency>
</dependencies>
@@ -128,9 +121,6 @@
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<loaderImplementation>CLASSIC</loaderImplementation>
</configuration>
</execution>
</executions>
</plugin>
@@ -21,6 +21,7 @@ import com.pig4cloud.pigx.auth.support.core.CustomeOAuth2TokenCustomizer;
import com.pig4cloud.pigx.auth.support.core.FormIdentityLoginConfigurer;
import com.pig4cloud.pigx.auth.support.core.PigxDaoAuthenticationProvider;
import com.pig4cloud.pigx.auth.support.core.PigxOAuth2RefreshTokenAuthenticationConverter;
import com.pig4cloud.pigx.auth.support.filter.FormLoginValidateCodeFilter;
import com.pig4cloud.pigx.auth.support.filter.PasswordDecoderFilter;
import com.pig4cloud.pigx.auth.support.filter.ValidateCodeFilter;
import com.pig4cloud.pigx.auth.support.handler.PigxAuthenticationFailureEventHandler;
@@ -30,6 +31,7 @@ import com.pig4cloud.pigx.auth.support.password.OAuth2ResourceOwnerPasswordAuthe
import com.pig4cloud.pigx.auth.support.sms.OAuth2ResourceOwnerSmsAuthenticationConverter;
import com.pig4cloud.pigx.auth.support.sms.OAuth2ResourceOwnerSmsAuthenticationProvider;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.security.component.PigxBootCorsProperties;
import com.pig4cloud.pigx.common.security.handler.FormAuthenticationFailureHandler;
import com.pig4cloud.pigx.common.security.handler.SsoLogoutSuccessHandler;
import lombok.RequiredArgsConstructor;
@@ -40,14 +42,13 @@ import org.springframework.core.annotation.Order;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.oauth2.server.authorization.OAuth2AuthorizationServerConfigurer;
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer;
import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings;
import org.springframework.security.oauth2.server.authorization.token.DelegatingOAuth2TokenGenerator;
import org.springframework.security.oauth2.server.authorization.token.OAuth2RefreshTokenGenerator;
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenGenerator;
import org.springframework.security.oauth2.server.authorization.web.authentication.OAuth2AuthorizationCodeAuthenticationConverter;
import org.springframework.security.oauth2.server.authorization.web.authentication.OAuth2AuthorizationCodeRequestAuthenticationConverter;
import org.springframework.security.oauth2.server.authorization.web.authentication.OAuth2ClientCredentialsAuthenticationConverter;
import org.springframework.security.web.DefaultSecurityFilterChain;
import org.springframework.security.web.SecurityFilterChain;
@@ -56,6 +57,8 @@ import org.springframework.security.web.authentication.AuthenticationFailureHand
import org.springframework.security.web.authentication.DelegatingAuthenticationConverter;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import java.util.Arrays;
@@ -69,114 +72,133 @@ import java.util.Arrays;
@RequiredArgsConstructor
public class AuthorizationServerConfiguration {
private final OAuth2AuthorizationService authorizationService;
private final OAuth2AuthorizationService authorizationService;
private final PasswordDecoderFilter passwordDecoderFilter;
private final PasswordDecoderFilter passwordDecoderFilter;
private final ValidateCodeFilter validateCodeFilter;
private final ValidateCodeFilter validateCodeFilter;
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http,
PigxAuthenticationSuccessEventHandler successEventHandler,
PigxAuthenticationFailureEventHandler failureEventHandler) throws Exception {
// 配置授权服务器的安全策略,只有/oauth2/**的请求才会走如下的配置
http.securityMatcher("/oauth2/**");
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = new OAuth2AuthorizationServerConfigurer();
private final FormLoginValidateCodeFilter formLoginValidateCodeFilter;
// 增加验证码过滤器
http.addFilterBefore(validateCodeFilter, UsernamePasswordAuthenticationFilter.class);
// 增加密码解密过滤器
http.addFilterBefore(passwordDecoderFilter, UsernamePasswordAuthenticationFilter.class);
private final PigxBootCorsProperties corsProperties;
http.with(authorizationServerConfigurer.tokenEndpoint((tokenEndpoint) -> {// 个性化认证授权端点
tokenEndpoint.accessTokenRequestConverter(accessTokenRequestConverter()) // 注入自定义的授权认证Converter
.accessTokenResponseHandler(successEventHandler) // 登录成功处理器
.errorResponseHandler(failureEventHandler);// 登录失败处理器
}).clientAuthentication(oAuth2ClientAuthenticationConfigurer -> // 个性化客户端认证
oAuth2ClientAuthenticationConfigurer.errorResponseHandler(failureEventHandler))// 处理客户端认证异常
.authorizationEndpoint(authorizationEndpoint -> authorizationEndpoint// 授权码端点个性化confirm页面
.consentPage(SecurityConstants.CUSTOM_CONSENT_PAGE_URI)), Customizer.withDefaults())
.authorizeHttpRequests(authorizeRequests -> authorizeRequests.anyRequest().authenticated());
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http,
PigxAuthenticationSuccessEventHandler successEventHandler,
PigxAuthenticationFailureEventHandler failureEventHandler) throws Exception {
// 配置授权服务器的安全策略,只有/oauth2/**的请求才会走如下的配置
http.securityMatcher("/oauth2/**");
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = new OAuth2AuthorizationServerConfigurer();
// 设置 Token 存储的策略
http.with(authorizationServerConfigurer.authorizationService(authorizationService)// redis存储token的实现
.authorizationServerSettings(
AuthorizationServerSettings.builder().issuer(SecurityConstants.PIGX_LICENSE).build()),
Customizer.withDefaults());
// 增加验证码过滤器
http.addFilterBefore(validateCodeFilter, UsernamePasswordAuthenticationFilter.class);
// 增加授权码登录表单验证码过滤器
http.addFilterBefore(formLoginValidateCodeFilter, UsernamePasswordAuthenticationFilter.class);
// 增加密码解密过滤器
http.addFilterBefore(passwordDecoderFilter, UsernamePasswordAuthenticationFilter.class);
// 设置授权码模式登录页面
http.with(new FormIdentityLoginConfigurer(), Customizer.withDefaults());
DefaultSecurityFilterChain securityFilterChain = http.build();
http.with(authorizationServerConfigurer.tokenEndpoint((tokenEndpoint) -> {// 个性化认证授权端点
tokenEndpoint.accessTokenRequestConverter(accessTokenRequestConverter()) // 注入自定义的授权认证Converter
.accessTokenResponseHandler(successEventHandler) // 登录成功处理器
.errorResponseHandler(failureEventHandler);// 登录失败处理器
}).clientAuthentication(oAuth2ClientAuthenticationConfigurer -> // 个性化客户端认证
oAuth2ClientAuthenticationConfigurer.errorResponseHandler(failureEventHandler))// 处理客户端认证异常
.authorizationEndpoint(authorizationEndpoint -> authorizationEndpoint// 授权码端点个性化confirm页面
.consentPage(SecurityConstants.CUSTOM_CONSENT_PAGE_URI)), Customizer.withDefaults())
.authorizeHttpRequests(authorizeRequests -> authorizeRequests.anyRequest().authenticated());
// 注入自定义授权模式实现
addCustomOAuth2GrantAuthenticationProvider(http);
return securityFilterChain;
}
// 设置 Token 存储的策略
http.with(authorizationServerConfigurer.authorizationService(authorizationService)// redis存储token的实现
.authorizationServerSettings(
AuthorizationServerSettings.builder().issuer(SecurityConstants.PIGX_LICENSE).build()),
Customizer.withDefaults());
/**
* 令牌生成规则实现 </br>
* client:username:uuid
*
* @return OAuth2TokenGenerator
*/
@Bean
public OAuth2TokenGenerator oAuth2TokenGenerator() {
CustomeOAuth2AccessTokenGenerator accessTokenGenerator = new CustomeOAuth2AccessTokenGenerator();
// 注入Token 增加关联用户信息
accessTokenGenerator.setAccessTokenCustomizer(new CustomeOAuth2TokenCustomizer());
return new DelegatingOAuth2TokenGenerator(accessTokenGenerator, new OAuth2RefreshTokenGenerator());
}
// 设置授权码模式登录页面
http.with(new FormIdentityLoginConfigurer(), Customizer.withDefaults());
@Bean
public AuthenticationFailureHandler authenticationFailureHandler() {
return new FormAuthenticationFailureHandler();
}
// 单体版本:根据配置启用CORS跨域支持(仅在security.cors.enabled=true时生效)
if (Boolean.TRUE.equals(corsProperties.getEnabled())) {
http.cors(cors -> cors.configurationSource(request -> {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsProperties.getAllowedOriginPatterns().forEach(corsConfiguration::addAllowedOriginPattern);
corsProperties.getAllowedHeaders().forEach(corsConfiguration::addAllowedHeader);
corsProperties.getAllowedMethods().forEach(corsConfiguration::addAllowedMethod);
corsConfiguration.setAllowCredentials(corsProperties.getAllowCredentials());
source.registerCorsConfiguration(corsProperties.getPathPattern(), corsConfiguration);
return corsConfiguration;
}));
}
@Bean
public LogoutSuccessHandler logoutSuccessHandler() {
return new SsoLogoutSuccessHandler();
}
DefaultSecurityFilterChain securityFilterChain = http.build();
/**
* request -> xToken 注入请求转换器
*
* @return DelegatingAuthenticationConverter
*/
@Bean
public AuthenticationConverter accessTokenRequestConverter() {
return new DelegatingAuthenticationConverter(
Arrays.asList(new OAuth2ResourceOwnerPasswordAuthenticationConverter(),
new OAuth2ResourceOwnerSmsAuthenticationConverter(),
new PigxOAuth2RefreshTokenAuthenticationConverter(),
new OAuth2ClientCredentialsAuthenticationConverter(),
new OAuth2AuthorizationCodeAuthenticationConverter(),
new OAuth2AuthorizationCodeRequestAuthenticationConverter()));
}
// 注入自定义授权模式实现
addCustomOAuth2GrantAuthenticationProvider(http);
return securityFilterChain;
}
/**
* 注入授权模式实现提供方
* <p>
* 1. 密码模式 </br>
* 2. 短信登录 </br>
*/
@SuppressWarnings("unchecked")
private void addCustomOAuth2GrantAuthenticationProvider(HttpSecurity http) {
AuthenticationManager authenticationManager = http.getSharedObject(AuthenticationManager.class);
OAuth2AuthorizationService authorizationService = http.getSharedObject(OAuth2AuthorizationService.class);
/**
* 令牌生成规则实现 </br>
* client:username:uuid
*
* @return OAuth2TokenGenerator
*/
@Bean
public OAuth2TokenGenerator oAuth2TokenGenerator() {
CustomeOAuth2AccessTokenGenerator accessTokenGenerator = new CustomeOAuth2AccessTokenGenerator();
// 注入Token 增加关联用户信息
accessTokenGenerator.setAccessTokenCustomizer(new CustomeOAuth2TokenCustomizer());
return new DelegatingOAuth2TokenGenerator(accessTokenGenerator, new OAuth2RefreshTokenGenerator());
}
OAuth2ResourceOwnerPasswordAuthenticationProvider resourceOwnerPasswordAuthenticationProvider = new OAuth2ResourceOwnerPasswordAuthenticationProvider(
authenticationManager, authorizationService, oAuth2TokenGenerator());
@Bean
public AuthenticationFailureHandler authenticationFailureHandler() {
return new FormAuthenticationFailureHandler();
}
OAuth2ResourceOwnerSmsAuthenticationProvider resourceOwnerSmsAuthenticationProvider = new OAuth2ResourceOwnerSmsAuthenticationProvider(
authenticationManager, authorizationService, oAuth2TokenGenerator());
@Bean
public LogoutSuccessHandler logoutSuccessHandler() {
return new SsoLogoutSuccessHandler();
}
// 处理 UsernamePasswordAuthenticationToken
http.authenticationProvider(new PigxDaoAuthenticationProvider());
// 处理 OAuth2ResourceOwnerPasswordAuthenticationToken
http.authenticationProvider(resourceOwnerPasswordAuthenticationProvider);
// 处理 OAuth2ResourceOwnerSmsAuthenticationToken
http.authenticationProvider(resourceOwnerSmsAuthenticationProvider);
}
/**
* request -> xToken 注入请求转换器
*
* @return DelegatingAuthenticationConverter
*/
private AuthenticationConverter accessTokenRequestConverter() {
return new DelegatingAuthenticationConverter(
Arrays.asList(new OAuth2ResourceOwnerPasswordAuthenticationConverter(),
new OAuth2ResourceOwnerSmsAuthenticationConverter(),
new PigxOAuth2RefreshTokenAuthenticationConverter(),
new OAuth2ClientCredentialsAuthenticationConverter(),
new OAuth2AuthorizationCodeAuthenticationConverter()));
}
/**
* 注入授权模式实现提供方
* <p>
* 1. 密码模式 </br>
* 2. 短信登录 </br>
*/
@SuppressWarnings("unchecked")
private void addCustomOAuth2GrantAuthenticationProvider(HttpSecurity http) {
AuthenticationManager authenticationManager = http.getSharedObject(AuthenticationManager.class);
OAuth2AuthorizationService authorizationService = http.getSharedObject(OAuth2AuthorizationService.class);
OAuth2ResourceOwnerPasswordAuthenticationProvider resourceOwnerPasswordAuthenticationProvider = new OAuth2ResourceOwnerPasswordAuthenticationProvider(
authenticationManager, authorizationService, oAuth2TokenGenerator());
OAuth2ResourceOwnerSmsAuthenticationProvider resourceOwnerSmsAuthenticationProvider = new OAuth2ResourceOwnerSmsAuthenticationProvider(
authenticationManager, authorizationService, oAuth2TokenGenerator());
// 处理 UsernamePasswordAuthenticationToken
http.authenticationProvider(new PigxDaoAuthenticationProvider());
// 处理 OAuth2ResourceOwnerPasswordAuthenticationToken
http.authenticationProvider(resourceOwnerPasswordAuthenticationProvider);
// 处理 OAuth2ResourceOwnerSmsAuthenticationToken
http.authenticationProvider(resourceOwnerSmsAuthenticationProvider);
}
}
@@ -1,46 +0,0 @@
package com.pig4cloud.pigx.auth.endpoint;
import com.anji.captcha.service.CaptchaCacheService;
import com.pig4cloud.pigx.common.data.cache.RedisUtils;
/**
* @author lengleng
* @date 2020/8/27
* <p>
* 验证码 缓存提供支持集群,需要通过SPI
*/
public class CaptchaCacheServiceProvider implements CaptchaCacheService {
private static final String REDIS = "redis";
@Override
public void set(String key, String value, long expiresInSeconds) {
RedisUtils.set(key, value, expiresInSeconds);
}
@Override
public boolean exists(String key) {
return RedisUtils.hasKey(key);
}
@Override
public void delete(String key) {
RedisUtils.delete(key);
}
@Override
public String get(String key) {
return RedisUtils.get(key);
}
@Override
public String type() {
return REDIS;
}
@Override
public Long increment(String key, long val) {
return RedisUtils.increment(key, val);
}
}
@@ -4,7 +4,6 @@ import cn.hutool.core.lang.Validator;
import com.anji.captcha.model.vo.CaptchaVO;
import com.anji.captcha.service.CaptchaService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.SpringContextHolder;
@@ -19,6 +18,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.awt.Color;
/**
* 验证码相关的接口
*
@@ -40,7 +41,7 @@ public class ImageCodeEndpoint {
@SneakyThrows
@GetMapping("/image")
public void image(String randomStr, HttpServletResponse response) {
ArithmeticCaptcha captcha = new ArithmeticCaptcha(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT);
ArithmeticCaptcha captcha = createCaptcha();
String result = captcha.text();
@@ -49,19 +50,28 @@ public class ImageCodeEndpoint {
return;
}
RedisUtils.set(CacheConstants.DEFAULT_CODE_KEY + randomStr, result, SecurityConstants.CODE_TIME);
RedisUtils.set(CacheConstants.IMAGE_CODE_KEY + randomStr, result, SecurityConstants.CODE_TIME);
// 转换流信息写出
captcha.out(response.getOutputStream());
}
static ArithmeticCaptcha createCaptcha() {
return new ArithmeticCaptcha(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT) {
@Override
protected Color color() {
return Color.BLACK;
}
};
}
/**
* 行为 创建滑块图形验证码
*/
@SneakyThrows
@GetMapping("/create")
public R behavior() {
public R behavior(String captchaType) {
CaptchaVO vo = new CaptchaVO();
vo.setCaptchaType(CommonConstants.IMAGE_CODE_TYPE);
vo.setCaptchaType(captchaType);
CaptchaService captchaService = SpringContextHolder.getBean(CaptchaService.class);
return R.ok(captchaService.get(vo));
}
@@ -75,10 +85,10 @@ public class ImageCodeEndpoint {
CaptchaVO vo = new CaptchaVO();
vo.setPointJson(request.getParameter("pointJson"));
vo.setToken(request.getParameter("token"));
vo.setCaptchaType(CommonConstants.IMAGE_CODE_TYPE);
vo.setCaptchaType(request.getParameter("captchaType"));
CaptchaService captchaService = SpringContextHolder.getBean(CaptchaService.class);
return R.ok(captchaService.check(vo));
}
}
}
Loaded 100 of 1391 files, more files were not shown because too many files have changed in this diff. Show more