Commit Graph
11727 Commits
Author SHA1 Message Date
YunaiV e1315eacbb (〃'▽'〃)_v2026_07_发布:管理后台移动端完成全模块适配,增强工作流与 CRM 数据统计
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
yudao-ui-admin CI / build (14.x) (push) Has been cancelled
yudao-ui-admin CI / build (16.x) (push) Has been cancelled
v2026.07(jdk8/11)
2026-07-31 21:25:44 +08:00
YunaiV f4e4e737f2 Merge branch 'master' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-module-ai/pom.xml
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/AiChatConversationController.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/AiChatMessageController.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/AiImageController.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/mindmap/AiMindMapController.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/music/AiMusicController.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/write/AiWriteController.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/enums/ErrorCodeConstants.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/enums/model/AiPlatformEnum.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/AiAutoConfiguration.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/YudaoAiProperties.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/AiModelFactoryImpl.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/baichuan/BaiChuanChatModel.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/doubao/DouBaoChatModel.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/grok/GrokChatModel.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/hunyuan/HunYuanChatModel.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/xinghuo/XingHuoChatModel.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatMessageService.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatMessageServiceImpl.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/mindmap/AiMindMapService.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/mindmap/AiMindMapServiceImpl.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/workflow/AiWorkflowServiceImpl.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/write/AiWriteService.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/write/AiWriteServiceImpl.java
#	yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/util/AiUtils.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/BaiChuanChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/DeepSeekChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/DouBaoChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/HunYuanChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/MiniMaxChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/MoonshotChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/XingHuoChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/YiYanChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/ZhiPuAiChatModelTests.java
#	yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/image/OpenAiImageModelTests.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmModelController.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmModelConvert.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/enums/DictTypeConstants.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmCommentTypeEnum.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelService.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/statistics/CrmStatisticsFunnelController.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/statistics/CrmStatisticsPerformanceController.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/statistics/vo/funnel/CrmStatisticsFunnelReqVO.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/statistics/CrmStatisticsCustomerMapper.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/statistics/CrmStatisticsFunnelMapper.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/statistics/CrmStatisticsPerformanceMapper.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/statistics/CrmStatisticsCustomerServiceImpl.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/statistics/CrmStatisticsFunnelService.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/statistics/CrmStatisticsFunnelServiceImpl.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/statistics/CrmStatisticsPerformanceService.java
#	yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/statistics/CrmStatisticsPerformanceServiceImpl.java
#	yudao-module-crm/src/main/resources/mapper/statistics/CrmStatisticsFunnelMapper.xml
#	yudao-module-crm/src/main/resources/mapper/statistics/CrmStatisticsPerformanceMapper.xml
#	yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/message/ImChannelMessageManagerController.java
#	yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/framework/rtc/core/LiveKitClient.java
#	yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/message/ImChannelMessageService.java
#	yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/message/ImChannelMessageServiceImpl.java
#	yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineAbstractTest.java
#	yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineUniappTest.java
#	yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/ts/index
#	yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/vue/detail/index
#	yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/vue/form/index
#	yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/vue/search-form
#	yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/coupon/AppCouponTemplateController.java
#	yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java
#	yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
#	yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/checkrecord/MesDvCheckRecordLineController.java
#	yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/maintenrecord/MesDvMaintenRecordLineController.java
#	yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/MesDvRepairLineController.java
#	yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
#	yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/result/MesWmStockTakingTaskResultRespVO.java
#	yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java
#	yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java
#	yudao-module-pay/src/test/java/cn/iocoder/yudao/module/pay/service/channel/PayChannelServiceTest.java
#	yudao-module-report/src/main/java/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmOnlDragExternalServiceImpl.java
#	yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImplTest.java
#	yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
2026-07-31 21:24:08 +08:00
YunaiV 0418084e22 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	pom.xml
#	yudao-dependencies/pom.xml
2026-07-31 19:46:10 +08:00
YunaiV c3523cd038 (〃'▽'〃)_v2026_07_发布:管理后台移动端完成全模块适配,增强工作流与 CRM 数据统计 2026-07-31 19:45:31 +08:00
YunaiV 61ba7d1863 (〃'▽'〃)_v2026_07_发布:管理后台移动端完成全模块适配,增强工作流与 CRM 数据统计 2026-07-31 19:44:46 +08:00
YunaiV dff88d5c5f 【同步】jdk21 和 jdk8 的代码 2026-07-31 18:40:10 +08:00
YunaiV 89b4d0d44e Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-dependencies/pom.xml
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmModelController.java
#	yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/message/ImChannelMessageManagerController.java
#	yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java
#	yudao-module-pay/src/test/java/cn/iocoder/yudao/module/pay/service/channel/PayChannelServiceTest.java
#	yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
2026-07-31 10:40:02 +08:00
YunaiV 11b5cb5288 fix: 升级 Fastjson2 并排除 Fastjson1 2026-07-31 09:44:50 +08:00
YunaiV de70ff9529 fix: 升级 Fastjson2 并排除 Fastjson1 2026-07-31 09:44:49 +08:00
YunaiV f639a76b43 fix(auth): 拦截禁用用户登录并撤销会员令牌 2026-07-19 20:18:25 +08:00
YunaiV 5b5bd40b48 fix(web): 修复全局异常处理被 JimuReport 拦截 2026-07-19 20:16:57 +08:00
YunaiV fd1d97cb8b fix(system): 修复按部门查询用户精简列表返回禁用用户 2026-07-19 19:22:25 +08:00
YunaiV 383d45f1b8 fix: 补齐 Controller 简单参数的 RequestParam 注解 2026-07-19 19:15:06 +08:00
YunaiV e509c8a958 fix(im): 修复 LiveKit 本地媒体连接与房间管理权限
- 修正 Docker Desktop 媒体候选地址
- 为管理 Token 增加房间级 roomAdmin 权限
- 更新 LiveKit PoC 配置说明
2026-07-16 19:37:26 +08:00
YunaiV 2558d8c874 feat(im):增加渠道消息的 get 接口 2026-07-13 13:13:16 +08:00
YunaiV 34d273a20e fix(system):avatar 错误使用 nickname 进行设置 2026-07-13 03:35:50 +08:00
YunaiV f7bfa5d7f4 Merge remote-tracking branch 'origin/master-jdk17' into master-jdk17 2026-07-13 00:27:03 +08:00
YunaiV 9c6cff33ad feat(ai): 优化大模型兼容接入 2026-07-12 22:15:40 +08:00
YunaiV 0cb951f334 fix(codegen): 修复 UniApp Wot 生成代码兼容问题
- 完善日期、浮点数、布尔字典和上传字段生成逻辑
- 修复主子表必填校验和详情按钮类型
- 修复树表查询及生成快照路径问题
- 增加主子表类名、属性名和输出路径碰撞校验
- 补充 normal、inner、ERP 等场景单元测试
2026-07-12 12:46:22 +08:00
YunaiV ef9f43e77e feat(ai): 增加更多 get 获取详情接口 2026-07-12 12:26:44 +08:00
YunaiV 2ef66566d4 feat(codegen): 完善 UniApp Wot 代码生成
- 支持普通、树表及多种主子表页面生成
- 完善主子表 API、表单、详情和字段控件
- 修复一对一空数据提交及树表搜索问题
- 统一日期时间戳和主键类型生成
- 修复 Wot 组件类型及生成代码格式问题
- 优化生成快照路径并增加文件冲突检测
- 补充 UniApp 代码生成单测和快照
2026-07-12 11:57:39 +08:00
YunaiV 3dba455082 feat(bpm): 完善流程模型导入导出逻辑
- 补全 BPMN XML 和简易模型数据导出
- 导入模型归属当前租户并保留完整配置
- 增加导入文件格式与参数校验
- 加强模型查询的租户隔离
- 补充流程模型服务单元测试
2026-07-12 10:19:28 +08:00
YunaiV 020fa9d53c Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into master-jdk17 2026-07-12 02:10:15 +08:00
YunaiV 1c49886593 refactor(codegen): 统一移动端搜索全部选项语义 2026-07-12 01:17:47 +08:00
芋道源码 526af905de !1572 feat(bpm):新增流程模型操作导出模型json接口
Merge pull request !1572 from nnzb/bpm
2026-07-11 17:16:51 +00:00
YunaiV 1a232f80ec Merge remote-tracking branch 'origin/master-jdk17' into master-jdk17 2026-07-11 21:57:27 +08:00
YunaiV b3296b4e97 fix(codegen): 修复 Vben5 Antdv Next 模板兼容问题
- 修正组件根导入、子组件用法及内部模板引用
- 按实际生成分支条件导入 Tabs、FormItem、SelectOption 和 RangePicker
- 修复一对一及一对多 join-select 场景的导入判定
- 补充模板类型、RangePicker helper 和稀疏主子表回归测试
2026-07-11 21:57:16 +08:00
YunaiV 86ff0347a7 feat(mes): 新增业务明细关联列表接口 2026-07-11 20:36:51 +08:00
YunaiV 3783a26f1a feat(mes): 新增业务明细关联列表接口 2026-07-11 20:30:20 +08:00
YunaiV e4e460d563 【同步】jdk21 和 jdk8 的代码 2026-07-07 20:21:09 +08:00
YunaiV d117660629 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro 2026-07-07 19:55:19 +08:00
YunaiV caade90fea chore: 默认关闭 API 加密(api-encrypt.enable: true → false)
【背景】
yudao.api-encrypt 开启时,ApiEncryptFilter 构造函数会调用 hutool 的
SecureUtil.aes() 创建 AES 加密器,底层经 JCE(javax.crypto.Cipher)加载
BouncyCastle Provider。在低版本 JDK 8(8u120 以下)上,bcprov-jdk18on
无法通过 JCE 签名认证,导致 Fat Jar 启动失败:
  Failed to instantiate [apiEncryptFilter];
  nested exception is cn.hutool.crypto.CryptoException:
    SecurityException: JCE cannot authenticate the provider BC
      at javax.crypto.Cipher.getInstance(Cipher.java:652)

【JCE 根因】
bcprov jar 是 BouncyCastle 自签名(BC2048KE.DSA),非 Oracle 信任的 CA。
JDK 8u120 及更早版本的 JCE 对 Provider jar 做强签名校验且存在认证缺陷,
对自签名证书校验失败;8u121 起修复,9+ 彻底移除该强校验机制。
实测同一 bcprov-jdk18on-1.80.jar:
  JDK 8u20  → JCE cannot authenticate the provider BC ❌
  JDK 8u121+ → 正常 ✅
  JDK 17/25  → 正常 ✅(JDK9+ 已无此机制)
故该报错为低版本 JDK 8 的环境问题,非项目代码 bug。

【改动】
将 api-encrypt.enable 默认值改为 false,规避低版本 JDK 8 启动失败。
不影响加密功能本身:需要 API 加密的用户改成 enable: true 即可,
建议同时将 JDK 升级到 8u121 以上(或 17/25)。

【性能】
已实测:开启 vs 关闭的启动耗时基本无差异(JDK25 实测各 3 轮,
平均 17.7s vs 17.0s,差值在误差范围内),关闭不带来启动加速,
仅用于兼容低版本 JDK 8。
2026-07-07 19:55:12 +08:00
YunaiV 42c28dfd1d fix: 降级 httpclient5 5.5.2 → 5.5.1,修复 JDK 8 低版本启动报 TCP_KEEPIDLE
【问题现象】
项目使用 WxJava 4.8.x(http-client-type: HttpComponents 模式),在 JDK 8 低版本
(如 1.8.0_202)启动时报错:
  Failed to instantiate [me.chanjar.weixin.mp.api.WxMpService];
  nested exception is java.lang.NoSuchFieldError: TCP_KEEPIDLE
    at org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator.<clinit>

【根因】
httpclient5 5.5.2 起,DefaultHttpClientConnectionOperator 用「硬编码字段引用」
(getstatic jdk/net/ExtendedSocketOptions.TCP_KEEPIDLE)访问 TCP_KEEPIDLE。
该字段属于 jdk.net.ExtendedSocketOptions,JDK 8 需 8u272 才 backport,
JVM 类链接阶段必须解析该字段,低版本 JDK 8 找不到 → NoSuchFieldError。

关键:5.5.1 与 5.5.2 虽然字节码都含 "TCP_KEEPIDLE",但引用形态不同:
  - 5.5.1:ldc "TCP_KEEPIDLE"(字符串常量,反射按名查找)→ JDK8 反射兜底,不报错
  - 5.5.2:getstatic Fieldref(硬编码字段引用)→ JDK8 链接期必报错
官方在 HTTPCLIENT-2413 中明确不修(Resolved=Information Provided,建议升级 JRE),
最新 5.6.1 仍为硬编码引用,升版本无解。

【方案】
仅降 httpclient5 5.5.2 → 5.5.1(问题引入版本的前一个版本),httpcore5 维持 5.3.6。
不选更低版本(如 5.2.x/5.4.x):WxJava 4.8.x 的 DefaultHttpComponentsClientBuilder
需要 httpclient5 5.4+ 的 TlsSocketStrategy 等 API。
不选升级:5.5.2+ 全系列均为硬编码引用,无法兼容低版本 JDK 8。

【实测验证】环境 JDK 1.8.0_20(比用户 1.8.0_202 更低)
  httpclient5 5.5.1 + httpcore5 5.3.6:
    - WxJava DefaultHttpComponentsClientBuilder.build() 初始化 ✅
    - 真实 HTTPS 请求(连接建立全路径)✅ status 200
  httpclient5 5.5.2 + httpcore5 5.3.6:
    - 启动即报 NoSuchFieldError: TCP_KEEPIDLE(复现用户报错,调用栈一致)

【改动】仅 yudao-dependencies/pom.xml
  <httpclient5.version>5.5.2</httpclient5.version>
    → <httpclient5.version>5.5.1</httpclient5.version>
  httpcore5.version 维持 5.3.6 不变

Refs: https://issues.apache.org/jira/browse/HTTPCLIENT-2413
2026-07-07 18:02:58 +08:00
YunaiV b5b106f23c feat(crm): 新增 CRM 统计分析与业绩目标能力
- 新增客户公海、销售漏斗、产品销售、合同汇总等统计分析
- 新增业绩目标设置与业绩达成统计
- 新增客户负责人变更记录能力,并用于公海客户分析
- 完善销售漏斗阶段统计、商机转化率和明细筛选
- 补充产品分类、时间范围、空金额等统计边界处理
- 新增相关前端页面、API 与数据库菜单配置
2026-07-07 14:46:59 +08:00
YunaiV b05178d2cd feat(crm): 新增 CRM 统计分析与业绩目标能力
- 新增客户公海、销售漏斗、产品销售、合同汇总等统计分析
- 新增业绩目标设置与业绩达成统计
- 新增客户负责人变更记录能力,并用于公海客户分析
- 完善销售漏斗阶段统计、商机转化率和明细筛选
- 补充产品分类、时间范围、空金额等统计边界处理
- 新增相关前端页面、API 与数据库菜单配置
2026-07-07 14:43:44 +08:00
YunaiV 214259ff0e feat(crm): 新增 CRM 统计分析与业绩目标能力
- 新增客户公海、销售漏斗、产品销售、合同汇总等统计分析
- 新增业绩目标设置与业绩达成统计
- 新增客户负责人变更记录能力,并用于公海客户分析
- 完善销售漏斗阶段统计、商机转化率和明细筛选
- 补充产品分类、时间范围、空金额等统计边界处理
- 新增相关前端页面、API 与数据库菜单配置
2026-07-05 22:46:21 +08:00
YunaiV b2c8c510cd 【同步】jdk21 和 jdk8 的代码 2026-07-04 23:34:55 +08:00
YunaiV 2a13d86ea6 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/convert/MultiDictConvert.java
2026-07-04 23:22:52 +08:00
YunaiV e001bbbdbb feat: 新增 Excel 多值字典转换器
- 新增 MultiDictConvert,支持半角逗号存储的多值字典字段
- 支持 String、Collection、Set、具体集合类和数组字段
- 未知字典 label/value 时整体转换失败,避免返回部分结果导致数据缺失
- 补充单值、多值、空值、顺序保持和失败场景单元测试
2026-07-04 23:21:32 +08:00
YunaiV 7bd34e28c9 Merge branch 'master' of https://github.com/YunaiV/ruoyi-vue-pro 2026-07-04 23:20:52 +08:00
YunaiV c426261cdd Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
2026-07-04 23:20:42 +08:00
芋道源码 482fab85c1 Merge pull request #1162 from 1139195538/master
feat:add Excel 数据字典转换器(多值转换器)
2026-07-04 22:57:11 +08:00
gnomeshgh 0896593146 feat(bpm):新增流程模型操作导出模型json接口 2026-07-03 23:10:08 +08:00
gnomeshgh a3416fc449 feat(bpm):新增导入模型接口 2026-07-03 22:38:11 +08:00
YunaiV 7b35b16240 feat(bpm): 支持流程评论接口
- 新增流程评论创建、列表查询接口
- 封装 BpmCommentService 统一复用 Flowable Comment
- 评论列表返回评论人和对应任务信息
- 新增 BPM 评论类型字典与评论枚举
- 补充任务校验与历史任务 Map 查询能力
2026-07-03 07:52:22 +08:00
YunaiV 28f547915d feat(bpm): 支持流程评论接口
- 新增流程评论创建、列表查询接口
- 封装 BpmCommentService 统一复用 Flowable Comment
- 评论列表返回评论人和对应任务信息
- 新增 BPM 评论类型字典与评论枚举
- 补充任务校验与历史任务 Map 查询能力
2026-07-02 11:27:27 +08:00
YunaiV c356e768bd chore: upgrade SkyWalking version to 9.6.0 for jdk8 2026-07-01 18:58:09 +08:00
YunaiV 97fba4eff8 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-dependencies/pom.xml
#	yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/YudaoTracerAutoConfiguration.java
2026-07-01 09:19:12 +08:00
YunaiV de08e8144f feat(tracer): 替换 OpenTracing 为 OpenTelemetry
- 引入 OpenTelemetry API/SDK/OTLP Exporter
- 移除 OpenTracing 与 SkyWalking trace toolkit 依赖
- 改造 Tracer 自动配置、业务链路切面和异常记录逻辑
- 使用 Span.current() 获取当前 traceId
- 保留 SkyWalking apm-toolkit-logback-1.x,避免影响日志链路输出
- 兼容 JDK8 servlet 依赖
2026-07-01 09:17:59 +08:00
YunaiV ca36970ef4 feat(tracer): 替换 OpenTracing 为 OpenTelemetry
- 引入 OpenTelemetry API/SDK/OTLP Exporter
- 移除 OpenTracing 与 SkyWalking trace toolkit 依赖
- 改造 Tracer 自动配置、业务链路切面和异常记录逻辑
- 使用 Span.current() 获取当前 traceId
- 保留 SkyWalking apm-toolkit-logback-1.x,避免影响日志链路输出
- 兼容 JDK8 servlet 依赖
2026-07-01 09:17:33 +08:00