更新,工序计划

This commit is contained in:
tzy 2026-05-18 10:56:56 +08:00
parent c71f6ecc98
commit db73bbc7d0
70 changed files with 392131 additions and 413 deletions

34
.idea/compiler.xml Normal file
View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Annotation profile for RuoYi-Vue-Plus" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<processorPath useClasspath="false">
<entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc-scribe/0.15.0/therapi-runtime-javadoc-scribe-0.15.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc/0.15.0/therapi-runtime-javadoc-0.15.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.30/lombok-1.18.30.jar" />
<entry name="$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.7.11/spring-boot-configuration-processor-2.7.11.jar" />
<entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc-scribe/0.15.0/therapi-runtime-javadoc-scribe-0.15.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc/0.15.0/therapi-runtime-javadoc-0.15.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.30/lombok-1.18.30.jar" />
<entry name="$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.7.11/spring-boot-configuration-processor-2.7.11.jar" />
</processorPath>
<module name="ruoyi-framework" />
<module name="ruoyi-oss" />
<module name="ruoyi-demo" />
<module name="ruoyi-system" />
<module name="ruoyi-job" />
<module name="ruoyi-monitor-admin" />
<module name="ruoyi-sms" />
<module name="ruoyi-common" />
<module name="ruoyi-generator" />
<module name="ruoyi-xxl-job-admin" />
<module name="ruoyi-admin" />
</profile>
</annotationProcessing>
</component>
</project>

31
.idea/encodings.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-common/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-demo/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-demo/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-extend/ruoyi-monitor-admin/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-extend/ruoyi-monitor-admin/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-extend/ruoyi-xxl-job-admin/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-extend/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-extend/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-framework/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-framework/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-generator/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-generator/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-job/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-job/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-oss/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-oss/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-sms/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-sms/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-system/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-system/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

25
.idea/jarRepositories.xml Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="public" />
<option name="name" value="aliyun nexus" />
<option name="url" value="https://maven.aliyun.com/repository/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

17
.idea/misc.xml Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
<option name="enabledProfiles">
<list>
<option value="dev" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="corretto-1.8" project-jdk-type="JavaSDK" />
</project>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

4
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,4 @@
{
"java.configuration.updateBuildConfiguration": "interactive",
"java.compile.nullAnalysis.mode": "automatic"
}

View File

@ -0,0 +1,128 @@
---
name: 生产令号综合看板报表
overview: 新增一个以生产令号为顶层索引的聚合接口(及可选导出),串联 SQL Server 订单追溯含采购线与生产线、MySQL 工序计划主从表、以及工序汇报/委外两张快照表;在令号维度汇总生产入库、采购订单入库等指标。工序汇报与委外依赖快照数据时需约定日期过滤策略。
todos:
- id: bo-vo
content: 新增 KingdeeProductionBoardQueryBo / 聚合 VO令号→订单→计划/追溯/快照;令号维度的生产入库汇总 + 采购入库汇总)
status: pending
- id: service-merge
content: 实现 KingdeeProductionBoardServicetrace → MO 集合 → 计划批量查询 → 快照 Mapper 过滤 → 采购/生产入库汇总 → 内存组装 VO
status: pending
- id: purchase-inbound-summary
content: 基于 purchaseList 按 purchaseBillNo+可选物料groupBy 聚合 sumPurchaseQty/sumInstockQty并写入令号级 PurchaseInboundSummaryVo
status: pending
- id: planning-reuse
content: 从 SfcOperationPlanningMainServiceImpl 抽取 DTO 组装逻辑供看板复用(避免重复)
status: pending
- id: controller
content: 新增 POST /system/kingdee/productionBoard/query + 权限与参数校验
status: pending
- id: date-normalize
content: 快照日期过滤:首版文档说明格式差异;可选实现简单规范化(同一 sync 窗口内通常可接受仅按订单号关联)
status: pending
---
> **说明**Cursor 全局计划文件可能在用户目录下,例如
> `C:\Users\<用户名>\.cursor\plans\生产令号综合看板报表_f0c1e308.plan.md`
> 本文件为仓库内副本,路径:`docs/plans/生产令号综合看板报表.md`。
# 生产令号综合看板(大报表)方案
## 目标与边界
- **索引**:生产令号 `sclh`(支持多个令号一次查询)。
- **下钻**:每个令号下挂 **生产订单列表**;每个订单下聚合 **工序计划(本地库)**、**生产线追溯行**、**工序汇报汇总(快照)**、**委外转移(快照)**,以及 **生产入库小计**
- **采购侧**`queryOrderTrace` 返回的 `purchaseList`[`KingdeePoTraceVo`](../../ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/KingdeePoTraceVo.java):采购订单号 `purchaseBillNo`、`purchaseQty`、`instockBillNo`、`instockQty` 等)挂在同一令号下;除明细列表外,增加 **采购入库汇总**
- **令号维度**:如 `totalPurchaseInstockQty` = 对该令号下所有采购明细行的 `instockQty` 求和(空/null 按 0可选 `totalPurchaseOrderQty` = `purchaseQty` 之和,便于对比「采购下单 vs 已入库」。
- **按采购订单汇总**(推荐):`List<PurchaseInboundSummaryRow>`,键为 `purchaseBillNo`+ 可选物料维度若一行一单多料),聚合 `sumPurchaseQty`、`sumInstockQty`、行数/入库单列表摘要;数据来源仍为当前追溯 SQL 的扁平行,仅内存 groupBy。
- **数据来源约定**
- 追溯:沿用 [`MssqlQueryService.queryOrderTrace`](../../ruoyi-system/src/main/java/com/ruoyi/system/service/MssqlQueryService.java)`@DS("sqlserver")`),与 [`KingdeeOrderTraceController`](../../ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeOrderTraceController.java) 一致。
- 工序计划MySQL [`sfc_operation_planning_main`](../../ruoyi-system/src/main/java/com/ruoyi/system/domain/SfcOperationPlanningMain.java) / `sfc_operation_planning_detail`,过滤条件与 [`buildQueryWrapper`](../../ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SfcOperationPlanningMainServiceImpl.java) 对齐:`hbytSclh` 精确匹配(或与项目号 OR 逻辑按需收窄为「仅令号」以免扩 scope
- 工序汇报 / 委外:**优先使用已入库快照** [`kingdee_operation_report_sum`](../../script/sql/update/kingdee-report-snapshot.sql)、[`kingdee_subcontract_transfer`](../../script/sql/update/kingdee-report-snapshot.sql),按 **生产订单号** `mo_bill_no` / `product_order_codes` 与追溯得到的 `moBillNo` 集合关联。
- **不在首版默认开启**:每次请求实时调用 `JdUtil.getSysReportData`(除非你后续明确要求 `live` 参数);避免一次看板触发多次金蝶报表压力。
```mermaid
flowchart TD
subgraph input [输入]
sclhList[sclh列表]
dateOpt[可选快照日期范围]
end
subgraph ss [SQLServer]
trace[queryOrderTrace]
end
subgraph mysql [MySQL]
planMain[sfc_operation_planning_main/detail]
rptSnap[kingdee_operation_report_sum]
subSnap[kingdee_subcontract_transfer]
end
sclhList --> trace
trace --> moSet[生产订单号集合]
moSet --> planMain
moSet --> rptSnap
moSet --> subSnap
trace --> prodInstockAgg[生产入库汇总]
trace --> poInstockAgg[采购入库汇总]
planMain --> vo[聚合VO]
rptSnap --> vo
subSnap --> vo
prodInstockAgg --> vo
poInstockAgg --> vo
```
## 聚合数据结构(建议)
新建聚合 VO名称可定为 `KingdeeProductionBoardVo`),层级示例:
- `sclh`
- `purchaseList`:来自追溯 `purchaseList`(与该令号一致)
- `purchaseInboundSummary`**按采购订单(及按需物料)聚合**的入库汇总行(见上文);与明细并存,便于报表只看汇总
- **采购汇总标量**(可选与 summary 冗余):`totalPurchaseInstockQty`、`totalPurchaseOrderQty`
- `productionTraceList`:该令号下全部 [`KingdeeMoTraceVo`](../../ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/KingdeeMoTraceVo.java) 行
- **生产侧汇总字段**`totalProductionInstockQty`(对该令号下生产追溯行 `instockQty` 求和;原方案中的生产入库总值);可按需 `totalMoQty``qty` 订单数量之和)
- `orders``List<MoBoardNode>`
- `moBillNo`、`materialNumber`/`materialName`(可从追溯首行或计划主档带出)
- `planning`:单个 [`OperationPlanResultDTO`](../../ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/OperationPlanResultDTO.java) 或与主表 1:1 的列表(若一单多计划则列表)
- `reportRows``List<KingdeeOperationReportSum>`(或精简 DTO`mo_bill_no` 过滤后的快照行;可选再提供按 `report_date + op_oper`**当日汇总**(内存 groupBy
- `subcontractRows``List<KingdeeSubcontractTransfer>` 按 `product_order_codes = moBillNo` 过滤
- `moInstockQty`:该订单维度 **生产入库** `instockQty` 合计(来自 `KingdeeMoTraceVo`
- **说明**:采购入库按业务通常挂在 **令号 / 采购订单**,与生产订单号可能无一一映射字段;首版不强行拆到每个 `MoBoardNode`,除非后续在金蝶侧补充关联字段后再挂订单下钻。
多令号时返回 `List<KingdeeProductionBoardVo>` 或外层 `{ boards: [...] }`,二选一(建议 **列表**,与前端遍历一致)。
## 请求入参(新建 Bo
- 必填:`List<String> sclh`(或兼容逗号分隔单参,与追溯 Bo 一致)。
- 可选:`reportSnapshotBegin` / `reportSnapshotEnd`(字符串或 `yyyy-MM-dd`):用于过滤快照中的 `report_date`、`document_date`。
- **注意**:金蝶返回日期格式可能为 `2026/4/11`,实现上建议:**先在 Java 侧将快照中的日期列规范化为可比较形式**,或用「同步时写入规范化日期列」的二期优化;首版可采用 **宽松策略**(仅按订单号关联 + 可选区间子串/解析)并在文档中说明局限。
- 可选:`includePurchase`(默认 true、`includeSnapshots`(默认 true便于关闭大块数据。
## 服务层实现要点
- 新建 `IKingdeeProductionBoardService` + `KingdeeProductionBoardServiceImpl`(或挂在现有 `MssqlQueryService` 旁,保持单一职责)。
- 步骤:
1. 构造 [`KingdeeOrderTraceQueryBo`](../../ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/KingdeeOrderTraceQueryBo.java),仅填 `sclh`,调用 `queryOrderTrace`
2. 从 `productionList` 提取 `moBillNo` 去重集合;按 `sclh` 分组。
3. **工序计划**:对每组令号,用 `LambdaQueryWrapper` `in(moNumber, ...)``eq(hbytSclh, sclh)` 批量查主表 + `detailMapper.in(mainId, ...)`;组装为 `OperationPlanResultDTO`(可复用 `queryCascadePageList` 中的组装片段,提取私有方法避免复制粘贴)。
4. **快照**`KingdeeOperationReportSumMapper.selectList(mo_bill_no in (...))``KingdeeSubcontractTransferMapper.selectList(product_order_codes in (...))`,必要时加日期条件。
5. **采购入库汇总**:将 trace.`purchaseList` 按当前令号分组后,对组内数据 `groupBy(purchaseBillNo [, materialNumber])`,聚合 `purchaseQty`、`instockQty`BigDecimal 累加),生成 `purchaseInboundSummary` 及令号级合计字段。
6. 内存合并为上述 VO。
## Controller
- 新建 [`KingdeeProductionBoardController`](../../ruoyi-system/src/main/java/com/ruoyi/system/controller/)(或与 `KingdeeOrderTraceController` 同包):`POST /system/kingdee/productionBoard/query`POST 便于传多个 `sclh`)。
- 权限:建议与追溯一致 `system:mssql:query`,或拆新权限 `system:kingdee:productionBoard`(需菜单 SQL首版可沿用前者减少配置
## 「给我看大报表」形态
- **首版**:返回 JSON层级清晰前端表格/折叠面板即可)。
- **可选二期**:基于同一 Service 增加 `export`EasyExcel 多 Sheet令号总览 / 采购入库汇总 / 生产订单 / 汇报 / 委外 / 入库明细),不阻塞首版。
## 风险与前置条件
- 工序汇报、委外 **快照未同步** 时对应块为空;文档或接口 `msg` 中提示先调用已有 `/system/kingdee/operationReportSum/sync``/system/kingdee/subcontractTransfer/sync`
- 追溯 SQL 若条件过宽会导致 `mo` 集合过大:可对 `moBillNo` 数量设上限(如 500超出则报错提示缩小令号范围。
## 主要新增/改动文件
- 新建:`KingdeeProductionBoardQueryBo`、`KingdeeProductionBoardVo`、`MoBoardNode`、`PurchaseInboundSummaryVo`(或同类命名)、`IKingdeeProductionBoardService`、`KingdeeProductionBoardServiceImpl`、`KingdeeProductionBoardController`。
- 必要时分摊:从 [`SfcOperationPlanningMainServiceImpl`](../../ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SfcOperationPlanningMainServiceImpl.java) **抽取**「主表+明细 → OperationPlanResultDTO」为 package-private 或组件方法,供看板复用。

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,104 +1,444 @@
2026-04-12 05:53:20 [nioEventLoopGroup-4-2] INFO c.d.o.a.s.n.ws.ProtocolFrameHandler - [DingTalk] connection is closed, connectionId=8d75fc08-35be-11f1-8a2d-26300f98b769 2026-05-18 08:34:03 [connection-pool-2-1] INFO c.d.o.a.s.n.w.WebsocketTransportConnector - [DingTalk] start websocket connection, uri=wss://wss-open-connection-union.dingtalk.com:443/connect
2026-04-12 05:53:20 [connection-pool-2-1] INFO c.d.o.a.s.n.w.WebsocketTransportConnector - [DingTalk] start websocket connection, uri=wss://wss-open-connection-union.dingtalk.com:443/connect 2026-05-18 08:34:03 [connection-pool-2-1] INFO c.d.o.a.s.n.core.DefaultSessionPool - [DingTalk] connection is established, connectionId=451fc31e-5251-11f1-8397-a2985f78c079
2026-04-12 05:53:20 [connection-pool-2-1] INFO c.d.o.a.s.n.core.DefaultSessionPool - [DingTalk] connection is established, connectionId=db091e00-35f0-11f1-a582-1a02b3fe6148 2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"970975bfc38c1a9acc74c573fec3aa02b216b77f","msg_signature":"970975bfc38c1a9acc74c573fec3aa02b216b77f","timestamp":"1779065001340","nonce":"5eVXd79A","encrypt":"NUUFVmiLTgmVB0EndP4sbmCVxfw9VsVqUWye/GTJHrVVYy6Y1lK8xytUwAug3WlujTvCNIGn4VmXdxMxA5ibBboZqZsqtWonuZn3LAGoDCzlldLwEw1jNbE/gLxH47lNWMIWfuTpxGr3fUCyga5CDZ6o/F3n1Vq2JhuA7tPt4ONqAYFfWaYWewNuHQFkXu02/6jOFGeVSKb+GUnORMjyPZFqbV/TTaKa/EzH0WRnqUiJrF8sxLtdjMF9UMC5QYNqk+1Nw0sjSjWxnJvyjaBgwPhNhXsQ4Y2CGupMcNw0h3QoQCxDcPDowLqF/zZv3PFKQMr0cxd5e1aJcl63pjzs6MlOIqg8patj3fLrtjD7+DfLSOpS3QIWR8v/pedaGoOXmj1AMJkN/yO2QvYADbzXk6ukz2d4jFEBy8OJNgmitI17mq7M+a7u0SDZoWWMV1Dxv51jH3YB1t4RoVmI1em4F3qjiISI7fzfkxx6l8KX3dunE7X63A51st5kl2FajKmIm8hSXP/qO85h/VyYLgeEqxTvzrbp6mCEhZnV8tfnmgq+gBfok7pDXe0Jfu39y5p6JFhUosMfDQMjE3rDXBfXXtU+eFqc0YonJ7+AsqNXAPmWyMypYBOfM3NvztLQd+gs12GcEUTz+hAh+pFx0s3QGsKbmqR2hk1NJLeMvXZt5NuPqwFCOQx98E944dLruJaxrifXgytWLcmpf4H6n0PKMxsbCuCJWVYjKT/b6FeD5SdZ3Qs+URbTwtBJeopbgubZUL4x61dG6dEEMC2grcNdZPoYSkO2JEz1tmOlSuCyOmYQqiAH9TjtBYI618py5EJ2Qo1mztMHrj8v3t7icCggQ9THoOyhZVgM9toEIkJS4bCEmw1Gd1sMhO6ofkfRzVTIdAn2cx1nstB5tZk7va8IEazfuHkYFuCbIL0GkC6gsXow0WtVqfGaU2QWI62g6m3IdmLRTkXqvIPzRzyYI4xmVy0zh7jDuOhSlbmBgsryL+I80l6df+pvf0UIApULkmGdlu/eNsyMK+UmFQaAKt0MX+m84OA3fKQkbldOslTmVE4="}
2026-04-12 09:00:00 [xxl-job, EmbedServer bizThreadPool-1241045652] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job regist JobThread success, jobId:2, handler:com.xxl.job.core.handler.impl.MethodJobHandler@625439ba[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$7d2c6330#updateMaterials] 2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"2c9565538e3b46b0b4a237002ead56cf","finishTime":1779065000000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1778925260000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101156217321}
2026-04-12 09:01:33 [xxl-job, JobThread-2-1775955600005] INFO com.xxl.job.core.thread.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[xxl-job, JobThread-2-1775955600005,10,main] 2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:30:00 [xxl-job, EmbedServer bizThreadPool-1113096576] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job regist JobThread success, jobId:2, handler:com.xxl.job.core.handler.impl.MethodJobHandler@625439ba[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$7d2c6330#updateMaterials] 2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-04-12 09:31:33 [xxl-job, JobThread-2-1775957400018] INFO com.xxl.job.core.thread.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[xxl-job, JobThread-2-1775957400018,10,main] 2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO io.undertow - stopping server: Undertow - 2.2.24.Final 2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065004374, msg_signature=42b8de361debef89d9e3f9c1310c4e04879111c4, encrypt=gUj5T88XBoYpMP16dzERFNG51JJ9Cqcl62iy3AUxr+nDx/5f3mLxGazBzp/M8tIdYRnCAUAtlKEvTlIRQRq4Pw==, nonce=7ldI5OO6FjWCDipG}
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet' 2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"0a01e86c240e730fa0a807fcd280e4af58c21f2d","msg_signature":"0a01e86c240e730fa0a807fcd280e4af58c21f2d","timestamp":"1779065001503","nonce":"WD1WK2R7","encrypt":"Tu5FRnEDir4G3rKDZqB+CwBtFayooqRyv+X4/8RYUXuhLlLf4ZuZU2XDloKHEJd5bcMl59oPU6q3bQiuKQO4aZmmn85zju3lcLsBYn481tjIdrIFj0RLV5ra52HLfd7IJGdnFHlA12G8V6GnW5Lce0skcbar4GDK+X1lzMbD7iKIwCjkUqMZgMNAE7xRQBS5nyu6WZXdnD7AZx7SlxcFSf0dSDMt5yZj0v9382hVHpoQk2jq5UY+cAXPKmjzE6MScDZR65xoKiPq6e/tTPU3W+Sd4Q7i5ddAfQYZrvE7rOCEkXckUYrVGDPxYELdh3SGKj60mfNE/n/A8HNtHKyvsu4Y8beHyNzwoNUUxNvW5xDwZ2s7ujbTil+UWY4YNXBtHwao9F2Hm6iIo8rSIPt7LMXLSLgR0Xjq6h0tBOzxOVnGc96ItVpjIvNPyjf7/sM3xyLNiEhpU6CfuWo+XlraQbbh/hDBaV8LeQjtEGaYEFXI4/Y9IW3V6KReQAJp1wm+hKFSfltN7FtBggo8Zf2Aarak83gWZrCwTQYBPjI5IstGDgjS4XpeLDu6pVWXKvUng1lJP54FqoVe2cqKUl1Qz7uMt+fvyZQdQscalTXQTFdId1VGMOHPGnatxrsLhqCjgmNRivZNJtGp7fJ6dxllc0p3bHOF7Drov8OMsNbK+wXbg3bf6dTPRi+lVObeJvhTVvBKk/bIe1qaMSTLGKTcFsMzzkL5arspAgs6Rjly0rknzauKvzVBLQcuYAoeuiniH6cFZG5V5O3FMe+hZRoK5brFnobiSqnMLcRURhHqI+uKgeuf8HqQ8rVm2bUYL7ZyTIom2gFIsAQI+hsAD2sl37fJkf1ROis7p06eWPjtyqKmZG+gRM+FToqTcOe45BCw/YsT2ZiLwADX0uYpScME5LE8Zle9RPyTrH5Mja+eHhnmEpMtd5pZXQG/CbxdS6yY3XCNftpfVZuLRiDPcadlO3X59UlYkb5vh0QJ9mlsr8KL+2Gk4Vam1QgijODWTfnj"}
2026-04-12 09:48:11 [Thread-43] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop. 2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"964fc204bc6b4e5dbe5755eaff059ac9","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"研发技术人员确认提交方案","actualActionerId":"01190846452221394385","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779065001000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"01190846452221394385","taskId":101208140285}
2026-04-12 09:48:11 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry-remove success, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://192.168.5.200:9101/'}, registryResult:ReturnT [code=200, msg=null, content=null] 2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:11 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destroy. 2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success. 2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065012881, msg_signature=ab6aceaea6c6cc4e644fb72a91320cf7130b3711, encrypt=9Tr0a9j3S9w4F7gYre7ZtcRU5AQJCw6tu3eNoC0q8/jPLiPdYItqrmvyf2oKZpSXYnEchp3G1AzUdbLhZAHSAA==, nonce=7RSNMTEXkxiTN62l}
2026-04-12 09:48:11 [xxl-job, executor JobLogFileCleanThread] INFO c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy. 2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"bc8af64e15d2ef492a71df3a4a6078212a08a7d7","msg_signature":"bc8af64e15d2ef492a71df3a4a6078212a08a7d7","timestamp":"1779065014134","nonce":"XY2KoIR0","encrypt":"cNPeb19i9oVYsWDsZnsgrOBeHx7okf4Yy/QbVFm/Cf5ux3pFjko7ddE/c5tfjSF+7zgQjwQPnc/vkFBPuI34Dc9NQtB/4OAgqie4v9r72TgzSbffaFi0EK4AIlRXgtVmuaYQvJx1ur6v7m7Y07BMqsc+Sb2FyCZhKxipQ8rAmFGEqbDJre9q8fq0AQzKq5LfytGAZ5tg0TFxHQCUVC3vKlkJoinXr5LDaN/zWwlidQcuMwSHosBbt9rEKHWY6OY1miUoVeUD57CcgXRPULt+OwZnmqcvV3+SwLSYpoFpyITcYpDdccVtrySfDJRZaH+nb5x1dSb667Tb18Nve+YHYIprNV9FGijbNmqHl0tRUfEzjL5XrwuJAcmOgnMsV1Df5sMQ9Eiwdywfl6CbtRiCCAjny8aOJaVBcQe0xlCMx37e5jsJMHP80+8rQoPOExtIzSc9Lr+O5aZ38tsRhR6uOAiZJHq8mrr1GZRCZSnSz4uzY2h83/7+HmEbc2i5l1kF2GgjLY2mFLTktzJxm8/ISacokHrmdAS9YTIpNup2C88GcxxrpS0zSfqI/7qSUomSp2ZU2d6yZEymJvEGjTf8h9i3/y3xhoXlEj73E0V5M6JZn6qOr3c7gvs6oBX4Ynu8j0pO9OS9SfWAp7sl23kXbQB3Z/b0WzhKWFtQR+NMukCwPetC9CLtyTIwmRGQdXn46rPvUVEyXlZ8+R7Vl1FKJ6eY9h+5c0RJxMNUXnb/PrIE4K+tjdM5dwDqQ74FfwsFpJBt3GknYI93wmg/LbNxHYbaPKnvrGZBty1dDjdeRWByJSzrKwP9mVlSlBDTAIlVwvEyDVF25ewN0XKNWTx/W/MEiOaRdrWv+YuOpfOwS5zbuk2XUeokltp7xfPUCSJ336tANl1LtPwYFMc+YwmCSbMPaffgfCdMO3YnqLTjJ9SReMgjJkzvhQZCc7HPOErFApxEAaec0NAa8QzSWwemp2cOEBjHd/AxvNlaKfIgs+PgPXZPNy9vqQsh40jInQdv"}
2026-04-12 09:48:11 [xxl-job, executor TriggerCallbackThread] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destroy. 2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"964fc204bc6b4e5dbe5755eaff059ac9","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"研发技术人员确认提交方案","actualActionerId":"01190846452221394385","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779065001000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"01190846452221394385","taskId":101208140285}
2026-04-12 09:48:11 [Thread-42] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destroy. 2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.r.f.manager.ShutdownManager - ====关闭后台任务任务线程池==== 2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing .... 2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065019054, msg_signature=3951e5c0798ac44d531923db6ad4da2fbe1aa6ed, encrypt=cuXPbB+qCqLqKNssY8xetfQPEa4/vsFlfimLFBn586xmaD6bqjxsTHWvi1jVpd5h2CFChCtqgniMIqueHrPdhw==, nonce=AfUcHUQD1efB4klY}
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Shutdown initiated... 2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"151fc508f6363c520ea6b9192cb23a73b1fd1090","msg_signature":"151fc508f6363c520ea6b9192cb23a73b1fd1090","timestamp":"1779065014023","nonce":"PxO1oGmx","encrypt":"FBKoB/nJUq8QLTEfavJwaMysmUAa0+5HacszHptfORq/bsgYOM26mx3DwhaIGzh9ttEw2fVDl2eV5FqyvjBOc14/AxIDtduB79cDsrEAA1GpEiht116dgzGBrZLfJf37C9g6j+UBhaMa5+NjplZe/mW4MoY8+mNTJLocrFENh35Jo+a97kdkjPPww5eg0tU151jpzv2OnPystg6CELg2FwS2nkj2skdpOHH7F3iOfJF2QcJZJ4nmKYfUAnLziVyKmDkj/4gklm/qWvr5vA3SxzZPLNHg5a83msGtj+9AftgXjWrWiSJsBuTzgzgaUq9essoNUJZ1ru6q3FbzGQ6UNLEa/GDJXADGXqPynjGfi5maFtd2k/k5wGsyzGv/zgrttEFTuHMlY6xOkWcQLQgarbgEGyipaDzP5ma5QXWA0mi1aXhx2rBa1YY0YoMTKkff+2pLVas9U36kb8l0XVVt8iQBo/PU9v/N3Of9nSr0r7/T5BUm/ClNCHUxF5zFjqfrzkSo3G+A9As0Irff96mnznGPrrz4/QyKDwouXgtqPuwdAzBFMvSKdKGq9IpBOYA1pqSKqG0vGtwYKwZuD0A9YaW5mzc0gARyDcWqHeC7odlUscpm0WpbBtw3o+2LPL9Jlu/slhhqGtfKlcP3hwsj/gYNLRqEv5E621Mx22JhfAv8vktDSC4WlyhB/Bs8DWZFtYe/Pv3BrFL1KxJXqaV9p97jVfyNnf3hpoM8lDe5K/K92qQTuAdPmvMDne4NYQDMzvA4BUerVIIFeuGnC3Qm9A/G8XFLFrAbJDCAyshciUZIy1qQyU11qfE9gBy4/Z+C+YVhVev9dEYH6lgAytyN3ZCpCX7IGcPFj3jv8UhF8lQASZh7lBeHp72tvCtAJWVfgP8qU3IbVJBqOlFd3dKwZjsJMu9DuXez1PZXl6Y4/6kpN3JskVtBtxh95mIH0EVGJ4s55y/fmCHO2YhTg8EwLpJJyBDbxEWiZ9f/XFjps7QxQUDSaDWwJxjDKxI7WlU1uu3T68TSt723f44TvthuS2PDEBKSmMwkTMkgApJ6xag="}
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Shutdown completed. 2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"2c9565538e3b46b0b4a237002ead56cf","finishTime":1779065000000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1778925260000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101156217321}
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown initiated... 2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown completed. 2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye 2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:16 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final 2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065020651, msg_signature=99248a0fbe146e5b0c5c84a9c9f6f260cce255ad, encrypt=zhOdt6t9puYa1OqLY9Jk0yjeG4I4YarWoV8JBuzjg0P+EhHWKZAAgiEgrW+5LhRYcPxegD6Atg53dMqcexW0gw==, nonce=RlYjgrnfVKE3yBMF}
2026-04-12 09:48:16 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 36660 (F:\evo_k3cloud\ruoyi-admin\target\classes started by Administrator in F:\evo_k3cloud) 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"53af8acaf7b0ecf05f2ac7cb31af738f95936f55","msg_signature":"53af8acaf7b0ecf05f2ac7cb31af738f95936f55","timestamp":"1779065046707","nonce":"JPEPQP6y","encrypt":"KXFNdwgUcJb0VnnmdYLW6oN4UlcKr+qqGP1AlObGmObNBxb6PupKxD0SsWcG8VHOTRtcTn9K8bnDW8pqc99SU84lV1r2WLD1pSM2UJ/WBXzpEDRIhshJTpFU6/T/RCHOmTuAhDhjT/sfMMrLCYptVrDL8kHWyq9QlBXWkXLwdpvT6p7JiQFasALEY/tC2mrWIrHMOBg3Quky+Qd+k2UvC6w+AEmvMDzotesDrG9kPoNyg8Iv9YbiYmkdBSGOghfxap4BIdBrSI+M32NTSYa3fgPDLXCBZBH9VzfVyRH+9zudsqbwH0RRwcLwi62xzGzFNIJ1bgW7/vYrWG0/XLkkLvU921h79PHNPbFifHW4pMKgs038xmIgKNs5PA43aOitVkkLVTfxsIi0b5ouL4qotirqWzdA4q9R8bXpq0TOnLXj5UExOEI7r8BAqKvipKhglvX562+RXckRsfdio+8gXLftkyP/6EOr9IZMQvqGE/6NS9z7PnPY79wXxDLYXYYF+YkKP6Bm0i+U1RTK2PrnUXy9TZ33C8L0d0qtEg4kN+jAhqSpbQWLGmYgWtkh9Py+ffkAKp0j11xDkJ5/AQ0eTNyIoNjmM3X/J577cjuwbQMwVwvzx7/Xtux2udwN5y1y659hO2aKj1vYHtEMhtkLbZQPab64hWCznXQ3yLMr2OSPzVVIdOZfivLSXVb3B5dgdrvn9yYVQLIONzffSY4NgSFqaM41GIZbpGODUJhtKfs7moxNuwZUhWT+4XNfrL02TngACXkYoXXpQ/BTo3flfqNHhbz578oQT7iBAX00gKAma6N5I+O996k2MduDhaRSYNQYUos4FYPEMJlIOWAuggtXsCTpN4pL+CVoHYxtvCCnmt/sTTf88C4PSqrw9rNMGg7nFAygHsXpDbQej71rQm/HuQy/42iQvPbsV6EKcx0MyOTgqKQx+ngviOZN8Tzx+JfdSCo8SU3hGm/mYioRBQzJJIVRGJ4v7hJTyNj66stYjUPdxukFVp0z9PKoszFAFB/OMeywx8j0WkuDzXC42CZ+B9mAvErP3T1/MCnkOF4="}
2026-04-12 09:48:16 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev" 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"2c9565538e3b46b0b4a237002ead56cf","finishTime":1779065000000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1778925260000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101156217321}
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] *********************** 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.* 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] *********************** 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao } 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065047037, msg_signature=cb8d08e20dd2bd53f274f44102a6d11531120db8, encrypt=mI5mn+MxHeD4hlBW8N7c7/FPWtv+3gMQw33E+UgzGSZ6Y/7yRiXCoivnNjCuQVaZ1WKEckWXa71ILEd+tD8mSA==, nonce=2kpXyq0M14ie9Nqf}
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao } 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"508f5a217d52b8c82d50fb9644e953a71a85115a","msg_signature":"508f5a217d52b8c82d50fb9644e953a71a85115a","timestamp":"1779065046761","nonce":"ATZhGQjr","encrypt":"Ga9seFWKfbh5sLt/i2pbqz/4rJ+DOiZKnDO44rJY7X1tud0WbDSk6THp4DAyjhdRL46pR8tF5BjJwHRaJ/xZWP09J914zXC3jir0Ov+IjCyQHTmx2MEiRM6xzTnjWHWKZLneLvf+wFvpxNGUuuJ5jcPCXtpTMAK+r5o5R9qXejETFkxi758EbdnOoAVstPKUkWhKOcnEVPzKygj1aNG5LfnEAHUfiN8PtcC52x5JAHOuBTSBTGjPeEwtQjrYR4yXzGcOQE5bxeK5ZXYomsneHGpCV+lhryOP/fZOJ4Z2Gae0NUm7M4K46l8OlZStvgtvDv6qQZpQLrs3w+JxvIcQOGFfQ7/qKVrX9HlJYT7bJv7dC+S8cyiQ+mQebP14rgllmayZMe+Mi0oZFJ5HVj2M30hvFxHDdP1Mjh1htAgStuxO4Nhlj5oWhrYR/ZpWTBP5wqUKAxrvrMTdkntk2YrmHRVOdPqjlGOxNu04g1MszImbD1XoZjEoZzYjg5G+UIY1hk+lQjEBjBuyORKltplEg7jRP4FShd9X1eSP/8qVEyJsSeGqS0r5sEThmzTM+xd5Y2De52GMZ2/QtpPdf9arGTEioiq4Fs2tdN3wpeDQ5PraHS44ScrudBIsrP3PZCMzPaBxS74WKGedgjG1DYrsst1i95QSgbMM7oD4aT66tH6vNugFEr+5q4mJ8GY6dhM65CDuZ7l+H9Rkziyi3w+HB2GERnexNOCqMQ+x/aHF9ggH6KOg6VBFzbandSXDbqdXWhNH4lghvUO6RHS/KbKbLcwjBSH03oTK9AcaDpojvB9zDwpL4gDLKQ/tAnJ6wh950eEAj1l8joX4l6VDdAlihI6NjC0+Twha4LArMyrDcFjsLH/vt6XLxMT/lalf37j1nsZpqitFAEmU29ufX7vac19Ns0m5Cl8gX311tMW5UPqCVoYUCrB5ima2S/PhdZJ8cg6KQN1QmX8f7FHZ5RhrtaCjJwGuHZluPwCPEgmrCsldDio3Y/pulATxw9miG6Xb"}
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao } 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"964fc204bc6b4e5dbe5755eaff059ac9","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"研发技术人员确认提交方案","actualActionerId":"01190846452221394385","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779065001000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"01190846452221394385","taskId":101208140285}
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao } 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao } 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao } 2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065047056, msg_signature=19ea2bbda37a333721f38981d8664edc9aa6b204, encrypt=DazfUoxa24dOQ1soxkwY8RlMK/uxrmLy26HoOXqSau7Wl4W3YIQGw0fBkCxSVKzVHcG//r4survYNJBe5lajzw==, nonce=TH8hU2Gqqh6ZWWuA}
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao } 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"43b599e80b6a82ec9da5b39a4c5dd211c8b20753","msg_signature":"43b599e80b6a82ec9da5b39a4c5dd211c8b20753","timestamp":"1779065112957","nonce":"WvSX71ZT","encrypt":"EYP5+5f4KID4oUN7S4SL3GO1zkDxrIoMj1uIFCUm6BXIClr1eoSJMB6bUs2610V1Yklt0P+UAkbXezxNsLSRSGG09kQ5Aw1oxB6cdPCa8A8Sd3X3a21/FY6Rz774RzFoTlSrYqtCzNnEPQwz+war8tv9mdmDSjoG8KLC4YjX9ShvORlDmHFQs695KTof1bjsacTr/8yRnwkqZe2j2yVjSKxxxdbmAJjynZTN4c6x+PmB7pmWehv1nxW1vbvG9beBcpqmuKG7iGep01Rd/tb1Py0IEOK0P/2aNmGcLp0juxdQgq0yqHGw5IRO9gasNIFE2H2cx0VIbHepXQZT+Z0OIQ5sA3JKOFDJibt+TwA7GzYU95xgBsUIniiKjvLe78/4iGhpfGXFkSVAFXDts1xwm1GyUAnFlguqzwSqhAyPhXCTVpjAk5ZVPRjgD1O4FC7upsq/Nx/Cmed+HqrqXa4gXeUX83g6/ieqqUi0SGsRoCucAvcbG4zk4humjasFOjDVobUuc7q5cEaaQk2DiCY0YRID6tXB8YkCRBSYCi0KrApivsiu0PlF8m2gBydX4kRjEQbNXb3Cq5ODvnwyhZHS4QDJrrei0vivsEyDSfsNLMxMdCMQF6Nw2ZBYdHu8cxhin7FeplrUL766k7tE0Bmxk4FVLVkOKPD1NZzIUlFHNIaICiSLiubwhNmLKGMp+8B+HDlChCJzPgjVD7/tvs3qE3r/JeaKLG5Vyu+OoOt1RtILxrNP8ZTn/mFf9H0TvlNMwqUmcL4oDoDMA8kDFr5TaSutjJPlrJ9liZym1IhRFURznIHQM2JU0X4wlKIptYy1Itn7iJFgAAdv8xiIOhADa+A4b5jm1V2gkFhjOFMFMZ1rOMcNr+VqHQuNhmVPnhZcBJkd2VIW637cWn7703FYB04ywtCa17ZsLGDPVC7lT08mKlOd5/VxwQkMs1KdudUaRx8YtW5AJ1UOMjZExrW0JQ=="}
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao } 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"JKgCIslCQR2qzoIzZnUf7Q08411778920494","eventId":"bc5c3685bb93498a919fe06ecaae2e58","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/start","EventType":"bpms_task_change","businessId":"202605161634000544911","activityName":"经营副总","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"start","activityId":"8d29_685e","createTime":1779065112000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101102815300}
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao } 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao } 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:28 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065113261, msg_signature=505512f6b7ad5c8129e4ff9782269ffa2307cf35, encrypt=8aDUY4z4kZH5cWfjfTiwHvLpBQJQDYjpigceCxAzaNtkaOeejha2q9kEX+tCYasbhwwnYF2/WGe7k4taZXEEVA==, nonce=1HsyEDuPygbImN9T}
2026-04-12 09:48:28 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ] 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"0cb550fd3367bcbbeaed4b5e724fb2ed0bbe2523","msg_signature":"0cb550fd3367bcbbeaed4b5e724fb2ed0bbe2523","timestamp":"1779065113095","nonce":"60fMatQl","encrypt":"J6F3oFqSbAY01+lxPB2mHN/DbUx9bvgpZKhDT8csLgK4yBR5e27CWMlUuxQpvj+7adkANu91SR/SNVy+pOgY9zSk/BqaCkl0Iwzh588VWA+56of25fbno30whaG/f8G1acI4EhsUmNgFXojgD4Dmw63QYKynCxpSAyOnaTrJksGyG2BtP2hT8XmOap9KPeXkamXZcyg4abgxMFAtlCW8cwk4XdLCx1VDk5uaOq9Wfrh485rfkD/H8pmNmQjb/SIVhSed9qMeRNCN1CNxx8fFxNU5DZKpw7+JSSptrE85ugcU4jlCZMd32N5o41VWkRovhz6GAYjF58ZrhGrHJDAHChWXQucnWngf9iYCHp35WRpD1CnAKJSMR6RW2n3Qs0Jpl3Umap3RoOq+jCzULonause2O5lJtt6kgKRWLK2cEaKkEXMYvSoGDhjo/lv/TYbcpY1mDeWbduA1hWV+ECvxWiBAyBahGpxziUUIEZ/TsHYt3nihZqO14ir0oIhqiww55TxDEN6NiYduJ8/nG+J8gTvvC1v5Rg/Dfpiwi73q4YZRcUom9I+Sqq55ee1FugtPk866hhefyWhXv9LXqRVL06HSP6mMrrn0vzNGrZE2Jo8v4yJq7fDFE76g7169XYN1KPZt97WPUWAufd8VmlzAI1atYIRNfEGXzsJ9/RQQO883W4CKBZ9eOFujsT6cOBk6Qb1qHNSAjbQE0OMgBE/uHJFHEjaJt2cOnssUHzvU6KPaH3iZAIEpjaM21G+RLq71gyAr/HRjKLXlI4FleuEaeDxd5jOXxHqclpQ1nfIMum6EnxiMapsug3D0rJSgXLU7wn9K+ZQSjPslK5eb0tkQ98d+FJwWbJVsIUmfGe16syMZjBjBRM5nyFHTIselrlnKQSOx91e+8Jxy8T9TStD94YGdWM/Gm2yvie99zqHsWtU92gW485HmXfaAS64WN9ljivdfUZODWhkFz0hZDA1hujNoQF1mkkYrmPdwUl5ZfJu5Hjm0YROxCe2phhJnNhecVK3YiP4fKTaNNZW3AkomCN434ZDqi8we5jRz8bIE2rU="}
2026-04-12 09:48:29 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"JKgCIslCQR2qzoIzZnUf7Q08411778920494","eventId":"6502eca8185f4c8195bea87a80abee2b","finishTime":1779065112000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/finish","EventType":"bpms_task_change","businessId":"202605161634000544911","activityName":"部门领导","remark":"同意","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"finish","result":"agree","activityId":"1918_5cd3","createTime":1778920495000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101192164822}
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting... 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed. 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Starting... 2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065113402, msg_signature=b651d7e1c4444e9adf24be61b9e0df96172aca00, encrypt=FB8dufTTc5Kc8JAkw+FHuDRbi8IMVinwZG9H9ipKIsESAGyY2fcVJwFu+Hb7MAZbWuLlEyhsycL8VFYOUhVAXw==, nonce=tBOFL9i3StEMSFED}
2026-04-12 09:48:30 [main] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Start completed. 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"3e58db1bac0ca405e8bbeb90ab02b80475e7b074","msg_signature":"3e58db1bac0ca405e8bbeb90ab02b80475e7b074","timestamp":"1779065132842","nonce":"bIPVo5Cq","encrypt":"YAhZ2QGV0Tcpa3cMi3KKqdLXGHOm5RxxvD0XLar1SGvV3BtoFyo+Gv4JHhD89ZA660Qgw62WSy9zaUwCWNPJnzLXKEJvfRE/8lvyQ4KSaVof6O7WmIj0AWpJZj6jt3Iy5PJ8UM2yo6zKNiiP/9jttQ1sjOCrcAHVU8sEEuh94oho5m59P/MDm9vXHyJ4HjRo9KduEnaHS8quXxyWSEO5eABICLdy3rHBr47EUczxO/Wc4xIXpn9Nu45NqsXE2Qtcedb25SSbNkCeDNlNMm+e7xT9vucXH3VwBeNeZ10rzmn8uaW+ptBZPv9H8QW9QsOk4zxEqSv0cx0E2oKvzgVJS7BW91HaqPjAaM+f3UevzFx73xFKWn/IJqHL+ZWAP4Ov4+tfedsk7n63T2xtWWlH7jk+U3PxVQe6cKrsYwH4PioAB0qnG1xTaxZyUyuZCgMzocW7yDmkyfqr5Jb/Uci8LXC9BBfcaFiXF0RdepajoNhILbt/JHCOZUZZABLUVrdnQ0Dr1E/xxn1ybdtmRWrDZ8WvIC8+VIjsBXcXEv2miSr2xwmQdh8zbwDsWRchXGTXqbjLKidSlIUpyjskgiHY8rU/j+TemEXtg/iZzujjWmiALfz8Hk1Nwud+H9SZ0fw107UHHK91K0+SR+Nykoq5N6KTva3Jf9eDO25F7fPPAW1i5f7VkjBlrRD7UjnKtjTkNbUilJxdmzZpr5yxpP0GkUvvEEfcCVVhQ94y64bIgs/W8rtUx3G6ZGvGB3HrzUBA3pkm4C4H4+bidCzfLLWLvLIf1g89OL3WjG9Hylsy88Cj7vJmPwJreICXSMx6GgzhLSo5abRmSd/y30drbLgrkaBAJA4wEHj/QpQn517/VyM/wmxdvjRHtS0Urhek4G1odkPaA1cPsxykTUxOGNmfbkV7vKyyHtzGkikbsYCcf6O1Gidl2TLF/7N/uUWknqHNsRTueTYuAOlICrhw0DKwsg=="}
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"KAZXa5tFTaOO8AtVY2QUvw08411778920716","eventId":"949c5fa9e58945468f8ceead2d47869e","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605161638000369846","activityName":"连续多级主管","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"start","activityId":"d4b7_f54c","createTime":1778920717000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101087267117}
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [sqlserver] success 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [master] 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065133167, msg_signature=c06bcbb9e014a31fd27d4269f286df131e655587, encrypt=Dq/DFJK3WUf0+vsVxbCmA3L+CbEx7wa5rxzQ1bQR4FrCYXObdRTZiNP1pvE/MeumYK2+WPlUTFE0NzPUh/QcCw==, nonce=4MRwyxbHvZvuQCDu}
2026-04-12 09:48:31 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ] 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"5b8b4194367686cab0a63614ff83f3136be6625e","msg_signature":"5b8b4194367686cab0a63614ff83f3136be6625e","timestamp":"1779065132847","nonce":"BfBBSSlr","encrypt":"n5X5/Cqd1dsgDLH2CoAVpxEpRRv0LX9wLdfMx+qSBfkT2Jq6+w5IElUA0vX/srGcnpRA2DsoieErXDJN2VrFWocY836zFwtLkfQPr6ayOhrXn4kzVpFds4GKUF6jr1gCAr8Tb1h+ossedvBSnH9gESkn3/5D7R1xOLwULLEMKw2zq98YIroeRqB4QMpl7siPxlERho76krodZ2Nx0pFnxS/DsPCECaqACo/tXInO+Js8/HyrJ80IgSP9ctFDwOEQtcLlXiLrrobu/teI4Or89s7WcUsDe2yIAfkfvCb8yU7t3dBoDM+c8EbGPdBZkH2iuC1TvdyeAN2W+POtdbXTHxnBe5D/jE34LCVRlbqWOMte2zkMPOIzJZW/TSm4Eijg4nIhIIx+bxWo+qqQPYAgwdZDVL1eIvTaInu+fovEMAKUMlKW40VI7314xIXiZr5mzHVvMTdrRFmINOe0KFCPfjNQ0hqfRnjeEgeMSrpGiI+0LD3HB5GtZIZ92FcnjuyIPjnszwFywi3OlmGp0HAP3dLtykNS8ZJRKFOCMpoC7USpltwq2lsRIrfJgC81JMJPqci+OAGDe93QlgXeBKaMfMIR0Pv9YixAuBEpv38rB+cJswdDVQjX6afVRn+atsS2wMwas64l0Q9WGyWcNQeDALM5TojQygPGbUbaY8mpx13SSxuacHXhAJ8rajyRo21/yBC+d+9VX5HOcnT3r9/l2C3NOY6qOHxE4kfRq8+w6CHKj8uDrVIlMqdZ8PO0+mxf8Srh7UYW2W9dOP4jfN8ObzqCmlzCKUXVnXXluJsMMBv7syKhAatIPzVCc5I1iqZIzzq3R6xgp1AWh6WGzI4/wvLyBR+JykvXvOYJNW82nxEoD1STKg7xenRAz7MDH4aRiJVY4Bxm4Ol9HgmnC33Cysgk6wBfB2cysSvtrifj9WEziTWfUng2FmXkxJwC2rhf43xJGK1c1KX/dWRje2uNhReCZ0ulP0xQTqHG5yZB54t8EIQiaGAhOlCByhRQfLiie9Irh/eNs9Ebs5w/kcZG8efGkfF9Wr7E+tbw8+cYFCg="}
2026-04-12 09:48:40 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"KAZXa5tFTaOO8AtVY2QUvw08411778920716","eventId":"a5ce68c03b9b401d8c7cdb70436ad0a7","finishTime":1779065132000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605161638000369846","activityName":"连续多级主管","remark":"同意","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1778920717000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101087267116}
2026-04-12 09:48:41 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:41 [main] INFO org.redisson.Version - Redisson 3.20.1 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:42 [redisson-netty-2-6] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379 2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065133191, msg_signature=0b0f1c566e002900c2002459999a55826722d691, encrypt=VsD9OVb6tPvudNloyIIrNkMM2Y5ieWPlTzMVJG0Nc1VqBNpW/ADoQ7yNC3Jworw4L5czHKHFXvqfBDXCtiZQ7A==, nonce=qrlBiBtlKSZjzhTK}
2026-04-12 09:48:42 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"c464e1e7e4d359f59d2a6ec89c5723dcfa7d3c35","msg_signature":"c464e1e7e4d359f59d2a6ec89c5723dcfa7d3c35","timestamp":"1779065147219","nonce":"g0yEIztf","encrypt":"oQGmkxECQoLfYUzEoBRWZu3jAxdjMPP1Rv7QuSi7AinNYLXxs2s4/+rEMdasGKVfR7IX43qgm7r+P/kOpN+xER7cqUyt78HnPN99Ct/dyH1Gm49dL6Wf29iXzANLlPdsCitJKxyQArxQXg/2W5UWpvqNyoCZU049M6r137RHO1oKcZLDkKvxCumlKlMbw1W6RiQEDV4Ihx1F9kYdbZG+7fSTBLsiV+Qgf1L76/1/q7bess+5csmlWMFzBG/U9P5vcrJKdm8baQDxleUYzkP9mz2ft4YE93kBkgaRoyzcQwB1wA9EqPqnKvvAVeGBZfD14dmoC1ZqjeQEtuBMQgT5m90zkLqYvVG4HqGJM2Dt7E2cLvdSU2tj20TY/5V2QtvHMk13BuFl76B3tuVjd83niEKSK2IjZvzstRxHQAocjew8u6VAfhTTnUkDEdmeWsvZ56fUjgZPiiXya9ZxOc3eQDE4jIk/A2BAfYU7+5+RaawfOSGIIqfZkjhk0Pajrxrmpy6ZAaE/B/e+prIbKN9lGx6KSFHxFaJlkOq5C+tBPpE3/+fQZjr0T5ZthmWuiCsHM6AhwEiWrSdKnDday2AjVYr8dm2e+D58MRizMtW2GK9RPWiaNIiccLIyQnNZstO61wmxeSMw4vY05IkEEDAP3NZDr/hSOd2PH4zzORncieFfWfD+n7CFpDlDowjWMmuZ+Ss+ky3aQHjE0P5OavmlBExeEopnSBiL7JdPu+5jLs7MK39B4fzHOzWdqXbQrFKlV9g8xhlR+wXe0oZrfjCau+zLHss0muEf+Pb4gCvNb5uG7zKDLJZ8g9uvCi3qUpMUCSv9pEKsKfkxOJR0QS40sMSJkGu1qhaYqKPuleX+R8HgBCrgdXRzDz7JbhFpvvAeNKj8hZEiebkQQp423u86zY6BeZTUD5eJ3Z6ZFk3AXmazdbkcC6s5NzVzH0KuM0Z0FBopouFAUFFer9WBFGJLXaMMakUE33uXpU7vMjaVYkHBZaH752KKdOGFbsgojSqOm1d8sMfCZggLJ7/BPsZPoZMf5KdfY4Vsf6wMrufpfDo="}
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - -------------------------------------------------- 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"zXa8jMa2QO6JJBnfFHi0zQ08411778918891","eventId":"056e633ae3974d528246939a73ea291b","finishTime":1779065147000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605161608000119008","activityName":"连续多级主管","remark":"同意","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1778918892000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101154557980}
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - 正在启动钉钉 Stream 模式事件推送服务... 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - ClientId: dingebfrpzqko25vo8w6 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - 钉钉 Stream 模式服务启动成功 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065147574, msg_signature=9246ee84e9c5aabe7525ead2a9c0b39ae4e7e1f9, encrypt=J+m1HvJSigaBvvS8fssPRzzPsPTRtSLxDLIRTAxm8/g1RucL2yqzl7uBnoavIK6IZeEs7fsab1mYyON7ZNR38w==, nonce=pta5GS7eDDk4alc9}
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - -------------------------------------------------- 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"48921919889340ad3ba23da6e59c4b4c75bf5854","msg_signature":"48921919889340ad3ba23da6e59c4b4c75bf5854","timestamp":"1779065147327","nonce":"SXOInfxz","encrypt":"dVrMPIoa+IB/nn3T7ef0wm+rFzvF1DmN2AL5c5PGshZT2bR3fHbGOQCy6B0ANTsGO4aVTIdMztnECI4ZQoc1U9NmOqNje9LA/f9BX9I7+HsB5HIOtytrqQsT1vkXflL6uv5qZTb/UItbBTLR5jNIszB/U7Ef500i2vxo0xV4CkyY8qyYdaRRaLcsE3+cg4VHijzUclNELNKQwt7rq8EHjewThgckcgVphT4BT5RWfkpZWBxJQqmpDNTKwmEGlAcOK+uap00l6r4L+TCjWWerB5mbfdPkJTIQnck7qFwJmufqwX1dHO/H5/IyVJWkbx3ayrVg0tD3rcAw67oYXgaP9g4l2tQc+ptTUMjbFAJ/ZedyJ5xo3MfyBCzvfQ1pk6mMP7G0T0c29g8JM8Q98J0RwoHaC2ycf4NPXBLAv49+au4e1aiqfz7+CLbsic86C0oZrA+9V0ZNAUhJGR2R1IYC8pvhIIl9+2uc7je0GyS8ULwP5g/6HVTuiOMVlyFJ3ypqm+ldYx/88pmYc6HUYY450ZssLnIQ58D4MNKygO8MU55Nk4Oh3Ch4wEWy5MTlvdb9tFVSQp8NQ4InRuRmABVeAKhZAV0MQutsOWBaJHjxTomIyAvBnUMu3RK1mJ55qwKjbhTYuL0F/N3bSZkxbGBS39uOnFNn6IntHAFN7kD2dGGk/JC2Opxl1Q7hV4wLRHgMMmyWu0/miU+7efBPgLz9bMkZM1556HXk5RCOlQyuHW0atabF6STqzuotrM7DbJCdTiB8PxOGgeTUnGhJEXa8qSt9ncWTyD3eGfR5af5oiyzta37tIAH+sqgmoKAu1+0XIAPdE0JLjgRWwC131dcacJSA0BcvM8TjJQOv7QD9MVrZzJ0AmYKFt5E+4mLEtuc23zGUuXsE9vFEZ/y6MlrNKv8hG2FOdgY9kJOLizaiGFCRiHRZgY7J+W83YknJKJPJzZoGcHoC7Gty9EkI/7qXUw=="}
2026-04-12 09:48:49 [connection-pool-2-1] INFO c.d.o.a.s.n.w.WebsocketTransportConnector - [DingTalk] start websocket connection, uri=wss://wss-open-connection-union.dingtalk.com:443/connect 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"zXa8jMa2QO6JJBnfFHi0zQ08411778918891","eventId":"0d037e11fd954c4cb2bd6a2ba6053cfb","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605161608000119008","activityName":"连续多级主管","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"start","activityId":"d4b7_f54c","createTime":1778918892000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101154557981}
2026-04-12 09:48:49 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init. 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:52 [connection-pool-2-1] INFO c.d.o.a.s.n.core.DefaultSessionPool - [DingTalk] connection is established, connectionId=c01791eb-3611-11f1-a72d-ea7993a5e174 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@48515dfc[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$3a3fb3c#updateMaterials] 2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065147641, msg_signature=6314484061fdff8497f65b1d5e9bebde716cfcad, encrypt=wtMMn5d7xJnVEZ3r3lLqzM1Qz2wJ1ocB/iVWXXiSD4wG/sFzUQxRC/rBsPhHLWXcReXzNUgL+XcayqPTMjCiPg==, nonce=nRQ3eTsPE338pJN8}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:insertJDMaterial, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@8f2513c[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$3a3fb3c#insertJDMaterial] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"52df9877aeccdfe89752fdd46784be64f52a4f42","msg_signature":"52df9877aeccdfe89752fdd46784be64f52a4f42","timestamp":"1779065223916","nonce":"pkDqn4f3","encrypt":"QOpo7urUo3Ap/Leh7+YJ2cFcD9uKEbO9if9xngyepnaMufZSjFxpAHSp4+q5/qOPJuhoja6kkwXbuQJs4fNgRRz44jR8EeoGUuDblksZnxBEzyHcfal02ya6zmqhsH+la9hBPhRnE68dQBh0TJvuSGfbN2Xg9e95Ca2jkbEY4gGrCj8gm+6StN9neMm6nk/Jj9jPVjEAIqBuHKKWhDhd9x9n8KgLxhqLtglzQVm6gcELDxKkdgFDMkudAUbE0K3vDcys14VrCnMCSpAPA73secxPSfwgvUGOtZ9NWKIKHfUXpZTNxOS/4EwlC/+TXyI7AM5Y7cvTfw1eNJWs6sQzd1BgeLuzKt7LmhXc7P8kGJzyDlXdLLkVS5DsRC6BdKSk4oQrrCnHCHK0/B8hFatAaY0MqnqQct0WthJO2PAhta26IP28VLrPlL64Vj9aPLxj8k2QyW+MRFX0hDAv4sVwwnJJFAz6HZ6tgnCKSqQmgX5qrIKVbBRjXNJghIgpjoi71Zw57e1adAINq+TzmqkBXhRi4BgVqt4j6ULI7OJmt6kv7ALP/k77Hnibaynvkc3vxNPy9EWbk+WV6sN0T7bgC+K4F7CqrsgNMgrvkvnEe93AU9dSezn/2CqD2uQAJhRiNTcm6uzM0gl3dR0XKh6i12NFVfL/EkMMaspXLYjbPRWgn9D+HBimoboptL5ItjNNNrc5q5Yxb0MKx97azLcdqwSftRjhhYvty15lk3JMxz5SnNgcl1NCWRxXkWASqYfAecYeJ58mtLJimyRxwpZK/zacVfJDvZkVyJALojJ0rZiibQd2Wm8mahd+dYr29WDGtIDWCS3/+DsYu2DeoA5/bE2kBthmKEY1Knr2b+Zici213zG5ddt7jMnX/v0guR+1F8RdSTrKgaZWyhogD9hdJ95Fjy+KLX4VS/3fi7EpO8JxGt+uHB1OQOYQddkgBngyXCkgJGes19llvYdafQaNjQ=="}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@561b39f4[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$a28d31e4#procurementOrder] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"dd46634f896b46e7940f7922e7ddc1a6","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/start","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"生产技术部长","actualActionerId":"01201038164023402380","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"start","activityId":"b689_7c0a","createTime":1779065223000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"01201038164023402380","taskId":101102887296}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@587107c[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$a28d31e4#outsourcingOrder] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@47fb038d[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$a28d31e4#shengchanOrder2] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateAssetCard, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5d9ac1ff[class com.ruoyi.system.controller.KingdeeAssetCardController$$EnhancerBySpringCGLIB$$dc276134#updateAssetCard] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065224281, msg_signature=f41f941364bfc63ec4b274dd10827c477ade0c03, encrypt=Lfjj3SiD5U6iJAuegr4KjFksXIZTwbjR6IFMY49El+GGDj0vP8cNa+4vmGKhsmLvXEK2etFtkdKC+2Y8y6Htxg==, nonce=CMI2CQIrp2Twir8p}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@52418721[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getMassageDelayDate] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"2ecef8a28c522ab10e13661bc48ba6d10130432c","msg_signature":"2ecef8a28c522ab10e13661bc48ba6d10130432c","timestamp":"1779065224084","nonce":"I86iOUDE","encrypt":"3iarZzmYF5E2lPCo33753FcVZUwFvMhuobSoZ8DhohcfL6QgR/Ayln1DgSEKkPE4HDdWaA+NeQIX16pMujn7fBIGbfRD0nnab1fPtb3LoXfY3m/DxhkmL6FkGN4iLWiR4YpICjN8CGEBsKz9JbBGga2uezAlCRUvwtnEs+0FYR8uJTdLUUeSDnxtjsMdAhZEiLfNeBvUkcoEdimgsfrovmoJeFpd9qDksNQ9l8cMgqDdC8i1KlQiFK8ecksBa4MZ0+fQckZjjTR5lIlLAwJLpSLMv0vh3AEHOyjNj6QhZhKYUB9UZV6Z3eCpr6bPUpc8lBcSKS2oqSg2g3OjX/JsC9SSsXywyQXBWdkQ9geHBlpgPsxQ45rtCBV9BUPJqgwRjbiTJk+noVmQA3slpSUBLqWuih10RIRIyN/3eq3C8CSgMS3udSXecyb0xFH1KtsK3mmJgbl79tZGQg2v1FTJ2HTi0uiLjHoU/LvXOcQBKYFi8iVSRD+SQ0dckdPSEU1/RfqU4CkP/CpuiBG7s7vMX/x4nU+HfwmlzLXvn+wI4oarnAElse60anGm5Mes/QramHri0iZTJz1Spp0URySOKHmkHzkw18AG5AMFOLXLB/3PoHMHFi2gDw9eNYsoU0okZUNf5sStOfi3cEQPsV2tLccoqMChEk4a9F4Xa1lWm9Ld6DLBShnfT/PX082+4/pFKTC4sDL+o5P+VGqnfXCRweqGf/V867gHNYfdq8qAZsaNx6AeBFs4FdYiz8vbYy+PgdIm/9ymOBqCaTA3+GlWMktTi/ZLyBYQfIEdaPUk2iVm0+MbnswrlnmJmn8i30RNYrEoTpbryEsegwOXZihCjm/Q1NIw2KDxpxGfg7b4QdhnMlnDbPhxWiOHiQ5AoXlyCkBDvQ8v0fUdoatgz/5xLwcg9rxsQ+dQiqRp4PgCpJ4Cj9e4Ca/66mhMyN+q7Sm6V82pm2HeDKFiYixUczXh2q66MqldzBRnJE6TIGYDEvlveNnF6Rx6iGKn2CCX7b+m2eL0NBsHLzguCUHx5Uh5om90an8yrtAfJPb2RbEd8SA="}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getConstructionDelay, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6ff879e5[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getConstructionDelay] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"670e81d6f0234f5a846219befe190800","finishTime":1779065223000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/finish","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"部门领导","remark":"同意","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"finish","result":"agree","activityId":"1918_5cd3","createTime":1778914560000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101190804299}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getUninspectedData, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7080e8fc[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getUninspectedData] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getApplicationMessage, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7b9e4a2a[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getApplicationMessage] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getProcessTransferForm, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@25b8a2f7[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getProcessTransferForm] 2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065224440, msg_signature=a22124125d293d7cd10626e761bf6857b70edc75, encrypt=uBchH/FqAWQfeskoBAt7GrHvYA7w1dISMkIqrI5lyR8GHl2x/MFom3LhMIAxt4FLb/0MBOTYMeyz7vywRub4ag==, nonce=YPMYgQxpioJutSeC}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@9a3d0f4[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getMassageForMultipleWorkCenters] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"fbee3ef8ba676d11d1540486cd07d804c3eee493","msg_signature":"fbee3ef8ba676d11d1540486cd07d804c3eee493","timestamp":"1779065245377","nonce":"BVjV0XJd","encrypt":"Adgsvb2N0fKZD6qiGjnC1+n0bwzzOtfGn+UDYOrmJtPUUPjVcv8ztYCGdI1Dps1NWZ/y5UHCEI8yQX4Lauu2Cp96pi8cW6WbObBqXMyhv4ES1zv5xPIrfa7cYK4vTxlIQtkSfh2Q7Ir/tyJQSmsjkOxoOgtZPyvnRWBVTsuRGEgGw0IdqClhop1WrkHPcNNBXKxPfrli21jF8ApZiyiTeO1aVrO6iAtLzLlTd/BHGeoR7iWXwq5htTYBFLYHaJPEdTBD3kt4AhMjKAtRSycA4RW7hPOS5hhxj9t7cnwNLdecsYlXPNMMGiJI2dFmkMLsQCr+o/vbulVoxA8Ft8QTocG2wAnrDoJYAt1CQytJKyT+mOnw91q1SFKXWChDfkLXqsJFl6dh/KCwlM9KlL6kGiEjGguWd5TqJngjapBecTRP8fpRyAJRa7EG0cegLFqTTVsFYHCHQgaLB8bJT2OrM/C5tiR/tukMdwnBC0w9dQT3WJB7YE4bisjIcDLu8zFi+3RJq30o09S8qdqu6LWOoE48j4xSICCjsSZSE/bWx6p5s14ZWRDmQLuZxFfk8OvMm2OzQoyz1p37pf6wDQCNu1yfJoRVJ50MvfG0rmsFlsxmJya1nu7IcmSpt2/IsL/SGqw4isfYGXPCfvm6sBsaas0bQFoipYLfcE6wQGZqTgre4xKb/yT/m8aoAp3bqSf6O+GjVKSCuUEI+H23gTNt+2MuOTZ4YAzQfaAY6jLJmRJdDo4EDR1QYY3s58I1L4S4/FhGCq3IiYu8a/kiQOYNrIR9pnNA7YUAcdPxe42PQV+xFV3NQgX1QjSHr61xfC+bmeOQw4mrqZjH/m+spjhGx1oPvMCebTlBMxZyVqMf1BRbQRGEpRj6fTJK9SsSXN1t8l6LTXRoaP5oqrz6D+aLNxBz78vy4/dJm98dPtDOdmVscj+2U2iL5er3+ij+n7n5oEBgLIiAXeHKIxsShq7qGIc+rurlqM2r39KXMUAmDFIUnaxiQ8xpqqe9dpS9leSx0Deum404bbbZbFQ98uZuDLVrc7R5otfxc+5Y7QYqRsF4uqGz/uDGlE2hnxWSyY3Epv/ELiKAuVGJkgO8YcKPww=="}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getPurchaseOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7e130e34[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getPurchaseOrder2] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"78489aaae61543c791400bcf2a61e3aa","finishTime":1779065245000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"工业销售总监","remark":"已确认","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"0a8f_4e19","createTime":1778917294000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101086411175}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getProductionOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@77d5c4c6[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getProductionOrder] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@171a6fd1[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getKuCun] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@a929b6[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getKuCunTo40SB] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getPurchaseOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@66ade539[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getPurchaseOrder] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065245692, msg_signature=b66d57115b2cd3172f02d82ae5a8bbf9bd78b38b, encrypt=96ZH20NtOjD/q+uUzY6Y8F16flqx4t+FETuXJ6x3W3xCy4kW3mm5FC0SsFaY8ED+BZ8S6BzhmEhVu7Oz6uHlOQ==, nonce=eiO4hpwTsTNPgys9}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3f07eede[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$410bf0#generateDoc1] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"e0ed5f51a64f00f8e02425e10323f7a27d3a7eb3","msg_signature":"e0ed5f51a64f00f8e02425e10323f7a27d3a7eb3","timestamp":"1779065245516","nonce":"Gw0x8XcO","encrypt":"Ryqkt9zbrAgHGfWIpojjy4Ne7OXme/Fbe14aDLgHNUfXA4pHj00eVIUX20qZ7+ZIYJOFKi+6r5g0YfP1UZOJVq3kwm1+ijYUA69DOVOdmgaxt4VdCCDR8KWRrMDBgrI5pMXxRUivkt9nkbIzmiKXcVDICN2jo6BjmOBNPcH6HPcRGqZrWbtVQhPpN3TuAXsr2qr+SBfXDIEm9CIUtEDQxn/CHnc619DWvcz/nmtueIn4ClXY5J0jIucBAPhGgwImBZZI68X/EXLANnwQPt6MWHlkdcHHqUPkjD6cC0da3b6zDJB0vJcgo9AKTJ0jedyVnyX+LutMFr+WF7IYX12JAn1w0tD2e7yRBso9Xrmxo9So8HU40uiBH7iqW/NBHcVaSQmrT3re1h8NHneIX4K9lP7ej9TDiLXfZjIyO+DLHG90E/Ff8XnaiPXyNFsVzdOqDuf3R/N62S37zvbkbLoSJtBxDGg6hR2sBrVEK74O2DU9AHR8icoEYXOBD4cm+usjhrCGEmr7FVpbrKmI0wG3HdtcsLOqI3vEjLYDZKLRz/0IG60wZ8YBcDCuFxhP5CfNrxFusw/JVtCv/tY4HGvZVfc4iiY9e5le6cVrZV5Dch0XMkOsNp/PzdcIqUWtMaA1yG3ZQHQ+NuJIHKWrj2Xm29Jzctxy/NXIOaAvxLFh2238E75OupXgLx2BtXatiOSy5HZYEjJXKxR0cUFT6oJWJhXl+jR5CeLHXnsO3LpTtAvuc1C+6B3GJRsvuUXEhaqUhyGTK+jB9yxWLQg8Ik+IwNfFRQ3fUSLqQuxZF5BSoHnUPs8TxOGzwGuLbqZr1l3Bfe0z1mAJDf+1cAeNHZWWCSCyGWWNPQrPjilTREX7KS8JLZ+D9hsWRVHsp/H/csSkKoZ7tMZkFSA+HgtMel4lZQOhlWrL6aHKQ4Xdm6iVbEdb9+ma6a8vYZvNTb67eOFsgeewi6qewZKQEWAXTkt8ww=="}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:syncOperationPlanningJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7b276a08[class com.ruoyi.system.job.SfcOperationPlanningJob#syncOperationPlanningJobHandler] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"ff40bdcf73eb4aadaeadf7de1dc5ecb9","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"总工程师","actualActionerId":"035715651324258877","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"122b_b71f","createTime":1779065245000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"035715651324258877","taskId":101170493283}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@328a1843[class com.ruoyi.job.service.SampleService#shardingJobHandler] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3b07b706[class com.ruoyi.job.service.SampleService#commandJobHandler] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3b76dfa6[class com.ruoyi.job.service.SampleService#demoJobHandler2] 2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065245826, msg_signature=d1b231538003e524ac299a1150da1278be8cb0dd, encrypt=fj/wU1adumXsK4QTfB7Bydz3YG1LA//fN9vS07TpbV502N4rTkXMyymRqqgSQF4FbmX44KRGfr0uFuZbV2p2RA==, nonce=ONzJVmen26nunLAe}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7b4185ea[class com.ruoyi.job.service.SampleService#httpJobHandler] 2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"2b2c01930639ffe3abe631165e340335357e21f0","msg_signature":"2b2c01930639ffe3abe631165e340335357e21f0","timestamp":"1779065622724","nonce":"CHYinqHR","encrypt":"ZoKb79i7vnHD8Nx63/8qLYQAfmjtcIEBwkz3uebJTgB8udWAvoQzqmjufh9K0WXwTzvNpmMnI5LihvZXFhe7NuDt5X98UAwxu7Z2ah0QexEI986Y4y2vdfkm/shu5cFaaZIkfodsD0Ojf6vxjoDDIXm3zSFso/IYA/mHBbAVaJngmOOTL1ULmrxlkCFVYp7dmH8cUyGjw/8n4nEFd1KWqECfatxBgJLodIVR5FNw6yjspIscTxPO0e1X2zsHM7rpiaoUMETyEEWV0kgA3ZYctpMIRSNJwrB3FDEDKMCKK5xOgOKU8le7tsT3p5F3MTVGae/2RkL2Tf0OOFlZzTd166aikbHz0wvyR9SdQ3ZQcBdDl/dfid0ezBjVwMPggm8Ctdgyk5HR4th51/tNI8VacLb3M/ojs8dVm2r41V7vRYTLQNbu9/ZBG/XHnhxon9MAGBtk22C9WW1gwmji0tD4hESSR4wQCNXoEKENSeYJ8tTyGSSxxulhEg0z4VNM3KXU+OH+mkyewKc29t9LnzP8Jpu0Xi7oD0hji2b6/x7Bkfc4nWUCkpgrp8fWUcSzVqwjBKZWIOppUTNfqSvYDLrcFSB65z0tkjb9svVZdZCR0vI7wyiDYKVWoOwqKYjBUYyHMVweuj5Bn13GCTTiw1NokShrZWLfadERwk1COs9txBuMcnoBNie3r8e+0YM8SOBY2/ZZkwMHMN9SR2I8DAxu/uaKWjW1s+lWS0pyeN01CGOWTkpEe+Y8f1564yVYry5JWlzzZaXVwx7hiTWmvu7vqvj3uzBapVwpfnQ8gNUtwkb3J2Xan9pdRvSVY8wPXrwdQPzU7IAplfuvTKmA9ycDG/naUrRdmUKNT0X6PEli4CJK7EylRwH1f6nF/ImA47o79uhY6pxBFHhaiApL2Sjq3mwvZ1nviickqei3cBwruuaTM+5OVo5plIA/CcXckFZZeq/ghQPJyLQwW3J6YXJqoMW+0lC7dFO5NlHPSOQ/WmzuaL6wqhzMUE2f5pcN6eqD+T3R5xxEs1R8AmwX83DOg5qKYAAHRyyFBsx52HkWSkgwPXYKRm2fLfM9IjNB0GaE8GQ6em3npkyXy+/nTkotEXSgg+bhC9ThX8gHJbCbMGdvE1j8CDoEiAsX8XoFAY2KJMgmo6Y4i1CMHvZwPIFK5Qxt2A8cpNKcuNOX29ktfl8="}
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@196bc2c1[class com.ruoyi.job.service.SampleService#demoJobHandler] 2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"JKgCIslCQR2qzoIzZnUf7Q08411778920494","eventId":"13c86cb3b9c64389a74fd1b8b296975f","finishTime":1779065622000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/finish","EventType":"bpms_task_change","businessId":"202605161634000544911","activityName":"经营副总","remark":"售后人员不知道什么原因,领导不知道原因,反正就是售后,不正常。不同意拒绝","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"finish","result":"refuse","activityId":"8d29_685e","createTime":1779065112000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101102815300}
2026-04-12 09:48:55 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final 2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:55 [main] INFO org.xnio - XNIO version 3.8.7.Final 2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:55 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final 2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065623038, msg_signature=87948638896f6edfb996941683df41f1d7b03080, encrypt=SulxTVz3ofISPz1Sd865EdQp6vLlPU7j813LbwD4fgS4cSTuLEJf/5SLNWAtrG1hBrSZitVRVwPyF+cwC4THJg==, nonce=988oDm7M9oK5CO8J}
2026-04-12 09:48:55 [Thread-74] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101 2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"1dd7f1de30e1b596d8f7570c2735a3071cb2597e","msg_signature":"1dd7f1de30e1b596d8f7570c2735a3071cb2597e","timestamp":"1779065644073","nonce":"qIiMFoNj","encrypt":"i/okOIKUrJ4gCEF2biocDgCf16Q/1l8a1y5AfIItvBe3aMlKNbZn+Mjeq5Exevf6EMFk9xduD3t0tGdNNMdrhV3fLhd7KHk5ANImEWXk66Xm6ONykoEBSveiRbuq9xDtkx7HVkqrDeVLqv0mP1nDn3EZWzENIHWssLQgD1+/zzTJ0xfmWGOUdGraWn0tUHImD2fKXozaBMxggBqfjeTOtTc4g/i+/fHAi5tFsv2Ofk/V2j2Kh9AjgMpZl8/jI5/tWj5pm6yY76sqVJTQ9DByklqqNVqVHXpdhE/37ByRMZDJHiu36riQ0MIwziizFVv/yVDSljZiobmsetmxT7368uVbvhokMlN7RHKnOiJv2VdaatMdh6uMmChv28y7ikMGcWRpqXJaBRh5L46tOLAFRS0B3s4PT4I5uGZLqsoGEhv4HWojL8QperQDf5DOkeN8aXZHKyGKUhRxKgCUUT0dWqvfegYiNesFYqWyGazloVnrE2e+ZKq7fcEcn4giR3HWF57HRVNiXwVlT+Jw0EL3hx/KOF+7nDifG5phO9li3Bv6GQpkDDDISVxF/Nf2F5BBzjW3yB4RotydbjYrc4kTKb1cnMwkd/1/0YJErk5/o/cp1S4Pb6NoQe8Tg/Y6XnhrH1sAGL5vFzfElF45dOVij9rftmPnlaiaT/0skHATcjvkyCxa+LLgs2LivC27bKY5RIi3I++yZQDZAJoZ3BApmgNnWsrrQfVLPnUDvkIYGhdg7rFxKGu71KY+Q3t4l+Va12NfBvup4r4Rf8V07V7XKTqoWwblTk9aCNIy2ux7+PjymOsfzrTUjqchXEMXU8PuGdAq8kRXXxJ8Zp4uYB1z3LaX7/8+f6ji+iYBEAN/i5uNMunfxdzI10okUwhO1wL+FD+b8RVf9KqX0TrQ8lVH0pjOUF4s3UufjQ3EIr9kmaVVD4B9SVhbb9IyAx/5F23jXDlisjOs2MZ9xkq9Pz9Fr2nCypPxDmsoz0XQDg8baYcyIH90LsclB6H08UVDH4fihLwbPJQqyP2IeVPLNvcuHeWEUqm9u7slbGEJmNi+0Ks="}
2026-04-12 09:48:55 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final 2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"KAZXa5tFTaOO8AtVY2QUvw08411778920716","eventId":"427d8baf727645328202f4d6c9d3a623","finishTime":1779065643000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605161638000369846","activityName":"连续多级主管","remark":"同意","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1778920717000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101087267117}
2026-04-12 09:48:55 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 40.946 seconds (JVM running for 42.897) 2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功 2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功 2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065644376, msg_signature=0afb41fca17471a603ac449f9890337fa039459d, encrypt=mJb4vCZwA+DiHUtpMHkyJtYcAOaBcqUHHg0aOQ6ZjiqYH++Raxwfx+STLbvMyUnLPcTw+QBfkmO2/sKBUXzu3Q==, nonce=pTQwUg3wTIlmXwnG}
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功 2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"1ae3a0351344a5d850b377d6b6b24c666530c02e","msg_signature":"1ae3a0351344a5d850b377d6b6b24c666530c02e","timestamp":"1779065668918","nonce":"2GSZMoJ7","encrypt":"1CPqVmjPZqYrsJzdpkR7ckxu1RzgSApWMaSnRZDKHM2cT7Uoai3p0YKP6iGtzPlVS+Hl8zGghGjcAowYYvibBuMj3OZQqAUxF3XrhJEwST7ZRQy0twOArW/J8ss7En0xH+Q4FVhKCc/u8YwqO4cZzsYqOuIyzMzaRyoQ4OyGCglqgd1U6h6Fony4kRBMvWwRceKDH5QHjJAbmAcn0y7b2W6H0mFStfDWUu96JGUQzAzX6wXloZ2ynER6TQECifCohfWkhdHfJNNeFg7AEzrGlWEpnzTb6/MaY8FkratyPQLoOSrrsXjzPXW+9o2541+hBUGhAW+Ky3CEx2FvDJ9uUVX5ORi6nNcPrP20rrt5EuQ+meKw2FfH/F5L1QqUpkhaIp+2BRqfEyIH6gTDeqcqAlvPkHihZC5n2jqIuluNXDi1BxvP/k7Js1csw2YHyvUkcu8LmomOz8KZIz7rB7mfkAXz0eZsy7iSYiVDiuFaZd4mKFjIT8jYP1kpUzGV/j3Knzl/6LLvJgX6IyrAQw5rACSHn2M0BOv/eggNXZn13GBusehcuUZe1F8EgyuIda5xVa03sudPfJCiOCBfyxHbHG/2N0hW0lXKzTfnGwlPh6g6dIalQAityiZjDzraTKAOkdkmUttl9rtKVI0el2aEzPIlCEcsGftQYM/Jtlyp3RQ4zlo5XUVMh53WeXkkfarxxuDk/KwkZGulK8TT09NIkFBqk2OA/gAPgzBnB+hi0rv/xeb4Do202Fui4tpYyyXgZ/dYPpjiSkX4Ilj7dMGCIOOo7kAjfvra3x6ZUTb3CwxGaMUsh1/+PJI/4z922bHPaq2Q0Jw+osOSTHXvM2+xCFI8stjDEeqpDLbFHsmr6NxAwyg9YJl+Jz335V1/tGPkBr0pDhlw7gJvoL2TqVfkGS5yVS2zz5sR6y/mDMHHLRylefYd5G90/BpA7kUAr+LK7zAgWl4vujfviCPx4d/gr56K4bAaFHCfuSjmZxu9Cl8o/X5ehwRbkFx5w7Gy+3/x"}
2026-04-12 09:48:56 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f 2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"9qhNpt8QQvWwUEY5nXeXZw08411778832037","eventId":"94540b39e4cc4774b8382148f2ce7d6d","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35/type/start","EventType":"bpms_task_change","businessId":"202605151600000374159","activityName":"质量判断整改有效性并判断被考核人","actualActionerId":"173760274129324770","agentActionerIds":[],"title":"陈志学提交的不合格评审单","type":"start","activityId":"305c_d252","createTime":1779065668000,"processCode":"PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35","bizCategoryId":"","businessType":"","staffId":"173760274129324770","taskId":101142674034}
2026-04-12 09:48:56 [XNIO-1 task-1] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet' 2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-04-12 09:49:35 [XNIO-1 task-2] INFO c.r.f.listener.UserActionListener - user doLogin, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiI4RjhCZTYxWThaOWhvb0Q4Y3laRko3SmtMdDZqN2dlVyIsInVzZXJJZCI6MX0.N6J3UliErkRBVs0s0YmF3iD_a3hmS8kwhQC1xR5wKKU 2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-04-12 09:49:35 [XNIO-1 task-2] INFO c.r.f.listener.UserActionListener - user doLogout, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJjVkhETDFFbDA1SU1MSmRsWW52WE1rOTBNbDJiSWtCMyIsInVzZXJJZCI6MX0.xS6Y4Qm4Aa5RjknEEboez03oRlBpxYQwrYiseJUmcE4 2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065669219, msg_signature=1f9e1dfa38660b8dddc97443135ee95f1a5228f8, encrypt=K2kpgIUZ5mUCT34f40hJ4PdGAHbxi9DZV05apmThq4xHNyaZ+2FslTnvGQNKmIt8ohDly/HG8BevZUQfYMg3dw==, nonce=wtcBpP5IILlRBNLH}
2026-04-12 09:49:35 [schedule-pool-1] INFO c.r.s.s.i.SysLogininforServiceImpl - [192.168.5.200]内网IP[admin][Success][登录成功] 2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"4ee84eb25c6275a192e990c5746382d5d5c735ca","msg_signature":"4ee84eb25c6275a192e990c5746382d5d5c735ca","timestamp":"1779065668994","nonce":"WxKNQEe4","encrypt":"xYoEUNgWs3R7a+M5ou6D/A6WM1GZAhxvRqsgmYGNQw+lOIu4TauL0C5acuu++8UKf/Qj4JIUBXKbylwNRk0KdQpwRQsH/sZCLAPqQF71SM86+PHhxMMA6sbqnUBE1V90p9LOzAv3CKlgEwybM3/IL9CImRd4/ITcrgQaZ1+iBkBlLhDiqg2q2Rg3isyjBKO9lXbka+sVmF8Y7HOBiFtlwn7LIeJzIpsCkvY+bXB5aPfbiOYF3H97RTxIfhU2smwvBkxrcHF+T5XHwVAdG3vumVEgGltng9fGlzPYfO7QBhFf1+szN9lZJ0uk86xfDbDWLvjxhDzqoaBe8e6qZwbQUJGdXXcb5oXA2hcHl4oiobuNVp2ExAZAX+6ncySL+kmQHTJzfWDQrV18G71Mii3FMa2M1Ntvnq/xow+BsiCqv7Z4saI9gbADiN6MRJrBrSUI7r0x0VPgE4NHdYA4STXrgxK/qwMFFzSckWGaiSjlhbIOwXpy///+skSTZppyFnoQsGKlbrsDjesVsKNCsZvOtNGvebEeCjNGiDpeQKUfl3AtW7kivk9DM90Ihblw8aaAOeMiaO40JPF2YJwr2wXboSPTvY9sCnZ4fiV9zGnDRVzMxr01J4JIEux3gepcttVH4AerVnvRxej6pf+pO7eFD3bsFkp8xss9wr6c66z0LsNHtCVdmP7cyXol79QQscLUY3OJ1pyOFnhoHZE54UABoGy+OXS+22tL47y7a9qBtXKfxTSqB2gzvFP3SJ0dE5ttjWTFVBHttrN5RvFg8hIXU3U4siJpJgdd4f4UqIzK+t8UaDkComOgrZb2Owx6ciKl4VoeOiwAPCTdnmkVVH+m7hbuRwSQMwH+04lJzzzz/XgKOhnbwdEz71XRMsLlBDM07gdZgvyJihXjZuHY44AO/UT5u2liGVCTcKQ6pAVhl6AXvMeJ4BpDkkcF1D1oMAe3DGypSexscjpzOJ+4bHOMqcR3xXDQ9KCcb2KGm7FPjrcGlk4O3PDBazjZU76XrgdAuWzbHrtXpaaNqcTRucUtvHjKZHapF8BPjrKYhkbl1opPIYSDAhutouCMVnC8yK4KSVjOWA1C5EYNAa7EDMo8oA=="}
2026-04-12 10:00:00 [xxl-job, EmbedServer bizThreadPool-2102006448] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job regist JobThread success, jobId:2, handler:com.xxl.job.core.handler.impl.MethodJobHandler@48515dfc[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$3a3fb3c#updateMaterials] 2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"9qhNpt8QQvWwUEY5nXeXZw08411778832037","eventId":"de92ec4846fc4f5f931542c1b2910293","finishTime":1779065668000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35/type/finish","EventType":"bpms_task_change","businessId":"202605151600000374159","activityName":"责任部门提交整改措施","remark":"已确认","actualActionerId":"010858214800672369","agentActionerIds":[],"title":"陈志学提交的不合格评审单","type":"finish","result":"audit","activityId":"679e_2fe7","createTime":1778926412000,"processCode":"PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35","bizCategoryId":"","businessType":"","staffId":"010858214800672369","taskId":101088555729}
2026-04-12 10:01:33 [xxl-job, JobThread-2-1775959200149] INFO com.xxl.job.core.thread.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[xxl-job, JobThread-2-1775959200149,10,main] 2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065669293, msg_signature=9c2cbda630fbbc25f3f2a465105de8ada8589709, encrypt=kzwRjo602CCmzMOUYovoybPSroTp8s6nlbZnQNav/Wz1QFWwsPiU41q6FQvtrdn5bpEtibTRa4sdZP4wT/cOJA==, nonce=BKLAFFWqp39M5RgI}
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"26c8c1cab2cd75ccbc72b74bcd005dec8a29e2b8","msg_signature":"26c8c1cab2cd75ccbc72b74bcd005dec8a29e2b8","timestamp":"1779065676034","nonce":"osQ7MDHZ","encrypt":"myIB4x7nS3Cig8dBtje90/Cl3yNCLF94KDLVbnbrOHDEXlcinmSTUVdp0Zgkt04+xUExJZTYwjQwzMRbJT6AU9qEnaRE2t8SN8T2CPWQiibVd53LmAF61uQ6bj4QOdM68SpF/LeIHaVve8ouc1RzZRluqD1ZfjMTYpZ6NsDq5jM/sX6VycBCReHis+AI7DGqLvQcVs2IG1v6sNzRC0h+LlOyz/daocC3UwmNX1TP/bVB8o2kxo4MLIMvIB3+riDhsvbelehim1kiTIAOEKviUmhE/bJLapb3FFfbAZOjq/Wdrpptd4GzAO8bHAe9nH6u8UojIpGaB9mtWwow02Q6rIokVa0TnGMSJsy/ZwaaLZTAQ2OJaMlc9cqXzP0gdoghVC75o2ptpAnKSQyhqa29nAmNK6pYIFISXR9eOCDvQPUc3oS7Z1A9gCfrUqYS2GRF1MK1AbbKv6jDL+tp3uRCF7PTmUCs3Ymb64ymSR4pDcC74GEytiEWg3P7EaiO0Ifp1Iv+jACeT5C8wWBEdkvFKdkSKrnQ1xmtYem7LUDjR3Ce5v2c7bMKLICNuCQPyULdecF9o3c2RJIH2xv77XPOqmnZHeEH+aeC8JoiBYjbbrJ/f0w7oGYfWnAt3Stc6E84cs4ylw8/JS5MDjDtD2LWeTaTbtfG7aDE++KA2ICw4zrl9MZnq4RUYOXJKDGhII8SHzAgayGHs+RMypCo/yzskXc/H+bomL0tzgjMvLa+czE0dHAsgo0rj/HOnJ3Mf26xQw9BPPU8VmdMtdIPazPkYv+ptszszR63e8oj5TA4+MTymxMtIGqXHLK+IfDdFGAjeRTqpgH3dGAlU88l5Vjm4OT25/ioVRHJ5C1yrRtoKH9KIqh/BVdP4NlbxHT4PhurhebNvLgkwJyXYAInufyYMzTnft++zHtPX4te8hqbzsStm8HjiUCmDj5Ju6fYsMSNA12eUt50ozMDSCD45esF2ijW0TjI74mDnxpzukgdQDerdUPfue6Q5YqU+OZYjn+pzAVdVVeLNJdqE6fkzami3pvPu+BSO1Il3Iy1Pj/yMVI="}
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"zXa8jMa2QO6JJBnfFHi0zQ08411778918891","eventId":"ec58f397f8ae4aefb24d964fb8175b63","finishTime":1779065675000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605161608000119008","activityName":"连续多级主管","remark":"同意","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1778918892000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101154557981}
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065676341, msg_signature=f5668c057606cc3add687e1751fe0a7b815317a7, encrypt=gixHPwlB/55xy/EiWjcrLgd5pcWb6wpw6eytldvDMuVC2zN1eJEvLEcApMVPmP5r/YoU3EbyAjItgbTki6G/AA==, nonce=TWnq0NhjvjAx6Zub}
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"c7c3a36c26d029e8acce2fce406af5f1b2f80e71","msg_signature":"c7c3a36c26d029e8acce2fce406af5f1b2f80e71","timestamp":"1779065947099","nonce":"v0cORoWp","encrypt":"OsbQzle+3f5JCrxawIGnHz/tYa3BmGCCInMZcco8saENPjhhePsLin9g10c6Rj/X2QDTQuqDa4EDA7y7EmZIAtp4IfhCBySMQ+R4I1sd0qClg1EK/s/UQj3+HCErvavox8yJ//gulBQXOkgaWviHSfEpxLynmhzKXvbsRZkRhMF2+VExVxLEoyvzxqZmW3Q8p1DrlgRHRaFcQUZYzWEisaZsvJxBWql8bJbfbk9rWjZy3YbNy2ShqNE//dyu26OSHVCDpOyebUwj626UX+F1JlHDcbFzitOBscaftV77YmYZina4VUL+zattJeeKkBBF0zDYDC7D9t1/VbYlvRjP/toiYFVVwSfpO4fuNlw9sI34dVbnqeW5egSXFZ1UO9r/cfsGwyotmlhbt7/xufS1yOnGVOVEK+y5CGhWibqZg/QlIuD3VOaPFGnNbEu/W1JCHzAu710AUy9hjFJKsq/d2Q64fQTyEkctMvA6TNKVrpsS7P4GNi6PG6t4SrtQ9Ns9fw4jMYpoMorlL4z2JJyJCIfEqNihkzlTXQjJDHHdpQTBYc9ZiITj+cAV+fjHfrCVzs12uN0hhbgokwfCuKXgSEfcJD3CV1/yES6XqaRJHXyUeU2VTRSCShOQi86zus2NsOixVpHd0tHMGiqyD79XKi2ybzVjbprzJN3Aj5hN2VY539UZtLcUZq5g3IsZpyi6xlN/9JPUtJsMztmL9wrBnw1pgO/Ib3/kKvPvwe2sv1+xfIEjGwIy4Yrrr+Q+cvoyheWndZ3RwuY/kIJWQvNWXBu0TCVMjTxaiLkC96TfBAlo1NygxEtVh/Qo3EMqh1MAH9o/5G7lzmGoRWOE/Y3RtXWQugIqPJcXzjBt65kHhQB84VXvK9jXjVEuVeiQPi0VON1wIVRT7vGEzFAuHXVKGJlU74TOp06XgXK+p/kJxV9cDTTPSKtG0t+jOyJFq7NGREHjR1oBqLilnUlCOvfmHQ=="}
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"22nH2X4WTzyyzkctrJ2LKw08411779065946","eventId":"ad1caa439040490595b91f076b45af5d","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/start","EventType":"bpms_task_change","businessId":"202605180859000065828","activityName":"部门领导","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"start","activityId":"1918_5cd3","createTime":1779065946000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101208612829}
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065947422, msg_signature=f7b2bcd39c67b81f50f45204063ed91bb60fc073, encrypt=PMbMc3PQS2CK0tDfYO1qvwQXjUczZUr1W8ll5CqTMIy+6PL6RSCzfvtzfB12Cdcy1tSMfttJNZq0x81qoGjyGg==, nonce=VzB29LRvrOSs6yaF}
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO io.undertow - stopping server: Undertow - 2.2.24.Final
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
2026-05-18 09:08:43 [Thread-44] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
2026-05-18 09:08:43 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry-remove success, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://192.168.5.200:9101/'}, registryResult:ReturnT [code=200, msg=null, content=null]
2026-05-18 09:08:43 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destroy.
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
2026-05-18 09:08:43 [xxl-job, executor JobLogFileCleanThread] INFO c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy.
2026-05-18 09:08:43 [xxl-job, executor TriggerCallbackThread] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destroy.
2026-05-18 09:08:43 [Thread-43] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destroy.
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO c.r.f.manager.ShutdownManager - ====关闭后台任务任务线程池====
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown initiated...
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown completed.
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
2026-05-18 09:09:09 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
2026-05-18 09:09:09 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_482 on LAPTOP-AK2JCS84 with PID 67076 (D:\evo-k3cloud\ruoyi-admin\target\classes started by lenovo in D:\evo-k3cloud)
2026-05-18 09:09:09 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
2026-05-18 09:09:13 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
2026-05-18 09:09:13 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
2026-05-18 09:09:13 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao }
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
2026-05-18 09:09:15 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
2026-05-18 09:09:15 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
2026-05-18 09:09:15 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
2026-05-18 09:09:15 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [sqlserver] success
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [master]
2026-05-18 09:09:15 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
2026-05-18 09:09:20 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
2026-05-18 09:09:20 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
2026-05-18 09:09:20 [main] INFO org.redisson.Version - Redisson 3.20.1
2026-05-18 09:09:21 [redisson-netty-2-5] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379
2026-05-18 09:09:21 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - --------------------------------------------------
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - 正在启动钉钉 Stream 模式事件推送服务...
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - ClientId: dingebfrpzqko25vo8w6
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - 钉钉 Stream 模式服务启动成功
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - --------------------------------------------------
2026-05-18 09:09:23 [connection-pool-2-1] INFO c.d.o.a.s.n.w.WebsocketTransportConnector - [DingTalk] start websocket connection, uri=wss://wss-open-connection-union.dingtalk.com:443/connect
2026-05-18 09:09:23 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
2026-05-18 09:09:23 [connection-pool-2-1] INFO c.d.o.a.s.n.core.DefaultSessionPool - [DingTalk] connection is established, connectionId=3493760e-5256-11f1-a582-1a02b3fe6148
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6c54d0dc[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$33481d46#updateMaterials]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:insertJDMaterial, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5b5f06bb[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$33481d46#insertJDMaterial]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7c74ef4a[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$d23153ee#outsourcingOrder]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@54519d74[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$d23153ee#procurementOrder]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1ec96512[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$d23153ee#shengchanOrder2]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateAssetCard, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3d00c2ae[class com.ruoyi.system.controller.KingdeeAssetCardController$$EnhancerBySpringCGLIB$$bcb833e#updateAssetCard]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@665574fb[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getMassageForMultipleWorkCenters]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3eb7ff78[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getMassageDelayDate]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6b83ec49[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getKuCun]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getPurchaseOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@50ad5625[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getPurchaseOrder]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1d921267[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getKuCunTo40SB]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getConstructionDelay, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1c5f6292[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getConstructionDelay]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getPurchaseOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@684a34f4[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getPurchaseOrder2]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getProductionOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@52ec5ba6[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getProductionOrder]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getApplicationMessage, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5f606ab6[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getApplicationMessage]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getProcessTransferForm, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@384cd83a[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getProcessTransferForm]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getUninspectedData, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@198a653[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getUninspectedData]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3119fcad[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$2fe52dfa#generateDoc1]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:syncOperationPlanningJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6d7005e2[class com.ruoyi.system.job.SfcOperationPlanningJob#syncOperationPlanningJobHandler]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@33a39d7e[class com.ruoyi.job.service.SampleService#demoJobHandler]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@77cd1f67[class com.ruoyi.job.service.SampleService#httpJobHandler]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@94f79a7[class com.ruoyi.job.service.SampleService#demoJobHandler2]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@647d3279[class com.ruoyi.job.service.SampleService#commandJobHandler]
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4b9a1be5[class com.ruoyi.job.service.SampleService#shardingJobHandler]
2026-05-18 09:09:26 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
2026-05-18 09:09:26 [Thread-46] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
2026-05-18 09:09:26 [main] INFO org.xnio - XNIO version 3.8.7.Final
2026-05-18 09:09:26 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
2026-05-18 09:09:26 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
2026-05-18 09:09:26 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 17.632 seconds (JVM running for 21.041)
2026-05-18 09:09:26 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
2026-05-18 09:09:26 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
2026-05-18 09:09:26 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
2026-05-18 09:09:27 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
2026-05-18 09:09:27 [XNIO-1 task-1] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-05-18 09:13:28 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"d613a1eecc0a8b7f64b9e39228490550a2cb0e39","msg_signature":"d613a1eecc0a8b7f64b9e39228490550a2cb0e39","timestamp":"1779066808573","nonce":"CBMOmOBX","encrypt":"kru77HtFgKrw8HXEK2B6nZ3NzXXLX+T4Km7vlvpItRkjWKaBYFCjpL4/c7mNxbyEZANhQpjW4XJdMRNhJ0wwBGJ9WCXRI/t+Ep5WvKvzHGEvUYe+Y6dl616nhP+p4YliAbhTdo/zyv1FTj1aENlSOXDitZmih5nvPAki2WbFlD3tnrISKBJQh4zxAoczoyvzUzn/kl6lhC0T49+sPecATuYt8/dufTr2pAvJ2rdPx4Yb3bMPwWy1YtHygdLpFdnYocNmRgQtIZT8lqPgIc4FKOmIrbNcStMjeUnXRQb/hY9N4AeVff8DH0KzQV4BthcFQ7B3VqDgf4tr6q2aAH47k2KvXRMzxVOG+TwbOFnrjynZVpoVDeav/6za10xL6JyS+eUd3giDs93ipLnnsxTykA3vinBKeETyRoMwQxLvz+QnK+2ia2szYah0LvS7e8wFKi9HzsOpmEyZzICkvs7flBTh/tnRC+Wb5NnlmPixXHYgF5hOqdP+gjWpT0p4zECCXjQQi8lEpGZJqkoDqzLGEiefoGdQG2fp18yLZk/O1PMGKZFkCR5fM+qcosMPS+yZaUyRkNc3EXl8tWkeUKCMbsgAvTkWzj8PU8KFHSAzCzdirVb7Sr13+tk4XUBEKyg3K7MOLxH/J6TLkMXWKcHOuAhqp9IkZAf//FqzpFoeCkiayBvZsPUYFQw0O0hTiaDFdj+HHFd2l4Rk0ehY5dhipau1d6hb1gBzAHAosCLPYAkUTw9v2jbDSo+nTSX0hoZZ6X/iUrAbYIUxGBO4iEyoJjLAakMXNKNQfDRQbIJ0zlu6EtRvdCwjVD08cXNcCkCDy60I5b0/FYZmrzs3qVI8Jg=="}
2026-05-18 09:13:28 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"632548b4eaf34895b9fb3aed324c2782ab46043e","msg_signature":"632548b4eaf34895b9fb3aed324c2782ab46043e","timestamp":"1779066808463","nonce":"7CMejZCz","encrypt":"XSdqn5mVA5ZrHht9bqx/qTuEQ5mcQLNFYnR1b+02ylTTliNsmdKRx3Ecv8BVyRtmUKJ8uA46PNQpYOyAXgM28zAMSFGlqVTqggAkmRoi2p2C4RPH8Q/OAVhbQ2zGade7q6d3N5X+CAAbZuj1dy9O34u1+p6ciH3M4O5B3+h6EGUmsxxzJKJMNLVyURk4wC5NxHU0bHiIDjh7Ir4W+GyWmnp954r+SRrNK/6ieTtrEN9TGyDxewC4xbdCu34d1WzIc4RkWDQm6Ge86ZzroqMLxnqHVhHKXpKj4GFdbYrQFB7vcEm61myYpVoHCA/OavPlHr900Iu4aIAv4xWgiirVhv3Nspu/14axDQN+8PGMy4OcIPmgdDgFpiY/MsdUDeNt+Sv02Y/j2ORgqCUJvP70ht5PBIfnWyvmMb512EvtANJLyZa8E6pZZMIshxMkCEErxVgT17WVzoDf+6mamik9joyNOc/qUsaaArmFi2emMa0/GReNAcVp8j5tycJNuDq51BBHSRG1UwBvScI/d5VKBe1DRAoluP3RHxTbowRTpgKcLuJsupKoDiRYnCcefPrtzvQpoJyGrGbgS2+6pizNRk8PAa3gKyORSC6CL0tsJKEn+FxXKlISx2FbS/ZZiMw7ZGVcZL9GFZTo27AmSlgga7sZk5DR/FNhizmrtqpdpFbPuuV1j5+RIW+LKH+r/yZOICNX+zbhjc6dY8nseGiBwMz46ZR1mdrttjxgIsXuxgOy/chsbRhDaV39t9ACntX8laibfICOMlcWhZazVrlF9jnMaVhvm/q5V/RRf9VMAJxYmPQ7xHYZ6vbS9muaAQncmLQPoMOpZ5sJuJd3jpAmuQ=="}
2026-05-18 09:13:28 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"yOda8XN4STGkd1FKhjUfeA08411778912977","eventId":"2dbe6eec793047288bc851e8258c9718","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/comment","EventType":"bpms_task_change","businessId":"202605161429000373885","title":"田志阳提交的技术方案申请表","type":"comment","content":"管理员后台删除","createTime":1779066808315,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283633411029629036"}
2026-05-18 09:13:28 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"zUFBG2SXRZSqspRumD65YA08411778912762","eventId":"10c58d08c6dd4b59b815f4028b26ded4","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/comment","EventType":"bpms_task_change","businessId":"202605161426000023614","title":"田志阳提交的技术方案申请表","type":"comment","content":"管理员后台删除","createTime":1779066808153,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283633411029629036"}
2026-05-18 09:13:28 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:13:28 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:13:29 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:13:29 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:13:29 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066809043, msg_signature=05c89233a706719d0ffa504d34068020398f1003, encrypt=VECoAXl2siR0YfApd6H3ipgQQ2YRBYRU2dd7e8FIZ42auBZ0JPehjUqkwNfM4ltzQbqh+7hYp+UOhCEQOz/ZDg==, nonce=xUOZmOtk7EcJcvne}
2026-05-18 09:13:29 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066809043, msg_signature=0fd3f9afe0ff6d53a495ff87d270ce7f61cc3aef, encrypt=aw83Tt7eqNIpuZRnr6yRk4ehjSxmY+xY5r3NLSHd+8k87dragsdju292kEvFHUnE0iLe/KFmDIviejXGeUfT+g==, nonce=l8bbUqL7NrRJ60P9}
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"de768abf89ffa91c4840818397fa918473d08c91","msg_signature":"de768abf89ffa91c4840818397fa918473d08c91","timestamp":"1779066960606","nonce":"00YrRphr","encrypt":"J74WvfUGX6HVAh8tz9Jb2uv1qjClS+1fN6h/+q75fvSYoKIWQILTAMTM93vpUXqgcL39CX1gsayzus1/+4p4kNYM7+kjlj1DfUM23vBKT3ygs5lzu+PfNLiCDasMkEEVZnujxHTwPCepIwmyRqEVAaIQzxx4u8qa2ZSDckrVyNV26XFdJDOA1YOsiBKl3R6mdwJiTeTLXNbCJewU2QS7boDEIAvONqExbHdDYc7oyFYGCu5CFK6xG9+00fHXkDvFPTLIazfM3CE+TngyagyDksi6subeg5gExHIR9Qm60H0E72DenP3gDe1D3IcuFitrk5xGPi5oeGcPYMDjjJnXaKBYlL6rTYsk3XgR3Y0PjNWVLrQCIagfTDGIF4OifRpbMjE2k6bjVf3V2b0rMXgE7gFr7Gzgn8+Ef0xBzNDc8LbE/XKFjH3Vx2InyCVlFQUvj5rVHJIdp9suqUmWZjU8jrFZbTJzVnxLJFG5jpDnVplkA9w6runHsYPFhnoLiCI8IIVDXKK+1u1h7/TPPp6PW6YaGZY1LduFNi+ydTe5zagn3sXc9Ve2NXl8BW3hgeQQt7gHxnGQ/ECWCyE0SIgC4klSYOpBWcyVyYiWk0Ds7YbElgQTdqyI/mw+0F0W+viveU199nSluwxK6xN8/Yxlpsf6kn8gd0LXvBfBd4STOKBrviwVq//F7iHrqyKtyqLfrm9wuET+LsA0/MXv6KrtD57T1dDkInG6DauxRaLPrYznWwTrZepSH57WipEijgYwF49gF8m5PFKjEgR1jVWa1YWpajNygsT0rNOzPGbJlbLi1ksE3AC8z82q7uqwTEeRW5GuLKT93h5aIvCW3tCRnKueM4o025SL3zjYam5z5fgwdx5Wcwtrrkz7anc96h6dJU9y9A3U+qRuZDd6rjASFRibFM5cH3o4HuplnEu//LLDS/SmBs/FDQyDt/KRBak4eAUt/n3tTKzNgU9WRwqwSQ=="}
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"T_XBf04fSpujK04zZMJXjg08411779066959","eventId":"e94970a436554d6d95aff2a0ff1c7860","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180915000597802","activityName":"连续多级主管","actualActionerId":"223241230721375124","agentActionerIds":[],"title":"郭亚曼提交的用印审批单","type":"start","activityId":"d4b7_f54c","createTime":1779066960000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"223241230721375124","taskId":101171617644}
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066960938, msg_signature=a24e789606ecf7cdc834b89c235dc991ab391cd2, encrypt=P4uhcdQY18l6+1q+XABswan23bydTCEnCR/jYgQvJtcLBnjhOreXaq3q8/Wrlhb64lu1Zz7jgOKb1WbSKdUnGA==, nonce=0M760ns02gUMq6he}
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"6530c5e6db03562fbcfa79899211c91846e170c4","msg_signature":"6530c5e6db03562fbcfa79899211c91846e170c4","timestamp":"1779066981492","nonce":"YbLpCbWD","encrypt":"ts9NUjJkK5BEtzFzZybZCb9jUiKTZ3V/a48xECgEKEJEkrjzEJ51Liv+Ez3F52sRrdMvkyUR9o6BnflBFFC4G3Uv4cZ3aYIzpFHEB7vU3gFlnWXx9mmzfusF7X5V4Y1DTKv4pBFxnjpcx13N3rUwFVqyCnamNdrfdrN33fH/Qa3iHk3gEqDFZNpYxX9diQgruTfRvigNZPNqPPFFc9k3iAycRa5x+gbVosffViBGfYEhYEpTtAQFPpY29Fk6ipu9vh9JE9K9l77UWvx4uDo6fhdmUM8xKZV87W/A88V8ihdS0Wor2RojdI0/apg4oX/9ML14FfBBmqcHA1ctNVcjXDz2++yIvD/04BtrcR0N3lrOrFCoWWJHFLe9xfTfjZ2q9YBROb/P3ZC0h6lskjYxwezs7N0KcREiUj9Vexqu1p7RKWTwj46JUqu4NNaqzCk76yYC5j6Mq5WMO7Le/QCUaryI7PQD7vGY2pGAKFYTiJNstcXxZ99QB/PprBofx62ulrso1iqYVFePt3ovY2m1uc0rJCq+xUM+NuLFAiFhPUOmYRvljR74u/Bwq46mcZ1YR8ba0wKtX9dUZw/QVofup7arsnLIaiLHUwnt/XSskPalx3mJ5//7j2psOnGBCtj4DAgQ+4LpOi4if+QYUsxAgvFghydWIBqGIxa5kIuuKvGGWYvlOBJWa0sYWTW+uRK52aR7FIli4OsZQfoyypw7Ohv3GhTUzxJNzoVqUMFlzqI5d2M23DD7voWIT67wiaPN35pCawqQItXmtQn4a2d6U3ju9TCqIbktkMV7yVhjGM5vjNFnSAsQC9+5mBp511lksqK8M65LLN8rfpMZ7bA0KxHf46X9XSiyNL+liG4CFOCiThjkLlcr/Gz5WW9onkADCXmakMMbAeyp6QOuag2jgja3/1aE2ovgUa/9qa/AoKmov1UhUtP+UFz0144XqOGcin96OiK34iLrIgRqfmXSOg=="}
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"T_XBf04fSpujK04zZMJXjg08411779066959","eventId":"641f34d6ebf3483f988d77e6c6022ddb","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180915000597802","activityName":"连续多级主管","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"郭亚曼提交的用印审批单","type":"start","activityId":"d4b7_f54c","createTime":1779066960000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101171617645}
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066981796, msg_signature=b2a4b2230586d76c7d540dd38fbc3793f3a25366, encrypt=Va/S0mpJUo+YeHAYiY795sKMylZavNVCsqyLCVb9T6UYtqhAtc76O2UlW9ht5Sawb3SSVCYU415NsYe5yW+ciA==, nonce=fvZdndRBzcypVeRe}
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"31e65f4bcfb710010f9bac2c91a7dbefb38ea6a1","msg_signature":"31e65f4bcfb710010f9bac2c91a7dbefb38ea6a1","timestamp":"1779066981569","nonce":"ilX4w96p","encrypt":"um3mdq457NuU7sOByV70sCPykcFNi6AhsLv4w4y+rxdG+2v/rRpVeNXXYMbsdsjShSJdYoa6HA1XMl9gLJzXEp7JiI2OYg6RtUSwL1YjeTNhvny/otsHUGjrSbrPNd0op/8AMIjLZl7NXmGY1JCw5KwOoHsOMvFDMUdfPVkhA8gJGj5tM3FWg9tNNyC10Yrd/WJ/Pt/NxAYMHQPMtB2oxuisJNarkqiK0jvTMWBeX6uFjmF7l/PkoiZ/HIg7hJKqhIqkSA+iOGFzf0j06VNrjNvXcC1b5CvapeDp0bKHakeoXY1+5tsDQXeaky/3vsH1C1Xc88D1JDJr9UbBPh5fZwhrrgZ52y8cmHKIkWesYfiUCo+hbrAaKne51MBETtBajm/TQnpNDXOmYwOelphIRX1GKIlESAkc1PLoc1RajYIdbPXhdDVptsvH6lsScjJYguJePLLVqG5frNwA+CgZSgczJ19PRk85JiBRYLy0Q1plQukfIIKnBz8L7QBQ2nVnluqU3GlbnwdoDrW6vQ/l6kofv7TTAPoA3cgmWOe/AAcIgl7ZD6ciZv2o/GJqKEZn+R0oiK7JkkELNaWFrkaTU0/p/HAmRUx0gtNXfa7y/KmfOyejJCtxJnpQHUd0cRV4lDFzJDhE6WQZQOqWa9dXSIx38629Wf+j2Bpcv+9eYIJ0p9B/5q6Isrv49ynMeX5Vum7X1tX6tll6Cuv9Edih9YJcx4kk9kIgtYH3cH8op5zSKHGfictXN27fyxjCvhygjbsl4m6ix4KKsdYSnK7ko4cEaA+nHO4mWYoyHSmi6NvtB2h2fkgdIYo7akhn7w1MfQ5RsjWFLqJN8dT/rv8QLoWPk7+/eUQdH92/oMGgr/QtPCwVONcv3KpavKNt/0zgAo1UiqoYqMz6RF1gUBlZuI2oBtlp19ar9jfcwmSpgVtccf0CuQnaHouvLYJOwMVy05W0lTFepBC5WrFYydoozJzDxCPaNKy09hkZi3jl2hSbEuk+DVZ0k3FYlrXwPulsrw4Voz30/MlX6FhMpsRfY0+a0U/wf/9q94PkaduHd5A="}
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"T_XBf04fSpujK04zZMJXjg08411779066959","eventId":"bb2d94df682141e1b186d6dd7890a014","finishTime":1779066981000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605180915000597802","activityName":"连续多级主管","actualActionerId":"223241230721375124","agentActionerIds":[],"title":"郭亚曼提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1779066960000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"223241230721375124","taskId":101171617644}
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066981864, msg_signature=84173f8439d351d1ed3f784b423b8e11ff523334, encrypt=vYgTZ3hb5TXnX1aZjKNKWQTHMW1Eu1PkPQBiHYtQCrvD1TjkoILA/Gm6iJ4edVsYrAx4ECk3OAiVqZlkMUCadw==, nonce=xg8fiBgv2uz5LvJI}
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"e5aa047c984a90d36b5eb2f46f877249583829a8","msg_signature":"e5aa047c984a90d36b5eb2f46f877249583829a8","timestamp":"1779067040748","nonce":"34AM3H7o","encrypt":"eREhFZ/t61DYNCipWpe0ZIBRPR5OIadrVotty9RzzQlSL2U+SY79Umr1VwvSch3NhfkHDKwq0uPia85fm5QK8tJpFsTYgra5g4obPH0ygSBGL1QnmQsxIC01VKERxtB6/7yCVHklD3KhbLNBdcKMEz4cfEBVU2tGNAY/NKMt3Ifb5F/hC5P2yj+w+Oplf8NEKot51IG/DIUSsuoY6JHLGsBXK1K9ynsFvMZvNPc+cWDTWlVQNax+XdxQHLjZ37FKO4Ljx1yA5gt/z9y0RNigNXW9fNcc9cZlCMAzDVjsi7s5PTnBK3bYDqwuYz+4RBtJkKXg5cTCcvD+7WN22Qjx5gfB7mZApo809xXH4DO3agUCe1HluExGomu2HYrJx+cN4+mPvB/zTkFxbdTi7XJBdnPrJ76UfegPzRCGreBZKU8/HLZ1l8jwZGh8tVYjlbyQf/i7aP23Se62YUX5298yyBe3rujW96p6E3PMhrjbC3OzEtvnH7rJSqoHb2n/nQSUYC00a/kKBRL1BiMfT6QsoDax4dy5bxYuRWzwzGZdNEJY8BUMOINil7abIrIWbFqEOw/zrXuTJEQVJOz/Eb8bbPc8Ioo9F9tWT6xkVwaU8psoFeYzqW+3MbkwKn6sWese948ag1zpJ7cKrgQW4V7NlOkF4GW1g/PlrBx/KDWoSvmlpO77IifhDmVlCQeppR+ZgyT/TAdAwMh6eWajiWQWG/T8f5ThkDvwmP3UdhZVHEubNtMNHYofrDuyZpnvI0+i8IJE13oaXij5bBputKoQbef+1GISlYVui2fYquLfkQKpwSk19QErXFDjWuMUv2mZtbWbVmirbr0Jk1QWPeev6LoOxodjG/+oLfrPMsjdHgpbkRd7nQ9Ei170ZePqsRL+QhvBHcGjwMqORZdJNZ+wghaktdgqy0kni3CaaIKxZACyXUiUAdAUxOo5GFYoVcEhCPReUbO5jsTI8iWh0JCDtw=="}
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"mSJmSHiNSNulT_2pRiVZ1Q08411779067039","eventId":"c090a273e6c94df3aa991f38775c3c7f","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/start","EventType":"bpms_task_change","businessId":"202605180917000199559","activityName":"部门领导","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"start","activityId":"1918_5cd3","createTime":1779067040000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101143434454}
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067041069, msg_signature=36e2848888199fa8dda4e75d457b413d7ef6e814, encrypt=lYpJphlN/Q5fTGvFEChPphUfN6z3RIVj1aqbGs44uPSJkWDaP5jgEGs4poz4t6ERvSZpUDgZwNoAvYTKgFW+bA==, nonce=Frpio3kiPoRrrzju}
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"18f2d1ab815106b50068fd47a55178a76c850099","msg_signature":"18f2d1ab815106b50068fd47a55178a76c850099","timestamp":"1779067081444","nonce":"6neqbdT4","encrypt":"VDBhlLGXLHB2Sm9dWs2+slyAl1j2pGfMOLhOQOS5kdmXKBLoGuzxtpCI97BFrLZvMA9RHRRGcC+fqTgsfSxBH77O5/BhGKOrICiavcijstYzEHRraAgzz9cOqOOtXVkLNuWQoDq0kyiOobmg+/CBiAHH/hCoFgL5EVkeC8V4p0GmExHyAt/4To8ACZyaRVhjlNyNlM5Zku3VVvx7DbHQvf1OV6fEdV20S6MEo3IXOZpZvBMMewDQD4KyBcHCmpsCDAM2EKA37ue82iey6S/ZZMs6HzyThzw0oukM44ZQklkqvkqkLQ9wAbATIoq6oT1CoitepuKme8Xe518kvmwcyEfHCVOQNaF92DKRQhNJ8YzlWJOAxWEmZ1+brAXO9ls0+DqmPCIWZ3xB78+Bi1HBLPJn/ai7uNWyBR2U05cPuifFdmfuNII1FXf9SzlfbE0c14SxqKBDdLaT2Eo1lHvuRXLirUW58FeahR6oNmYmnY6O0qCxukqzgKfu8Bok5jArY3UiJ0rY2AKG9gedGb4UGVEpfdD+OLGabTyQ23YPW/ETx6ZhoOHhIJKB2sRmnfqigBuBr58F4fyZNLL2Jf2yydPw4KVShQ51Lhm7IpINRKfp/ASswjYJjJ87IoRFzpvmFBxo7SXgwI1A2VfdiVEadgmVtbyEkkgEwh6N871aLuYu/2AASXktnHLNytkEuOCULOPQvqQ5RaUaSln1UTv85Ce5GdA0Poj5hXM6HyJjT03uvbGOW3+YkOWxD0ieSO3nV6Nhoyqg3EGQqx0qMf7aDOjrFIeztxPPUlo6a6WTuuFxDdEREyDXa1VmRp/u7lHBiQD0CLcc5KeThNUZi6+ejunhkK4fs0bz3/yZiRhOLYH1EQY5kM1fa9dCBqj6IBojCTJ4GOcDTUNDEGL6oiu3xhMAjZNRwqKexlCu8Ud4m2ovzXbEEhtszF+AXslJkGFb2v0KMBRJ3KP7ecoOYm8Ykg=="}
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"40857a1cd58f430f86e4dd6d108c89bc","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"直接主管","actualActionerId":"176735225223967751","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"start","activityId":"19a5_614c","createTime":1779067081000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"176735225223967751","taskId":101104191675}
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067081757, msg_signature=aa74302484bf47cbeef948d63318638f0bef6a6e, encrypt=bukD9pOiJyR4Kyfxd6XU8DM55Jz3pfpl6xqXV2B+5krmdvuPahhh0MDNEjN6FuxXD7APtmd1qLaMvpOiMX/bSw==, nonce=lAeteB0vqeNGu1cb}
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"262c96163121a7ea113446558be6fe16dd26917e","msg_signature":"262c96163121a7ea113446558be6fe16dd26917e","timestamp":"1779067251234","nonce":"G8gHDeov","encrypt":"1M+UZ7dv19vVLpMFDeQDfYy8RJuXII0i+otwJHCA31SU/QyEEHkIQ4ukD3hdgerJnC0M92ke55DYDc5QcOV2f5hVA6URgvccXkuh6jvLTwY18xOA1mDMepB7Uj1cVDhILIhnrDzMweJZJx68TI5Idtir7fFBodqxYNXTNv8w5Bg294D5VRjFxUzbFCmUzb6J6PXLPImah1L1SqWzSVS5TCW3t37Xs0pvRAR86nD+5qfWyUJhQzLHdJbl1l3zQVaiMs6o1VHnPJkCQrtUpECSJAUKc+7GHLgowRENBHj2oPqSm3uGieCZaf73Txzzdtcs1KyHef2WLPsQ+MTpHXeyaHsCjLI+7q8qea5QTBXB9ES+KDdsXnMB6MD2mu53UA5YCjq1EomEhCkaAZwQgai8pDtservGpDfjgKdgOFi0mTpJVoSwg5NDS0OLaSIZdhKE+93tXDTLqHMK7qSQzuKjQwZy7zCWtPbar1PxZZ428dyM9O/+0Ja92ze5MuCJMmkHhFzKS9xrU+Ud7w+zjgmkEhdkhIZ1oCozqUPCvZ8r16ViXgK8ZvoyDmTfvhDZx9n7X0zIHul40koaTBja2Em+BMWo2KD112RnKf8rYTCdO2n1q6hqae8ghQvdZfx014pI8Vg8ofjv6F3mhZOTe2PQ365sFNx+BIT0PZcomse6vNSmokQtL9J0vQYvGqO4Q5GPMyYsBS809+miK32it1oWgRj6Dhf7DZZVqQRxJrOGV6Ikg3G9WOaKKfv8prqtS7cAkfgaWq2omXRuMybcz8Ia8RQSdrm3U5kLNFshw4UftPpxzAlP5snryRZOxEwCW0K/X5GMKrVf2zgftAtYkaJ+73RrtNLdsX+y/QVZkBR/dEleljloHlHqmwmhnQPfbN3hLHyJB4Q6pmHg5Fs0TjzvHcFpaA2kWaKBAk5qxNyfsOpaCQjF3yJ4K5iky2hs94uTOi/tnI7LjYKadGmEQNecIQ=="}
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"b0a54bae49b7411891c291d17d24ed9c","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"经营副总","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"start","activityId":"53cc_22ee","createTime":1779067238000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101104291687}
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067254535, msg_signature=81509d43f545e547f8ed00618ace07017bf7b61d, encrypt=5EuOq6CbOFG3jwd/SCWt0haaOeEbuciEU2wk7aBF1VgIbyISXAYs7DUdu/tKucKM8gLpciJ9duaP+vhxS930jw==, nonce=31UHeKDc6Ld0OOFx}
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"32d87d25df5af7e7ac439fde94cdddd27e8edf3f","msg_signature":"32d87d25df5af7e7ac439fde94cdddd27e8edf3f","timestamp":"1779067251272","nonce":"ovcTGUSx","encrypt":"jea2Pr4pR/QVDB6ln+Y+N8JfahT8drdxfP5TAQwGPVdOkaKzM6+51mu3AznLS8utHd+WP3m6uaXwuvJoQGTgF1Bh3LzN6aAfRsiEIJ+F4YGb3BRn713yv+qLgDg3xg2dShbkwnBXo6cjPjCt+HNjoLZ5OkVOT7CRP7dKnbbd3fspclovDUU7uqR/xddtanCxhETj98DQQkub/sagJ1Q/82EeyYvCuXRsrB560hOWF12VE44IrBvddCKZzLKT+3xcKOgZacEuF8preBCp8TJkbJbQklUdD8CG+fowEs7pRhWf2h8oItzogD4OcyyTvZfsl2LW/cNIUq767+7TN4tKkQPDZja7fZLWLFSSjd3fZ7OGGt1tBxFVAvzQtuWU/ZyuScvzsHNHLd7BvZQcznCxSEtc5e5Zssvn4D1ViTJyLw24HwhFgNrkHttW3kzl6VSxiZwwOWoAQxMbfOPXLcUDKYIPzm60byI6gchV6iwQXzF/1SwPTkbi1XqWVjw82ChNbyIXLvT9VftGaNJQ9SXff3p3oi2r28G92bA0G2zJyArdLd8LrI7C7Y20EY83ewBEfBdYrJU8tcjRQBOxH+upEXT1XBQxzPlrJ9x5gFD/4u2Zw3nImtsj7a+GA5Op/ppa0AWYS/US2zoQjdj9SAqvhI2p1Fh4NaKDoAEvW++jw/6SP4YFO/htfx3H1VL1UsWoS6/UCEFbdPdqs6Cg+Ryb/Fg/6sRhO1k8p9MgcNnG9mN1sI1g82TC8uCeEl4e3Lvyc2ynDoOTmy/Q/P5IyT5KElqREFlodhkpJw+ACPsCWskii7glOFTYfZfS34GgvGLYAHVr8Ed0Cz7IAIWDl2sbrV3kg7lL5/5zCB4HbLTJ8mDSH3mMtKoDdvuYU1v6EGD8v9brbq20OGPOisFNwCzmreWJJhchlYh5RwoBWLSBKYm5ufGfW9zuzCbpbQeQ6UdAPGdvkaryezFGM0n1kh2IiDZxIn2yqACFmwtJJRDstIF65FqT5Qfb5i0WLChVQYfM"}
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"0905c3a6b665497da41a3150f99d87d4","finishTime":1779067238000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"直接主管","actualActionerId":"176735225223967751","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"finish","result":"agree","activityId":"19a5_614c","createTime":1779067081000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"176735225223967751","taskId":101104191675}
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067254568, msg_signature=5880f0cc6bddcbc9721166f5070bc51644e0db62, encrypt=+/88qIB3oEJ/Go15XNcWOEh3NGtTu+nPnnZRfcOnwgPtdDz1qKUnPoG9mQ7B409tlhlmlcRamFFL8t6JmwKvEA==, nonce=PkBtTU5XmpbTNuRo}
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"79beb7d5bc4e36c0fbd34265f3d2b6c9263c3e82","msg_signature":"79beb7d5bc4e36c0fbd34265f3d2b6c9263c3e82","timestamp":"1779067283866","nonce":"h4dSHx8u","encrypt":"A6XARVAgEw96SAkv+2sAr4oFh9Oc8nX9p/wE71dHJWWdj7LUSKc+gn68oJ9duxQMRzGfs0Bh6IATm+pmT+RrOb851f2f0HLmXp18aOYRS4Izl0qrwJTaU1yQunRtedqwSGYIEvGgCWNTkEfrBKo0nkWuEKP4kmAn/zbgGaGP7MOiHZpF4l+zZuLr8F3+5UjyuJkf+EKfHh6NyY6+YdBzKFxtexBHtXsGtrnTQYRQt0teM7E06v8BqxooFsu7XfrlInu5azNBkY/2vR0lFSWWaWxlxg2ORjC95i37J9N9etWibnZcm0uhzfZgT3jjHavMELZLqzUaJGPSWGX5NdXybhW7d0D/Fm/sbJZ2ADNKALiltfGzfD4hSRMt5sg3og7RnWS+eIIBCoHs2LeELHYRyIpLc45Hf2qGCQ7dLiUrmXhVn6a/EhVnVtnnEJicbbfou/ddT3VRl6WvKkVK2fjMi9W4DgE3SlaWny+KJC/utHzJfXs4wohqHKwxzMF+V8YlFrnJ2+rdLbnlahp0OTrSjpT6wzV1TVVL4BQipqF5hHtbchdnxggOeKQ4EHcdVpIiWhp1ek9W08Xccb3rQMgwzdshoO1xqLgnLSXuT7i2EHAWfuSa+zUx2ROjosPtptPEoXbvkjI6As5s3DFMMrRZkaPVV5UEId5bd4cTYKtZ5gtjDE0hQFZTOkU1+uUXgHGqDgSdid64sAz9I6KMq0cLXjXDer2MtK0tmydVYlRZ0EvwWF0Np0sY6IXMaXus3iceN38kNrBwEq4UzHeJod4rJum7rxnzlE43R/ylw+j6ixtUPP2qi67TRTlwQqtyx6hHK7R2t7p57k8igVQAFuNFxJIZfM1OydpuGYC2TAb6oXKkIgWTh5M7qve88GQupZN+LTT0VpvPKMfVbDJjGstxpcqR0efjZ9r+wr4u0GlPnX0TE36IsL7WfLlKpwf3mcBVq3qP7MCk++m9ujV3KsaSqejTSuXUCQU2YH4AGpO5tu9CyWz99OpTME8ucOWnMFNw"}
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"0905c3a6b665497da41a3150f99d87d4","finishTime":1779067238000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"直接主管","actualActionerId":"176735225223967751","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"finish","result":"agree","activityId":"19a5_614c","createTime":1779067081000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"176735225223967751","taskId":101104191675}
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067284173, msg_signature=95204a48785d04eacc16151d1878a733dc752134, encrypt=yyo2Jw6aMJWTOO+bcNysFULpTb/YtF9PlQRw9UJAH74BEaldtNI2a2NTJYTbJol73nzxsf1r65oRPaOu09xh/w==, nonce=krm7frOO8vMr9uHN}
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"8a82e0e44bd62debe4164facde6b8b71356ccf0e","msg_signature":"8a82e0e44bd62debe4164facde6b8b71356ccf0e","timestamp":"1779067283949","nonce":"PwimurBf","encrypt":"akmLcPwhc1zipMYclAr9ua8GDZEQXUCY6jMCyTl3jAIm4hFbwubzhrflz3rctA8x5Vr4KkNbUYC0AT1K1dVzLiFhnDQuXWIGEfR2My2PpWWKqpn+JFbyI7kG75wRk6wc/I1MLRRMdpQc9+yOwBegs6nmcawC8mVaOkYCCXhKQFvom/KbLujkD7j26pAUE9KEPSdGhnC6y+n6S5dumiovCdmiKUYO32OzfAO8XSBebPSlFX1fdPjqWPPAbieRVsE/kKJMAg+ARQKj2YTXXKBNFcF3GDgkBsGtttsKEY9cHr3Uma6fpxBuLeHorTUAg16P82YpUkFVYVkkxKTlm2EzNAmEgzOodjU4WcjQeXhBX0VSiM5LHkHyWe9LzsXUTPCiTmTVS+IKCYoLoinBE7xikw+XLS3+ivnrS3oslICsu85OQp59dL7Ai1dvZg/AQmH5OpBAGUywhwH63gvFi3rkzBvBNO/ozUNOwdR12H+WPmtMKyZAXJFs17yAROEoUldqR/W4YRko0LLQNqlIfrRbOLB7nXmR3rRYXrg8VTSw0TsklyRbQ2vkhpcXbsYtUp7Is/p/laRvne/knhnxFlLmXGpSrdOFC1NLQ1HqV5wziIB2buKRQxcLISqBNtLaPa+5MuZ7/BeycjsZk6waWv5vdbBppU6+EZ8PbGrPgUEkqLSL+JVp859FYU9XBX+jxNCH/BKgwG1e19zu/M72rlk/NsWTmEpMtXIQWxh4L3SZXs5MDySp/e/hqobaKBjn3k/5Of+vysn90z7QdrZz6i3DUQlAbdWiklNmIqv9eJqZyaxP9uNHp3phgpxiArbmA1/o9ser8Uvh6QrHsUdpohv0KMGSrMZFvzwMCoyc95QRSs5QawEzNz/oUYegCJUzD0fe2CNvbKYfaGG1MDCKqWOpG87EcpKv+Y/BGnleitma9xjdRGJpHCl66JWihn98aMstvnnvmjOC3ATpu7bXLrSAhw=="}
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"b0a54bae49b7411891c291d17d24ed9c","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"经营副总","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"start","activityId":"53cc_22ee","createTime":1779067238000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101104291687}
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067284284, msg_signature=1060174513b1905783b450de2a1635e1977ac428, encrypt=pY3434wnokRJGxJ8KvN6g5UJ5rLPBkwogBf/Xbpu9OZ0L0DP9OZtGm1U26wEWR3CcrgZh8cc/qQZt6i4y4xNbg==, nonce=WV40VadIIx1jKbWT}
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"00c7089e8749e12ff92a76e3617ba29ddaa294a5","msg_signature":"00c7089e8749e12ff92a76e3617ba29ddaa294a5","timestamp":"1779068038432","nonce":"VB0SXe4w","encrypt":"iQMOsJsL0p9y0qmVG61Yc2AYK9qV33ybWiwJbeHxK4Sh4oYOrpvLLp7l0uQRLjQL4tKZwgxUDXSbuuHku2LxaeEjukwhJXdZ+ztBIh71aubzIe00kZsBeMnSmRNdcSlt0GXrKc/iKYRY8rGmePWJPGdf0rlzrrXn7+RkKvWEcuAjO0Mn85UplEz/p755M6ooalQFFbzCTq0iuw/6qX2Txe8oOxzTm4HTppag/2hXZWcEbpiZfNICTEpgCrXjCx0my2Vi+kgJ1TohPFmW05Yjq47bLUY78zzA5Ae7fnyz+lB57XJFwmVkzlSeWVkipL1SseSaDiesQZ8YSuf5jWnvpqAPf00FJSLXcSTZpk004QWICePMJ57mNvU1EXlMwQKCnzuRO97pMrgPE5k/Da52muDVbaFQzF5Xlc1SY4TD21Bsws51hDyInoHf4JkanmKwHwL8x+ew9czbMZdOTJy1nHPFZ9NNeLe8ncSmr+jeKmkaYio2fSxy8GaTN/7E8QpBogsQMH6JYX8HsLkoKWyR95mpzRCxq27Es+nusuNXitITvKkhpdiha7ZtS+aJcO5q5z+ev/zt1G9Wm2uII4OVWx/LmCuxGrIMWe5BAN0pWVqb/Jlvp5d1wULlcdNpIrG0P6GJ+tFwipCC01KbFSqyrG8UrRD1qqO+uZalS2MzahzmLqCse+hIVmHjm2VkCW4b7s7LB2Ep8zZO6/8bTGtZbRdyJSucIPP+bQfjLypGaR7wRSxg9vPE+8Z6Wz77Sl2cMo5xD4EslEGBch87yBIRj5+gnKMuJqrWt8nWQ09Hyy1Q2NGl4HNmnkJ9cDN7kOTfhKdz4sVxiW7FrHq88mfroMvOSsQu4dVq3wIoArCjLuj5SlZDOzNpR1hLZTI2ztGwuOm3ihi8lA3S7BXyAaB67fnq3L5A9M2V1S2ybttCJcY++YEx6UFXyjDt+2ZxafBRo4KADM8H56baag9F4nM2UiAtw3NVINgnIM+J6AjMcOH9ZcF3VsCrn1K7ZqEFcYerEPwJECJRaBpIlD1f/rcy9tIs/EhmYSe+FJ1BiQj9RVs="}
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"18b267ff3d264935b88704f2622951fe","finishTime":1779068038000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/finish","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"生产技术部长","remark":"","actualActionerId":"01201038164023402380","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"finish","result":"agree","activityId":"b689_7c0a","createTime":1779065223000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"01201038164023402380","taskId":101102887296}
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068038774, msg_signature=48eb20770cb5445821dd9acaae49e65306a3fbb0, encrypt=ZmMNQ4SpTt1Y0HTZgHb2uP4JhzVwhn1YZyCAPhX0MCepAC5pTDqih06n1b/PY9vZ7x7/h1VAGcqrLwN5gaxW5A==, nonce=sPBq3nXBDERbzrjQ}
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"8af1a580c87d48ea0dd6589978e8b8930e5c0cfc","msg_signature":"8af1a580c87d48ea0dd6589978e8b8930e5c0cfc","timestamp":"1779068038580","nonce":"OVfazdyw","encrypt":"YTwbrOaceTAgRRY/SnDdB2wqiGYftzaWk1OulwAO+HLms9oYkArRLGPfXXpNRgjqGrt7UpVeGHmp5Y1nywGHS06m1XrcwCA0QhCSozp2PGpe9xUW3a1fepv4H0zeqaFwAnqPz6J+6drYDERxha4Zuo0TknvRaL9QS4eLPSGC+sm+XHe1/RvDcS2sOuCetBbE5kbwvrbeSDLOmahOJa2K1N8ZEU5jypgXxvL9WaaTy8xS4fjJa4aRFLX2DpWBq2R5xJ5vad61lwUMOu0tbkUvg/oqryAi0UzH4Dj44JKn+jvUULBKqOXzn/5pJO4fJpL7h9TlBkH9Fwh/yxyhoiUu9+MO+YA+qthEgeF8jK5mnYI2f1sGXCKqQc19RK0cgdgSymYLDNajW3WvGrdMqOV3DOGXi7PZdTviYccRQQTIuSQ5af6Cr3nbBXAeXVTd6ziou4mcOfntzwbLRQGPj4YmLAq/0B8g8ccy7dl+yZ5S8bqOsHE3+kZvDrJLSnpI7+TJBjbV4jr8hCAmZzwKilUNCs3b3FxHAsstNqrmvX4ETmsg/kJshwHJbv+bNVnBXuGiffR9tRbFcSCYJRkNqMz1qwTynjWf35A0kolM8VReuXeaXXNSH3AupnsrDR6SBuzaZAmajNXW0ebroiHsAtCt3X4FExjvoqlgUY3BtxV4doBkPrCBMSSFTHfXkF6wjf2nI50xnXFTSvP9B25UYoI8aXbp903H3l0Zl43Y38lV0biRzrLp+PbCJFIObpdcW4J4pfq6YbF2OtTH9wIsVLOLu+IQx8ao8++E+RoY0kklYKrrdbAc6n/ARC0VloLEPGzEiso0TOitJT8aCUVOQ6XMsAkRnS5zcBtZ+ol9LOk5xJ9lAJuNue0Bu+KdFSt8Fy9nJmucm9KHviYLgiAYyfWX9kP1cxwbTC0CpH0D73vWmRYF0H2J93BkZKb3kLP2XVY/JAc5IuC7apYoUbIWG6cQ8Q=="}
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"b3dacc863f0f4aff9db33192bc73c90f","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/start","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"副总工程师(非标)","actualActionerId":"3816683726197864","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"start","activityId":"d81a_b76e","createTime":1779068038000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"3816683726197864","taskId":101144070875}
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068038875, msg_signature=429091eef1a6ca0859bcbbd7e39ca09f095a5fa5, encrypt=PQYxENQScJIy8rbitFKYUpN8s0a8Feq/aWzu3FHcXQhnKKs66yGp/14KHNUIuWjW7V/a50rhXoktnvAEC16u9g==, nonce=28yQkBs9gIlBYNzw}
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"bd29bcdcefcfc9b1c7d9685d5f5e199ebbf530db","msg_signature":"bd29bcdcefcfc9b1c7d9685d5f5e199ebbf530db","timestamp":"1779068161568","nonce":"Jm0fIjMk","encrypt":"HKMqjypyTMjg4e52c3hlHGZWmoFQjOzsBJ0982xacD101Sdo/+6SzwklBfAikf1xktlGdEsrJOTmsqhOTJcthg48WoZhOm0M1R4MrXXc4zmtek9b6vCKvNL5qBD3mJdH2RxvXepoY78pwKSojFZpNiUUOdLvTnIzQLPEngEY29SRpka7yZUHb8liymOJhDrcB5CwFHbYsNdETAb8nUoLJTCGS3bREdJBqnSbTTa7yavj1uXji/82nvTLLqgW+NzpbaNYdj23glp5IwzrsT3IRKCJurEHNMIjh1emDoUJAqsz2wYctYIj+BUpwIZrU9bDEap/hyQmyERiWwT6RvTVu/UTJ+9e7a/n6lR80539MrsU3+kVN5nNQpO9EA7dlynCuTFKTYe2ebuvOdieCQ4OWRH1kL2KKNEUh9Je+jkaYLurGdtduCGuGT95Y58nCFYcaUFxk0hpg1bIu/hqqtH7DCa1JLVMHTM5N//iVzlWcHmxMbhazbaXfV/r5TZAY93BEYtloHeK56tPg4fyqEZKTVNU+r3yGVc3xO6RYecSHm2i5mJvtCYAAxnHAQ6RB3HLyZdX3FsJUqrak7uHCFvchfYNz/BFtU4ILmDgmPYXwniIYbQ76N6eDlnN/ThuMC6r9KjovuyiuBKxfe1CNsGci7fyrvHqGQ0rdwtofTIFYI4Oih9DtEYuLMJ5XhR1eC29FXtUoVRHu8r8Npbb5JEJXKSPne7ZZ7R66QqJ7KWnJs/GunfKmR4WNDyuyzVQy2thcfBlBygdGGVFxlLYCbifIl+M+FqsAu61CrjcfLklFsAFWPZf4nKfmyLy0oGsTJVFLKW9BN8+VEfd5Ayq+9KTPsrDH1bDBfhc2XPdHSzlF7loF8W6EpXUAALjhdZ//Cy7Zv5WYs0Fvk9QGteV/5BA1J2azb+LFp63bI84sUGpdX1T/Z92AvMvLOYc2bWiwPJ5i+2xEzmAXDETCuONSiUczZJi9DEQ5QpdZxp3RJom5KKsquAPksILI25fKnDxWwUg"}
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"n7TPO9MCSWSMTowwenjDNw08411779068160","eventId":"8d6efa7de0bb4a9daa97a384f8afdfaf","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35/type/start","EventType":"bpms_task_change","businessId":"202605180936000000713","activityName":"质量管理副科长(制程)","actualActionerId":"173760274129324770","agentActionerIds":[],"title":"师敏玲提交的不合格评审单","type":"start","activityId":"53b4_05e1","createTime":1779068161000,"processCode":"PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35","bizCategoryId":"","businessType":"","staffId":"173760274129324770","taskId":101172625123}
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068161881, msg_signature=778de7c38b18001fe4d495582d76d2ac1ab26758, encrypt=EGscNi1LyD2n7YTnomPcWIfn2CxzXopH4w9wOWviN1hEX6ZCtFz8RASwX+j88ZOifudgopBsoLvG3YQG4UFJ+g==, nonce=JP1ZfE9o7w0X1p5A}
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"c4da823cee21a607add6bc114b652b929a450405","msg_signature":"c4da823cee21a607add6bc114b652b929a450405","timestamp":"1779068687878","nonce":"mjCyjLDu","encrypt":"mAGrd4oNl/UP5GhVYkyAF2MgbTc+XiebtuiRDW/Hrl1yW84w/GE6IKS/jaEFgPKZ/hdXmdgRhMo6CR0AyDi4yDzU1LkAOGs3GC75z6hQKyXl5qJAU2JLRtCqssGVR44FgV7x8+eX8twOC+8mYpa88rlmGVceNdJEJ3yRUmSIj1eowTM7yFq9by2gZt1ioRw22JLFFUF0Hq+UOR9svXq8K+PEw9Zgq/2aAemB2ILl6FhJLfmyTApkyJcJHSjKUCQ07SLaoBfzqrSW5raeUrDcNQK7BAjMvFI5ARCJ07dU/KlDKezHbH3QJmK7dmIPXl/h96tuzuLo8QTzd+uqL1Qp5hlvDUAMU+OgVxLdGriO9DNfUiAwwgdB+mpKkGBiAJECcN2IgHtfjIkTL+Wes3tlxKoAUgz0lqdFH8Ds0fjfKdFcTcJnCUbEV0K8duR7GrRDrTfxJ4ncGhGVRSPUEvg2zKnrzp8ttz9m/i4s3dgjaHny4vuGXtccNthY2I1A9uajuXmGCnqIT4yzY4z0Wc0uDHQo3XrIZbRHWt38BBkO63Si6CYLFUqGHxElJEFaE5F2pnmrug2bs6bHiz3MItMKjTumLwTRVnLDAxp/z/TatMUNtZrPT854EBNIm8G8u/4Hn7hRzIB+F8/KR5ZWMm0h+B9KB5pEKXtsyjVpMQoED95PogzQMohKO/hOw6orMVrustrhsaYW8j/IZIo8F5mPZe9oBU3Yh+bVI0R6+GVI5MDIDqKfucLh8QRra+a5iovErEDx0SOMKCdRTTGPNmGIawvq1iY82ovNkDPzH6Hn8D5Lf4VWwbYz3PHm0TbsT/cOeLQ61BFkoCMXUJyXtjKOaFqsP+pJIBtHX7CDLJ7VB4YZ6r7lrLZDvsqwnTp434Y1+yjTuM7h17hEeJ+O+bTbBzdNVvNeNAnC2xZwmsMneg3UC7nvQ29PJBoFII3c3Inwx7l9WVF8tmLsY2MzXvUMwpZhEplF8AWEU2Q5hBsIlNEXHz08Icj1TNc/KrQxaD+OyOxoWZZBAgeFN+gEf2i3oKFTdUOD4O1uTmDvG48RMY7XZM1VZXK+XRfhlACpeOk0X3bJHDeVEYdxuRu9GOu0gA=="}
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"xU4uJ-I8TEutJCaj6okI6A08411778812708","eventId":"7b6e4f64cbca410d94af2156460dc4ac","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/comment","EventType":"bpms_task_change","businessId":"202605151038000287274","title":"陶佳毅提交的技术方案申请表","type":"comment","content":"当前技术要求下,杜惠斌和马杰这边无法完成当前宽度下实现客户需求。考虑到方案申请流程的变更,建议将该方案提交给总经办,由领导判定[毕敏霞](02212765235927371076)","createTime":1779068687625,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"231850251526222856"}
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068688212, msg_signature=621c39eef50f73d3ff8f01ae304147bd574c0218, encrypt=iHlTuO6mLziFbh7X7V0+vgIZbeGkGqHoQH55UEukfDRVqVk1XriuExkDCs7qOMMf+hwEDjgZBmmHEpGkDh9x4w==, nonce=7maX9uadzqzhTUdL}
2026-05-18 09:46:39 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"f8087ada1ab2b7a81180592eef03ab95b78dd1e7","msg_signature":"f8087ada1ab2b7a81180592eef03ab95b78dd1e7","timestamp":"1779068798717","nonce":"bQUFx6nn","encrypt":"JSJu0D5wY6Gu6I4Hm5JjfytyZbrbQibp5+oaIKtiLDaMf+LsD2Gv7X58G1OUW3RB6iF/OTKUrYibbE6q0fhlEivOTw63aoU+vAKfFZsgEN1B+miC+oz3JsaDWhk+Ra2MWqVjH1jmoHeSAyJ5pMrP9nJWxk0L/dDiSex7uOS8q1zaF5UoXgUErAAZtRBgB1Z3z9UoPaL9aatYob8LUdt56LkWdSW/HDwgCx/2arD5/m6pEdbpIHzeWnoIrUc+OEyZHPqdqSowInPaIysk3ED93uJYOraliSbB7D4kV2bsepFlsZkqMc30msSKcomtNawZwWVrRIdQPMhstdCrffzO2vjYqTiLSW6iJRjIywFT+MnVKdz/Hu4DQ1vNbuB6as6jsbG4f/sTxqDvGGyBn4GpWMVuGNPgK4Gef0JAA7DdE9xNQ5LtX9vvZ58hL1JKjDuRnoAhaCtKtabCyQ8LI+Fm05O99oJywrjrN30lk7mwHWKnZHzdKGQdNFgKzG30r3JivsRIdssWX3ll4ziqNTJxAppz1KQf8dFvy2d5vKoxQHJ5jb5AxuVgsEFJXORbucxI+o7OxgkeqjBg02/FX8bU//tUEUOR96BDOJA2EuX8dWIcn0ey4ULgBgLNACqI0yO9JdiFi5LQeS/Z8uW8hWaRoTwhVrOwwkp0c3fOJD/gp10mi+EhDiWX6jbmg9auhr+pqJEmB8mjinW7BM2o/uePhFFga9QYlmz69Ep+0x1heu+e28o+vb1wVJfAD2dGIJ+MfPH4SnE+vGzFdCGtczS3WnMOHDiehUBtw9+HQyFXFu9X0GtpEioCOlKlbXQRN/c1GewPjixLAv9FKCZ9rZ/mvxdxhXYlWMSyNRpR5ecXCVd+3xtX99kKUeCO6eM2w3z24shnDSDhChVFywAYdfii/Ki9kzmGNWVTok3ZAv6vkoaGn6wt1T/p40ywIa8/qKronU97jQ99Tc7K7suEmHS+xQeE1auJVzTYdCeby3QejLJCNAxMadEaT2wCZmNIQg967QRjMSCnthKoLfKvw91IPRn79iUMSemLyXQPuMYHIFc="}
2026-05-18 09:46:39 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"af5ab9d071294855b9c3871995e96385","finishTime":1779068798000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"项目负责人确认时间","remark":"","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"76d0_7eb3","createTime":1778912734000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101190348445}
2026-05-18 09:46:39 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:53 [XNIO-1 task-11] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"8d5592b92ab7d881159b10a29fe3c54a8d41f0c4","msg_signature":"8d5592b92ab7d881159b10a29fe3c54a8d41f0c4","timestamp":"1779068811328","nonce":"Q0L14cMI","encrypt":"QHkX41oVsp6QPF96CRR1yRGGEU8Xvn/FCNu1CtneMfBa42Wo+6vLtvZ3ZnkGzy4NUhi26ssmbrlZRWZsXK0PD/kpEawXMogbp79zQeWkyGGO4HnntH8JFdV/K4uz0QqKVxf/1cg37EITwyzuEvoXu5htyRCPYeiBt3ZNjcZj8RrQS9+VUMTY42r6zc0Qt0KPmwO04YtioOwi+XDzLh5kuB3YQ2D0a4UvkfwO173EB4hB/X9mVxBRVPTEPJKDky+BXQQtOAeUc2L2V/+9iJLdESgiY7alLOn6fGtDUbdbqL/w6WuftN0yREYylCTXNfvuPHY29YxLYvbZPcgontLtY2+FjvCda8lXu3olNx6DygXVdHIFC4tRCBmLoM3HjUPs9cdlTXXM0313K6vDp3MxO95Gn1AzFcQ/JZsZ6AB0jfPXXOGS2qdfVwMVISx3btB1csOn6jx3tWyK596M9XYoni1gmLDI+UAvco3CmEv9N0Ljw07AOtCzHOB363f/V0zM/c6IPptL3WtcTi2+5ujdDKEw/GxR2rnZksS0EkMmZv6JnN5yUIx+EM5MlZzd9X8vZqQ8ckuVsdT1XrvGD2UGY6mfaXNIB/fcWi18wEOfppfxjIjqUyxfjNYc+k/T6T5bdNTBUSyyBzw+BSddi+4ImRa3YX3EZnxVffig3D/A2Y41bLpRTiCGWacuXDlj1Vf0DWVfBuAOv8tw5IV8J+8fV1x3GDoaIPjKM7JIJ3WP5pYsUxCY5ILIaxxmh67XwL3LrE+tIVhM8tePjeRMemBJn3w2wZ5MjYG9YCciqnUdmXEr1UNt+hAxajMAk/cRo4INW9hjtUUDdGg4pMIaR17lpFxUFna+YxDV8CxOUP9KQIEK4v3hl50gJnm0m5SgIrr7rZBHkgP8uIRq1wBz15StZ+rtC/CYwvgW8h1+BRZ9WGN6O+Ghaqfj7r5XtDmJpdm90UHlZaKTAhysTIiRX26h39naZLFybl8bXah/aHGBSji00Vsaqs9Xs/Mm5aahsJrMHSpxFyTtsdgZXukPDWbbALRgEeShGx1RfmCGovSrr0s="}
2026-05-18 09:47:53 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"4562c86d3a89a93f5ccd23cc1df88c7843da8c0a","msg_signature":"4562c86d3a89a93f5ccd23cc1df88c7843da8c0a","timestamp":"1779068798725","nonce":"fTvamjDl","encrypt":"Y9ZBMp/i7p0RbrAP0aJjXTgy8TfNMxNPExGCmVFG0FkQmbq4nuPQ58V4A3ci8WyLPdnZ+qqDfO+jYDsP55f543G0vZbxtZKpy4bJbQm8k4pKTa5S64d7ZVtsLBmXhrvL1qR1SnLyHf/Ivj9yi7xaQfAi1YsK5ZBQxG7+01CZnBWU7KtLBIZZfKjBLg+QBhjdcrT8MBTbDCjPH8eHV6U6hcPL+Ew5h7y7iowb3SrT0iIkVCPwyn3XSpPJfH7ZG75jKgMkb7up69uPBcJ9VQW+W3/005rnmlGcmbXfpTHmURr7cbywBlWDzS51RY5RUX8oB0eqLmd1YzZw2t5eDYNHbTT85C9CDRy2knVo5kLegvzvikgFXV8ltRxPT9BTGU2YNEhUrXu+vMHErm4PJ0+ZsjDSbiUMdxua27OVsh05uUcxvcivUwmyrGgmXjmJNti34OdAVwNRWrn2zossdb1l9JlNtt/Et3V2nAp6N/5+REpk/6qlpIyCvjydU9FxspAeM4q6nHC60BhiWfn8km/w+q/k5+qEWqflFxV/PKuWSxrRgOUP0B+GQNrQPW4pPdxfZ+o72ISm03l0oUXI+XuE2QYR0W8hstS8O6xlwJmAzbXKGL2IeNEYmb4WanQRVGRUmRqiYW3ACpUHCb/5XH24mOQKFN1LRZB0Yn7dIZARlsPOpTAbNlFkRKlapygysD77idQ0T97OA3bQdykVDcYaw9WWZMgItib5ZsdT5Pn506tc+rNbOviqHr48WwRiOuS+INzbKF7qb19i5ZUmbNZwRZ2qxp3guyqGb5w9gFnFNgsCaZF7yu5OtMjEbHChCquzLHUOdOQ2nitiXg4+GqtktGwZNPGu4VOOr82+tJp08P5tBW3EzrzOkH+23ZQ4euKlq1G8sF19sBjs+oZut9Q3DGEj0qGwZygeUl8SDg9okgfMr65ktWOC83eH1sita8VbKroS2JSd+oH9P6z08kzuaA=="}
2026-05-18 09:47:53 [XNIO-1 task-11] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"af5ab9d071294855b9c3871995e96385","finishTime":1779068798000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"项目负责人确认时间","remark":"","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"76d0_7eb3","createTime":1778912734000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101190348445}
2026-05-18 09:47:54 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"8babb5e69cad4391a5fb54bb421c57d1","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"办理人","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"25d1_3948","createTime":1779068798000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101173037254}
2026-05-18 09:47:54 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:54 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:54 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068874421, msg_signature=87ee2a6c56f2b149b3f5434bae4207de8ea36740, encrypt=pJ8f2hb8Zvu8/HJWP/H776+FlNKCjlElpNL6l5645gORrLQvdvQjc/UJgpVQCyZTpzJ2UGQv4HfdSzloph8efw==, nonce=OB1E8k7ffNe1IRWW}
2026-05-18 09:47:54 [XNIO-1 task-11] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"815efd81c932c988e2f886f167c693233a1a13e6","msg_signature":"815efd81c932c988e2f886f167c693233a1a13e6","timestamp":"1779068843969","nonce":"NfKtKa29","encrypt":"ETShVBA/eLfP6u8116RcjXVTro6ojyqNLaRugCnpd6PpShVmXZ24O+ShT135b6kCdfyVW1JpcZClpaDevkBgHa+T3n7T4VF1EcTBWVVqLWZYjL982jPoBSig6EdhV9FJjXB3oRu7+42uhdZBnt9cl6YUeaCnKJVXJckdVEN9DZm+w/2wriwVUNcuzAaUB+n19hXQ5mXirl9+KBmq8nbdjCLWpZ5QzMJmPj/79bFllrsC0lNYk9WHeetHxUnR7n2yP4XwEkWt/SSATEImpZgvPP/8dpkcIAgOATLuMkJAbwp2JlGBgCd3lncx491Q6KyTUHoBGm8wym17Ltp5MaTbFXFFqc5nvUahM8OekfruRAYN4gkr//JOGB+vkEJbwgxjq+5br1O0Cf/mMkMiMqBoR/Ope4H6C0vTqAyaChNGIzZRZp8DFw5g22d/+w7g7ZSUUvMMFV3exSN8ok2Cj8yjw8KrWMg7Gv2jNQwGh4vaX3u62NxakXxdtXcXKmCWa5TefCDnnBarHPbox+rkUC40eHmgmkvqmJoJMqbLD1Xrq+hbtSOdJXidU1J8wnYb0DuWRmXFgGG+253oWrmyO6Oy0K/6jqC7RZt7cCfFUjc32O2bNUegpAxM48gtnrtoy+xhkQmIlBLtP/WqWLQNogu3OSGXf43GzqiZpSHxj4jbC7yy9n8/FiRYe/LHd9LAMXBtBhP82mkAz0Xz2E2gs6nYzCjAsAF5c9xQNGczZhFD3tNCMN2oQanap3kT10EI5U7xAFIDCv1yqizYv7ycZQ/ULkGCTuBU8+wcZ1P58eoukBsSXQvDzwx3eaAYEGQjS1le20eFOBHxBquB7qfpE2jFpmzfsrKiNlHD1XGXzWOaeb5U42Er+vsdaaXUz+7TTbsKrmlfKSzm6xtwaoV/1uFXxvQ4GSRKeh6yMNnBs0tlJYCFLO/JOEQ1tncbQ2XTWAEg+JCzQa85m/W73gpyy2yQgEMLPaCJ/L/BOKtK+25Sgdyq498G6ydPfzf7Hjws5PV8WMiU7081HS/Y7Xwn9hlKAyMtoCbjGRqCoGgFdK092VI="}
2026-05-18 09:47:59 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"a488a8a0594d89c01a28cc0425498ea3b34ca516","msg_signature":"a488a8a0594d89c01a28cc0425498ea3b34ca516","timestamp":"1779068847935","nonce":"ovAQwDjn","encrypt":"WLp/z+zJTJ4rlwmbqcj5rUn3q+n9sTPfxfQS3BUxp4uctrzo3OUh6dzasVX4q+3OtVKDjI70D7LPWq2ngoYiBQfhIOxg3aKpCXRiwQ1SRVo6mRmZifch0kowTQST4Z7EYDQS6XT6HNf3orUwRmQw928YDzgkhLBQBKepLh519Dar/AS31qdkqZ/8aZZkx4OLNRn3XL3E0Jfm1Q1JDSpnyPMZdzY4rb+zx7Jw62QVfxJRN/4LHXu8q33QpoeKzOZcrAZ5tah4ThqePidg8giLA0iS+dX6uDqIsViytIpff8zTl11VDFWvRK7ixfEXhRgb6vSNRisedWpgoWyBCNY27qnJmqXEaWSeViSlVrUb3t99ZZLxPe226sukve+F8MbMC3DnbnDZRo4iSim7ioVynOO1ec2g/BSCKJbcyNJ83R9KaKxcc10ECUVWh1Oy68YhlYmdi7ovPKOcoG+AF0rgHVlf2o2Ef2OJbypj9WoYYY/VMTSTJ5WhpIjiBHB1bl4fmpRHu4z+R7wEwGsU6LBvSEEXvHZ5YvwFOOkBtblMo8F6Na8P7ja+ox7lBNV+fU6ee2uiLrtBFrk0QvaB4POirCtBaI+SOOAnpzwfRAALv6iIsI94BzOenUYcabC6KPUbLoaarBmhBNkdjA9YF6rzqvlbLRf05Tnx+lphsYOweL6x0z5xn3LycgmRTNR0ocgALUnrkdl1Tx1SBAzVzzLUXqnLbeYSqGUbSFaVwjnb0af5WOyl82hecwnvvjQBQrWof5xMP0vtz9jFrzdjCqvI00ZVlqriXnW4JHohOyO2u/BhfHv/yqvz3+4BR7h7Pr1zj5F/Z8C3Wgdlf7TZp5PkGNnsxvVUXHt/jz9gReCnxh01Z8ymj0it2riAS6OMazdHiGSEJt+tEqDOWp5xQGGeLe9hF3Jq7DP592dDl6h5OpVA6lDIFBVtSCzTRB5VmiGoecx7/REBfZhqF62w6sT5FSKji1eBvRxGEWGRBwC7R+IT6Hx3hlJXWXcGrRH/ZYRj"}
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"2acd0a4a2777fcf0e2d83eabf8ef083dc07d7a24","msg_signature":"2acd0a4a2777fcf0e2d83eabf8ef083dc07d7a24","timestamp":"1779068847843","nonce":"MCTTM4Um","encrypt":"Wvs7hwa9GKXtkOYj6FdmUTh+7k9PU0MdDLPJALm/98XS0/URxOZoH/xPBkZXvI+zBNBO1baE6ESTWVXADNL/XPEw+ctHmdGjMqVIYIuFQ9k4tExVc7Yzex1cSxsF7tahi+PzuE4Va5N5Ewn8fkh0lg8oO2UlTkA28iom/8zauGhwkklju09Wfa7sJymQewH6xK35BKmAGG7w5JEu9t1cXKXwX+12woQ+W8mmDKsbmKpnfm9JKUNm5+6jQ0r5/QNGVLwawh7NDGQu5bE82MgDJSOMp+IGg4pMBhA3ifW8o5B2H5DPRnPHgbv41K6UgsiLrbNXfeejZjk5pG2d4TSqu9TNRMqXdLADPieMTNUlMVY1rSnBCym1NM6jGztHKCEocmlRwztWrytd1glANBwCqMlyH1iqBWk/LcyDuMRibHtSVAxZfxj+BqjzQnDunpUvKgwEStON13Cte9R4ajh0D8IOnd7bkX0IYA8G2HeQ5Kas7+7q3iq7tenq3pDbcjiDBk56xjgMJB2Uhe11NLWp2YpZ/JMkxdZolJtf66v/czlksDsj2v11yeVkIXiu3mRHFowjTAV9X7BYWjgjjr6shpV1CdsntaTIGhacDeR5n8p0w6xuCcHsVgpQKBGZqkUsOWUekaga8DlkXs3fL9v7mrRAlqqWmy6nl+lidsV6wizDYzWTfPtFAkvisDqdHzXd+eG/AoYDPkZq599obHKj8hmyF+sIzDHZ5g7i3cfyZHU9C4rsiRwMoiKrmlP8oJ9ajvHmGRwxdOtdkQxr+sfc6xVCHUT9n2WBe7uOIW6xl8BVcBydiF7LwZmMH4GVQVvSLpjy8bcKkGSnJlxalD5U3boFvQh+2iZT18mFHgxzzen6HnhrErftgbH2lXpqTH/ZGZmwZA18uMiCkh8ZyDdm8cgn+7Hq6H9AJNKTtX7Om4fdCgIrFWAX3DuqPpXGwxhxljcsNjiVJk6ouiHu5s3kOrocq3NWVPdX9rMSYr6jAwa+kaSCQQAUbTc3rwEISTriPDoFa3GAhQ79YyGPT4DTaFQZvCTpX3lNiGNLkRXBuUg="}
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"92ad2e7f01ed4aa98d0dfa67965f2810","finishTime":1779068847000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1779068798000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101173037254}
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879311, msg_signature=b1dae080bc26798a10f9b2aa10c7e8985f67d890, encrypt=iycm70OlnodzaiVH2Y0w5koJNYkeEGnxRDKWJRwxBK+ONtbEdk14maVz303bYeDujAXrqsKB53IEwx9MZTnDdw==, nonce=jCoXV4B7hdTLUxMp}
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"af5ab9d071294855b9c3871995e96385","finishTime":1779068798000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"项目负责人确认时间","remark":"","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"76d0_7eb3","createTime":1778912734000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101190348445}
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"18850158dc274c70a2acac8d1f0f32bd","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"研发技术人员确认提交方案","actualActionerId":"264325116326361164","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779068847000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"264325116326361164","taskId":101105511366}
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879313, msg_signature=e38699704788ff586391f37b198ace8b0fbcab49, encrypt=jvMrhLWPtowbaNwc03Xa95lh0zHPOD8dKfL7QArkit89P9FZ7HFY5CtF6Vg9n+HT8zSMMHiI0MerfyX5q8xiKQ==, nonce=MOmG5RersFBI4Nl1}
2026-05-18 09:47:59 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"10dc47a5ac71099b0ded79da4b80d2fb372f6e36","msg_signature":"10dc47a5ac71099b0ded79da4b80d2fb372f6e36","timestamp":"1779068847945","nonce":"klEtB7a4","encrypt":"heGqm9h/y039L0YB166Ymz0fZEAWesnhBIRZI08NNuMis3+U6GVTTvGODF4RqPL7srLCBJ9t4aBxbaCZXkCQGvo6xHNlcn2lBpLw0debbqSzptmHKjsKK1oGTRvDyr/zwD9z96oc6wh5e5P5SiKjg2oVS5u78iLTFjIFbyC2keI4+yw6+ITSY3PqpibsXIh6SeWujp/MSK7mxhJLRQeEMxJ9mg0tFPmhNDRk80a0ntcuWZD4855Nk2DgKcOuumLSbJgRaybyT0u0jwrIXFzTWZQN38TRQn7/3ivtTj/ZZlvcUYHiPiGsjhpKSv2aYfM6Y/vyDPgnrg4svvPhSlAz67tuHsU+RGrdmMRHp1gBstabrAPtaewYLlJX2foLgg5l4Dbj+5GSnkG1gKWMnr58y5u1DZpM2VD2ybg/pKBLl4A4BM1RAKfxU7+vCE2/6ifW/3ukcQAWto/EuAk6CYqF/AzySEsCdrKgaXM59bxwD9EfrEMSlYuruq+ZWOjUTktdTsw65X6bE9izrX+sQ8IxcQqdhTiOFn00nBdoxSjNglxOgpn8qYzKRCdSfsfyH4NpwJaDn3O6qaj2mfXuyfEaPnX0Z3XxUhRHWT+PspjFPhCG5DlC/5XXhmaDDzVwK3Utsb/MMJCRP3mK4noI5gGs9NZKuje5z9K4Cn9pedB45YPH3MXTI1U/hzzJkbgKqF8/kNb+Pxs8eLrGeSUK3h+JsZr9bveY+ZLoHKuBdVDtEZIN36nKy6C7VRZcwrUNPh2o/5N4Cyt+bzN39qUdPFZOmH1IF2MllLrwCtOew79DLD4FjB2p0CKkMXOqcnJ4/Nf82g8z3vcNLd8D9cFDzd1puN+S481IvWPeG+wHh7mdncefhNfiIrm21a7EVduFzFlgLCR0cbFAJFR9AKod3ovPXHvH6bSiUPJ3EY+dvORnTNmMK9b5nZhmf/kenNdxmElHQZdEccHiL9RNcXPD8Ggov65nmhkXJ8J964fiRJcdEqOyw9mDEqK+WktcQmVDletZ"}
2026-05-18 09:47:59 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879314, msg_signature=970c2b2f538fd4ccccc16d7809f8e126dba03e31, encrypt=hpTIFRxYV+kshAEytLNvpNMdllXcTAhvL/p7vvnSl1flhAGu5MEL3t3tJT/a/kCm+LmYktqAUc8jn5hwkivJ0Q==, nonce=PhSFYBEVWHGXLsfi}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"6a76bbdef4e54e1d8a3426cb5df1a9c4","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"研发技术人员确认提交方案","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779068847000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101105511367}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879315, msg_signature=a6bc93d3ef3e7afa9efa13c27ac142a5bd62ac31, encrypt=J/KMVKSeZbfn02/UqnV8UROODdX69r0XNGkWggM0wivBKnMjJwpRYmmqlB+2RFvyTMaogqJv6GVU9v6EiQN25g==, nonce=SJhvVgO0lwyvRtI1}
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"ddb4a433add562833cd89453b18f41150c14406e","msg_signature":"ddb4a433add562833cd89453b18f41150c14406e","timestamp":"1779068811329","nonce":"lWop2Q4j","encrypt":"pLu4iTB2j5FsQf23b8By6hnYTqvIDntYPcPXszB7Nu/hR0H5BZOECVMYY4SjYRii7NYl8j0zmMs4PEXhp42vkf4m5l3B70nAL3+nTkuiz6BGSzU0jWen+4a1I433uEyKDp5T48J1uU1liimBMmyXZLC7oSPNJ4dsxCPKLHGHslQ12soOz/oPnrkLMiaNvG6kePqntQ/dfekYnTQq2qCbOUIwI1WTs7NtXiKDg7C9ftFwO1uyVttTrLs1Spq/UHMejDShR1NyV4LY/KZiCBwRZUJMYiUr7V791SMRRmwozQ/U4Q85B1nRXRvclJ/6tY1r8oXJqDmbp3h7x6dfOI5D3NylAWcaJTOWSYklif+VS0SbngutMCxB0Uuiz3Ba1TNposszrEc/I6msCR4xOmbchzMpgfM9z7XeHKw6pLM0AFYYLNE7YHEv3NkICprrEati+CbPg4ZzJmh8SFYVP+AIvEijGQvlhC3JPD0kCx0pF+u2XQUAjZ2OV/eRqrgpkGAyYOmhnUkTXshDPGRmdm1ebFhy10794b1KLLJ/vsnkhouJeM2otlDobMemi4Ik3xgrzLP8O9+GSC5yDs14I4+WaDwU/OEWH3S84Cu8SphKFuSU8CaojAVFKZw1AeA5C/2VAf0tx6ajUQ4J76eFVEDrpSsiGzjQMAaR22j5XfJIlx9rwHoeXHpu/ftzBbo4tRzluwN32dXxSQswJlN4Mez27A5mYyKlp/cyUn+NezzLnDjpqP2e9PstYePh8uP+v1+6/kneCbMYLu0smqQbW4c3riWjxkaNplZqMfuPgQRmz2KkppW3mKhFXwBIWTWuaLKz1pgCFvKqaf33K4z5J87ZWIpmNioas4Oe1GefoFomMIBQlwM0UZrW2qLjcYXsZ+PhryjrzF98zlq6A5n7Ms3ZthHSgTTygV544nxCQ+xiLPCA9/2Tvu+kCzPjufKPDFYpkHY0flSHAlag4pGi7UVhHA=="}
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"9b482b1878f281f6a6854ba721774bd9cec75801","msg_signature":"9b482b1878f281f6a6854ba721774bd9cec75801","timestamp":"1779068860606","nonce":"IrNXsXsE","encrypt":"Cy98bvaP5TeANpaTznRYxm/XlY84aMiFOEy/FgIUq5Xwr10fG8/MkoCP0gA2Tvgw1O4Z9lPFP1lMa5mZ+gBfwS5Qc6HzMCr//71GBIWxV2PyOq+asrZ4QNESSKKamergcp6ZSQc7JulejfYbYEGHHbV+xKawAkGyIy+R4OVJ9kpv1O8FVBs3+uzLXMOIdUT6hMXB718va3XIruL7kGhYkiKsXFMBCes0TTeOE2+wHi0iCEJS3xS2QVasvddZ7qGcWfURJbcKm4PTIXt1XwJ5QrYU3B+L7OAvnF5yICFwIgFE/cAOd2zQEfVpVb9iBDYA0TILUuNrnyWeywJEvoZLS4/su3VuLoydwwiYCBhVxSiwQ7giuE4gPC47vv8FBtJdSfuAaalSoTYRUeFxXrbAqCIA7GBKkCHiZrUrESsiaYlWRT3nVjYg5u+fmo6gsm4lb3eiF7IlTicLArl5Ifo5y0jSZ7tvu/yaB+s0JPvQOxvJYzcMhjzhziZ22RbdI7LNp+fwquBZbOLnTiSgzhaN2NR2hv2nzoNqniFjMHIYQNj7kkAh3PR0exhyv61tw5EWdpxOca42jMYSHL6hPeUCX5OgcrNt9JIYmXaxNixIorowpB8MosL/Tji0zjTusq5gfIvzypeHtIkMt7dxPEy8vYu5t5KfhMdh/B667ith3pFZbwOdXxvGWDLA0qDm+3BMkE3N9tkzFRNx2c//oVJ2IdE3VlKZULIF1ZOXfJiFTMFOtS6XZvg0PfhV4p4lIkcFXQ2siLMsmZnqReGq2kxr1af5bJnZnATXICK9DTwnUmW+5emt25uIap7Ds0/k8DvDvAbgeyLQkrioVQxFl+9+Nvkl3qnMlZFFPpsuR9nA3mtdc/VCpPv2sngUo5YeEIKxntz+mp0GwLj64TuHQF5ZCr8h9D8+qDP6v8Xa37g71pKoN8V+hXFWUoKk3VfzEwzSgCz0tYpcQxnX5tUpbONqKl2eWETDhs8DTJtxoK4vpt2YZizOpHeCayGXMv/PeV47"}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"b9f10c8f6b648550f92138c1a476bd1638f1cf38","msg_signature":"b9f10c8f6b648550f92138c1a476bd1638f1cf38","timestamp":"1779068860647","nonce":"uBr7MvMS","encrypt":"GYts0SMhvdcGbxmhZu4XhRx0XG3Ix1u7TTLPMkD/L1ZboArXgrBNN7scqFW+iwBtmctdF2VmWuyHAe2HOR8ZQU5yj8T9wiay6SZgxd+TByl0axOW/d2ORlBc3JPlbKlB9eoMICkXAwB3DVJwRPWjDiu5fvWlhFgMNvhK/ztKSZ0mSxmNbppu1wnF0CMjWQ66+/gy0cgG6dsEFhxsJVyI0SnG/p+yimj7+qLTOLFBBNOsjnZCmpupsb4/dpicaha2vskELpmPbeI+DN9ELn98KtbJgAIFcRJ9vo3JpN1DBvoDIjiQJUwiR2RrJrc68B0Ez6f+UCjtxG3WzYsGFOchdq1YzjxXgvhB8G8+7u/OeN5uFW9P1sf3KcTKFlxPXJXax+HzPHpsPyQgpuDfjcZ2c6FSJ9OC2DPeb63ccHB4RpHUhQL3UeBbLll0hWK18xQMqUdZSiVZlhEzEXeiGMb7+xq0MNU49vsLoKIYrpP3ZmR+LVrIaWKUuj45n2JfRxEXePp/EupKqp0Ony1/x8gtdpUXonw687T/nKxB3klryzVocl2NRyDa8u5a7ilfEePZP0bc7QMNaTDtXLYEPrS+pAJMKrOBW+qGe1H3cCdGSIRY5CX3Rg5R6glNqJ8PXvDqR9c5+7EmI9vUNQRebHeTrN0JnrkCUkPJtx0Ftq6dD1rJlyFz48LiMnkyftRuVhFE3CIv3dOMbOCFUXPourzEJJe1h45amvWxuDT26A/T5jJbn5t8fxTBrPn69yaT5NECiWTHkf7YKuZUsPjNlI1QS4njPyCa3ZupDh4L/umELUdBbWBUoRc1Gi+4aSIY7TxXH9K1KFNlUUQ6zevzEteIRy1syZdcZiD9DpbYbztDAbUBMrmW3+0qUU8THwEIX0r3Bentv6o1jftwbCGtxC0D4ZN7LaV1xs0F7DiqKgvGRfLFSV4Bs4lYkxBdPARyfzy+P/+/xTnRoz4oYczFMA5E60tKgINzrMsMSzQsPvy5ksTTleqqnVg8yalHX4krWwUJ"}
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"18850158dc274c70a2acac8d1f0f32bd","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"研发技术人员确认提交方案","actualActionerId":"264325116326361164","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779068847000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"264325116326361164","taskId":101105511366}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"6a76bbdef4e54e1d8a3426cb5df1a9c4","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"研发技术人员确认提交方案","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779068847000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101105511367}
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879333, msg_signature=835da67538b03e61a8b66018038703e516ccf2d9, encrypt=Q1iUA5P1l7pO1E0YYEyCu4cWrNLwOeOZIT/3Tuenw6bIJrNDjzjIrDsDH9Sed/wk4xhFzqcb1SsDroxkW3UZJA==, nonce=3PPMxKvpbxQh2UGM}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879333, msg_signature=63602b1082f47d08bb74556c1a87b265c179cdf5, encrypt=NLVtMm6LCrHAlkIN/ox4FAGBxQcaFSSYYShYqR+drx6eERO7ZoLQfM8JxLOWIFGiZxuNrrMiHyspMrFRSLjC5w==, nonce=DndqMNZK61NXyVYV}
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"8babb5e69cad4391a5fb54bb421c57d1","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"办理人","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"25d1_3948","createTime":1779068798000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101173037254}
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879335, msg_signature=e44ab598f6d1ff0c2e673fad5f3aee89f330ab47, encrypt=uACE6juJh5x70zGRcXdmjj1qnIxZwxqV6kJq+6RXWObGX27W+ZM0OQDr0iqGLP0qZFQ1sx9LKGjc6EWn9OlhOQ==, nonce=mTBOout6RL3pqjNk}
2026-05-18 09:47:59 [XNIO-1 task-13] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:47:59 [XNIO-1 task-11] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:47:59 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-11] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-11] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879339, msg_signature=9164bc5c6aac92dcc2828186c34c1d04b8213e2a, encrypt=xc9PwRrFpW4GqLOP3Ymn99LytYpoIVtsjRfmZ7kr1Uc5e4qpXC2F7NXpTtVWq+UHTa4KxJWlkx3iCOClPZGCXg==, nonce=R5wvzT1N0iRLzxzt}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"a7a5163074a8ac55fe276234ebbb2f59eeb3fddc","msg_signature":"a7a5163074a8ac55fe276234ebbb2f59eeb3fddc","timestamp":"1779068860545","nonce":"9PQn9Dta","encrypt":"OXymIA1KT391tSfv43vT1wcQ06CiFQQgcGzO9QuVpTDSHivJXZot5SgMc0Trb8NaWIqzBRXydXxNK+bJ5Ey7Higzjc1eBE8ZzQe49CGQfc0hlQRsGQeMcOfRw39sG0EilqIVUAiSfj7XaPSAjznKwGeFhD3BGZl3jBtbcotvYjDvS4K0x8KXZ+fr/+QFVvKenf9uEjwHEltRkCwEjOXTQIDWN7otOCmwpWmcNeBoRU82p4qr4Hb+MMuFWl3eFLBTemyEZOzBSC1OvZki7bdxe8I0H0mOGMZWn00tU6lTH/qizdG7dSGQk0vCeHB/qglQ1Gel4FPYXW2LY/aqj56RHyYR+D+COH9LXu/fBcCe9snSB2zpKzUMm/EZayrXFg/1Ls7ZyexgHcda1HGKe2Pw8WsdKS6owQLaHnsBHJeLpqq/S4XK3MG8vUx7iSsIpmmY84oqt3DgCha2EbMKGeqxKW/ZorYZnxp+lerJTQZnKW7p2lkYBlVm/9acSgPZ+Dqno59Ez9AAnnmiSTY8n3mXxvWYoJuypIMxuRmFa7zas9ypsIGtSmKynIFu1OlYWJZ4FXcX3Sc4ojHF0jvNcsObY3JKxYkA9szmpnZ+jj5liertNcXzVwuVfE0rtK7DcEVQIdNcVKJ0qROUSRX78b6qhpeOd1A3l+Kbwfa5+whdaoVnjj9YMKOv5IfZRsEot/xswho2dg3YtxdccHLX2KnRSdT4Rlwog5FpPuDWSIKX0gXkoorI0jFCLt9hwEfrDhCTQX32hZkNE0Y9yegqxoZefNIPAPxLi96J3ijApz5C5CoQ9oTe0yA8Zp2o9UH4FueFNXU66uiFW+4ih4xrGLM0GcU8A5TbKD2qYnibQUui3+WbOmDxozVAUVDjM5D7hv0CtHTDPLZ5eLYB29EcBaImcuXGp/U0EqAQMnrDmWhQMpAuZgUebOpsTf8IQYTtSvDs0+3QE+kNnQZvlCAY3SdwKydocNNeo+Ryo8Od4vv+1MzbhkpcfO7GdJyn8/qOngkvzr7ljNJiMfG8reJro8xZXAIaXnEILBIJbEvrvR8FRNc="}
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"92846be5f2d7770afcd2f162c7a3dcd69cdfb4d8","msg_signature":"92846be5f2d7770afcd2f162c7a3dcd69cdfb4d8","timestamp":"1779068843969","nonce":"8GV7r6CF","encrypt":"nDx3ouv9uH/U44g/8mCyWCLBH8wPcTG8gLOfWRQntUaTZrhyNDF2dALbxtF5YCpseQjvRljDXHXEHmrtZKEmxoBE2hStbCCDN7YvcxQ+jxezoETTU3uvdth45Bwv7poOklj/5A1CRVsLA8y2CU06hEDjRDVDnSIfZbiOurTF8y9tyycXPDjZ9kmrebpU5UucpWyezsY+iARTGLCxXCnWjRn4xj68fQPfuCy+0Yy/jKdHB+WKAKYjs0IdJsi5zvZTFBKAkGfTUdfbriw8w+dT3bBaBOAHFtDSsup72SgupCUN4IprU30LzeCRWSiU2kjedp1ksaEQc99p86uEBxIRRuUTmn66zuTwIKeQ9zhr3UBb+DS6F3Dj2DCaWPOngAtf9ZJD4YdvY+EKLEWLrasxD26taGO2KXJ+uaYlLgT6XNnKuhE3a+dOUcpU3t8PCUPOC+Wl6CjFfTYw3mSJwfW7cWxzi5x4cyRxW5xNFuNpNh2Qqvz2xRfJEzyAv0VFEW/sLLKUtSmISMn/8M8cENM8LPNNA5qLej6RhvRNnEz6SAa/feqDONTD5MBV4YDuK2rKMSWsYNCDSMRTrfhWUQF9yolxXzFlky8HEZf5VxXVWiDLoHf92CPNAGDw63AM2ACDvmJs1DQfgRZm/HpeFq9ZXMb20/7ckL8IxZ8o0reRTD+5trleaXiPbQEZcO31+rPT1PkkBz5QoPssamsuskBe8yx6CSH+OzLKEUrvPneZdm3AJv/achLVzhRzj24p9Ch0L2HMjCP9QgUfFAe9g/BbPYWkpLMbAQxcLc5MT01tbsAVs2WpGt4JYszek29X+FhBaMkTzQBnjAC228LKa1OMrbAsoel0kYE0vywfNZB4vhc8kJkmQPT0FrjSme7GNE8SJ6WtKkDMfAJgHwalgCsdhS+XCXw4wnDKEIUs0M1SXWN69RtFhfd/pyf0QlXCus69L9kcZZVMkftFWVsqOwJgVg=="}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"92ad2e7f01ed4aa98d0dfa67965f2810","finishTime":1779068847000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1779068798000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101173037254}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879342, msg_signature=af0ff607c3693c6b10d661e77d781c24541157dc, encrypt=rbskvrjI6WkonSoDsQBmcd0noXABSxrrsMvCyctqBjNDmSU/GpmCl2jmHw8+aiQ6oJDQSgU4P1+b2lkxCFUOTQ==, nonce=vkGkQicHaIUde6Xm}
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"4ef219a00b9917375f59c1a2cce5c2e1c4ba8ee1","msg_signature":"4ef219a00b9917375f59c1a2cce5c2e1c4ba8ee1","timestamp":"1779068870052","nonce":"lQQhFVHY","encrypt":"faXOCu/o6E3KZiIH6cYtxH5miuVXBB8Rm/TH12CTB2ag78o/vM7W4eniFc4feorE8J5WdYtazqIzSvfMXHYF6uEsDkw4Eb6KrRSi5a/PZPAQmUlACvciWKNnqxO8DIBQFPnYyk1ayQQjzQldrXlFWMIMNbtRUPhfxmq8QW7LNqP3o+FIky2fpIlLzIf+xXq+e+qGQS96hTKbmnSfImDXatSvE1AIx7b8jYryEpjvuWgq1PN8priWMP9+m5I1Jhvp1zjKov2eP0YpaI7DSMhxfnulYc66upqvvNB1KhGpd0MnME91f4N6WlJKfLjQG2vGWgZh45OYZ79uJwfPG/Ti0GOngTgTBz0swFCzBoQdLhy/BdTbKgWuOgA5mpTtLlBaGfqgfyAK0FJsT7rexGY+Z54Tfk/OqpNszY1NchMwfb/mVx+WkiU3he78BAPn9hxWL68i02Q/xUOQl4VLFKJQW7kw3Sjbuc/44P/4C1qHxNIHev7kfxqwSM2U0fc5BFC9sjdQLZA2TJ8V9cJT/3ZPIlEGYMLRB4+bidR4zvsW21+uvpbH0/F8pIEJNPwKgxVE3C04TtHOeu93n70I3dJ7RDGocBwkWAp4ICUCau/gZQpAvMOTC82a8pOGt2TcTRz2GkR1udB4UyRjCBwEYA7wd46GWfeB/axDtrLje85oYKVsnsjVG/DDDywMPWqAR8CgTtB/xbQyzBsMEMo6FR89dC1MoXVtkkUNS1Zh3jjmIwUzhZoEP9CKrm+VAwLwq4A2EdggAy1NyUaceFUZN9tGOJ/LebJfPyZeYM1NF4Khsu1ebcHYiXUrrRoSaibb81QOXlqJ4SUwEAb7nxZoRYIPfC915WQLYLNIQ5EijPXYYfFswVBN4sk0ruZzxSOx5LRwMENfjD6WVKdgZ+qy/tNAD5ZrHPE9D8hbWSeSRJeQxISStS4ZZ0eJ8LWflRWrXoRHmBuot0O5ZPZ6OVHT0gHUm2vYpqXVuj7z06Bili1+CZ7gNrjI1DktE/UmLKPEj1XJgow/Waw7LNPnYmfXuIUhnhhDvl8WCaFYlbMqh8HVL6I="}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"8babb5e69cad4391a5fb54bb421c57d1","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"办理人","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"25d1_3948","createTime":1779068798000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101173037254}
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"-rq9EkhYSqy_p_bPRn446g08411778293593","eventId":"1a0434cd6583443bb6f839346a86182c","finishTime":1779068869000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605091026000330395","activityName":"销售确认收到方案","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"安宏生提交的技术方案申请表","type":"finish","result":"audit","activityId":"f135_c1ff","createTime":1778923843000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101193056701}
2026-05-18 09:47:59 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879798, msg_signature=033d328f7eacf6b1335567c5207571b3e7e45f86, encrypt=8kYJ5V3RMG/PKCLOLh+8WAfLR47a4+uUPldvgzDgXjikE8IL58/z+IlTIDVokh913TgeEMs1poNT1egpMbx3uQ==, nonce=jvDthhDmIUSWXBbr}
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879968, msg_signature=0e0694972cef359a984dd76522dd68c5f38630bb, encrypt=tWc66WGXl/9xLnXvbKeGoRBwBDqXvS38vKGvIKow1TMbgKLJX7EOuTTT/TaT2f+Z4iRxH02DBukb677lfgqhSQ==, nonce=IBRmkZRIAKtNtZPb}
2026-05-18 09:47:59 [XNIO-1 task-18] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068879969, msg_signature=a4f4e1a61b8faecaa519cbe4a6d288a5568e72aa, encrypt=dqJomYM7bkW+M/Ex5qoiLMmbj4tMEYhhmClo92pGWuD8/DeccDjyUTJf5ljB8Yjza42umvW9qMLlk7Ggcp8DYg==, nonce=pcSlxryAgsCU4s2E}
2026-05-18 09:48:03 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"cc319228350db2dd4083582a8216d7665244c0ca","msg_signature":"cc319228350db2dd4083582a8216d7665244c0ca","timestamp":"1779068882676","nonce":"E2VIJ1aY","encrypt":"dTzQF5wkKWyqTJoMgiqhQVffpiK2CXiVSFn9VZaf1w+aW1Cod6C2v+Ddl8TrvvEdAkhXt6wHmjKUHAU9tnloEd52ig4Zm2hcV389t0ZRm5U/CBSaiTUh5IovBR4z/mxSQeqMW58McZ4+3WQGw0WWBieAOImvbF2yASBuTjptHiWpM0B3OM+B/hG8nZmMHTbmOTG0fNeoUuuBLpwIoRxr+AFdxEVRogCzx+jinlcBZM9vU6iH5JpiCq4yTXD3re0FbytsKj5x0nsse4hRy1U8OTEdc6WxV5ijEP+9qXSYo4KjXby0KWIhLQvRG7OQ8kucucSRGj0eX4+OJTNc+WMUpPpvi8ChO7moXIgbTvFGfFvd7DEnHTYbhLLTmgaVi75cs3wAxnswGZ8xQNs9RRVOggoB/QoJZi3SDbux8qvY73G/S4wMAaVRHCqWN3kACZk6EFpoVHVcH0mxks3dLTpTCm18MFaWFI8f1cnK2rY9M+6qXoc3W1eyDjKa0DhgqBrXqnRdnQLY7MoiTS87tX5FKpULkJJicZfYfEUuQ/kY8wU4/JAYnOI5cWEHVb0h2JslkzclQZRln1s5chrJYYJY3LsSwoXw0oWjKTL0u/Id04QVNbB9+eU2m0KoLJJyZZZuZQN+hG2y5MK57sYl1WvPggbXM54aVv93rY515z7Vzq/QMbjiG5VyO1urN4/r9iRtXYjqnX2iEeqCOPYEX1SkN7L+zLLJ62SZo5odaJ6O2lUf35X3ZQHUSRB+EUSlVt32gv+LRAGi3d9imbhcOU0f+/PKPS/NmY3YvNGK9BhN0BBsRVh74Yop0DPazOJ1ye2bP+vmRzs6uNIVND09V+aCzdauCjAiqJTVByJ1JNcqCdcEtP2A4AA9KfWUSkWKtU9Gpr9e/Pek9PD167/pBwnuWCRpirrPtRwCivDPNdOwzSdcNbAjprU3NBnBqTT/NGIcNMliE6CFz1vfzQuFz1cvIGoi60+Z56bg20dtARiC5lBEw0yE7mkA8/jNNybk/YYV1wN2mNfIBdCm+aCSmY9SuABeUaXeElJziZzlkiZcJmk="}
2026-05-18 09:48:03 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"-rq9EkhYSqy_p_bPRn446g08411778293593","eventId":"1a0434cd6583443bb6f839346a86182c","finishTime":1779068869000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605091026000330395","activityName":"销售确认收到方案","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"安宏生提交的技术方案申请表","type":"finish","result":"audit","activityId":"f135_c1ff","createTime":1778923843000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101193056701}
2026-05-18 09:48:03 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:48:03 [XNIO-1 task-9] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:48:03 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:48:03 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068883166, msg_signature=7bbbd846cb0055bf823a524f7dca16fb61b20ff5, encrypt=ATnndycsMpVV+6ZkyTNIwaaTKBtnv+VlZxqh/j6S+xBgalgHxxR2BvAVn1SfeP80TNLSBH8RXh2tcFd8U++PwA==, nonce=EoIHJ5LftMMXGdX2}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"9da92f69b07f8e9402292dafbf88a815fd16bd89","msg_signature":"9da92f69b07f8e9402292dafbf88a815fd16bd89","timestamp":"1779068893212","nonce":"oSW8CaTk","encrypt":"IEUoYEbG3T2YZayWdkniPkrcvOGSM8TiNRmJQ4XcNneIu21n6eIqBsiEygusO3UQDSfP2F8mPukNgOqNizxyunaFexFvW6d/G1bW9mAx0JadFDYXw3gL+MYaAqteLv7t2fjmmwgogDncDDm4SS23zND/5e2dtjKwl8vOzcrKpJGgoeKpN46oCMRF/SGdMPoem0iuAdnPJ8zSB6kzp1WLmT5xPCTO2z/fiNfvh3GZxMamh/s1TwJMmRSPU87/bmls/K4J6ShFcSuyc+5c6+MgZemm7kxfgklm3VPlpKX56aXc8kvSz3Cu2nUuI9p1rPa39SNka/dlygBVKeNxKC6BQrKiL/8mHIC3oSTQIptlwuIooCMzMtRKjsSBo5b3KBrBv5JYQBfdJzFFo5Icr7ef7OQbzgiWVadmO9NUUzxY3shMUdEeyOl2dXo4CfhsC4xRMd3AOYSxQM89zzBL8KNAjFNWmSNg02UDiDlbOT+dpQ3zIbu1CUpgc7NMwDsfhRrNJZMjGbe0MwV3XSX8dQvtcxXQT0PjuP5HcRhUFHKh5r5SWNPIVg5UN+Eh9lhjvtJ4ua7az4VrV/Nu3L2dDlxQe2g2tQ9avJdyhj8EwMfxw8aFcOCvS84cxMuH7swHW99JiKLOvbSbFjnWevrCAEE4WGn0k2vQ0jMvkKvmsByxXFQsW7q+JQlSFFs2vPt7VjjWovYP1+cOphkJYACBYHuhIWuvsdYtg7c6Yty8rtj93w7LBEkRT0bhwp3vxBFenrHWnpWwb1LF5PmoMJ3TClnUDbmU16vduS96663945L71mIteRTe7XuHoi0Nv4abq7ryQLuqUUImjWzAhwW8lxoeSUHSHWfyIgB6aPSU51pDL83FIxXnLvtGdTMpheYng8399RRJ6m/QK1o/3HDTyXDe/P0vH2HvfjWv7VK6eLMGOoD/KvG+ryuP3wVFiQBtiWC7RSH76Xao9ssZXIZd2CMQkOnsFUAjjXlLRSqxrMYcCI/a57WkXzHTqpDYE30UBaCT"}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"18850158dc274c70a2acac8d1f0f32bd","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"研发技术人员确认提交方案","actualActionerId":"264325116326361164","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779068847000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"264325116326361164","taskId":101105511366}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068893525, msg_signature=41b8e9b6ef8a8cd02a504e3e4bfdeb4a827f970d, encrypt=xyvpq+TrrydqN2TbRCLMGjBMukWTnHCuCDb7SBC0TY8FHOgdq7bLjQ8tUeUtZv8pKF3fLWn0sx/HmvGEtxmJMA==, nonce=XzvBzW958Zskpipy}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"2e40ff4cde304e25fac55cd50c19b36fd7b0fd7b","msg_signature":"2e40ff4cde304e25fac55cd50c19b36fd7b0fd7b","timestamp":"1779068893210","nonce":"LNGRmiV1","encrypt":"DGeHEHeIbXnfnQgR1PGjTeedi3I+9DK2EhvdRDx8KqLaDYpNcM48TpCXYp3tsoOld54Wi0ss8ipJl63ZEbS72k5jKTE1K6EK35zPYVotKikPWStOIsxRMZf2y11E8CepzsBNn78bJ6E55HTYc6Z3l2R6ptt8m3/ghUGlWrhBvqc94Y1v72xWduGJWWbLNZY1EnwtwGFRHMXWzgQBCt89h4Q/KdvwJNlCEcnV1DNjDt/Q29BhLilJffo1fxcywg70dLEEppBVQjCAZIvnLvpBNXs4BWud8a7W1A7TAiA/VS1CMXAAeXfKF1gwMMz5OeDxGSYl8RQ3g03+GnLb3mOm7eTusvYQRrZjqSbJcnd7zrgqQqYOQ2xU/bPRuMRlH+AViT+lWai2+vTS5AxY7sVrEjLfmJp9U+gIAwiH7COxUIG1HWjHMb3sHT6j3vbWBcjLOyVDPc0ojRCViv09uEWuaiY+Hr/4ZLO0u5WF4HeOwKOwzq9cJnHL2biFflf3HIO9hzmmgodbDvhGMre9AJ8J5n1cnH+Y8/EfQy2Mvmfc/DxTSiR3SW/AzkMESEL8ahLK/LMSIFdfpAARAsGADyqDNjjepnIzayxvTYXeWgcJpobNM1YRnK8mB0zVLCmImvN5+1Q2hDOtqMC/DUwKtOXgNxqHP0XbzPE8bqz93hRhoQzDc7l/Xx5oaqGca31hxm5msxyhve7I8CMDfFLdOnqMkiMdm5a9yWM02doXGP8aBphFf/A/z/aYvkznV8wDCEJQlZrLVQDed5BqFa92kd8zB6GoVFAI75cn/p0W90y3hAbt3uqE5KMtP13GwkDroI1hbZjkxwF8a7HxJkQCgW6WNeO+N+J9brpnWbjxTRtWbSzlUytn857EElmozefeg0m824ijiEMkrr/USMUSyVuMV0N9cD55JPbsaufS/3MDuRQF8YifijIqq1FRBQ+BrDPZwn9hLWdsHjych4bHvvLWnE998RADKm1jxP1TFlXtxVtQiFvUBAZdxKRM3F1Du3j7vxoIrCVt8RXPBC0LsHYOyCiz7VlOUScXVL38J2pUPEc="}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"92ad2e7f01ed4aa98d0dfa67965f2810","finishTime":1779068847000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1779068798000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101173037254}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068893547, msg_signature=877c3097e922fa841dce4f2df3872971a195344a, encrypt=i2BezQExsqZUQCAKv17NM66gRJuzOnv4UmOftRyYNoo4KfEOsp0/MeKgwmU/en0phI4u31rTCIjh6Fr8f8PHFw==, nonce=gLL3Dq6EG3bnHnRv}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"ee267417216ce17f014d041a134f41ab81b616b6","msg_signature":"ee267417216ce17f014d041a134f41ab81b616b6","timestamp":"1779068893286","nonce":"wn5KMFZH","encrypt":"blnDbJpd9W2X8Cs1GLDB7tlmKbg178LiWp3fWEDoXWrkJy8eq9VGMOgrU8NVA9G8yES/nFibtSldzFyg6lhlIQ5dUgKXsR8P+cqLAYIqnHj7THKFBuNY3zc/Ln//awWfCFhnmHmeSny9fdQRQl79CKqgp/9x3CnqHAyzwTOoDG4HKrdonnEADHnH6SeNWYuz0mJr6pCwKNQVYQ6MQsoO8csfanPi3N1ACddaV72+tUI2dBWkyd2VhD666M+vNtN09ChU4EDgMczpuqxNLzBitJk9XrADH/Yj9PuhTj5tkDWGTbYuvrnw5oi/qJjG2mQdFV8UR3PyB+lavmXDaqAvZRgakzr6aXT7nn43KxIn8g3ee9ZCw/kzXw/w65ToobCspheayRU2lSebeM4Wh61sAkQ7qfTxQjp7NltCrTIAY2c52l5oSZwrEq4Ctt5Qa0xCtx1AHWIDNdaO0QER/vul7K71jKDEMO3Uy4EFPPNOnRD+QpaibY9stdTyS6XtX5AfJ0W2Xi0Db4kl7nRQwluUGjKE/aI/xSiN9BXDKmvJJFsGAihX1tHFVwrf0dtIYFPgB1k02GnVE2fzgkA1E9kzomnDiFjezgMrHNXo5lRGoveYo39OODSiY+1XQg4PwMwl9ZnJkUI8niyz8FJa/RilM/4YENvo8ycqP2N1qFX0vauq5cAwmws/U9TPHP+sECoFL49mvzw7Uh/O15x0cpnnthmOjoI840MnkCC3iw7Z8hee8BwNzI9Gl6/oVVspo6hBW6f4MwCFqw6LoUO3SynIxGTwTQsHpm8iQw/BDBQANeFubghj/Gejx4pQI4rxk+v0EMD40WKH7I8VoIwljzndxTMNSQPcyOumbZfk2m2QM/aC6DSgzjKnNgp4dibs0Y0s46/czMDt2ZgezKZEJzAb9CRP6pQX/olSKvdx1b/0FgHN1iMcx1tt99Im7hz1qJes5WljsuzSEl96S8XybzNkCmxh+fMSm1J57rH0HuWHz3BuCgiOkJ2zlbG/2lfvfryZ"}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"6a76bbdef4e54e1d8a3426cb5df1a9c4","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"研发技术人员确认提交方案","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779068847000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101105511367}
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:48:13 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068893588, msg_signature=9517f1226817288a980237e615e79d2bcf3edf03, encrypt=jvSN88XIM35ozfmfrFAlmzXWgYG7w1GMXO+r2rKVMe5a2qoogojlXQtMSzzI5hTkNsog3N/e8tfbZZ6ECPqyPw==, nonce=Fi5Ws5pRRyzzoUcw}
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"25179218391ba785f487706e99da29b4e9db4b4e","msg_signature":"25179218391ba785f487706e99da29b4e9db4b4e","timestamp":"1779069145905","nonce":"lxPyn94u","encrypt":"4A156tExFJvZdD3z4dtotjrOjHpzZWE/xTqkKqLAZ7iOnIdjzCg9FyYgSQceRdpeSWaLWJhtD/2Ldz7MqamhvOq8eIAFQucJjY1DrZqffuguojGPKG5ayzp+63q3Eupf2ztN9/9Vsi9m/XEExk5NLvGeFIc+5kgIzxVcu5jhxCaP+VWudanO2x5DZE26ESuxOXtORu0EGphyY8koV3k8cDupiGfGOYez9rgF2SxGmEJsefZIokn9e9E6XoSQIvnV3P9gwceS1bSqTZdxtrxzPX7pHzYeEUs6jtEoOUoLWljgFE2k6zXd0SIGSB97xQ3JfVFEnUSb2ul9S7xyniLBorskE7fhcanWw7GTHUSkYWjzkw0Vpo/8WjpKEKKP14IG2ScXM1yB638MIDPXGX8XHBU2uWPd0pqc5yDKo2UXAdigMleRSNA9ZDGNkPjU4OoRp1ovdjqGWd6mE7cbVTpM2BW8bAqX3/oSEClEMlTZTiWWaKLjSzHw0/N7/i7Bi3GdP+AuFzWYlJXXz92EkoKNMl9xrh5MkvarJJqkQTaQRtVhhqIiu068quczBtASrXd4qCw+VkRuaXgqGyCgVfgHqA1hICxxBhD7RyEpaXPezwssdMXN9Cbq9S1KvfcES+CPzo9bfSbrYm1U2poJoJkWkDMn9FIsLyX8P6Pa2sg0g1n69Ivl9yhD5y47oVELUesQNLBRR9G9VQFxOcoGq/HcLf2SxU4g1Z2of8WWnDxAjiHqlcjP1YIt9HUACPo6NA9k49JZDKGbH/mTK3Y71bKOOz/30VRrDpPqO77k0HEO6S6tZ3z4N1AFqxLeKBMwcMwKCzIcNnS2vRDFVBJNqp6mi528daktwfz5r9vLrMyCjuI2Px2L/QE3T83dXo5Rahsk2Lm2RHhHALu28exG07wCF3MIQdskzAd087OQoKbxbMViNgOjasK19DP2pxqgPtiPFOP1tRBR1lJznVh+586rUg=="}
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"Jhcv53cQTNWexrH7sFpvWw08411778823288","eventId":"12698db62c074352a292f31d9a8ac3ce","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605151334000488937","activityName":"办理人","actualActionerId":"455108492423275705","agentActionerIds":[],"title":"安宏生提交的技术方案申请表","type":"start","activityId":"25d1_3948","createTime":1779069145000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"455108492423275705","taskId":101173181763}
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779069146212, msg_signature=4d0d13172fec3030a5f63319c7ccba706cab2cc4, encrypt=Kdoa6JFkh3ADSryXwzybCuuLlwCl8Qcrb/nn/xSv9nn/aAfZBPITugOarg8k0hpJGKLeaH66jDodl4vrHGu6eQ==, nonce=fNfvBf1sUEX5acQw}
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"786675c1546f6c74812503b137f2db861c3a9fee","msg_signature":"786675c1546f6c74812503b137f2db861c3a9fee","timestamp":"1779069146111","nonce":"pyvzZ1Ky","encrypt":"CrluvoHAXrnqaSvWJ7Mnd73wchvHLCN2bd5wBTne/WFHXhhA5AohsGtHJdrp+pZxVGc96kM6xBpFGQQN84J9ZNICmz5L+onFJwzmTsz5UOzAO5ccyX3kVQ1EIwBesYQe46B4nEWy6yG84Svnjs9YrWVH62cdrPuNEOX/3/xV5iosIHZRBxHL6l+JPLK+8dFmL26e46Rx0gKncDKvvdEXIgyIncpeo2/9TX9QsKKXE+jqdaCCOrmaz3uYEP9/zlqb1pXVr7RaN69VxpQI4WNVnkDOxIApqwdtMP9h+MLnn9r1s23POSvmuA+NB3c0VuZp/TRECO0MQA78fXe9Cn46lR0AMbInuRJlPUdgjCKbUUjxZoYIyTTsk6fz7fVKMlZenJHwOJMi/J1zwodsgcBvRIjfGvKc923FXPcxq8FOFbIRwa0frv1RsKvi9YNp9FpBlxq8E26rlWRi0tWYQL5W6dItni4gaqhzpL2v8ykD5OdxmynuhqlxQBZUS0YYWd03fZk3Yk5aexuUNsl6YvuGBRQ3I4CHlUuHDd+JXP3uN/1bOODX2cdPb9LloTVq8fMOIAf9cy3qex7MwkWl4MBGCeJw5paNgAwyIQnqMho7TUbxzFHOtNRaUdCCck2YMugJPogz2R76t9ZGdh6UR2CnZ3OlhFHRChN76vDU7yZxfsG9hd3J5EoEiCh0BQh+5Q99w/ANxO96ij41Q71FDB2JYAQati/6A1Cb2vkoFwqQQUEgCi05/hpNhwLVDbL1uY0eeBNCu1Zk3ACNtwPim2KnGU1rxLyUISRIbPq/R5ep1GGQEN8VUsmTfExmjALOwbSrIyPv31Ki5j3SM+NcMEOwtT5XSuugO+YLm9RcszXmRzh5WK2McSUlQaDrVPEVzMcT8q1QY0ohrJL/wIJz2tjoDg4lHKFMvx54pmUQCPJBneOsql8Hxwg80tZGRKws4X1ZD5yO+FVjkKwwQqBnZEnqKS3juptn6u7banKbnUDz9J78vhSAiU0NGr/lCw/697eynL+lJPx4k5qbl0dRSKX447XlOzSQS1PFFJ8XdNJUCCg="}
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"Jhcv53cQTNWexrH7sFpvWw08411778823288","eventId":"322d4ec6b97d4e3b803bbf017adea7b6","finishTime":1779069145000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605151334000488937","activityName":"项目负责人确认时间","remark":"","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"安宏生提交的技术方案申请表","type":"finish","result":"audit","activityId":"76d0_7eb3","createTime":1778894788000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101120670752}
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:52:26 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779069146422, msg_signature=d203f73b0634dc374ef221cd5565c314681882cd, encrypt=Z5Xl9KyUhYMLqu8p2AKNFAHXH/twyaRylhnc+uWQCBFcmrGiGSLD3Xp7fZqFKUaZX0hf+7/QhVcLf7GMxEEd6w==, nonce=dS2qordNsKNiKv3C}
2026-05-18 09:55:08 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"7b6065b5435ed5dcb845eda206f98891f94b789b","msg_signature":"7b6065b5435ed5dcb845eda206f98891f94b789b","timestamp":"1779069308374","nonce":"qQ0XF5sC","encrypt":"U9/+J4q6Gi/4dQXBugxicM0gvoBr4hT7OqlI2DJ4XI6UUbAocaI3efi8ZTDbhfIh/nG/TpQ6uwP01AXFKXBaoqqKcNXxhx46rI3aoznPspCjhF5Hwag2yjwCa5XAwccYCxipDUfq1SPR1QT5ts/J1w3n8zhG8Jbqx9FgzXxgCHBZc76TzaDeS9zChsumi21WPnU8TkV2mB1RqelwKJnKmiTpn7kKlkrqsNDR3JApcc7gVC2g41srppcVuCEKOJeZVoqyWkBj5YAs2kJ9bfRIgOMzzMvx/L8wfs4NEbWknHj2cdmbQ3lwsRdA6BJiIUBaqFEbV22T63mdPt8XDBVtQiH9pHEeaFw0KNZm+Vb/ahVge0hl5u8lexQMAtwvhOqOiqlz5U3c+CdP57s5LjLfpVJtEAGmKFS3f+ftnzgButvtI5d1TD0XfCHEzVwAKcUe/toCZ/hJqklentuUFeRU34AbkNpRX9sGOqpoF9ofx5ijRSEA9iDTvyYthJfk1y2pdtwqOCKgeqPWRbgx4mWnjzDjZ7yLT6p1ep8dSnoF4srQgwoxTn4AxlqSGhCUgjCrwJyw9HYdxSIeaTP2kQKJS9c/VS2jnMc0TBM8MJQdPr1y6hnAqMjuoWjjHiJ7aOWSgHtLJGSL8K4F2pj/vqhL5PnIZxZBUNDisA+iBYlECKI5vnwskrbZfJ8Lpdpel3yhcA+KIECgdoYGiY7ErGAMVfeZRFirJNH1XHbBUIlVSaYxwXAdsrOtxOuPLT6IgdA355sEnn21UuEu/iAwmhao+mthtYlz5Z2WbsfP9YaVdkGwP0u+rUBfivYCQBjfOZOVz7hPdAMUVHh+G0qO1r/3tTY770CZrDX6Rid9kHH+U44bRgkj7NpzahruphfRIxzD/MySpWr5rPDVVUFAd7WOuNd01DblCbgBT+Ih6/p0rdHbh7VKCfZah27cCfZPpxSdKWAuJEY6JVnmfNZm6o3cRJoKZoBlNbheLtQfWrXzl6RzoJATv07Z5ap2BUvmBxxYru6scFxsmm9/RLo8Xur7f9AXn6UFvCIxSyhur6Rc9MQJgmHZu2Rkkwm1/N0GVQ0E0vrgp5QxpbMToL2J9s7wqw=="}
2026-05-18 09:55:08 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"1d301848611343f7a0fa54feba9a62a3","finishTime":1779069308000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"研发技术人员确认提交方案","remark":"已完成","actualActionerId":"264325116326361164","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"ffbb_66b4","createTime":1779068847000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"264325116326361164","taskId":101105511366}
2026-05-18 09:55:08 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 09:55:08 [XNIO-1 task-8] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 09:55:08 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 09:55:08 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779069308676, msg_signature=45d7f40871280721e96497ee0f0796b2cff02706, encrypt=XsWSPFlfpb/LvpWzDvbzmsmPCfMZ6/y1vOnmrqtfDvoYpIukp7rMa2+ubKFEluV6Pls4Mw0UNFHdNm2JpyzKBQ==, nonce=mLxoJamn3JSUc7GH}
2026-05-18 10:09:39 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"965dbca5686125f011000e7d7ca26e3fe7222778","msg_signature":"965dbca5686125f011000e7d7ca26e3fe7222778","timestamp":"1779070178915","nonce":"I5T7Dxbm","encrypt":"zeP3BErVMQM5HDkXap/1r2ZdobBIhMSl3bRB7PfZt1aTTsiU7VPThvWR45EwP+uOq4O8eDqp4/63VcfM6DM3CdWZFwFG869+kbyiMLnkE9kV6ZH6IiSA/j+AacKCN44hyPswFFxeP4wgYvRo5Dtcym5NX5Mobzy0XF324Ri242bc7Im7mCgKfn/XQ/FInde4w1UAD7aZprck0+LB7LQo61P/3emuKg7li2HpjdC4wogcwqujgGpOZcv/scxP68i4k1YMjhjOInDiAITWUJxEkbWUSBTCiGeaQWu5u7jj+bEomxDu6jNHzTN6GrIUA2l7yNaZvVsL0b1juqSf6HDbbEAN5BB4DAnwH9wuSsVS2RcbsPqyxYdVgmFFrVAizGdefP220T/1DFdKJBp9lc35wvfZChEk+LAxklrVVY3weUcZegWJzD0eWOcuwk+SA+zXRdISRfO3V/PQQ5SsDU5DLlchq4hm2PrF5z0JXm93Jpem6EOCjMEjlF9YVbTOh4HNY2Lm6R3AJRGW13JH+TcaRqNd8+93FjMGsNaI2+LP9vkE104eh50bd0G/YzSlAm+yvuYrL1fgV0/d7/Aqp9CU27jD80u+lajc895mM7hFm44lXKd6sX6+s9fu9HpFZ+P1RXbWFeZZxB28pPwcVoNHteXpO/3PK7xUtu+xg3b9MUYxT3ysC372ViZCoX7NYkhscwyjaHEf9xJ9VoCVhIP9dsG3AbXZVVeRcSYm5zCO7wyaa5fQZrCdVW6jeLI+yroDsMmRIubMyi16DEC+J09Ek6b+uYZQ4xksy1V5aTl1QuEQoYGQT/wW7a1t+O2ndRGHuFpxmXUBzyKytfRMAwWHIbAvG7onAh9I0EoShoCtMIO8z+T5d3RX4Cs4mVoGWeZ+ZqUHoTIBjFnwlrkOlsGYABIwhfAmampZiLjI2yR63zXY8Xb7cRTf9/DxLwvhwgC9Iv+w1v8LAdADWzawr3EqxbcUGO2DgXSLw61M0OlB7MLyNIIzT2l0ICFqU2oXSMTk"}
2026-05-18 10:09:39 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gyHkreTpRr-PZcWjpVBJYw08411779070177","eventId":"24c3fc1f79dc4285b099ddf84c8d7f97","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35/type/start","EventType":"bpms_task_change","businessId":"202605181009000376823","activityName":"质量管理副科长(制程)","actualActionerId":"173760274129324770","agentActionerIds":[],"title":"师敏玲提交的不合格评审单","type":"start","activityId":"53b4_05e1","createTime":1779070178000,"processCode":"PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35","bizCategoryId":"","businessType":"","staffId":"173760274129324770","taskId":101211684920}
2026-05-18 10:09:39 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:09:39 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:09:39 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779070179216, msg_signature=fd3343e2473f727c5ab39ca4ceb33ffaff852217, encrypt=2XQSICoX9e6eZr8/qNW1iNqjxjSkhET3jovDtFbG43Oy52SDGCbJb44GzdY9LIrbpKnO7XxL7+bOvzvz9689Dw==, nonce=BNTW8F9ds7mAHDtc}
2026-05-18 10:40:09 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"2b1174ab86e6d89902f08e11e5b0cb8a7d271f2a","msg_signature":"2b1174ab86e6d89902f08e11e5b0cb8a7d271f2a","timestamp":"1779072008955","nonce":"WdIFCUiu","encrypt":"eM4tJfTaCN1u3AZgcE2qBK4Leg6qcCB4sXkzSGogz2fqD6DTxZrKLgGtatBjMObmNA05HtjojEZWKE2rEzVk1vQtotGMkNU3duHl0m/9oz+6sJOlWsCGsFb2CQvn1Aw+02SYCg9tlxGqvui/+Ir2ts18d+ZL59Nj+7JpE6KDVhK2rsTiqX8+zCVU0m9NT+L3xHWr3hFIliRAjey0VLwQNsi0p/l6OD5Qvcmn6OpigbubCnydfkQWzmR+hWpAFBl0VoeaE8Gn3uclFfuF8sQzygfUj/BDxZEYmWPXLzWBX4eNp5grBNGO/U6WVaT3I16/5KnHWhNP6uQG+L+fP0rP4AvA9htL6g1VW5Uq2D1I7fVSnQU8gA1+LDRr+UjEQXlX4xr808R6aPGw9MnNojbKjxh3nmjduHd4Lun/ZENRQXGXK1JR5W06+ddBB5QhNWZ4N++mbK4T5NwpE7DJrzZ/aDp8J0bk+uNoh9sYC4215L+3r3FHwHYcz6p/2F5NhXIJHTIKsMuorgV6rrN/r78CLGBt/ujb8PRd3tFkKJSDORw8MaLj7xJKGH7f0QR1EQ+QogGzBUOTTByM8DEWtYqNcj33wH0KE364YDb1Zff8hX4cQOkn7OY5CGlyCczR9MzPYVKNosHCh2oV0Z3YmVnBIz9IoQIfDoqpB8bgw9p5VN2ed6h6cqEcCY646t+kCf+0ZQVngYPIYk8ibnM+tYYD8kLvT79YViueMDwpdlVrJMz892Niu7ESNOwnW5mqW2Mp+ipoLcsU9k4xPu51ms+10L8it66daseOTgfS44KN+uS/F/Kr7UhVig+qjaoLzn5osG00cW+E/7nb4FFjFu0tVmA/HhcIkpBx7bxRvKpkV4cYSCYnFjsXgNdCk/6VxUd4btAAPzvZa8tSpccZlgMVudynSH79xqtVY/Eii3YmSc/xqwj0Ab9Jt5tOpak1iRl+Q1+WiWAkwG7Iuxg1IleBSgTnklZ0Q1cSpr4c8hpv/AUZxe1m1Ygjh88cQ3Opi6u8"}
2026-05-18 10:40:09 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"d072651a182b4e0283b24e5094b72e69","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/comment","EventType":"bpms_task_change","businessId":"202605161455000597391","title":"位晓峰提交的售后联络单","type":"comment","content":"售后时间18-24日物料预计18日发货21日或22日到达经核算需三人才能保证及时并提前完成[南正一](223241230721375124)","createTime":1779072008698,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"03490008103620345098"}
2026-05-18 10:40:09 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:40:09 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:40:09 [XNIO-1 task-8] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072009247, msg_signature=ad08f1965e2f6d709e7e06a3025ad2b91db13a25, encrypt=fQL73O2qKXLdpV6nMmwJrjvLlKsXc4XikopiRXqWTHibn74z6KSVgWTTeKD8PmZmlDdeRJUQdqFgBwXio9O7mQ==, nonce=6kmxMOCgtb8EcRVu}
2026-05-18 10:47:04 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"039568052a399c041a8c264e4e1007fe3300759b","msg_signature":"039568052a399c041a8c264e4e1007fe3300759b","timestamp":"1779072424161","nonce":"Hpc1jzjm","encrypt":"LXYx8WVBTEIqmUB3nCq/D3tbvTY69KhF+wxS/6i6rN/R0suZCmLJGVCCPe94e39bGC9e/l5102BdORauuR/zVrS/+4IWt6YuBJwQSJ7FBpANrYemFxcFptthHRRxjpc3ivuuyx00dLNR1N/sJguRL27whqcAHmSmpU2omlKyDWfHYIHMiXkFyJuQNksXPliBpEeJdtmW3LAlenJ/XyEyGWhoDpbZ3AB+zVbHq/1TjhP1DdvEVRn3vj5WQYKp2eugnFN5gabhFXcaToYW1nU98AshCcrIG85OWQ8LTlUUSsKYvPlKGz4c9cuQLc6o++5o9+nadLwWHmlXUvOhAuCuqNLTx2WvGFYX664TsnZMfD2go9NgHtq3S704hjHOcluSOqbMgSqiSGSpQ+/VqhmWt2ZfUI5WXdlOAMw/fIQidVFNmBM4sbE3QmXBUtPk95U1JyhOdKeZvUMWE6Qrcbe5frYbcaxlmxpqiTUxp1Nin2lLRJgE3Kv2szvPvdzYtT1pVuqUT+G0ae0KL0KZQFa6Lfg3RSiq4PD3p4OWGbewVdViQVaGPt3ZXKb6zfcdc33LPCspyfBYGpLzfDpCXC73nCvLEj29ZbOytjl0KPDo0ErjZ7VNmdM3S3yoA3/VvmGrf7t+YbJmtpYcRWbrIpcTPatwh2zKm6LPRW3hug5gK2ANAaC1PAf0Dllez1zNVsQQGzEQjIel8HjAEPR69i28nwesQf5rcRS7nzHV+khdO47onFl7NA4lJ3N86+4dLlVQlejieDbV0u1ZRR5ao+i/V6h5BRAXo86ICS0B3NUTQqOPpSfqTJ5QS9zpoyhQ/HVY+CBGJz75pdn8h2q/jmhOGZDVtMbqo24fhTxRnd/D2CR6VGg5C0T2/7HTBXCzkw44NfZkdSH6ZhHAb8Cl8Z6IjlB0TRG0Z7m6AJ2jQE1OsWusdqMi/D9iH/CxydvJ5d4n1oxGnMwH0md9VEOem0WvqpSrurv627yqkezDWn2+eXdFVU0mNJwdj+tugQuQQVIqfg9zw6QkOL2QIh2YiztRylgQSbkN3QtfsZNszNIgeg8="}
2026-05-18 10:47:04 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"f79915287a4c429d88d02f8e6c0bc0dd","finishTime":1779072423000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"总工程师","remark":"","actualActionerId":"035715651324258877","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"agree","activityId":"122b_b71f","createTime":1779065245000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"035715651324258877","taskId":101170493283}
2026-05-18 10:47:04 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:47:04 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:47:04 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072424451, msg_signature=86cfdc6167b03664c4380b7187bcd3fee4e9aa85, encrypt=mUOnjTBJtHoM1WfCWej4kMtiY20m47Bl7hNBKy2/ZQxIvt56N+a+6TMwhQyMD1fgnMxFVrfYciCfp34wCBr2Cw==, nonce=W6jGEgHRyaRGbpx0}
2026-05-18 10:47:57 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"eeb7c32d823b229e7998617308fb2e88af50923f","msg_signature":"eeb7c32d823b229e7998617308fb2e88af50923f","timestamp":"1779072424228","nonce":"C9b2wnjY","encrypt":"F42kI2JXEwNvg2cTSys92Jx3N2Y8bmd4+QIrhY2FOONA50K+rW0RluehXdZjukKYfQAZdgxEERovFkjCEJdqrHA8JhTBj/piCyQvdYsmUUyy7JwHqlptY98EyaUHhFL7Ucmp2dWPOM4+d+JImonRMC/SPBTK5XFjJ7l+c+uqUBxhEXWGztRtYQ4UkhmNzDhz+iiSzf/wCnyEQfGRrR30JFV7havBsQsbUBMPvz2mOc7D4y6uxt59OZbdkPCuygr9zRjC7ayyKA70zw0WfCIlNxPRq0ULo6rHVNp290rN4mUfOsmylNy4vvzXFV5hQN7bi3Ba3K0ON4SyPdMML1z4ox+2/VqUt2253J/VEgvBO7mR5YvFrbfSXIJtfcBiLv4u7DcmoTjJMUJrzSOFkll41DAjhO9LqnMmWpGOEOQ1O4bOsgy+M3h95NsFaPPElnU+2nKOBQCv7b4tjvJ8Lzr/MP3woHU8AWYgzztopqZJDDOriwX4mfZhMBxye43vR4B8p/qY+VW2V1QGKug6X+Wa0grffZmSIyXIRVfZryQhA7mZNmoV+N7xA3hHB4jk97qmFsy6doH/lhTOiD4w7HkC0PBCpsEuWYMDbQZRoUeC71xrOSAGevZmyI8jWkqhCg81sCPX5JtqIcQC5bEa5rfzarlhX3lclqky7NxGAUu3ZKBon3Qon+0FrlWvLPD4q24rHvzdmPRZntaa/pqOeq/hc9qSYWuvd//cnylsSR2Qgz1aFjy7SfRBG2wRIWa9ltRwWuhJ8+Ts7/BY+wLdrF9b9uFiM0lVl2lzvMEKXXBDrG3XzGt0vH0/gXWGrWycbnA4/I4uDuir9e58X601DZv5dDPbGpRT7/OE08/oNYR2vmLqJBrMODv6PgSoBYEOpbkBttDvQNkD4j78l90DO/rTQBZaO2u+NVHbcAkr2mDZ8uUbdODbTG3QWvnV6gceJEmyax0FbEbWDvyGsF8pQL+iEWIVxjRTvUYxW0JzeKUHECC5tIgpb2/BHHCYqQAYqudZ"}
2026-05-18 10:47:57 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"6e7ab2b133884cd7b613be7f8747f55e","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"项目负责副总工程师派工","actualActionerId":"3816683726197864","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"7246_df51","createTime":1779072423000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"3816683726197864","taskId":101175493981}
2026-05-18 10:47:57 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:47:57 [XNIO-1 task-16] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"a29ba660a5912ec8567359ecd6e95b2e4cc9a5e8","msg_signature":"a29ba660a5912ec8567359ecd6e95b2e4cc9a5e8","timestamp":"1779072436820","nonce":"6e9KSNxD","encrypt":"+lAEGFFus+FDzLAOYJO+xHgNQ8yxR43xcttAhDJFUOzv2vDcfDUWz3FRK/FgTjq3tBf3P3RpS8mg+D2eWfB4mkDPgUqIJaYyshK46uBX2O5yL6TH4Pf1ZrWE1LI9yRi5QT860jwXMgAVHvzDBvizBz4OY6+oZsv/C13IecTEKr+CUZZ3aWOyqlz4OrfbJ3VXWi2n6yYh3LN2dFUm9aUfc293LsuRR8x5IC5caxrRceZbE/P7J3HsbgWWQpEdJfOVULu6mT/QFLkx2Kn71iJZlvTGi7+7HOipSJpWv5y/RhWiTOVh8XEVoQD2giwtXrXc7wUujJTweOjr3hyUgk3pdIjdAn3w/Dh8RkIYHsA9Duw8OqLG907BwbnCRPF4lv2/x/r+HXAT3aHWIlrqqk8poSWc6CscnE1jV/AG0UUTmDswpYikdYSywPnOlZlK9/iTR2JGSfE8Si7OSJDNnRXvPrONvR00TUEVPVEYv8IZxHUG+LzeT/XZREpLtjgQzgP5KPwwT0X4jKAsW4MfexOv60r4rnt+AT0AMdxUcX1zB+t0z2z4ad7AwIli/CvFZdEsqJMeGpuwpBWAqFEEuT3Y/aBFNdXbicpEPdBwe1KaHmFE8pBeKOCvKYYiVPsZSyyEqvqp63kkd//wG2xufEEsP4EabJ2Vk/dgRPOLg99w4Rd0Qwpo0Ahpdvwd5c2Ay/wYfrI261V4bUAuZiKwNberVStSn/mb1VYr8eu0VMdpPyY/Zpdeo8QORMgjoapSWQAJ8TH/d9/y0VZmrHg8lNZdLga8kXcIrkNrA+Ym6pf4C3G4K5+pUaEwUjAJ2bLpw5s6mjB9LEHky9wjUoFunb76wPRB9c+o0NqJ7snwF0oddVp0TMBLhguz76YfVkx1GUaBnilHWHCSJdQNzTxcD24qafZIzEcMoV9o9EDiY+lqb1lgvlG86E8Mx6lvVFvI6o48EuwyKMlxlyyZasdF+63TfSaJFN8zOS9ULb5+O1L/O7RFczMcxL+mP04ORg7axC5L"}
2026-05-18 10:47:57 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:47:57 [XNIO-1 task-16] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"6e7ab2b133884cd7b613be7f8747f55e","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"项目负责副总工程师派工","actualActionerId":"3816683726197864","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"7246_df51","createTime":1779072423000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"3816683726197864","taskId":101175493981}
2026-05-18 10:47:57 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072477001, msg_signature=9d26ba871da9dabca346d38253edc572d6fa61f5, encrypt=x7mIJywRw/ngmVo6ZUQQfEalHp2ZI/sGNT958CvPKLtqZEMxolBXu8hyLfVrn+XknAJ1X2SBvW8C6JDej70FyQ==, nonce=rSFr3mf5w2hEsilh}
2026-05-18 10:47:57 [XNIO-1 task-16] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:47:57 [XNIO-1 task-16] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:47:57 [XNIO-1 task-16] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072477004, msg_signature=3679d65403927114872dc198a19de821c6b63a44, encrypt=mplUAgNW5Ypd4BPmMHs++zS79FQH73PHGcdkP+QyjhnehQhApoBK1p6nsbWU24wf4POSG9zrIBCQu6fxj/F5BQ==, nonce=Q3SUriR7sxn1ql1B}
2026-05-18 10:47:57 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"47df19e37999aaec94ed34848ac53f5ad490c11f","msg_signature":"47df19e37999aaec94ed34848ac53f5ad490c11f","timestamp":"1779072469464","nonce":"G4mkvtTI","encrypt":"RD0jOh2vQOu5Z1qsYeaMQX1s8agA51l69RzsMmeGXTHyQCFWht4DSXGgbN/XxsRit5o+UpBR/9M2iAl7Kahyh8Iv6VSrBl4yRyyivopnR10ykvooGFzCzvAL43JQsGshYDSiJnAJVb93JFscYoShRuViEExuFyMOZp4qOYjnSfwsTBD02ZBjVwXpjlZdzZogiHNsdSNdLhhH2E1ziIhLeWATDFdeDmThk0OjAJP7wooE88jQ6yqBzclzKFuSwuM4G0L5rwYfFY6pJ07vBt3vxZ4nv9Avhsupir6b3rHl3ePLgRfSHAPGbreJC0n0Fm+jiGMvS9dQcB8MYDHW9E3K+JbetePDSAZMmkvV+nyWM52sTOqyJf+iVlpz2QNllFrsQDjQMVjCYmBtscRL1bYGSnzJSYdRNu4podxqkdtTfOpIPMBJ0TABfyprrTeYUypD0v22zs/HayNJ1Ha+UPuHwuDzQ7FffNmnP9sTH/truxaft5EO/GTti5o3INwbr4u+O4eJZknqbzUFmma4qbuYusd77FmoGx1E/es8mx4dAtdMiOqkHRTW9QvRFt6FBnkLPikMvxNw7U0prlCuF/DVabz5PQyxVvLo/E2uc3M9JDT+KOUFuoJeGU5PM01MGjyEIZID6f81t5pRBbk44SEI4oTp2MTkDdi2DLuXgGPKhSO7Oq9USjdgA07GUJfochqJDWU3q9A3PouW/GfmOoxFRfsfY5LhOsq+PaN0ac/U5m3doBONBT32hM0PxDdQGCXtKVxFvRBF2Y0vk5fD9P531h+gddv3agXG1n8y3mDF4Mf/hSy8JSaJQ4O+Kzf8FoRtfg2G3QQEJrX9/zDTOgG5ACDnrqvvP9QLkw/PlI4m24dD4DbFGpCqG/nZF5ggDSRmPnaCMrSEFeR3/mI0qu2882Ri3PkkCGiv1EUkkBu2M8tjfnbaVW6VP6xdEpB6HSmnll0nWPGFEYAIlinDz6ZAnbPcZY7uFqlpFH+Alu4hO2/XEhuE5sl7XCzXJde3Z8rD"}
2026-05-18 10:47:57 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"6e7ab2b133884cd7b613be7f8747f55e","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"项目负责副总工程师派工","actualActionerId":"3816683726197864","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"7246_df51","createTime":1779072423000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"3816683726197864","taskId":101175493981}
2026-05-18 10:47:57 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:47:57 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:47:57 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072477005, msg_signature=fab0463ce6ac2c0e87ff2f42b75beb3aab0d2098, encrypt=NTMuvy5ex6Ffp+4AG7hJu8xCcJtM8WHf25nZbyqxNMsCIYdUsQ0vRLrzApjWt1ltKEd8OFufWw13mult1BZ5XQ==, nonce=IAAAFL9pL1VgrDfy}
2026-05-18 10:47:57 [scheme-bpms-HHIC0OoBT8OYiZJ4jnAMmQ08411778917283] INFO c.r.c.d.token.AccessTokenManager - 钉钉AccessToken刷新成功过期时间: 1779079577593
2026-05-18 10:47:57 [scheme-bpms-HHIC0OoBT8OYiZJ4jnAMmQ08411778917283] INFO com.aliyun.tea.TeaModel - [com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody.success] There are some cast events happening. expect: java.lang.String, but: java.lang.Boolean, value: true.
2026-05-18 10:47:57 [scheme-bpms-HHIC0OoBT8OYiZJ4jnAMmQ08411778917283] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 【方案申请表】审批详情已拉取 trigger=bpms_task_change processInstanceId=HHIC0OoBT8OYiZJ4jnAMmQ08411778917283 title=张新怡提交的技术方案申请表 instanceResult=agree status=RUNNING fields={}
2026-05-18 10:47:58 [scheme-bpms-HHIC0OoBT8OYiZJ4jnAMmQ08411778917283] INFO c.r.s.s.i.DingSchemeApplicationApprovedSinkImpl - 新增钉钉方案申请表归档 processInstanceId=HHIC0OoBT8OYiZJ4jnAMmQ08411778917283 id=6
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"b4879f86c32754af3be1d8121ff6efd33f45b731","msg_signature":"b4879f86c32754af3be1d8121ff6efd33f45b731","timestamp":"1779072479827","nonce":"SvxWbj3Z","encrypt":"UpmWAJD6Dnshiwcz2hd/ALFDhdfscNwwOwxS9b2sF+Z3EZ273cWyh11oCV6LuXLduXdYgfpf/8DPKOn036eAhCRTSnolfEpZjp/5hc2Np2Qf+iGJI+b9W4ZsK+cgCIrYPBfb5XCGLfpmlqVVsM5QD/zORum294+2vXs9LxFclhKtM8cNTwd9eE7XCVxWBfMqu8vg7UK2QdSvaDrA1O3BKfUoxZ8Evjvlzmzi0xZVMUYD+D4cZJbyPxsk5LQrETCpVWX+i1IIXNiktzsIU6wBQfnC8uRW6gSV6ugS/1eE5if9YVkFoQzszeCe3hTX1oPO64w/FuY6EZ/VqItBz6WZbjKSqeN9GUeZZM1W/tjjmCAlNNBLfdnvaV7NzdrNdJrF6S/b8JOFr0Qr494aaGtv7zFH3kbiQN7rYU2yDEf6oGW16XMfvSCjN0XltxtBK+GJiEKSeNiEzer0eW/IF8MQloKgGhUN5hgBLt1KQ5zYya1yuil4MAZ9g3krFenkbT8dKyGRUJEqPPu93FcwNDDub2bUoRghPetWLxhFIxN2fZYaX6y1PoCCh3fXU5CHTpZiLBQOH6kku5zDcIktdUFUFhzhNI7FaIamFsjBRlEIyvo2ADGfckbCO/4xpxu/suwi0kx2TUTAG0zbYewQ46LtIPU4QSMYgsCHiJ98IF1B1nWW8ZLBA8kTRDcwzZcxT8Jr2AGrKOyc3Hte2+e0HBxfaEtToVpLwU4ymtZzfAH82yOEzCT6MkU/IhF5Q2lAIyYcu0MucZwBS4irqBP7twRxqyz+z/t0pMaI0HWXEYhzZJNu/tsMq+VZfqKKEPQiTyktbmV9eH463C86MEUpfyb1ldPlEk90xXjtL1SvaiqpXz7T66iAfxi2rr0USoeRf8f+CeQYmve2xRp0g2RbLBVjriOKw3aIWyydNtjjO5KbwsS5gix17VP/SzikKPOaH8nPYOaTB9gTP5n7MbQ79y4Bzp4oVVLXm0jGdp2hz1xzIX5p9JL/MHqakXbNpNlKhGtE3ORS4X0N/taO3vT0DF5vs5f+57YL8X5dbQUOaziuBh0="}
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"f95721059e21456da5a1cd2510dd927e","finishTime":1779072479000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"项目负责副总工程师派工","actualActionerId":"3816683726197864","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"redirect","activityId":"7246_df51","createTime":1779072423000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"3816683726197864","taskId":101175493981}
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMSeventType=bpms_task_change, type=finish, eventResult=redirect, onInstance=true, onTask=false整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072480140, msg_signature=e201bd66f7d54ac900bfd42e06ba1746f271cc0c, encrypt=7lj7arY1T/FhusUG/hJcNbOxrZA6Ry2DQRQubwo4vQ0o817yM2VigrGahZm75oTAy7r8rEaNBceVp62OOdYmLw==, nonce=c0iepBkJRLOi08Po}
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"37ea659760217291c0eef264658d5145d238c85d","msg_signature":"37ea659760217291c0eef264658d5145d238c85d","timestamp":"1779072479869","nonce":"XbCfkFmp","encrypt":"A3tq2oKKJSnQfgUC/mKfNJQWG+EzpNb5QdRCMCQ8rqlF0B1YVd0TL1lguU/XX/XkzvCF3vbKkRPr+0IG+MZjA0t8ZRsXXT7i4YoYRseOu27zP2CqHZnZLrJuDBLyD51X0o+ClMBnD8UDXNyXlIDLXuANWzW3P2V0Hq0nsb34E0rvw2/NEEq47FcvpDI5D3rl0pdfIJb8ffK0DWhxaoduL5IaZXw0qQCuL7TFcO1HbChtcfqdq4OyxS0cTG07ILi6FHX+fk3sHbgDTbF+NR97W6fvlgEIgzfjPuvAEzdqfqCqqwmePkD9ZvmdQ7Ltpe4S4ixCehGfh0/Qfx0x0Ubx2eEIyfyMFk67faxubJ+Pqd3T0FkqdGzUHunjIlXp6f4O8pqg0lwHidZXVTkmHPUZLVw6pnnHvjPGPPge9cFh1czfWLFjRFILQcL5YpzJ0d9G5/a2hv6rx2I/ZxfmiICcrKljfRDP8/DVnBN6cXKRn027CpBurgy7B4Q3A9XcJem2m8+Px1tPStqO09gy3mq+NU33cIcd2SpESj6GNzydsfvzzoosZMx3HlOKf5po9gjzrMcAurdQVaSkk1PAwq05UTjcHJQwBiHWQmx7K58IZT74ctBBeIyeJs4U8bm4mR9TuGP4+r6PaLcY9XgfX/ooNZyZKUVLSD3Cshcx/IAQg4LLRRTFIWPnBXl798Jjudw0vAxVHN22n+13UYPeOtvGi80DXSUK/7fpJFW6n6h7lult9U8jNecJC9JRDJfWe4ZL7k/GzJ1saAs+vyyE6p5iTMdII5XssOLLLOD4kiUG08x84duDpCBW5JrH6LqIjIxxRBpha48m5jVyBo1yY5RxMhgvOSuVCW6cZ1htQ8MFSTXfoDyVIEWM7oLbKlS7Pxl85NMhyKMTAQHdjEwXg/rY8wF7Ww1NWmacERVShOHUaCnAU6pZaxsJ7umhB1C7fLOaOseRy48fzJbPqDOcwANDF5W67RB/FJnYR9JJwupc6gKL/S+stWno0cMAD2PZLiAJ"}
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"8068023167d148ec8b93e42df795cc3b","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"项目负责副总工程师派工","actualActionerId":"0412414241844204","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"7246_df51","createTime":1779072479000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"0412414241844204","taskId":101147114901}
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:48:00 [XNIO-1 task-9] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072480213, msg_signature=9d95cd76654784eb9308c22f6442efed55fb893a, encrypt=HShl6bg6ogXnuIANspiwCPBRBHmP97qpPUW4Lc/7j4xMp8BXybKzdUsi/qL84RU8h4joMlTtKdg8JWd/19zqEA==, nonce=lVpWTKUuRKeypkyv}
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"9790c119cd1af61c5140b32bdbdff2c0907630ea","msg_signature":"9790c119cd1af61c5140b32bdbdff2c0907630ea","timestamp":"1779072518957","nonce":"oaR80ue9","encrypt":"i9M08Xh8DYvohsuMcpmlHVm4HdbAdgPCBOlx9/XbMJmVB63Gjkc4GjfnhivP5F9EwZeM7Wq5uu35cuFgjp+fWg18gYgkdr3oxWZp0KRXQ2muIzgku/7YoEXVt6V7f1q8T0sLoTj/VHD+0M6mWoJa6ARqRczzhCRFzT/++YzMhLtwcdekJKmWCk09yw1bVVUBcpK1n4PSX+SkUJnDwhk/+TDCSx0WqUfIjZbCY6RRWwjetZvcpksihwZPrQXkPaU3XGaleXmMHULpZmeSay8TTiXmkcnpx2hLGoRURQwbtg/ZedOCw7CnBXQvr/y7/57t8I+kFk3YwcsKJMGHSOVthBNcAZCRee0gnc1CGI4vwHYz7jw05SFRUItaVJmXPz+3NiOElzpsDxUn9/W/sIEBmEP18ScJ9pOJSrlbLrdz60byOOV1tGk7HYRRV2TsJL6Bu/bOGEEwIR9MLXl74QzQ+W7+JI7FNBMSlKaijP2Q4xsqkuXmpgO51Je9K2tnJjTO97on2S5Z4N1H48b93MplKsvasAzVP64by1Y955MfVyVD4aVa+roooUZDAFHFswUnXoCBBDWxXIndmiO105b5laIM7FnEUVDjFrElwCZigqvN10l8Usl/DAvK1RJJsdgYm9oZwqtWU3IxfUWaKry9o9AJKkb40U+LEDAl7C5iyxPgu+3gjPl8pGt2FdLmxOHctSEsXBotPt0/QAI9sSd/uPiwfsp/3JdYtZFiQ+eWBH2z2w73EQYb0Q6Psk1/wZlr+QRcyugju38H9aWz3R586PqgZ2KUfp7Pwt6+0+T83i5Nxgy89YHwAsnY1Em9JyOFOQX68RB1vXc2aN48PUWwPNjIVSTgjRIV7KMwjZngZTJVgVcD8tvRgxBvRXQz0v7SmVzxb+thxcQuc+8Zw7zYGk2mqveKSRfimrcB3wagRvSWJC23MIGjxQwnCa1ChvVOR/qIbPJVdugUUs/sGCJ7w+QEEAzliLKpMoYPxZiKn0xXYEzLVeq0IamhhlVGwxNht9K0TTHcYCQWDeY3apDckR9zBSlQSnW7mCQgUuOBUm4="}
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"e961172ae36e4c8aba3dfcb339984e5e","finishTime":1779072518000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/finish","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"副总工程师(非标)","actualActionerId":"3816683726197864","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"finish","result":"redirect","activityId":"d81a_b76e","createTime":1779068038000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"3816683726197864","taskId":101144070875}
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072519243, msg_signature=cc097f6a822236f3901d016486f3e10ae1849c6b, encrypt=2LOYOMDdqcyGM6ekYXQD6Kjrsd+VQHwoB/6M1pt2NOZ6CAlBFF0bKTBEvQYN4dbiKMZEPflRsbo9sr4WW/qNqg==, nonce=H8OFqwwk0TptTMNu}
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"b2082f8ab72b407e2a2c00bac95d2abd6c174344","msg_signature":"b2082f8ab72b407e2a2c00bac95d2abd6c174344","timestamp":"1779072519189","nonce":"IZKeY2uQ","encrypt":"XvYWIAbcuIs+m87pWALkAFUOpOEzVt/A1P1cvZRofepQp/JnhxlLuzZSbVYq3IVxpZ+ilzIC2eBwD0XM97ujl+cZ1xEFVffP4QMxTKFxmivucEN3MrlyeGZb7kY4qWO05y+B2vXKFF4SCCl5ZenvbnDBEOoZu38R+ovh+OTItKWSojTJtVtPw1HendbugPfAv5MExOwJbu9dAVpGNPGUBseVthG+BZqOZ66MVQwxVrxPHmq4iqHCZ9IW7od34ffvwKjcckJtP6bshMRgiFArJBMr2uhLSQldUP7S3s4usqvHjdkf+bYVMMQ9HfpkallFunVR+PMlG1f2nawwWh7YtOClDyUBLjoMYKCFkcPGnOptVEr2dHtY3zJH/uaaiX6X4od9VHBs6Wqc3qE1NxwSEgDAJ0V6AJdKD//9VkJzGxtT94Vb0LMoxPhWzkWtrkLoT87f6j2V41gozUG2EIUBeZELYyzhbszShmXLSDBFBmQgDR4DuJmZ27WvVP0wFmogN+QZ+tOocacAQy8+QICr4Zj1xqHsgbGRidV0IM+dKO0hPj4iw5jco44FY4M9Wme457HFM2zA7wK2lIhJH6WYKueOki3vd+on0jK9xg1LsnM6dRrU4gtBiZr2uZBvLHgX+z3X4ditFqQOmgnUJh5ze2E/qcD3OS+d/RJWAEjAed4WQo/8+DtsvJdmwfBHsjO5OUMjfgw6kPhoxgCwoLlKcDNUFjCLUjzxQ+iWk/taFWhxEps8t2DY1eB9zBJocvrq1mR5Ji3+5elkzMMh1iQnLG7YV+olXDD/8o9xSrLkS1efPVHLIEMyvFnFYW3Zl84qZoSrOVMF0Wsk4OwzQIGCZdHrI1J87oLvX50Vngwy/aLewk6LOXPH7x76lIOxjLGgxBXZsgHqvcXyVqE4Oc6RkwxWPOaCv5h0KOBiaASfxJ3LCM8TmyGtx6/U6hkpYHz0lhhlG9jQXIJ0yZkd+6/Obg=="}
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"b7eb7ffcaa794311bf0ff842cd95e40a","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/start","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"副总工程师(非标)","actualActionerId":"231850251526222856","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"start","activityId":"d81a_b76e","createTime":1779072518000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"231850251526222856","taskId":101213660295}
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
2026-05-18 10:48:39 [XNIO-1 task-19] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779072519501, msg_signature=1b1fa612dc9a6c14bd9acb057fe2d5ce3f1b36cf, encrypt=aG84HF3dTVjHH9D6/2gQpaj2BfKnHEYJLD12xvtFjLC76dZoyim16ayaGVmxACy1Cdu0UdM672+itE5o+AZSzg==, nonce=nDwSG9UKcobJYhIu}

View File

@ -0,0 +1,44 @@
package com.ruoyi.web.controller.system;
import cn.dev33.satoken.annotation.SaIgnore;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.service.SysLoginService;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RequiredArgsConstructor
@RestController
@RequestMapping("/plm")
public class PlmAuthController {
private final SysLoginService loginService;
@SaIgnore
@PostMapping(value = "/token", consumes = MediaType.APPLICATION_JSON_VALUE)
public R<Map<String, Object>> token(@RequestBody PlmTokenRequest body) {
if (body == null || StringUtils.isBlank(body.getAppKey()) || StringUtils.isBlank(body.getAppSecret())) {
return R.fail("appKey/appSecret不能为空");
}
String token = loginService.plmToken(body.getAppKey(), body.getAppSecret());
Map<String, Object> data = new HashMap<>(2);
data.put(Constants.TOKEN, token);
return R.ok(data);
}
@Data
public static class PlmTokenRequest {
private String appKey;
private String appSecret;
}
}

View File

@ -0,0 +1,85 @@
package com.ruoyi.common.dingding.relay;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.config.DingTalkProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 通过独立消息中转服务调用钉钉能力中转端按 method 名反射执行 sendMarkdownToUser
*/
@Service
public class DingMessageRelayService {
private static final Logger log = LoggerFactory.getLogger(DingMessageRelayService.class);
/**
* 与中转服务约定的反射方法名
*/
public static final String METHOD_SEND_MARKDOWN_TO_USER = "sendMarkdownToUser";
private final RestTemplate restTemplate;
private final DingTalkProperties properties;
public DingMessageRelayService(RestTemplate restTemplate, @Qualifier("dingTalkProperties") DingTalkProperties properties) {
this.restTemplate = restTemplate;
this.properties = properties;
}
/**
* 发送 Markdown 单聊参数与中转平台约定两个 String依次为 titlemarkdown 全文
*
* @param title 标题对应钉钉 sampleMarkdown title
* @param markdownText Markdown 正文
* @param receiverNames 接收人标识与中转服务一致可为姓名工号或 userId取决于中转实现
* @return 中转服务返回的原始响应字符串
*/
public String sendMarkdownToUser(String title, String markdownText, List<String> receiverNames) {
return sendMarkdownToUser(title, markdownText, receiverNames,
properties.getSafetyStockAppKey(),
properties.getSafetyStockAppKey(),
properties.getSafetyStockAppSecret());
}
/**
* 使用指定机器人应用凭证发送robotCode / clientId / clientSecret 与中转服务约定一致即可
*/
public String sendMarkdownToUser(String title, String markdownText, List<String> receiverNames,
String robotCode, String clientId, String clientSecret) {
String base = properties.getMessageRelayBaseUrl();
if (!StringUtils.hasText(base)) {
throw new IllegalStateException("未配置 dingtalk.message-relay-base-url无法调用消息中转");
}
if (!StringUtils.hasText(robotCode) || !StringUtils.hasText(clientId) || !StringUtils.hasText(clientSecret)) {
throw new IllegalStateException("robotCode、clientId、clientSecret 不能为空");
}
Map<String, String> dataMap = new HashMap<>(8);
dataMap.put("month", METHOD_SEND_MARKDOWN_TO_USER);
dataMap.put("robotCode", robotCode);
dataMap.put("clientId", clientId);
dataMap.put("clientSecret", clientSecret);
dataMap.put("users", JSON.toJSONString(receiverNames != null ? receiverNames : Collections.emptyList()));
dataMap.put("parameterTypes", JSON.toJSONString(Arrays.asList("java.lang.String", "java.lang.String")));
dataMap.put("parameters", JSON.toJSONString(Arrays.asList(title, markdownText)));
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("data", JSON.toJSONString(dataMap));
String url = base.endsWith("/") ? base + "ding/send" : base + "/ding/send";
log.debug("消息中转 Markdown 单聊 POST {}", url);
return restTemplate.postForObject(url, params, String.class);
}
}

View File

@ -0,0 +1,38 @@
package com.ruoyi.common.dingding.workflow;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 技术方案申请表审批通过后的归档载荷入库 / 后续 PLM 推送
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchemeApplicationApprovedPayload implements Serializable {
private static final long serialVersionUID = 1L;
private String processInstanceId;
private String businessId;
private String processCode;
private String title;
private String instanceResult;
private String dingProcessStatus;
private String originatorUserId;
private String originatorDeptName;
private Date dingInstanceCreateTime;
private Date dingInstanceFinishTime;
private String triggerEventType;
@Builder.Default
private List<SchemeApplicationFormItem> formItems = new ArrayList<>();
}

View File

@ -0,0 +1,9 @@
package com.ruoyi.common.dingding.workflow;
/**
* 技术方案申请表审批通过后的扩展点如落库后续 PLM 推送等
*/
public interface SchemeApplicationApprovedSink {
void onSchemeApplicationApproved(SchemeApplicationApprovedPayload payload);
}

View File

@ -0,0 +1,260 @@
package com.ruoyi.common.dingding.workflow;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceHeaders;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponse;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues;
import com.aliyun.teautil.models.RuntimeOptions;
import com.ruoyi.common.config.DingTalkProperties;
import com.ruoyi.common.dingding.token.AccessTokenManager;
import com.ruoyi.common.dingding.util.DingUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* 钉钉 OA仅处理技术方案申请表模板且在审批同意场景下拉取审批实例详情中的表单数据
* <p>
* 建议在钉钉侧将订阅范围限定到对应 {@link DingTalkProperties#getSchemeApplicationProcessCode()}
* <p>
* {@code bpms_instance_change}{@code type=finish} 后即拉取详情是否同意以 {@code getProcessInstance().result} 为准避免事件体里 result 与详情不一致导致误跳过
* {@code bpms_task_change} {@code scheme-bpms-on-task-agree=true} 且事件 {@code result=agree}单节点若为 audit 等不会处理请改用实例结束事件
*/
@Component
public class SchemeApplicationBpmsEventHandler {
private static final Logger log = LoggerFactory.getLogger(SchemeApplicationBpmsEventHandler.class);
/** 同一 processInstanceId 同时只跑一个拉详情+入库,避免 Stream/HTTP 重复回调并发 insert */
private static final ConcurrentHashMap<String, Boolean> PROCESSING = new ConcurrentHashMap<>();
private final DingTalkProperties properties;
private final AccessTokenManager accessTokenManager;
private final List<SchemeApplicationApprovedSink> schemeApplicationApprovedSinks;
public SchemeApplicationBpmsEventHandler(
DingTalkProperties properties,
AccessTokenManager accessTokenManager,
@Autowired(required = false) List<SchemeApplicationApprovedSink> schemeApplicationApprovedSinks) {
this.properties = properties;
this.accessTokenManager = accessTokenManager;
this.schemeApplicationApprovedSinks = schemeApplicationApprovedSinks != null ? schemeApplicationApprovedSinks : Collections.emptyList();
}
/**
* @param eventTypeFromContext Stream 通道上可能仅在包头携带事件类型HTTP 回调可为 null
* @param payloadJson 事件体 JSON 字符串
*/
public void handleEventPayload(String eventTypeFromContext, String payloadJson) {
String processCodeCfg = properties.getSchemeApplicationProcessCode();
if (StrUtil.isBlank(processCodeCfg) || StrUtil.isBlank(payloadJson)) {
return;
}
JSONObject event = JSONUtil.parseObj(payloadJson);
final String eventType = StrUtil.blankToDefault(event.getStr("EventType"), eventTypeFromContext);
if (!"bpms_instance_change".equals(eventType) && !"bpms_task_change".equals(eventType)) {
return;
}
String processCode = event.getStr("processCode");
if (!processCodeCfg.equals(processCode)) {
return;
}
if (!"finish".equalsIgnoreCase(event.getStr("type"))) {
return;
}
String eventResult = event.getStr("result");
// 整单事件里 result 可能与详情不一致甚至为空只要收到实例结束即拉详情最终以 getProcessInstance.result 为准
boolean instanceFinish = eventResult.equals("agree");
// 单任务仍以事件 result=agree 为准节点上常为 agree若为 audit 等需开 scheme-bpms-on-task-agree 并扩展白名单
// boolean taskAgree = properties.isSchemeBpmsOnTaskAgree() && "bpms_task_change".equals(eventType) && "agree".equalsIgnoreCase(eventResult);
if (!instanceFinish ) {
log.info("跳过方案申请表 BPMSeventType={}, type=finish, eventResult={}, onInstance={}, onTask={}(整单请订阅 bpms_instance_change仅任务且非 agree 时不会处理)",
eventType, eventResult, properties.isSchemeBpmsOnInstanceAgree(), properties.isSchemeBpmsOnTaskAgree());
return;
}
String processInstanceId = event.getStr("processInstanceId");
if (StrUtil.isBlank(processInstanceId)) {
log.warn("方案申请表 BPMS 事件缺少 processInstanceIdpayload={}", payloadJson);
return;
}
if (PROCESSING.putIfAbsent(processInstanceId, Boolean.TRUE) != null) {
log.debug("方案申请表处理中,忽略重复事件 processInstanceId={} eventType={}", processInstanceId, eventType);
return;
}
final String finalEventType = eventType;
final String finalEventResult = eventResult;
new Thread(() -> {
try {
pullAndDispatch(processInstanceId, finalEventType, finalEventResult);
} finally {
PROCESSING.remove(processInstanceId);
}
}, "scheme-bpms-" + processInstanceId).start();
}
private void pullAndDispatch(String processInstanceId, String triggerEventType, String eventResult) {
try {
com.aliyun.dingtalkworkflow_1_0.Client client = DingUtil.createWorkflowClient();
GetProcessInstanceHeaders headers = new GetProcessInstanceHeaders();
headers.xAcsDingtalkAccessToken = accessTokenManager.getAccessToken();
GetProcessInstanceRequest request = new GetProcessInstanceRequest()
.setProcessInstanceId(processInstanceId);
GetProcessInstanceResponse response = client.getProcessInstanceWithOptions(request, headers, new RuntimeOptions());
GetProcessInstanceResponseBody body = response != null ? response.getBody() : null;
GetProcessInstanceResponseBodyResult inst = body != null ? body.getResult() : null;
if (inst == null) {
log.warn("getProcessInstance 无结果processInstanceId={}", processInstanceId);
return;
}
if (properties.isSchemeBpmsOnInstanceAgree() && "bpms_instance_change".equals(triggerEventType)) {
if (!"agree".equalsIgnoreCase(inst.getResult())) {
log.info("整单审批未同意,跳过入库 processInstanceId={} eventResult={} instanceResult={} status={}",
processInstanceId, eventResult, inst.getResult(), inst.getStatus());
return;
}
}
Map<String, String> formMap = toFormFieldMap(inst.getFormComponentValues());
Map<String, String> filtered = filterLogFields(formMap);
log.info("【方案申请表】审批详情已拉取 trigger={} processInstanceId={} title={} instanceResult={} status={} fields={}",
triggerEventType,
processInstanceId,
inst.getTitle(),
inst.getResult(),
inst.getStatus(),
filtered);
SchemeApplicationApprovedPayload payload = buildPayload(inst, processInstanceId, triggerEventType);
notifySinks(payload);
} catch (Exception e) {
log.error("拉取方案申请表审批实例失败 processInstanceId={}", processInstanceId, e);
}
}
private SchemeApplicationApprovedPayload buildPayload(
GetProcessInstanceResponseBodyResult inst,
String processInstanceId,
String triggerEventType) {
return SchemeApplicationApprovedPayload.builder()
.processInstanceId(processInstanceId)
.businessId(inst.getBusinessId())
.processCode(properties.getSchemeApplicationProcessCode())
.title(inst.getTitle())
.instanceResult(inst.getResult())
.dingProcessStatus(inst.getStatus())
.originatorUserId(inst.getOriginatorUserId())
.originatorDeptName(inst.getOriginatorDeptName())
.dingInstanceCreateTime(parseDingDateTime(inst.getCreateTime()))
.dingInstanceFinishTime(parseDingDateTime(inst.getFinishTime()))
.triggerEventType(triggerEventType)
.formItems(toFormItems(inst.getFormComponentValues()))
.build();
}
private void notifySinks(SchemeApplicationApprovedPayload payload) {
if (schemeApplicationApprovedSinks.isEmpty()) {
return;
}
for (SchemeApplicationApprovedSink sink : schemeApplicationApprovedSinks) {
try {
sink.onSchemeApplicationApproved(payload);
} catch (Exception ex) {
log.error("SchemeApplicationApprovedSink 执行失败: {}", sink.getClass().getName(), ex);
}
}
}
private static Date parseDingDateTime(String iso) {
if (StrUtil.isBlank(iso)) {
return null;
}
try {
return Date.from(OffsetDateTime.parse(iso).toInstant());
} catch (Exception e) {
return null;
}
}
private static List<SchemeApplicationFormItem> toFormItems(List<GetProcessInstanceResponseBodyResultFormComponentValues> list) {
List<SchemeApplicationFormItem> items = new ArrayList<>();
if (CollUtil.isEmpty(list)) {
return items;
}
for (GetProcessInstanceResponseBodyResultFormComponentValues c : list) {
if (c == null || StrUtil.isBlank(c.getId())) {
continue;
}
items.add(SchemeApplicationFormItem.builder()
.componentType(c.getComponentType())
.componentId(c.getId())
.name(c.getName())
.value(c.getValue())
.extValue(c.getExtValue())
.build());
}
return items;
}
private Map<String, String> toFormFieldMap(List<GetProcessInstanceResponseBodyResultFormComponentValues> list) {
Map<String, String> map = new LinkedHashMap<>();
if (CollUtil.isEmpty(list)) {
return map;
}
for (GetProcessInstanceResponseBodyResultFormComponentValues c : list) {
if (c == null || StrUtil.isBlank(c.getName())) {
continue;
}
String v = c.getValue();
if (StrUtil.isNotBlank(v)) {
map.put(c.getName(), v);
}
}
return map;
}
private Map<String, String> filterLogFields(Map<String, String> formMap) {
String namesCfg = properties.getSchemeApplicationLogFieldNames();
if (StrUtil.isBlank(namesCfg)) {
return formMap;
}
Set<String> wanted = new LinkedHashSet<>();
for (String p : namesCfg.split(",")) {
if (StrUtil.isNotBlank(p)) {
wanted.add(p.trim());
}
}
if (wanted.isEmpty()) {
return formMap;
}
return formMap.entrySet().stream()
.filter(e -> wanted.contains(e.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a, LinkedHashMap::new));
}
}

View File

@ -0,0 +1,26 @@
package com.ruoyi.common.dingding.workflow;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 钉钉审批表单控件快照一条对应 formComponentValues 中一项
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchemeApplicationFormItem implements Serializable {
private static final long serialVersionUID = 1L;
private String componentType;
private String componentId;
private String name;
private String value;
private String extValue;
}

View File

@ -0,0 +1,150 @@
package com.ruoyi.system.constant;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
/**
* event.json formComponentValues(146-843) gen-ding-scheme-wide.mjs IDS 一致
* 表单宽数据写入 {@code wf_values_json}JSON key 为钉钉控件 id原始大小写 {@code form_label_map} key 一致
*/
public final class DingSchemeFormWideColumns {
private DingSchemeFormWideColumns() {
}
public static final List<String> ORDERED_IDS = Collections.unmodifiableList(Arrays.asList(
"TextField_1BBYI1OFDJA80",
"TextField_FRLYG3CQ3CG0",
"InnerContactField_9DSIOI7Y7AO0",
"DDDateField_1BHYQ7T5N5TS0",
"DDDateField_YYD1HAMKFXS0",
"DDSelectField_1VS1BX17O9MO0",
"InnerContactField_U886PC45AO00",
"TextField_1HXMC0VO5TCW0",
"TextField_QBMQQBNCTA80",
"DDSelectField_845RKMRCBNC",
"DDSelectField_1XTHOHPHULNK0",
"TextField_1EIAVY538AM80",
"ColumnLayout_N0ZDGQT4UJ40",
"TextareaField_GO981AG879K0",
"InnerContactField_1TXM18E414740",
"InnerContactField_SHOIEPZ1X8W0",
"DDDateField_1107GY4FF5R40",
"TextareaField_1JNZ7QFU4GLC0",
"ColumnLayout_5UK9OEEPNQG0",
"TextNote_14QFWOA0NXUK",
"TextField_7KHHS2KML4G0",
"TextField_17ONU2GWWQQK0",
"TextField_1D66PIGUHPEO0",
"TextField_2E68TAT1P2B",
"TextField_1FVHYJIFC9340",
"DDSelectField_12J1O9KUMFK00",
"DDSelectField_1CTHXMP1W6000",
"DDSelectField_1QQEC44I00G00",
"TextField_1X4ISVYJ2E000",
"TextareaField_9MIMABZEHW40",
"TextField_1N728V92Z1LS0",
"DDSelectField_4JP6PT1HB480",
"TextareaField_1WLKQPZU8UF40",
"TextareaField_ZCRQZCLP3800",
"ColumnLayout_704TMWHBUK00",
"DDAttachment_XJYUB17OFGW0",
"TextNote_1S3AH8USXUU80",
"TextNote_1S2UFGJ55CDC0",
"TextField_1JWDW5KVN95S0",
"TextField_1CTQW75A6XK00",
"TextField_23GWUBGROXWG0",
"TextField_SIM35ICCGOW0",
"TextField_18UFLIYK2G0W",
"TextField_EEO52079YWG0",
"TextField_17J58EEU17DS0",
"TextField_F05H5U3N9NC0",
"TextField_J84FK4ALUOG0",
"TextField_3IXTW5EOSTK0",
"ColumnLayout_OWD8CAEIPCW0",
"DDAttachment_ZVUJAK8ZRVK0",
"TextNote_196NEZF2GKQO0",
"TextareaField_1BXA83S0L9Q80",
"DDSelectField_1J17P5TOEU0W0",
"TextField_1ED24R0QOG4G0",
"TextField_62OWJDX5J780",
"TextField_W509DMUVT0W0",
"TextField_IR0XM2QFI4G0",
"TextField_MWLXHEAJYDS0",
"TextField_GZISO77XGU80",
"DDSelectField_1XGOO6QI7YE80",
"TextareaField_15N86B1OM9R40",
"ColumnLayout_13OIS5R5G4G00",
"DDAttachment_Y0KM7E71JY80",
"TextNote_65FUYS6PMOG0",
"TextField_1WOIAN7UXMXS0",
"TextField_1B349K9H85FK0",
"TextField_V3UBXSM0V400",
"TextField_1N6AOCMUFXXC0",
"TextField_5B1TRAUGUP80",
"DDSelectField_R805UL353UO0",
"TextField_210LMWSH8CCG0",
"TextareaField_6JU2QSEND4G0",
"ColumnLayout_1OBP4JCUUC1S0",
"DDAttachment_1OQ414MMSQE80",
"TextNote_7USWEJCWOHO0",
"TextField_10A0OELOA9CW0",
"TextField_1F35DOLS3GJK0",
"TextField_G2N28LNPOKO0",
"DDSelectField_Y8AKWL5T20G0",
"TextField_1X0CJO3BBELC0",
"TextField_1DCKMEARM96O0",
"TextareaField_8ZYS78VXXKG0",
"DDSelectField_1UNDZ9DNXIN4",
"TextareaField_902TJ8AC3BO0",
"ColumnLayout_1V6324DSHDMO0",
"DDAttachment_19GLQ5UABT9C0",
"TextNote_1JGD3A0EBOU80",
"DDSelectField_JDD37MSAU7K0",
"TextField_1ODO49P4QIOW0",
"TextField_15YXLN28VYWW0",
"TextField_N3EEZETOMLS0",
"TextField_MZLNE0WXSYO0",
"DDSelectField_1D1NY47OPRY80",
"TextField_CO3RY4XTL800",
"TextField_1LJRN85YYW680",
"TextareaField_1W3YXGM2WVWG0",
"ColumnLayout_FVVK6OHVSMO0",
"DDAttachment_NISKKTWA4LC0",
"TextNote_18NMSNM15JLS0",
"TextField_YON75A1BPDS0",
"TextField_1LA4D1ZNJCO00",
"TextField_QZAR20YC9DC0",
"TextField_W5VDI6TJE0W0",
"DDSelectField_JQFNCPP9Q8G0",
"TextField_X7WT90RW88W0",
"TextareaField_XVWU129IDG00",
"TextField_21CFZH9VCESG0",
"TextareaField_20MIUBGWHAYO0",
"ColumnLayout_7E01AAY4TUO0",
"DDAttachment_PVHB9480IPS0",
"TextareaField_I623WTCGKBK0",
"DDDateField_1QY4LG6SI9FK0",
"DDSelectField_W8ZTK2TQHHS0"
));
private static final Set<String> ID_SET = new HashSet<>(ORDERED_IDS);
public static boolean isKnownComponentId(String componentId) {
return componentId != null && ID_SET.contains(componentId);
}
/** JSON 中的控件 id key与钉钉一致 */
public static String jsonKey(String componentId) {
return componentId;
}
/** 兼容旧「列名」思路wf_ + id 小写,仅用于文档/SQL 排查,不再建物理列 */
public static String legacyPhysicalColumnName(String componentId) {
return "wf_" + componentId.toLowerCase(Locale.ROOT);
}
}

View File

@ -0,0 +1,18 @@
package com.ruoyi.system.constant;
/**
* 金蝶系统报表 FormId 默认值与账套报表属性一致时在请求中覆盖或改此处
* <p>
* 工序汇报汇总与工序委外转移为<strong>不同报表</strong>禁止混用同一常量
*/
public final class KingdeeSysReportFormIds {
/** 工序汇报汇总报表GetSysReportData */
public static final String OPERATION_REPORT_SUM = "SFC_OperationReportRpt";
/** 工序委外转移报表GetSysReportData */
public static final String SUBCONTRACT_TRANSFER = "SFC_ReturnShiftRpt";
private KingdeeSysReportFormIds() {
}
}

View File

@ -0,0 +1,124 @@
package com.ruoyi.system.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
import com.ruoyi.system.domain.bo.KingdeeOperationReportSumQueryBo;
import com.ruoyi.system.domain.dto.KingdeeOperationReportSumRowDTO;
import com.ruoyi.system.runner.JdUtil;
import com.ruoyi.system.service.IKingdeeReportSnapshotService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
/**
* 金蝶系统报表工序汇报汇总按日/工序等粒度由报表 Model.FTimeUnit 决定
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/kingdee/operationReportSum")
public class KingdeeOperationReportSumController {
private final IKingdeeReportSnapshotService kingdeeReportSnapshotService;
/**
* GET 查询Apifox Params 即可勿用 form-data
* 示例{@code GET .../query?beginDate=2026-04-10&endDate=2026-05-10}formId 省略则默认 SFC_OperationReportRpt
*/
@SaCheckPermission("system:mssql:query")
@GetMapping("/query")
public R<List<KingdeeOperationReportSumRowDTO>> queryGet(
@RequestParam(required = false) String formId,
@RequestParam("beginDate") String beginDate,
@RequestParam("endDate") String endDate,
@RequestParam(required = false) String moBillNo,
@RequestParam(required = false) String processOrgNumber,
@RequestParam(required = false) String timeUnit,
@RequestParam(required = false) String fieldKeys,
@RequestParam(required = false) Integer limit) {
if (StringUtils.isBlank(beginDate) || StringUtils.isBlank(endDate)) {
throw new ServiceException("beginDate、endDate 不能为空");
}
KingdeeOperationReportSumQueryBo bo = new KingdeeOperationReportSumQueryBo();
bo.setFormId(StringUtils.isBlank(formId) ? KingdeeSysReportFormIds.OPERATION_REPORT_SUM : formId.trim());
bo.setBeginDate(beginDate.trim());
bo.setEndDate(endDate.trim());
bo.setMoBillNo(StringUtils.isBlank(moBillNo) ? null : moBillNo.trim());
bo.setProcessOrgNumber(processOrgNumber);
bo.setTimeUnit(timeUnit);
if (StringUtils.isNotBlank(fieldKeys)) {
bo.setFieldKeys(fieldKeys);
}
bo.setLimit(limit);
return R.ok(executeReportQuery(bo));
}
/**
* POST 必须用 Body 类型选 <b>raw JSON</b>不要选 form-data否则会报 Content type multipart 不支持
* <p>
* body 示例
* <pre>
* {"formId":"(在金蝶报表属性中填写)","beginDate":"2026-04-10","endDate":"2026-05-10","moBillNo":"可选"}
* </pre>
*/
@SaCheckPermission("system:mssql:query")
@PostMapping(value = "/query", consumes = MediaType.APPLICATION_JSON_VALUE)
public R<List<KingdeeOperationReportSumRowDTO>> queryPost(@Valid @RequestBody KingdeeOperationReportSumQueryBo bo) {
return R.ok(executeReportQuery(bo));
}
private List<KingdeeOperationReportSumRowDTO> executeReportQuery(KingdeeOperationReportSumQueryBo bo) {
String formId = StringUtils.isBlank(bo.getFormId())
? KingdeeSysReportFormIds.OPERATION_REPORT_SUM : bo.getFormId().trim();
String beginDt = toReportDateTime(bo.getBeginDate(), false);
String endDt = toReportDateTime(bo.getEndDate(), true);
String orgNum = StringUtils.isBlank(bo.getProcessOrgNumber()) ? "100" : bo.getProcessOrgNumber().trim();
String timeUnit = StringUtils.isBlank(bo.getTimeUnit()) ? "B" : bo.getTimeUnit().trim();
int lim = bo.getLimit() == null ? 2000 : bo.getLimit();
lim = Math.min(Math.max(lim, 1), 10000);
return JdUtil.getOperationReportSumRpt(
formId,
bo.getFieldKeys(),
beginDt,
endDt,
orgNum,
timeUnit,
bo.getMoBillNo(),
lim
);
}
/**
* 拉取金蝶工序汇报汇总并写入表 kingdee_operation_report_sum同条件先删后插
*/
@SaCheckPermission("system:mssql:query")
@Log(title = "金蝶工序汇报汇总入库", businessType = BusinessType.INSERT)
@PostMapping(value = "/sync", consumes = MediaType.APPLICATION_JSON_VALUE)
public R<Integer> sync(@Valid @RequestBody KingdeeOperationReportSumQueryBo bo) {
int n = kingdeeReportSnapshotService.syncOperationReportSum(bo);
return R.ok(n);
}
/** yyyy-MM-dd → 带时分秒;已带时分秒则原样返回 */
private static String toReportDateTime(String dateInput, boolean endOfDay) {
String t = dateInput == null ? "" : dateInput.trim();
if (t.length() <= 10) {
return endOfDay ? t + " 23:59:59" : t + " 00:00:00";
}
return t;
}
}

View File

@ -0,0 +1,35 @@
package com.ruoyi.system.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.domain.bo.KingdeeOrderTraceQueryBo;
import com.ruoyi.system.domain.vo.KingdeeOrderTraceVo;
import com.ruoyi.system.service.MssqlQueryService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 金蝶 SQL Server采购订单 / 生产订单追溯按生产令号单号产品编码筛选
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/kingdee/orderTrace")
public class KingdeeOrderTraceController {
private final MssqlQueryService mssqlQueryService;
/**
* 查询采购与生产两条线全部匹配行至少传一个条件sclh可多个purchaseBillNomoBillNomaterialNumber
* 多个生产令号{@code ?sclh=A&sclh=B} {@code ?sclh=A,B}
*/
@SaCheckPermission("system:mssql:query")
@GetMapping("/query")
public R<KingdeeOrderTraceVo> query(KingdeeOrderTraceQueryBo bo) {
KingdeeOrderTraceVo data = mssqlQueryService.queryOrderTrace(bo);
return R.ok(data);
}
}

View File

@ -0,0 +1,190 @@
package com.ruoyi.system.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.bo.KingdeeProductionBoardQueryBo;
import com.ruoyi.system.domain.vo.KingdeeProductionBoardVo;
import com.ruoyi.system.service.IKingdeeProductionBoardService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
/**
* 生产令号综合看板追溯 + 工序计划 + 工序汇报/委外实时报表+ 采购/生产入库汇总
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/kingdee/productionBoard")
public class KingdeeProductionBoardController {
private final IKingdeeProductionBoardService kingdeeProductionBoardService;
/**
* GET 查询不要用 multipart适合调试工具选 Params
* <ul>
* <li>多值{@code ?sclh=A&sclh=B}</li>
* <li>单值{@code ?sclh=QB-26-026-LT}</li>
* <li>逗号{@code ?sclh=A,B} {@code ?sclhCsv=A,B}</li>
* <li>若工具把数组写成字符串{@code ?sclh=["QB-26-026-LT"]}尽力解析</li>
* </ul>
*/
@SaCheckPermission("system:mssql:query")
@GetMapping("/query")
public R<List<KingdeeProductionBoardVo>> queryGet(
@RequestParam(value = "sclh", required = false) List<String> sclh,
@RequestParam(value = "sclhCsv", required = false) String sclhCsv,
@RequestParam(required = false) Boolean includePurchase,
@RequestParam(required = false) Boolean includeSnapshots,
@RequestParam(required = false) Integer maxMoPerBoard,
@RequestParam(required = false) String reportStartDate,
@RequestParam(required = false) String reportEndDate,
@RequestParam(required = false) String reportSnapshotBegin,
@RequestParam(required = false) String reportSnapshotEnd,
@RequestParam(required = false) String operationReportFormId,
@RequestParam(required = false) String subcontractTransferFormId,
@RequestParam(required = false) String reportProcessOrgNumber,
@RequestParam(required = false) String reportProOrgNumber,
@RequestParam(required = false) String reportTimeUnit,
@RequestParam(required = false) String reportDocumentStatus,
@RequestParam(required = false) Integer reportLimit,
@RequestParam(required = false) String boardReportDay) {
List<String> resolved = resolveSclhFromGet(sclh, sclhCsv);
if (resolved.isEmpty()) {
throw new ServiceException("生产令号不能为空:请传 sclh可重复或 sclhCsv例如 ?sclh=QB-26-026-LT 或 ?sclhCsv=A,B");
}
KingdeeProductionBoardQueryBo bo = new KingdeeProductionBoardQueryBo();
bo.setSclh(resolved);
if (includePurchase != null) {
bo.setIncludePurchase(includePurchase);
}
if (includeSnapshots != null) {
bo.setIncludeSnapshots(includeSnapshots);
}
if (maxMoPerBoard != null) {
bo.setMaxMoPerBoard(maxMoPerBoard);
}
if (StringUtils.isNotBlank(reportStartDate)) {
bo.setReportStartDate(reportStartDate);
}
if (StringUtils.isNotBlank(reportEndDate)) {
bo.setReportEndDate(reportEndDate);
}
if (StringUtils.isNotBlank(reportSnapshotBegin)) {
bo.setReportSnapshotBegin(reportSnapshotBegin);
}
if (StringUtils.isNotBlank(reportSnapshotEnd)) {
bo.setReportSnapshotEnd(reportSnapshotEnd);
}
if (StringUtils.isNotBlank(operationReportFormId)) {
bo.setOperationReportFormId(operationReportFormId);
}
if (StringUtils.isNotBlank(subcontractTransferFormId)) {
bo.setSubcontractTransferFormId(subcontractTransferFormId);
}
if (StringUtils.isNotBlank(reportProcessOrgNumber)) {
bo.setReportProcessOrgNumber(reportProcessOrgNumber);
}
if (StringUtils.isNotBlank(reportProOrgNumber)) {
bo.setReportProOrgNumber(reportProOrgNumber);
}
if (StringUtils.isNotBlank(reportTimeUnit)) {
bo.setReportTimeUnit(reportTimeUnit);
}
if (StringUtils.isNotBlank(reportDocumentStatus)) {
bo.setReportDocumentStatus(reportDocumentStatus);
}
if (reportLimit != null) {
bo.setReportLimit(reportLimit);
}
if (StringUtils.isNotBlank(boardReportDay)) {
bo.setBoardReportDay(boardReportDay);
}
return R.ok(kingdeeProductionBoardService.queryBoard(bo));
}
/**
* 合并 sclh 列表与 sclhCsv支持单个参数内含逗号以及 JSON 数组样式字符串
*/
private static List<String> resolveSclhFromGet(List<String> sclh, String sclhCsv) {
LinkedHashSet<String> seen = new LinkedHashSet<>();
if (sclh != null) {
for (String raw : sclh) {
for (String one : expandOneSclhParam(raw)) {
if (StringUtils.isNotBlank(one)) {
seen.add(one.trim());
}
}
}
}
if (StringUtils.isNotBlank(sclhCsv)) {
for (String part : sclhCsv.split(",")) {
String p = part.trim();
if (StringUtils.isNotBlank(p)) {
seen.add(p);
}
}
}
return new ArrayList<>(seen);
}
private static List<String> expandOneSclhParam(String raw) {
List<String> out = new ArrayList<>();
if (StringUtils.isBlank(raw)) {
return out;
}
String t = raw.trim();
// 兼容 ["a","b"] [a,b]
if (t.startsWith("[") && t.endsWith("]")) {
String inner = t.substring(1, t.length() - 1).trim();
if (inner.isEmpty()) {
return out;
}
for (String part : inner.split(",")) {
String p = part.trim();
if (p.length() >= 2 && p.charAt(0) == '"' && p.charAt(p.length() - 1) == '"') {
p = p.substring(1, p.length() - 1).trim();
}
if (StringUtils.isNotBlank(p)) {
out.add(p);
}
}
return out;
}
if (t.contains(",")) {
for (String part : t.split(",")) {
String p = part.trim();
if (StringUtils.isNotBlank(p)) {
out.add(p);
}
}
return out;
}
out.add(t);
return out;
}
/**
* POST 必须使用 {@code Content-Type: application/json}Body JSON不要用 multipart/form-data
* <p>
* {@code includeSnapshots=true} 时通过金蝶接口实时拉工序汇报汇总与委外转移报表不入库{@code /sync} 入库接口仍可单独使用
*/
@SaCheckPermission("system:mssql:query")
@PostMapping(value = "/query", consumes = MediaType.APPLICATION_JSON_VALUE)
public R<List<KingdeeProductionBoardVo>> queryPost(@Valid @RequestBody KingdeeProductionBoardQueryBo bo) {
return R.ok(kingdeeProductionBoardService.queryBoard(bo));
}
}

View File

@ -0,0 +1,123 @@
package com.ruoyi.system.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
import com.ruoyi.system.domain.bo.KingdeeSubcontractTransferQueryBo;
import com.ruoyi.system.domain.dto.KingdeeSubcontractTransferRowDTO;
import com.ruoyi.system.runner.JdUtil;
import com.ruoyi.system.service.IKingdeeReportSnapshotService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
/**
* 金蝶系统报表工序委外转移
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/kingdee/subcontractTransfer")
public class KingdeeSubcontractTransferController {
private final IKingdeeReportSnapshotService kingdeeReportSnapshotService;
/**
* GET 查询Params勿用 form-data
* 示例{@code GET .../query?startDate=2026-04-10&finishDate=2026-05-10}
*/
@SaCheckPermission("system:mssql:query")
@GetMapping("/query")
public R<List<KingdeeSubcontractTransferRowDTO>> queryGet(
@RequestParam(required = false) String formId,
@RequestParam("startDate") String startDate,
@RequestParam("finishDate") String finishDate,
@RequestParam(required = false) String productOrderCode,
@RequestParam(required = false) String proOrgNumber,
@RequestParam(required = false) String documentStatus,
@RequestParam(required = false) String fieldKeys,
@RequestParam(required = false) Integer limit) {
if (StringUtils.isBlank(startDate) || StringUtils.isBlank(finishDate)) {
throw new ServiceException("startDate、finishDate 不能为空");
}
KingdeeSubcontractTransferQueryBo bo = new KingdeeSubcontractTransferQueryBo();
bo.setFormId(StringUtils.isBlank(formId) ? KingdeeSysReportFormIds.SUBCONTRACT_TRANSFER : formId.trim());
bo.setStartDate(startDate.trim());
bo.setFinishDate(finishDate.trim());
bo.setProductOrderCode(StringUtils.isBlank(productOrderCode) ? null : productOrderCode.trim());
bo.setProOrgNumber(proOrgNumber);
bo.setDocumentStatus(documentStatus);
if (StringUtils.isNotBlank(fieldKeys)) {
bo.setFieldKeys(fieldKeys);
}
bo.setLimit(limit);
return R.ok(executeSubcontractQuery(bo));
}
/**
* POST raw JSONbody 示例
* <pre>
* {"startDate":"2026-04-10","finishDate":"2026-05-10","productOrderCode":""}
* </pre>
*/
@SaCheckPermission("system:mssql:query")
@PostMapping(value = "/query", consumes = MediaType.APPLICATION_JSON_VALUE)
public R<List<KingdeeSubcontractTransferRowDTO>> queryPost(@Valid @RequestBody KingdeeSubcontractTransferQueryBo bo) {
return R.ok(executeSubcontractQuery(bo));
}
private List<KingdeeSubcontractTransferRowDTO> executeSubcontractQuery(KingdeeSubcontractTransferQueryBo bo) {
String formId = StringUtils.isBlank(bo.getFormId())
? KingdeeSysReportFormIds.SUBCONTRACT_TRANSFER : bo.getFormId().trim();
String startDt = toReportDateTime(bo.getStartDate(), false);
String finishDt = toReportDateTime(bo.getFinishDate(), true);
String orgNum = StringUtils.isBlank(bo.getProOrgNumber()) ? "100" : bo.getProOrgNumber().trim();
String docStatus = StringUtils.isBlank(bo.getDocumentStatus()) ? "C" : bo.getDocumentStatus().trim();
int lim = bo.getLimit() == null ? 2000 : bo.getLimit();
lim = Math.min(Math.max(lim, 1), 10000);
return JdUtil.getSubcontractTransferRpt(
formId,
bo.getFieldKeys(),
startDt,
finishDt,
orgNum,
docStatus,
bo.getProductOrderCode(),
lim
);
}
/**
* 拉取金蝶工序委外转移并写入表 kingdee_subcontract_transfer同条件先删后插
*/
@SaCheckPermission("system:mssql:query")
@Log(title = "金蝶工序委外转移入库", businessType = BusinessType.INSERT)
@PostMapping(value = "/sync", consumes = MediaType.APPLICATION_JSON_VALUE)
public R<Integer> sync(@Valid @RequestBody KingdeeSubcontractTransferQueryBo bo) {
int n = kingdeeReportSnapshotService.syncSubcontractTransfer(bo);
return R.ok(n);
}
private static String toReportDateTime(String dateInput, boolean endOfDay) {
String t = dateInput == null ? "" : dateInput.trim();
if (t.length() <= 10) {
return endOfDay ? t + " 23:59:59" : t + " 00:00:00";
}
return t;
}
}

View File

@ -1,72 +0,0 @@
package com.ruoyi.system.controller;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
public class test {
@Test
public void Adfff() {
// excel 比较sheet1 和sheet2 表格的第一列和第二列 如果相同 就将sheet1 的第五列对应的值写入给sheet2
String inputFilePath = "C:\\Users\\Administrator\\Desktop\\test\\采购订单.xlsx";
String outputFilePath = "C:\\Users\\Administrator\\Desktop\\test\\匹配价格.xlsx";
String logFilePath = "C:\\Users\\Administrator\\Desktop\\test\\logfile.txt"; // 日志文件路径
try (FileInputStream fis = new FileInputStream(inputFilePath);
Workbook workbook = new XSSFWorkbook(fis);
FileWriter fw = new FileWriter(logFilePath);
PrintWriter logWriter = new PrintWriter(fw)) {
Sheet sheet1 = workbook.getSheet("Sheet1");
Sheet sheet2 = workbook.getSheet("Sheet2");
Map<String, String> sheet1Data = new HashMap<>();
// 读取Sheet1的数据
for (Row row : sheet1) {
Cell keyCell1 = row.getCell(0);
Cell keyCell2 = row.getCell(1);
Cell valueCell = row.getCell(4);
if (keyCell1 != null && keyCell2 != null && valueCell != null) {
String key = keyCell1.toString() + "-" + keyCell2.toString();
String value = valueCell.toString();
sheet1Data.put(key, value);
}
}
// 比较Sheet2的数据并更新
for (Row row : sheet2) {
Cell keyCell1 = row.getCell(0);
Cell keyCell2 = row.getCell(1);
if (keyCell1 != null && keyCell2 != null) {
String key = keyCell1.toString() + "-" + keyCell2.toString();
if (sheet1Data.containsKey(key)) {
Cell newValueCell = row.createCell(4, CellType.STRING);
String newValue = sheet1Data.get(key);
newValueCell.setCellValue(newValue);
// 写入日志
logWriter.println("更新Sheet2: 第" + (row.getRowNum() + 1) + "第5列的新值为" + newValue);
}
}
}
// 将更新后的工作簿写入到输出文件
try (FileOutputStream fos = new FileOutputStream(outputFilePath)) {
workbook.write(fos);
}
System.out.println("比较和更新已成功完成。");
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,56 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 钉钉技术方案申请表审批归档 ding_scheme_application
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ding_scheme_application")
public class DingSchemeApplication extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String processInstanceId;
private String businessId;
private String processCode;
private String title;
private String instanceResult;
private String dingProcessStatus;
private String originatorUserId;
private String originatorDeptName;
private Date dingInstanceCreateTime;
private Date dingInstanceFinishTime;
private String triggerEventType;
private String formJson;
/** 钉钉控件 id -> 中文标题 nameJSON与 wf_values_json 的 key 一致 */
private String formLabelMap;
/** 控件 id -> {value, ext}JSON避免数百物理列触发 InnoDB 行大小限制 */
private String wfValuesJson;
private String schemeApplyNo;
private String overviewName;
private String fillerName;
private Date fillDate;
private Date needDate;
private String customerFullName;
private String contactAndPhone;
private String projectCategory;
private String productName;
private String taskDetail;
private Date schemeSubmitDate;
private String schemeReceived;
private String plmPushStatus;
private Date plmPushTime;
private String plmPushMessage;
}

View File

@ -0,0 +1,43 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 金蝶工序汇报汇总报表快照 kingdee_operation_report_sum
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("kingdee_operation_report_sum")
public class KingdeeOperationReportSum extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String kingdeeFormId;
private String scopeBegin;
private String scopeEnd;
private String orgNumber;
private String timeUnit;
private String filterMoBillNo;
private String departmentId;
private String reportDate;
private String moBillNo;
private String opOper;
private String workCenterId;
private String processId;
private String productNumber;
private String materialName;
private BigDecimal finishQty;
private BigDecimal quaQty;
private BigDecimal failQty;
}

View File

@ -0,0 +1,41 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 金蝶工序委外转移报表快照 kingdee_subcontract_transfer
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("kingdee_subcontract_transfer")
public class KingdeeSubcontractTransfer extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String kingdeeFormId;
private String scopeStart;
private String scopeFinish;
private String proOrgNumber;
private String documentStatus;
private String filterProductOrderCode;
private String productNumber;
private String productName;
private String providerName;
private String productOrderCodes;
private String documentDate;
private String shiftTaskName;
private BigDecimal leaveQty;
private BigDecimal enterQty;
private BigDecimal qualifiedQty;
}

View File

@ -0,0 +1,57 @@
package com.ruoyi.system.domain.bo;
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 金蝶系统报表工序汇报汇总查询参数GetSysReportData
* <p>
* FormId 请在金蝶客户端打开该报表 选项/属性中查看表单标识后填入
*/
@Data
public class KingdeeOperationReportSumQueryBo {
/**
* 报表 FormId不传时默认 {@link com.ruoyi.system.constant.KingdeeSysReportFormIds#OPERATION_REPORT_SUM}
*/
private String formId = KingdeeSysReportFormIds.OPERATION_REPORT_SUM;
/**
* 开始日期 yyyy-MM-dd
*/
@NotBlank(message = "开始日期不能为空")
private String beginDate;
/**
* 结束日期 yyyy-MM-dd含当日
*/
@NotBlank(message = "结束日期不能为空")
private String endDate;
/**
* 加工组织编码默认与 kdwebapi X-KDApi-OrgNum 一致时可填 100
*/
private String processOrgNumber = "100";
/**
* 统计粒度B 按日与金蝶报表 Model.FTimeUnit 一致可按贵司报表调整
*/
private String timeUnit = "B";
/**
* 可选按单个生产订单编号过滤FMOBillNo
*/
private String moBillNo;
/**
* 与金蝶 FieldKeys 一致顺序决定返回列顺序默认为你提供的精简列
*/
private String fieldKeys = "FDEPARTMENTID,FDATE,FMOBillNo,FOpOper,FWORKCENTERID,FPROCESSID,FPRODUCTNUMBER,FMATERIALNAME,FPRDFINISHQTY,FPRDQUAQTY,FPRDFAILQTY";
/**
* 每页条数金蝶 Limit默认 2000多次拉取直至无数据
*/
private Integer limit = 2000;
}

View File

@ -0,0 +1,27 @@
package com.ruoyi.system.domain.bo;
import lombok.Data;
import java.util.List;
/**
* 金蝶采购/生产订单追溯查询条件SQL Server 金蝶库
*/
@Data
public class KingdeeOrderTraceQueryBo {
/**
* 生产令号可多个采购 PO.F_UCHN_TEXT2 / 生产 MO.F_HBYT_SCLH
* GET 可重复传参 {@code ?sclh=A&sclh=B}或单个参数内逗号分隔 {@code ?sclh=A,B}
*/
private List<String> sclh;
/** 采购订单编码 PO.FBILLNO */
private String purchaseBillNo;
/** 生产订单编码 MO.FBILLNO */
private String moBillNo;
/** 产品编码 MAT.FNUMBER */
private String materialNumber;
}

View File

@ -0,0 +1,75 @@
package com.ruoyi.system.domain.bo;
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 生产令号综合看板查询条件
*/
@Data
public class KingdeeProductionBoardQueryBo {
/**
* 生产令号列表必填可多条
*/
@NotEmpty(message = "生产令号不能为空")
private List<String> sclh;
/**
* 报表日期下限yyyy-MM-dd实时拉取工序汇报汇总 / 委外转移时用
* 不传则尝试 {@link #reportSnapshotBegin}仍不传则默认当前日期往前 90
*/
private String reportStartDate;
/**
* 报表日期上限yyyy-MM-dd含当日
* 不传则尝试 {@link #reportSnapshotEnd}仍不传则默认当天
*/
private String reportEndDate;
/** 兼容旧参数名:与 {@link #reportStartDate} 同义(优先 reportStartDate。 */
private String reportSnapshotBegin;
/** 兼容旧参数名:与 {@link #reportEndDate} 同义。 */
private String reportSnapshotEnd;
/** 工序汇报汇总报表 FormId */
private String operationReportFormId = KingdeeSysReportFormIds.OPERATION_REPORT_SUM;
/** 工序委外转移报表 FormId */
private String subcontractTransferFormId = KingdeeSysReportFormIds.SUBCONTRACT_TRANSFER;
/** 工序汇报汇总加工组织 FNumber */
private String reportProcessOrgNumber = "100";
/** 委外转移生产组织 FNumber */
private String reportProOrgNumber = "100";
/** 工序汇报汇总 Model.FTimeUnit默认 B按日 */
private String reportTimeUnit = "B";
/** 委外转移单据状态,默认已审核 C */
private String reportDocumentStatus = "C";
/** 金蝶报表每页 Limit */
private Integer reportLimit = 2000;
/**
* 综合看板统计当日工序汇报所指日历日yyyy-MM-dd不传则取服务器当天Asia/Shanghai
*/
private String boardReportDay;
/** 是否携带采购追溯与采购入库汇总,默认 true */
private Boolean includePurchase = true;
/** 是否拉取工序汇报/委外金蝶报表(实时,不入库),默认 true */
private Boolean includeSnapshots = true;
/**
* 单个令号下允许的最大生产订单去重数量防止一次请求过大
*/
private Integer maxMoPerBoard = 500;
}

View File

@ -0,0 +1,36 @@
package com.ruoyi.system.domain.bo;
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 金蝶系统报表工序委外转移查询参数GetSysReportData
*/
@Data
public class KingdeeSubcontractTransferQueryBo {
private String formId = KingdeeSysReportFormIds.SUBCONTRACT_TRANSFER;
/** 对应 Model.FStartDate可 yyyy-MM-dd 或完整时间 */
@NotBlank(message = "开始日期不能为空")
private String startDate;
/** 对应 Model.FFinishDate可 yyyy-MM-dd 或完整时间 */
@NotBlank(message = "结束日期不能为空")
private String finishDate;
/** 生产组织 FProOrgId.FNumber默认 100 */
private String proOrgNumber = "100";
/** 单据状态,默认已审核 C */
private String documentStatus = "C";
/** 可选按生产订单编号过滤FProductOrderCodes */
private String productOrderCode;
private String fieldKeys = "FProductNumber,FProductName,FProviderName,FProductOrderCodes,FDates,FShiftTaskName,FLeaveQty,FEnterQty,FQualifiedQty";
private Integer limit = 2000;
}

View File

@ -0,0 +1,45 @@
package com.ruoyi.system.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* 工序汇报汇总报表一行
*/
@Data
public class KingdeeOperationReportSumRowDTO {
/** 加工车间FDEPARTMENTID多为编码或内码 */
private String departmentId;
/** 单据日期 */
private String reportDate;
/** 生产订单编号 */
private String moBillNo;
/** 工序号 */
private String opOper;
/** 工作中心FWORKCENTERID */
private String workCenterId;
/** 作业FPROCESSID */
private String processId;
/** 产品编码 */
private String productNumber;
/** 产品名称 */
private String materialName;
/** 完工数量 */
private BigDecimal finishQty;
/** 合格数量 */
private BigDecimal quaQty;
/** 废品数量 */
private BigDecimal failQty;
}

View File

@ -0,0 +1,36 @@
package com.ruoyi.system.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* 工序委外转移报表一行与默认 FieldKeys 列顺序一致
*/
@Data
public class KingdeeSubcontractTransferRowDTO {
private String productNumber;
private String productName;
private String providerName;
/** 生产订单编号FProductOrderCodes与生产订单号对齐 */
private String productOrderCodes;
/** 单据日期FDates金蝶可能返回如 2026/4/11 */
private String documentDate;
/**
* 委外作业/班次任务名称FShiftTaskName
* 综合看板将其与工序计划中的工序名称活动一名称等做模糊匹配归入对应工序明细
*/
private String shiftTaskName;
/** 委外发出数量FLeaveQty */
private BigDecimal leaveQty;
/** 委外接收数量FEnterQty */
private BigDecimal enterQty;
/** 委外合格数量FQualifiedQty */
private BigDecimal qualifiedQty;
}

View File

@ -0,0 +1,17 @@
package com.ruoyi.system.domain.dto.productionorder;
import lombok.Data;
@Data
public class ProductionOrderMaterialItemDTO {
private String materialCode;
private String materialName;
private Double qty;
private String material;
private Double singleWeight;
private Double totalWeight;
private String remark;
private String parentDrawingNo;
private String parentPart;
private String batchQuantity;
}

View File

@ -0,0 +1,13 @@
package com.ruoyi.system.domain.dto.productionorder;
import lombok.Data;
import java.util.List;
@Data
public class ProductionOrderMaterialsDTO {
private String productionOrderNo;
private String productCode;
private String productName;
private List<ProductionOrderMaterialItemDTO> materials;
}

View File

@ -0,0 +1,22 @@
package com.ruoyi.system.domain.dto.productionorder;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
* 物料单重导出行
*/
@Data
@ExcelIgnoreUnannotated
public class ProductionOrderWeightExportDTO {
@ExcelProperty("物料编码")
private String materialCode;
@ExcelProperty("物料名称")
private String materialName;
@ExcelProperty("单重")
private Double singleWeight;
}

View File

@ -0,0 +1,19 @@
package com.ruoyi.system.domain.dto.productionorder;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
* 物料单重导入行
*/
@Data
@ExcelIgnoreUnannotated
public class ProductionOrderWeightImportDTO {
@ExcelProperty("物料编码")
private String materialCode;
@ExcelProperty("物料名称")
private String materialName;
}

View File

@ -0,0 +1,74 @@
package com.ruoyi.system.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
@ExcelIgnoreUnannotated
public class BuildCapacityMaterialExportVo {
@ExcelProperty("生产令号")
private String productionOrderNo;
@ExcelProperty("成品编码")
private String productCode;
@ExcelProperty("成品名称")
private String productName;
@ExcelProperty("最大可生产套数")
private Integer maxBuildQty;
@ExcelProperty("物料类型")
private String materialType;
@ExcelProperty("物料编码")
private String materialCode;
@ExcelProperty("物料名称")
private String materialName;
@ExcelProperty("单套需求数量")
private Integer requiredQty;
@ExcelProperty("材质")
private String material;
@ExcelProperty("单重(kg)")
private Double singleWeight;
@ExcelProperty("总重(kg)")
private Double totalWeight;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("批次数量")
private String batchQuantity;
@ExcelProperty("即时库存")
private Integer onHandQty;
@ExcelProperty("采购未入库")
private Integer poNotInQty;
@ExcelProperty("生产未入库")
private Integer moNotInQty;
@ExcelProperty("生产未领料")
private Integer moNotPickQty;
@ExcelProperty("可用库存")
private Integer availableQty;
@ExcelProperty("最终可用库存")
private Integer finalAvailableQty;
@ExcelProperty("可支持套数")
private Integer canSupportQty;
@ExcelProperty("状态")
private String status;
}

View File

@ -0,0 +1,27 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 金蝶生产订单工序计划与生产入库追溯行
*/
@Data
public class KingdeeMoTraceVo {
private String sclh;
private String moBillNo;
private String materialNumber;
private String materialName;
private BigDecimal qty;
private Date orderDate;
private String operPlanningBillNo;
private Long operPlanningId;
private Date planStartDate;
private Date planFinishDate;
private String instockBillNo;
private Date instockDate;
private BigDecimal instockQty;
}

View File

@ -0,0 +1,15 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
import java.util.List;
/**
* 金蝶采购 + 生产追溯汇总
*/
@Data
public class KingdeeOrderTraceVo {
private List<KingdeePoTraceVo> purchaseList;
private List<KingdeeMoTraceVo> productionList;
}

View File

@ -0,0 +1,23 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 金蝶采购订单与入库追溯行
*/
@Data
public class KingdeePoTraceVo {
private String sclh;
private String purchaseBillNo;
private Date purchaseDate;
private String materialNumber;
private String materialName;
private BigDecimal purchaseQty;
private String instockBillNo;
private Date instockDate;
private BigDecimal instockQty;
}

View File

@ -0,0 +1,27 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* 生产令号综合看板一层令号
*/
@Data
public class KingdeeProductionBoardVo {
private String sclh;
private List<KingdeePoTraceVo> purchaseList = new ArrayList<>();
private List<PurchaseInboundSummaryVo> purchaseInboundSummary = new ArrayList<>();
private BigDecimal totalPurchaseOrderQty = BigDecimal.ZERO;
private BigDecimal totalPurchaseInstockQty = BigDecimal.ZERO;
private List<KingdeeMoTraceVo> productionTraceList = new ArrayList<>();
private BigDecimal totalMoQty = BigDecimal.ZERO;
private BigDecimal totalProductionInstockQty = BigDecimal.ZERO;
private List<MoBoardNodeVo> orders = new ArrayList<>();
}

View File

@ -0,0 +1,42 @@
package com.ruoyi.system.domain.vo;
import com.ruoyi.system.domain.dto.KingdeeOperationReportSumRowDTO;
import com.ruoyi.system.domain.dto.KingdeeSubcontractTransferRowDTO;
import com.ruoyi.system.domain.dto.OperationPlanResultDTO;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* 综合看板单个生产订单维度
*/
@Data
public class MoBoardNodeVo {
private String moBillNo;
private String materialNumber;
private String materialName;
/**
* 本地工序计划一单可多张主档明细 {@link com.ruoyi.system.domain.dto.ProcessDetailDTO} 含转入/转出/合格/废品等
* 综合看板还会在相同 DTO 上回填统计日工序汇报与末道工序入库合计
*/
private List<OperationPlanResultDTO> planningList = new ArrayList<>();
/** 工序汇报汇总(实时金蝶报表行,不入库) */
private List<KingdeeOperationReportSumRowDTO> operationReportRows = new ArrayList<>();
/**
* 工序委外转移报表原始行实时拉取同时按 {@code boardReportDay} 汇总进
* {@code planningList[].processList[]} 中带委外/外协属性的工序明细字段
*/
private List<KingdeeSubcontractTransferRowDTO> subcontractTransferRows = new ArrayList<>();
/** 生产线追溯行(含入库单行) */
private List<KingdeeMoTraceVo> moTraceRows = new ArrayList<>();
/** 该生产订单下生产入库数量合计 */
private BigDecimal moInstockQty = BigDecimal.ZERO;
}

View File

@ -0,0 +1,20 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 按采购订单+ 物料聚合的入库汇总
*/
@Data
public class PurchaseInboundSummaryVo {
private String purchaseBillNo;
private String materialNumber;
private String materialName;
private BigDecimal sumPurchaseQty;
private BigDecimal sumInstockQty;
/** 追溯扁平行条数 */
private int detailLineCount;
}

View File

@ -0,0 +1,10 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.DingSchemeApplication;
/**
* 钉钉技术方案申请表归档 Mapper
*/
public interface DingSchemeApplicationMapper extends BaseMapper<DingSchemeApplication> {
}

View File

@ -0,0 +1,11 @@
package com.ruoyi.system.mapper;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.KingdeeOperationReportSum;
/**
* 金蝶工序汇报汇总快照 Mapper
*/
public interface KingdeeOperationReportSumMapper extends BaseMapperPlus<KingdeeOperationReportSumMapper, KingdeeOperationReportSum, KingdeeOperationReportSum> {
}

View File

@ -0,0 +1,11 @@
package com.ruoyi.system.mapper;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.KingdeeSubcontractTransfer;
/**
* 金蝶工序委外转移快照 Mapper
*/
public interface KingdeeSubcontractTransferMapper extends BaseMapperPlus<KingdeeSubcontractTransferMapper, KingdeeSubcontractTransfer, KingdeeSubcontractTransfer> {
}

View File

@ -0,0 +1,114 @@
package com.ruoyi.system.runner;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.kingdee.bos.webapi.entity.RepoRet;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import com.ruoyi.system.jdmain.rouplan.FEntity;
import com.ruoyi.system.jdmain.rouplan.FSubEntity;
import com.ruoyi.system.jdmain.rouplan.MainModel;
import com.ruoyi.system.jdmain.rouplan.Model;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
import java.util.List;
import static com.ruoyi.common.core.domain.R.fail;
/**
* 工序计划SFC_OperationPlanning保存不使用 {@link updatePcessPlanConver#updatePcessPlan1}
* 仅更新部门编码分录结构及工序计划起止时间
*/
@Slf4j
public final class OperationPlanningDepartment018Save {
private static final String FORM_ID = "SFC_OperationPlanning";
private static final String DEPT_NUMBER = "018";
private static final List<String> NEED_UPDATE_FIELDS = Arrays.asList(
"FDepartmentId",
"FEntity",
"FSubEntity"
);
private OperationPlanningDepartment018Save() {
}
/**
* 将表头及所有工序分录上的 {@code FDepartmentId.FNumber} 设为 {@code 018} 后逐单保存
*/
@SuppressWarnings("rawtypes")
public static RepoRet save(List<Model> models) {
return save(models, DEPT_NUMBER);
}
/**
* 指定部门编码金蝶部门基础资料编码写入表头与全部分录后保存
*/
@SuppressWarnings("rawtypes")
public static RepoRet save(List<Model> models, String departmentNumber) {
if (models == null || models.isEmpty()) {
return null;
}
String deptNo = departmentNumber == null ? DEPT_NUMBER : departmentNumber;
applyDepartmentNumber(models, deptNo);
RepoRet repoRet = null;
Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
Gson gson = new Gson();
K3CloudApi client = new K3CloudApi();
for (Model model : models) {
MainModel mainModel = new MainModel();
mainModel.setNeedUpDateFields(NEED_UPDATE_FIELDS);
mainModel.setDeleteEntry(false);
mainModel.setModel(model);
String jsonOutput = gsonPretty.toJson(mainModel);
log.info("8888888888888888888888"+JSON.toJSONString(jsonOutput));
repoRet = null;
try {
String resultJson = client.save(FORM_ID, jsonOutput);
repoRet = gson.fromJson(resultJson, RepoRet.class);
if (repoRet != null && repoRet.getResult() != null
&& repoRet.getResult().getResponseStatus() != null
&& repoRet.getResult().getResponseStatus().isIsSuccess()) {
System.out.printf("工序计划(部门+工序时间)保存成功 FID=%s: %s%n",
model.getFID(), gson.toJson(repoRet.getResult()));
} else if (repoRet != null && repoRet.getResult() != null
&& repoRet.getResult().getResponseStatus() != null) {
List<?> errors = repoRet.getResult().getResponseStatus().getErrors();
String errMsg = errors == null || errors.isEmpty()
? gson.toJson(repoRet.getResult().getResponseStatus())
: gson.toJson(errors.get(0));
fail("工序计划保存失败: " + errMsg);
}
} catch (Exception e) {
fail(e.getMessage());
return repoRet;
}
}
return repoRet;
}
private static void applyDepartmentNumber(List<Model> models, String departmentNumber) {
for (Model model : models) {
List<FEntity> entities = model.getFEntity();
if (entities == null) {
continue;
}
for (FEntity entity : entities) {
List<FSubEntity> subs = entity.getFSubEntity();
if (subs == null) {
continue;
}
for (FSubEntity sub : subs) {
FSubEntity.FWorkShopID row = new FSubEntity.FWorkShopID();
row.setFNUMBER(departmentNumber);
sub.setFWorkShopID(row);
}
}
}
}
}

View File

@ -0,0 +1,104 @@
package com.ruoyi.system.runner;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.kingdee.bos.webapi.entity.RepoRet;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import com.ruoyi.system.jdmain.rouplan.FEntity;
import com.ruoyi.system.jdmain.rouplan.FSubEntity;
import com.ruoyi.system.jdmain.rouplan.MainModel;
import com.ruoyi.system.jdmain.rouplan.Model;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
import java.util.List;
import static com.ruoyi.common.core.domain.R.fail;
/**
* 工序汇报单{@code SFC_OperationReport}Save仅更新部门与分录结构与工序计划保存分离
*/
@Slf4j
public final class OperationReportDepartmentSave {
public static final String FORM_ID = "SFC_OperationReport";
private static final String DEFAULT_DEPT_NUMBER = "018";
private static final List<String> NEED_UPDATE_FIELDS = Arrays.asList(
"FWorkShopID",
"FEntity",
"FSubEntity"
);
private OperationReportDepartmentSave() {
}
@SuppressWarnings("rawtypes")
public static RepoRet save(List<Model> models) {
return save(models, DEFAULT_DEPT_NUMBER);
}
@SuppressWarnings("rawtypes")
public static RepoRet save(List<Model> models, String departmentNumber) {
if (models == null || models.isEmpty()) {
return null;
}
String deptNo = departmentNumber == null ? DEFAULT_DEPT_NUMBER : departmentNumber;
applyDepartmentNumber(models, deptNo);
RepoRet repoRet = null;
Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
Gson gson = new Gson();
K3CloudApi client = new K3CloudApi();
for (Model model : models) {
MainModel mainModel = new MainModel();
mainModel.setNeedUpDateFields(NEED_UPDATE_FIELDS);
mainModel.setDeleteEntry(false);
mainModel.setModel(model);
String jsonOutput = gsonPretty.toJson(mainModel);
repoRet = null;
try {
String resultJson = client.save(FORM_ID, jsonOutput);
repoRet = gson.fromJson(resultJson, RepoRet.class);
if (repoRet != null && repoRet.getResult() != null
&& repoRet.getResult().getResponseStatus() != null
&& repoRet.getResult().getResponseStatus().isIsSuccess()) {
log.info("工序汇报单保存成功 FID={}", model.getFID());
} else if (repoRet != null && repoRet.getResult() != null
&& repoRet.getResult().getResponseStatus() != null) {
List<?> errors = repoRet.getResult().getResponseStatus().getErrors();
String errMsg = errors == null || errors.isEmpty()
? gson.toJson(repoRet.getResult().getResponseStatus())
: gson.toJson(errors.get(0));
fail("工序汇报单保存失败: " + errMsg);
}
} catch (Exception e) {
fail(e.getMessage());
return repoRet;
}
}
return repoRet;
}
private static void applyDepartmentNumber(List<Model> models, String departmentNumber) {
for (Model model : models) {
List<FEntity> entities = model.getFEntity();
if (entities == null) {
continue;
}
for (FEntity entity : entities) {
List<FSubEntity> subs = entity.getFSubEntity();
if (subs == null) {
continue;
}
for (FSubEntity sub : subs) {
FSubEntity.FWorkShopID row = new FSubEntity.FWorkShopID();
row.setFNUMBER(departmentNumber);
sub.setFWorkShopID(row);
}
}
}
}
}

View File

@ -0,0 +1,14 @@
package com.ruoyi.system.service;
import com.ruoyi.system.domain.bo.KingdeeProductionBoardQueryBo;
import com.ruoyi.system.domain.vo.KingdeeProductionBoardVo;
import java.util.List;
/**
* 生产令号综合看板
*/
public interface IKingdeeProductionBoardService {
List<KingdeeProductionBoardVo> queryBoard(KingdeeProductionBoardQueryBo bo);
}

View File

@ -0,0 +1,24 @@
package com.ruoyi.system.service;
import com.ruoyi.system.domain.bo.KingdeeOperationReportSumQueryBo;
import com.ruoyi.system.domain.bo.KingdeeSubcontractTransferQueryBo;
/**
* 金蝶报表拉取并写入本地快照表
*/
public interface IKingdeeReportSnapshotService {
/**
* 按查询条件拉取工序汇报汇总并入库同一 formId+区间+组织+粒度+过滤条件会先删后插
*
* @return 写入行数
*/
int syncOperationReportSum(KingdeeOperationReportSumQueryBo bo);
/**
* 按查询条件拉取工序委外转移并入库同一 formId+区间+组织+状态+过滤条件会先删后插
*
* @return 写入行数
*/
int syncSubcontractTransfer(KingdeeSubcontractTransferQueryBo bo);
}

View File

@ -0,0 +1,361 @@
package com.ruoyi.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.dingding.workflow.SchemeApplicationApprovedPayload;
import com.ruoyi.common.dingding.workflow.SchemeApplicationApprovedSink;
import com.ruoyi.common.dingding.workflow.SchemeApplicationFormItem;
import com.ruoyi.system.constant.DingSchemeFormWideColumns;
import com.ruoyi.system.domain.DingSchemeApplication;
import com.ruoyi.system.mapper.DingSchemeApplicationMapper;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 技术方案申请表审批通过后写入 ding_scheme_application表单宽数据在 wf_values_json
*/
@Component
@RequiredArgsConstructor
public class DingSchemeApplicationApprovedSinkImpl implements SchemeApplicationApprovedSink {
private static final Logger log = LoggerFactory.getLogger(DingSchemeApplicationApprovedSinkImpl.class);
private static final String ID_SCHEME_APPLY_NO = "TextField_1BBYI1OFDJA80";
private static final String ID_OVERVIEW_NAME = "TextField_FRLYG3CQ3CG0";
private static final String ID_FILLER = "InnerContactField_9DSIOI7Y7AO0";
private static final String ID_FILL_DATE = "DDDateField_1BHYQ7T5N5TS0";
private static final String ID_NEED_DATE = "DDDateField_YYD1HAMKFXS0";
private static final String ID_CUSTOMER = "TextField_1HXMC0VO5TCW0";
private static final String ID_CONTACT = "TextField_QBMQQBNCTA80";
private static final String ID_PROJECT_CATEGORY = "DDSelectField_845RKMRCBNC";
private static final String ID_PRODUCT_NAME = "DDSelectField_1XTHOHPHULNK0";
private static final String ID_TASK_DETAIL = "TextareaField_I623WTCGKBK0";
private static final String ID_SCHEME_SUBMIT_DATE = "DDDateField_1QY4LG6SI9FK0";
private static final String ID_SCHEME_RECEIVED = "DDSelectField_W8ZTK2TQHHS0";
private final DingSchemeApplicationMapper dingSchemeApplicationMapper;
private static final ConcurrentHashMap<String, Object> SAVE_LOCKS = new ConcurrentHashMap<>();
@Override
@Transactional(rollbackFor = Exception.class)
public void onSchemeApplicationApproved(SchemeApplicationApprovedPayload p) {
if (p == null || StrUtil.isBlank(p.getProcessInstanceId())) {
return;
}
DingSchemeApplication row = buildEntity(p);
String processInstanceId = row.getProcessInstanceId();
synchronized (lockFor(processInstanceId)) {
persistRow(row);
}
}
private static Object lockFor(String processInstanceId) {
return SAVE_LOCKS.computeIfAbsent(processInstanceId, k -> new Object());
}
private void persistRow(DingSchemeApplication row) {
LambdaQueryWrapper<DingSchemeApplication> q = Wrappers.lambdaQuery();
q.eq(DingSchemeApplication::getProcessInstanceId, row.getProcessInstanceId());
DingSchemeApplication existing = dingSchemeApplicationMapper.selectOne(q);
if (existing != null) {
applyExistingMeta(row, existing);
dingSchemeApplicationMapper.updateById(row);
log.info("更新钉钉方案申请表归档 processInstanceId={} id={}", row.getProcessInstanceId(), row.getId());
return;
}
row.setCreateBy("dingtalk");
row.setUpdateBy("dingtalk");
try {
dingSchemeApplicationMapper.insert(row);
log.info("新增钉钉方案申请表归档 processInstanceId={} id={}", row.getProcessInstanceId(), row.getId());
} catch (DuplicateKeyException ex) {
existing = dingSchemeApplicationMapper.selectOne(q);
if (existing == null) {
throw ex;
}
applyExistingMeta(row, existing);
dingSchemeApplicationMapper.updateById(row);
log.info("并发插入冲突,已改为更新 processInstanceId={} id={}", row.getProcessInstanceId(), row.getId());
}
}
private static void applyExistingMeta(DingSchemeApplication row, DingSchemeApplication existing) {
row.setId(existing.getId());
row.setCreateBy(existing.getCreateBy());
row.setCreateTime(existing.getCreateTime());
row.setPlmPushStatus(existing.getPlmPushStatus());
row.setPlmPushTime(existing.getPlmPushTime());
row.setPlmPushMessage(existing.getPlmPushMessage());
row.setUpdateBy("dingtalk");
}
private DingSchemeApplication buildEntity(SchemeApplicationApprovedPayload p) {
DingSchemeApplication e = new DingSchemeApplication();
e.setProcessInstanceId(trimToNull(p.getProcessInstanceId()));
e.setBusinessId(trimToNull(p.getBusinessId()));
e.setProcessCode(trimToNull(p.getProcessCode()));
e.setTitle(trimToNull(p.getTitle()));
e.setInstanceResult(trimToNull(p.getInstanceResult()));
e.setDingProcessStatus(trimToNull(p.getDingProcessStatus()));
e.setOriginatorUserId(trimToNull(p.getOriginatorUserId()));
e.setOriginatorDeptName(trimToNull(p.getOriginatorDeptName()));
e.setDingInstanceCreateTime(p.getDingInstanceCreateTime());
e.setDingInstanceFinishTime(p.getDingInstanceFinishTime());
e.setTriggerEventType(trimToNull(p.getTriggerEventType()));
e.setFormJson(JSONUtil.toJsonStr(p.getFormItems()));
e.setFormLabelMap(buildFormLabelMapJson(p.getFormItems()));
e.setWfValuesJson(buildWfValuesJson(p.getFormItems()));
Map<String, SchemeApplicationFormItem> byId = CollUtil.isEmpty(p.getFormItems())
? Collections.emptyMap()
: p.getFormItems().stream()
.filter(i -> i != null && StrUtil.isNotBlank(i.getComponentId()))
.collect(Collectors.toMap(SchemeApplicationFormItem::getComponentId, Function.identity(), (a, b) -> a));
e.setSchemeApplyNo(val(byId, ID_SCHEME_APPLY_NO));
e.setOverviewName(val(byId, ID_OVERVIEW_NAME));
e.setFillerName(val(byId, ID_FILLER));
e.setFillDate(parseDateOnly(val(byId, ID_FILL_DATE)));
e.setNeedDate(parseDateOnly(val(byId, ID_NEED_DATE)));
e.setCustomerFullName(val(byId, ID_CUSTOMER));
e.setContactAndPhone(val(byId, ID_CONTACT));
e.setProjectCategory(val(byId, ID_PROJECT_CATEGORY));
e.setProductName(val(byId, ID_PRODUCT_NAME));
e.setTaskDetail(val(byId, ID_TASK_DETAIL));
e.setSchemeSubmitDate(parseDateOnly(val(byId, ID_SCHEME_SUBMIT_DATE)));
e.setSchemeReceived(val(byId, ID_SCHEME_RECEIVED));
if (StrUtil.isBlank(e.getPlmPushStatus())) {
e.setPlmPushStatus("PENDING");
}
return e;
}
/**
* 按模板 IDS 顺序写入 JSONkey=控件 idvalue={value, ext} form_label_map key 一致
*/
private static String buildWfValuesJson(List<SchemeApplicationFormItem> items) {
if (CollUtil.isEmpty(items)) {
return null;
}
Map<String, SchemeApplicationFormItem> byId = items.stream()
.filter(i -> i != null && StrUtil.isNotBlank(i.getComponentId()))
.collect(Collectors.toMap(SchemeApplicationFormItem::getComponentId, Function.identity(), (a, b) -> a));
JSONObject root = JSONUtil.createObj();
for (String componentId : DingSchemeFormWideColumns.ORDERED_IDS) {
SchemeApplicationFormItem it = byId.get(componentId);
JSONObject cell = JSONUtil.createObj();
if (it != null) {
cell.set("value", it.getValue());
cell.set("ext", it.getExtValue());
} else {
cell.set("value", null);
cell.set("ext", null);
}
root.set(componentId, cell);
}
return root.toString();
}
/**
* 控件 id -> 钉钉标题中文 name
*/
private static String buildFormLabelMapJson(List<SchemeApplicationFormItem> items) {
if (CollUtil.isEmpty(items)) {
return null;
}
Map<String, String> map = new LinkedHashMap<>();
for (SchemeApplicationFormItem it : items) {
if (it == null || StrUtil.isBlank(it.getComponentId())) {
continue;
}
String name = trimToNull(it.getName());
if (name != null) {
map.put(it.getComponentId(), name);
}
}
return map.isEmpty() ? null : JSONUtil.toJsonStr(map);
}
private static String val(Map<String, SchemeApplicationFormItem> byId, String componentId) {
SchemeApplicationFormItem it = byId.get(componentId);
return it == null ? null : trimToNull(it.getValue());
}
private static String trimToNull(String s) {
if (s == null) {
return null;
}
String t = s.trim();
return t.isEmpty() ? null : t;
}
private static Date parseDateOnly(String yyyyMmDd) {
if (StrUtil.isBlank(yyyyMmDd)) {
return null;
}
try {
return DateUtil.parseDate(yyyyMmDd);
} catch (Exception ex) {
return null;
}
}
}

View File

@ -0,0 +1,741 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
import com.ruoyi.system.domain.SfcOperationPlanningDetail;
import com.ruoyi.system.domain.SfcOperationPlanningMain;
import com.ruoyi.system.domain.bo.KingdeeOrderTraceQueryBo;
import com.ruoyi.system.domain.bo.KingdeeProductionBoardQueryBo;
import com.ruoyi.system.domain.dto.KingdeeOperationReportSumRowDTO;
import com.ruoyi.system.domain.dto.KingdeeSubcontractTransferRowDTO;
import com.ruoyi.system.domain.dto.OperationPlanResultDTO;
import com.ruoyi.system.domain.dto.ProcessDetailDTO;
import com.ruoyi.system.domain.vo.KingdeeMoTraceVo;
import com.ruoyi.system.domain.vo.KingdeePoTraceVo;
import com.ruoyi.system.domain.vo.KingdeeProductionBoardVo;
import com.ruoyi.system.domain.vo.KingdeeOrderTraceVo;
import com.ruoyi.system.domain.vo.MoBoardNodeVo;
import com.ruoyi.system.domain.vo.PurchaseInboundSummaryVo;
import com.ruoyi.system.mapper.SfcOperationPlanningDetailMapper;
import com.ruoyi.system.mapper.SfcOperationPlanningMainMapper;
import com.ruoyi.system.service.IKingdeeProductionBoardService;
import com.ruoyi.system.service.MssqlQueryService;
import com.ruoyi.system.service.support.OperationPlanningResultAssembler;
import com.ruoyi.system.runner.JdUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 生产令号综合看板实现
* <p>
* 数据管线单次请求
* <ol>
* <li>SQL Server 追溯按令号拉生产/采购明细</li>
* <li>可选对本请求涉及的全部生产订单号求并集各调用一次金蝶工序汇报汇总委外转移报表日期窗口见 Bo内存按订单号拆分</li>
* <li>MySQL按令号 + 订单集合加载工序计划主从表并组装 DTO明细上已有转入/转出/合格/废品等</li>
* <li>将指定统计日{@code boardReportDay}默认当天 Asia/Shanghai的工序汇报汇总按工序号并入 {@link ProcessDetailDTO}生产入库合计回填在各工序计划主档的<strong>最大工序号</strong>一行追溯未按工序拆分</li>
* <li>委外转移报表行除保留在 {@link MoBoardNodeVo#getSubcontractTransferRows()} 按单据日期相对 {@code boardReportDay} 拆分后并入 {@link ProcessDetailDTO}匹配规则见 {@link #enrichPlanningWithSubcontractTransfer}</li>
* <li>按令号输出 {@link KingdeeProductionBoardVo}</li>
* </ol>
* 报表数据不入库入库仍走独立的 Kingdee /sync 接口
*/
@RequiredArgsConstructor
@Service
public class KingdeeProductionBoardServiceImpl implements IKingdeeProductionBoardService {
private static final BigDecimal ZERO = BigDecimal.ZERO;
/** 看板「当日」默认时区 */
private static final ZoneId BOARD_ZONE = ZoneId.of("Asia/Shanghai");
/** 金蝶/K3 追溯MssqlQueryService */
private final MssqlQueryService mssqlQueryService;
private final SfcOperationPlanningMainMapper operationPlanningMainMapper;
private final SfcOperationPlanningDetailMapper operationPlanningDetailMapper;
/**
* Bo 中的多个生产令号依次组装看板同一请求内报表仅拉取两轮汇报 + 委外避免按订单重复调 SDK
*/
@Override
public List<KingdeeProductionBoardVo> queryBoard(KingdeeProductionBoardQueryBo bo) {
List<String> sclhList = normalizeSclhList(bo.getSclh());
if (sclhList.isEmpty()) {
throw new ServiceException("生产令号不能为空");
}
int maxMo = bo.getMaxMoPerBoard() == null ? 500 : Math.min(Math.max(bo.getMaxMoPerBoard(), 1), 2000);
boolean includePurchase = bo.getIncludePurchase() == null || bo.getIncludePurchase();
boolean includeSnapshots = bo.getIncludeSnapshots() == null || bo.getIncludeSnapshots();
KingdeeOrderTraceQueryBo traceBo = new KingdeeOrderTraceQueryBo();
traceBo.setSclh(sclhList);
KingdeeOrderTraceVo trace = mssqlQueryService.queryOrderTrace(traceBo);
List<KingdeeMoTraceVo> allMo = trace.getProductionList() != null ? trace.getProductionList() : new ArrayList<>();
List<KingdeePoTraceVo> allPo = trace.getPurchaseList() != null ? trace.getPurchaseList() : new ArrayList<>();
Map<String, List<KingdeeMoTraceVo>> moBySclh = allMo.stream()
.filter(r -> StringUtils.isNotBlank(r.getSclh()))
.collect(Collectors.groupingBy(KingdeeMoTraceVo::getSclh));
Map<String, List<KingdeePoTraceVo>> poBySclh = allPo.stream()
.filter(r -> StringUtils.isNotBlank(r.getSclh()))
.collect(Collectors.groupingBy(KingdeePoTraceVo::getSclh));
// includeSnapshots工序汇报(FMOBillNo)委外(FProductOrderCodes) 与生产订单号对齐后的分组结果供各令号 buildOneBoard 复用
Map<String, List<KingdeeOperationReportSumRowDTO>> reportByMo = Collections.emptyMap();
Map<String, List<KingdeeSubcontractTransferRowDTO>> subByMo = Collections.emptyMap();
if (includeSnapshots) {
Set<String> unionMo = new LinkedHashSet<>();
for (String sclh : sclhList) {
for (KingdeeMoTraceVo r : moBySclh.getOrDefault(sclh, new ArrayList<>())) {
if (StringUtils.isNotBlank(r.getMoBillNo())) {
unionMo.add(r.getMoBillNo().trim());
}
}
}
if (!unionMo.isEmpty()) {
LiveReportMaps live = loadLiveReports(bo, unionMo);
reportByMo = live.reportByMo;
subByMo = live.subByMo;
}
}
LocalDate boardReportDay = resolveBoardReportDay(bo);
List<KingdeeProductionBoardVo> boards = new ArrayList<>();
for (String sclh : sclhList) {
boards.add(buildOneBoard(sclh, moBySclh.getOrDefault(sclh, new ArrayList<>()),
includePurchase ? poBySclh.getOrDefault(sclh, new ArrayList<>()) : new ArrayList<>(),
maxMo, includeSnapshots, reportByMo, subByMo, boardReportDay));
}
return boards;
}
/** 金蝶报表按生产订单分组后的缓存结构(一次请求内共享)。 */
private static final class LiveReportMaps {
final Map<String, List<KingdeeOperationReportSumRowDTO>> reportByMo;
final Map<String, List<KingdeeSubcontractTransferRowDTO>> subByMo;
LiveReportMaps(Map<String, List<KingdeeOperationReportSumRowDTO>> reportByMo,
Map<String, List<KingdeeSubcontractTransferRowDTO>> subByMo) {
this.reportByMo = reportByMo;
this.subByMo = subByMo;
}
}
/**
* 在日期窗口内分页拉全量报表行Limit Bo 约束再过滤 unionMo 并分组
* 工序汇报不按单号传 FilterSDK 仅支持单笔故依赖内存过滤
*/
private LiveReportMaps loadLiveReports(KingdeeProductionBoardQueryBo bo, Set<String> unionMo) {
ReportWindow w = resolveReportWindow(bo);
String beginDt = toReportDateTime(w.start, false);
String endDt = toReportDateTime(w.end, true);
int lim = bo.getReportLimit() == null ? 2000 : bo.getReportLimit();
lim = Math.min(Math.max(lim, 1), 10000);
String opForm = StringUtils.isBlank(bo.getOperationReportFormId())
? KingdeeSysReportFormIds.OPERATION_REPORT_SUM : bo.getOperationReportFormId().trim();
String subForm = StringUtils.isBlank(bo.getSubcontractTransferFormId())
? KingdeeSysReportFormIds.SUBCONTRACT_TRANSFER : bo.getSubcontractTransferFormId().trim();
String procOrg = StringUtils.isBlank(bo.getReportProcessOrgNumber()) ? "100" : bo.getReportProcessOrgNumber().trim();
String proOrg = StringUtils.isBlank(bo.getReportProOrgNumber()) ? "100" : bo.getReportProOrgNumber().trim();
String timeUnit = StringUtils.isBlank(bo.getReportTimeUnit()) ? "B" : bo.getReportTimeUnit().trim();
String docStatus = StringUtils.isBlank(bo.getReportDocumentStatus()) ? "C" : bo.getReportDocumentStatus().trim();
List<KingdeeOperationReportSumRowDTO> allRep =
JdUtil.getOperationReportSumRpt(opForm, null, beginDt, endDt, procOrg, timeUnit, null, lim);
Map<String, List<KingdeeOperationReportSumRowDTO>> reportByMo = allRep.stream()
.filter(r -> StringUtils.isNotBlank(r.getMoBillNo()) && unionMo.contains(r.getMoBillNo().trim()))
.collect(Collectors.groupingBy(r -> r.getMoBillNo().trim()));
List<KingdeeSubcontractTransferRowDTO> allSub =
JdUtil.getSubcontractTransferRpt(subForm, null, beginDt, endDt, proOrg, docStatus, null, lim);
Map<String, List<KingdeeSubcontractTransferRowDTO>> subByMo = allSub.stream()
.filter(r -> StringUtils.isNotBlank(r.getProductOrderCodes())
&& unionMo.contains(r.getProductOrderCodes().trim()))
.collect(Collectors.groupingBy(r -> r.getProductOrderCodes().trim()));
return new LiveReportMaps(reportByMo, subByMo);
}
/**
* 报表起止日期优先 reportStartDate/reportEndDate其次兼容 reportSnapshotBegin/End
* 仍缺省时结束为当天开始为当天前推 90 Bo 文档一致
*/
private static ReportWindow resolveReportWindow(KingdeeProductionBoardQueryBo bo) {
String start = firstNonBlank(bo.getReportStartDate(), bo.getReportSnapshotBegin());
String end = firstNonBlank(bo.getReportEndDate(), bo.getReportSnapshotEnd());
LocalDate today = LocalDate.now();
if (StringUtils.isBlank(end)) {
end = today.toString();
}
if (StringUtils.isBlank(start)) {
start = today.minusDays(90).toString();
}
return new ReportWindow(start.trim(), end.trim());
}
/** a 非空优先,否则 b皆空返回 null */
private static String firstNonBlank(String a, String b) {
if (StringUtils.isNotBlank(a)) {
return a.trim();
}
if (StringUtils.isNotBlank(b)) {
return b.trim();
}
return null;
}
/** 金蝶 Model 用的日历日期字符串yyyy-MM-dd。 */
private static final class ReportWindow {
final String start;
final String end;
ReportWindow(String start, String end) {
this.start = start;
this.end = end;
}
}
/** 短日期补全为 00:00:00 / 23:59:59已含时分秒则原样返回。 */
private static String toReportDateTime(String dateInput, boolean endOfDay) {
String t = dateInput == null ? "" : dateInput.trim();
if (t.length() <= 10) {
return endOfDay ? t + " 23:59:59" : t + " 00:00:00";
}
return t;
}
/**
* 组装单个令号维度的看板采购汇总生产追溯汇总按生产订单展开的节点计划 + 可选报表行
*
* @param globalReportByMo / globalSubByMo 已由 {@link #loadLiveReports} 填好includeSnapshots false 时不写入节点中的报表字段
* @param boardReportDay 工序汇报当日对齐用日历日写入 {@link ProcessDetailDTO}
*/
private KingdeeProductionBoardVo buildOneBoard(String sclh, List<KingdeeMoTraceVo> moRows, List<KingdeePoTraceVo> poRows,
int maxMo, boolean includeSnapshots,
Map<String, List<KingdeeOperationReportSumRowDTO>> globalReportByMo,
Map<String, List<KingdeeSubcontractTransferRowDTO>> globalSubByMo,
LocalDate boardReportDay) {
KingdeeProductionBoardVo vo = new KingdeeProductionBoardVo();
vo.setSclh(sclh);
if (!poRows.isEmpty()) {
vo.setPurchaseList(new ArrayList<>(poRows));
vo.setPurchaseInboundSummary(buildPurchaseInboundSummary(poRows));
vo.setTotalPurchaseOrderQty(sumPo(poRows, true));
vo.setTotalPurchaseInstockQty(sumPo(poRows, false));
}
vo.setProductionTraceList(new ArrayList<>(moRows));
vo.setTotalMoQty(sumMoQty(moRows));
vo.setTotalProductionInstockQty(sumMoInstock(moRows));
Set<String> moSet = moRows.stream()
.map(KingdeeMoTraceVo::getMoBillNo)
.filter(StringUtils::isNotBlank)
.map(String::trim)
.collect(Collectors.toCollection(LinkedHashSet::new));
if (moSet.size() > maxMo) {
throw new ServiceException("令号 " + sclh + " 下生产订单数超过上限 " + maxMo + ",请缩小查询范围");
}
List<OperationPlanResultDTO> planningAll = moSet.isEmpty()
? new ArrayList<>()
: loadPlanning(sclh, moSet);
Map<String, List<OperationPlanResultDTO>> planningByMo = planningAll.stream()
.filter(p -> StringUtils.isNotBlank(p.getMoNumber()))
.collect(Collectors.groupingBy(OperationPlanResultDTO::getMoNumber));
List<String> moOrder = new ArrayList<>(moSet);
moOrder.sort(Comparator.naturalOrder());
for (String moBillNo : moOrder) {
MoBoardNodeVo node = new MoBoardNodeVo();
node.setMoBillNo(moBillNo);
List<KingdeeMoTraceVo> rowsForMo = moRows.stream()
.filter(r -> moBillNo.equals(StringUtils.trim(r.getMoBillNo())))
.collect(Collectors.toList());
node.setMoTraceRows(rowsForMo);
if (!rowsForMo.isEmpty()) {
KingdeeMoTraceVo first = rowsForMo.get(0);
node.setMaterialNumber(first.getMaterialNumber());
node.setMaterialName(first.getMaterialName());
}
node.setMoInstockQty(sumMoInstock(rowsForMo));
node.setPlanningList(new ArrayList<>(planningByMo.getOrDefault(moBillNo, new ArrayList<>())));
if (includeSnapshots) {
node.setOperationReportRows(new ArrayList<>(globalReportByMo.getOrDefault(moBillNo, new ArrayList<>())));
node.setSubcontractTransferRows(new ArrayList<>(globalSubByMo.getOrDefault(moBillNo, new ArrayList<>())));
}
enrichPlanningWithDayReportAndInstock(node, boardReportDay);
enrichPlanningWithSubcontractTransfer(node, boardReportDay);
vo.getOrders().add(node);
}
return vo;
}
/**
* 解析综合看板使用的当日优先 Bo.boardReportDayyyyy-MM-dd否则取服务器当天{@link #BOARD_ZONE}
*/
private static LocalDate resolveBoardReportDay(KingdeeProductionBoardQueryBo bo) {
if (bo == null || StringUtils.isBlank(bo.getBoardReportDay())) {
return LocalDate.now(BOARD_ZONE);
}
try {
return LocalDate.parse(bo.getBoardReportDay().trim());
} catch (DateTimeParseException e) {
throw new ServiceException("boardReportDay 须为 yyyy-MM-dd");
}
}
/**
* 把统计日内的工序汇报按工序号写入 {@link ProcessDetailDTO}订单级入库合计写在每张工序计划的最大工序号上
* 计划本身的转入/转出/合格/废品已在 Assembler 中带出此处不改动
*/
private static void enrichPlanningWithDayReportAndInstock(MoBoardNodeVo node, LocalDate boardReportDay) {
if (node == null || boardReportDay == null) {
return;
}
String mo = node.getMoBillNo();
Map<Integer, ReportDayAgg> aggByOper = new HashMap<>();
List<KingdeeOperationReportSumRowDTO> reportRows = node.getOperationReportRows();
if (reportRows != null && StringUtils.isNotBlank(mo)) {
for (KingdeeOperationReportSumRowDTO r : reportRows) {
if (r == null || StringUtils.isBlank(r.getMoBillNo())) {
continue;
}
if (!mo.equals(r.getMoBillNo().trim())) {
continue;
}
LocalDate rowDay = parseKingdeeReportDate(r.getReportDate());
if (rowDay == null || !rowDay.equals(boardReportDay)) {
continue;
}
int op = parseOperNo(r.getOpOper());
if (op < 0) {
continue;
}
ReportDayAgg a = aggByOper.computeIfAbsent(op, k -> new ReportDayAgg());
a.finish = a.finish.add(nz(r.getFinishQty()));
a.qua = a.qua.add(nz(r.getQuaQty()));
a.fail = a.fail.add(nz(r.getFailQty()));
}
}
BigDecimal instockTotalBd = sumMoInstock(node.getMoTraceRows());
Double instockTotal = bdToDouble(instockTotalBd);
List<OperationPlanResultDTO> plans = node.getPlanningList();
if (plans == null) {
return;
}
for (OperationPlanResultDTO plan : plans) {
List<ProcessDetailDTO> plist = plan.getProcessList();
if (plist == null || plist.isEmpty()) {
continue;
}
int maxOper = plist.stream()
.map(ProcessDetailDTO::getOperNo)
.filter(Objects::nonNull)
.max(Integer::compareTo)
.orElse(Integer.MIN_VALUE);
for (ProcessDetailDTO p : plist) {
Integer opn = p.getOperNo();
if (opn != null && opn >= 0) {
ReportDayAgg a = aggByOper.get(opn);
if (a != null) {
p.setDayReportFinishQty(bdToDouble(a.finish));
p.setDayReportQuaQty(bdToDouble(a.qua));
p.setDayReportFailQty(bdToDouble(a.fail));
}
}
if (maxOper != Integer.MIN_VALUE && opn != null && opn.equals(maxOper) && instockTotal != null) {
p.setOperationInstockQty(instockTotal);
}
}
}
}
/**
* 将本生产订单下的委外转移报表行按工序明细汇总
* <ul>
* <li>单据日期 &lt; boardReportDay发出/接收/合格累计写入 {@code subcontract*BeforeReportDay}</li>
* <li>单据日期 = boardReportDay写入 {@code subcontract*OnReportDay}并给出当日发出+接收之和 {@code subcontractLeaveEnterSumOnReportDay}</li>
* <li>单据日期晚于统计日的行忽略</li>
* </ul>
* 工序匹配先在工作中心/工序名/活动一/车间中含<strong>委外</strong><strong>外协</strong>的工序中
* 用报表 {@link KingdeeSubcontractTransferRowDTO#getShiftTaskName()} 与工序名活动一名称工序说明做模糊评分
* 若仅有一道委外类工序则作为兜底归入该工序
*/
private static void enrichPlanningWithSubcontractTransfer(MoBoardNodeVo node, LocalDate boardReportDay) {
if (node == null || boardReportDay == null) {
return;
}
String mo = node.getMoBillNo();
List<KingdeeSubcontractTransferRowDTO> rows = node.getSubcontractTransferRows();
List<OperationPlanResultDTO> plans = node.getPlanningList();
if (StringUtils.isBlank(mo) || rows == null || rows.isEmpty() || plans == null || plans.isEmpty()) {
return;
}
Map<ProcessDetailDTO, SubBucketAgg> byDetail = new IdentityHashMap<>();
for (KingdeeSubcontractTransferRowDTO row : rows) {
if (row == null || StringUtils.isBlank(row.getProductOrderCodes())) {
continue;
}
if (!mo.trim().equals(row.getProductOrderCodes().trim())) {
continue;
}
LocalDate docDay = parseKingdeeReportDate(row.getDocumentDate());
if (docDay == null) {
continue;
}
ProcessDetailDTO target = findBestSubcontractTarget(plans, row);
if (target == null) {
continue;
}
SubBucketAgg agg = byDetail.computeIfAbsent(target, k -> new SubBucketAgg());
BigDecimal lv = nz(row.getLeaveQty());
BigDecimal ev = nz(row.getEnterQty());
BigDecimal qv = nz(row.getQualifiedQty());
if (docDay.isBefore(boardReportDay)) {
agg.sawBefore = true;
agg.leaveBefore = agg.leaveBefore.add(lv);
agg.enterBefore = agg.enterBefore.add(ev);
agg.quaBefore = agg.quaBefore.add(qv);
} else if (docDay.equals(boardReportDay)) {
agg.sawOnDay = true;
agg.leaveOn = agg.leaveOn.add(lv);
agg.enterOn = agg.enterOn.add(ev);
agg.quaOn = agg.quaOn.add(qv);
}
}
for (OperationPlanResultDTO plan : plans) {
List<ProcessDetailDTO> plist = plan.getProcessList();
if (plist == null) {
continue;
}
for (ProcessDetailDTO p : plist) {
SubBucketAgg agg = byDetail.get(p);
if (agg == null) {
continue;
}
if (agg.sawBefore) {
p.setSubcontractLeaveQtyBeforeReportDay(bdToDouble(agg.leaveBefore));
p.setSubcontractEnterQtyBeforeReportDay(bdToDouble(agg.enterBefore));
p.setSubcontractQualifiedQtyBeforeReportDay(bdToDouble(agg.quaBefore));
}
if (agg.sawOnDay) {
p.setSubcontractLeaveQtyOnReportDay(bdToDouble(agg.leaveOn));
p.setSubcontractEnterQtyOnReportDay(bdToDouble(agg.enterOn));
p.setSubcontractQualifiedQtyOnReportDay(bdToDouble(agg.quaOn));
p.setSubcontractLeaveEnterSumOnReportDay(bdToDouble(agg.leaveOn.add(agg.enterOn)));
}
}
}
}
private static ProcessDetailDTO findBestSubcontractTarget(List<OperationPlanResultDTO> plans,
KingdeeSubcontractTransferRowDTO row) {
List<ProcessDetailDTO> candidates = new ArrayList<>();
for (OperationPlanResultDTO plan : plans) {
List<ProcessDetailDTO> plist = plan.getProcessList();
if (plist == null) {
continue;
}
for (ProcessDetailDTO p : plist) {
if (isOutsourceLikeProcess(p)) {
candidates.add(p);
}
}
}
if (candidates.isEmpty()) {
return null;
}
if (candidates.size() == 1) {
return candidates.get(0);
}
String task = normalizeToken(row.getShiftTaskName());
if (StringUtils.isBlank(task)) {
return null;
}
ProcessDetailDTO best = null;
int bestScore = 0;
for (ProcessDetailDTO p : candidates) {
int sc = scoreSubcontractMatch(task, p);
if (sc > bestScore) {
bestScore = sc;
best = p;
}
}
if (bestScore >= 50) {
return best;
}
return bestScore > 0 ? best : null;
}
private static boolean isOutsourceLikeProcess(ProcessDetailDTO p) {
if (p == null) {
return false;
}
return containsOutsourceKeyword(p.getWorkCenter())
|| containsOutsourceKeyword(p.getProcessName())
|| containsOutsourceKeyword(p.getActivity1Name())
|| containsOutsourceKeyword(p.getDepartment());
}
private static boolean containsOutsourceKeyword(String s) {
if (StringUtils.isBlank(s)) {
return false;
}
return s.contains("委外") || s.contains("外协");
}
private static String normalizeToken(String s) {
return s == null ? "" : s.trim();
}
/** shiftTaskName 与工序名称等匹配得分,越高越优先(调用前应对多候选校验 task 非空) */
private static int scoreSubcontractMatch(String task, ProcessDetailDTO p) {
if (StringUtils.isBlank(task)) {
return 0;
}
String pn = normalizeToken(p.getProcessName());
String act = normalizeToken(p.getActivity1Name());
String od = normalizeToken(p.getOperDescription());
if (StringUtils.isNotBlank(pn)) {
if (task.equalsIgnoreCase(pn)) {
return 100;
}
if (task.contains(pn) || pn.contains(task)) {
return 80;
}
}
if (StringUtils.isNotBlank(act)) {
if (task.equalsIgnoreCase(act)) {
return 95;
}
if (task.contains(act) || act.contains(task)) {
return 75;
}
}
if (StringUtils.isNotBlank(od) && (task.contains(od) || od.contains(task))) {
return 60;
}
return 0;
}
private static final class SubBucketAgg {
BigDecimal leaveBefore = ZERO;
BigDecimal enterBefore = ZERO;
BigDecimal quaBefore = ZERO;
BigDecimal leaveOn = ZERO;
BigDecimal enterOn = ZERO;
BigDecimal quaOn = ZERO;
boolean sawBefore;
boolean sawOnDay;
}
private static final class ReportDayAgg {
BigDecimal finish = ZERO;
BigDecimal qua = ZERO;
BigDecimal fail = ZERO;
}
/** 金蝶 FDATE 常见2026/5/10、2026-05-10、带时间的取日期段 */
private static LocalDate parseKingdeeReportDate(String raw) {
if (StringUtils.isBlank(raw)) {
return null;
}
String s = raw.trim();
int sp = s.indexOf(' ');
if (sp > 0) {
s = s.substring(0, sp);
}
s = s.replace('/', '-').replace('', '-').replace('', '-');
String[] parts = s.split("-");
if (parts.length == 3) {
try {
int y = Integer.parseInt(parts[0].trim());
int m = Integer.parseInt(parts[1].trim());
int d = Integer.parseInt(parts[2].trim());
return LocalDate.of(y, m, d);
} catch (Exception ignored) {
return null;
}
}
try {
return LocalDate.parse(s);
} catch (DateTimeParseException e) {
return null;
}
}
private static int parseOperNo(String opOper) {
if (StringUtils.isBlank(opOper)) {
return -1;
}
try {
double d = Double.parseDouble(opOper.trim());
return (int) Math.round(d);
} catch (NumberFormatException e) {
return -1;
}
}
private static Double bdToDouble(BigDecimal v) {
if (v == null) {
return null;
}
return v.doubleValue();
}
/**
* 本地工序计划主表按令号且排除标题含暂停的计划细表按工序号排序后交给 Assembler
*/
private List<OperationPlanResultDTO> loadPlanning(String sclh, Set<String> moSet) {
LambdaQueryWrapper<SfcOperationPlanningMain> qw = Wrappers.lambdaQuery();
qw.eq(SfcOperationPlanningMain::getHbytSclh, sclh);
qw.notLike(SfcOperationPlanningMain::getHbytSclh, "暂停");
if (moSet != null && !moSet.isEmpty()) {
qw.in(SfcOperationPlanningMain::getMoNumber, moSet);
}
List<SfcOperationPlanningMain> mains = operationPlanningMainMapper.selectList(qw);
if (mains.isEmpty()) {
return new ArrayList<>();
}
List<Long> mainIds = mains.stream().map(SfcOperationPlanningMain::getId).collect(Collectors.toList());
List<SfcOperationPlanningDetail> details = operationPlanningDetailMapper.selectList(
Wrappers.<SfcOperationPlanningDetail>lambdaQuery()
.in(SfcOperationPlanningDetail::getMainId, mainIds)
.orderByAsc(SfcOperationPlanningDetail::getOperNumber));
Map<Long, List<SfcOperationPlanningDetail>> detailMap = details.stream()
.collect(Collectors.groupingBy(SfcOperationPlanningDetail::getMainId));
return OperationPlanningResultAssembler.assemble(mains, detailMap);
}
/** 采购按「采购单 + 物料」聚合数量与行数,用于看板侧汇总展示。 */
private List<PurchaseInboundSummaryVo> buildPurchaseInboundSummary(List<KingdeePoTraceVo> poRows) {
Map<String, Agg> map = new LinkedHashMap<>();
for (KingdeePoTraceVo r : poRows) {
String po = StringUtils.blankToDefault(r.getPurchaseBillNo(), "");
String mat = StringUtils.blankToDefault(r.getMaterialNumber(), "");
String key = po + "\0" + mat;
Agg a = map.computeIfAbsent(key, k -> {
Agg x = new Agg();
x.purchaseBillNo = r.getPurchaseBillNo();
x.materialNumber = r.getMaterialNumber();
x.materialName = r.getMaterialName();
return x;
});
a.sumPurchase = a.sumPurchase.add(nz(r.getPurchaseQty()));
a.sumInstock = a.sumInstock.add(nz(r.getInstockQty()));
a.lines++;
}
List<PurchaseInboundSummaryVo> list = new ArrayList<>();
for (Agg a : map.values()) {
PurchaseInboundSummaryVo v = new PurchaseInboundSummaryVo();
v.setPurchaseBillNo(a.purchaseBillNo);
v.setMaterialNumber(a.materialNumber);
v.setMaterialName(a.materialName);
v.setSumPurchaseQty(a.sumPurchase);
v.setSumInstockQty(a.sumInstock);
v.setDetailLineCount(a.lines);
list.add(v);
}
list.sort(Comparator.comparing(PurchaseInboundSummaryVo::getPurchaseBillNo, Comparator.nullsLast(String::compareTo))
.thenComparing(PurchaseInboundSummaryVo::getMaterialNumber, Comparator.nullsLast(String::compareTo)));
return list;
}
/** purchaseQty=true 汇总采购数量false 汇总入库数量 */
private static BigDecimal sumPo(List<KingdeePoTraceVo> rows, boolean purchaseQty) {
BigDecimal s = ZERO;
for (KingdeePoTraceVo r : rows) {
s = s.add(nz(purchaseQty ? r.getPurchaseQty() : r.getInstockQty()));
}
return s;
}
/** 生产订单追溯行上的生产数量合计 */
private static BigDecimal sumMoQty(List<KingdeeMoTraceVo> rows) {
BigDecimal s = ZERO;
for (KingdeeMoTraceVo r : rows) {
s = s.add(nz(r.getQty()));
}
return s;
}
/** 生产入库数量合计(同一订单多行追溯时累加) */
private static BigDecimal sumMoInstock(List<KingdeeMoTraceVo> rows) {
BigDecimal s = ZERO;
for (KingdeeMoTraceVo r : rows) {
s = s.add(nz(r.getInstockQty()));
}
return s;
}
/** null 视为 0避免链式 add NPE */
private static BigDecimal nz(BigDecimal v) {
return v == null ? ZERO : v;
}
/**
* 去重去空白支持单个元素内逗号分隔多个令号
*/
private static List<String> normalizeSclhList(List<String> raw) {
if (raw == null || raw.isEmpty()) {
return new ArrayList<>();
}
Set<String> seen = new LinkedHashSet<>();
for (String s : raw) {
if (StringUtils.isBlank(s)) {
continue;
}
String t = s.trim();
if (t.contains(",")) {
for (String part : t.split(",")) {
String p = part.trim();
if (StringUtils.isNotBlank(p)) {
seen.add(p);
}
}
} else {
seen.add(t);
}
}
return new ArrayList<>(seen);
}
/** 采购汇总聚合桶(采购单号 + 物料维度) */
private static class Agg {
String purchaseBillNo;
String materialNumber;
String materialName;
BigDecimal sumPurchase = ZERO;
BigDecimal sumInstock = ZERO;
int lines;
}
}

View File

@ -0,0 +1,173 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
import com.ruoyi.system.domain.KingdeeOperationReportSum;
import com.ruoyi.system.domain.KingdeeSubcontractTransfer;
import com.ruoyi.system.domain.bo.KingdeeOperationReportSumQueryBo;
import com.ruoyi.system.domain.bo.KingdeeSubcontractTransferQueryBo;
import com.ruoyi.system.domain.dto.KingdeeOperationReportSumRowDTO;
import com.ruoyi.system.domain.dto.KingdeeSubcontractTransferRowDTO;
import com.ruoyi.system.mapper.KingdeeOperationReportSumMapper;
import com.ruoyi.system.mapper.KingdeeSubcontractTransferMapper;
import com.ruoyi.system.runner.JdUtil;
import com.ruoyi.system.service.IKingdeeReportSnapshotService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* 金蝶报表快照入库
*/
@RequiredArgsConstructor
@Service
public class KingdeeReportSnapshotServiceImpl implements IKingdeeReportSnapshotService {
private final KingdeeOperationReportSumMapper operationReportSumMapper;
private final KingdeeSubcontractTransferMapper subcontractTransferMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public int syncOperationReportSum(KingdeeOperationReportSumQueryBo bo) {
String formId = StringUtils.isBlank(bo.getFormId())
? KingdeeSysReportFormIds.OPERATION_REPORT_SUM : bo.getFormId().trim();
bo.setFormId(formId);
String beginDt = toReportDateTime(bo.getBeginDate(), false);
String endDt = toReportDateTime(bo.getEndDate(), true);
String orgNum = StringUtils.isBlank(bo.getProcessOrgNumber()) ? "100" : bo.getProcessOrgNumber().trim();
String timeUnit = StringUtils.isBlank(bo.getTimeUnit()) ? "B" : bo.getTimeUnit().trim();
String filterMo = StringUtils.isBlank(bo.getMoBillNo()) ? null : bo.getMoBillNo().trim();
int lim = bo.getLimit() == null ? 2000 : bo.getLimit();
lim = Math.min(Math.max(lim, 1), 10000);
List<KingdeeOperationReportSumRowDTO> rows = JdUtil.getOperationReportSumRpt(
bo.getFormId().trim(),
bo.getFieldKeys(),
beginDt,
endDt,
orgNum,
timeUnit,
filterMo,
lim
);
LambdaQueryWrapper<KingdeeOperationReportSum> del = Wrappers.lambdaQuery();
del.eq(KingdeeOperationReportSum::getKingdeeFormId, bo.getFormId().trim())
.eq(KingdeeOperationReportSum::getScopeBegin, beginDt)
.eq(KingdeeOperationReportSum::getScopeEnd, endDt)
.eq(KingdeeOperationReportSum::getOrgNumber, orgNum)
.eq(KingdeeOperationReportSum::getTimeUnit, timeUnit);
if (filterMo == null) {
del.isNull(KingdeeOperationReportSum::getFilterMoBillNo);
} else {
del.eq(KingdeeOperationReportSum::getFilterMoBillNo, filterMo);
}
operationReportSumMapper.delete(del);
if (rows.isEmpty()) {
return 0;
}
List<KingdeeOperationReportSum> entities = new ArrayList<>(rows.size());
for (KingdeeOperationReportSumRowDTO r : rows) {
KingdeeOperationReportSum e = new KingdeeOperationReportSum();
e.setKingdeeFormId(bo.getFormId().trim());
e.setScopeBegin(beginDt);
e.setScopeEnd(endDt);
e.setOrgNumber(orgNum);
e.setTimeUnit(timeUnit);
e.setFilterMoBillNo(filterMo);
e.setDepartmentId(r.getDepartmentId());
e.setReportDate(r.getReportDate());
e.setMoBillNo(r.getMoBillNo());
e.setOpOper(r.getOpOper());
e.setWorkCenterId(r.getWorkCenterId());
e.setProcessId(r.getProcessId());
e.setProductNumber(r.getProductNumber());
e.setMaterialName(r.getMaterialName());
e.setFinishQty(r.getFinishQty());
e.setQuaQty(r.getQuaQty());
e.setFailQty(r.getFailQty());
entities.add(e);
}
operationReportSumMapper.insertBatch(entities, 500);
return entities.size();
}
@Override
@Transactional(rollbackFor = Exception.class)
public int syncSubcontractTransfer(KingdeeSubcontractTransferQueryBo bo) {
String formId = StringUtils.isBlank(bo.getFormId())
? KingdeeSysReportFormIds.SUBCONTRACT_TRANSFER : bo.getFormId().trim();
bo.setFormId(formId);
String startDt = toReportDateTime(bo.getStartDate(), false);
String finishDt = toReportDateTime(bo.getFinishDate(), true);
String orgNum = StringUtils.isBlank(bo.getProOrgNumber()) ? "100" : bo.getProOrgNumber().trim();
String docStatus = StringUtils.isBlank(bo.getDocumentStatus()) ? "C" : bo.getDocumentStatus().trim();
String filterPo = StringUtils.isBlank(bo.getProductOrderCode()) ? null : bo.getProductOrderCode().trim();
int lim = bo.getLimit() == null ? 2000 : bo.getLimit();
lim = Math.min(Math.max(lim, 1), 10000);
List<KingdeeSubcontractTransferRowDTO> rows = JdUtil.getSubcontractTransferRpt(
bo.getFormId().trim(),
bo.getFieldKeys(),
startDt,
finishDt,
orgNum,
docStatus,
filterPo,
lim
);
LambdaQueryWrapper<KingdeeSubcontractTransfer> del = Wrappers.lambdaQuery();
del.eq(KingdeeSubcontractTransfer::getKingdeeFormId, bo.getFormId().trim())
.eq(KingdeeSubcontractTransfer::getScopeStart, startDt)
.eq(KingdeeSubcontractTransfer::getScopeFinish, finishDt)
.eq(KingdeeSubcontractTransfer::getProOrgNumber, orgNum)
.eq(KingdeeSubcontractTransfer::getDocumentStatus, docStatus);
if (filterPo == null) {
del.isNull(KingdeeSubcontractTransfer::getFilterProductOrderCode);
} else {
del.eq(KingdeeSubcontractTransfer::getFilterProductOrderCode, filterPo);
}
subcontractTransferMapper.delete(del);
if (rows.isEmpty()) {
return 0;
}
List<KingdeeSubcontractTransfer> entities = new ArrayList<>(rows.size());
for (KingdeeSubcontractTransferRowDTO r : rows) {
KingdeeSubcontractTransfer e = new KingdeeSubcontractTransfer();
e.setKingdeeFormId(bo.getFormId().trim());
e.setScopeStart(startDt);
e.setScopeFinish(finishDt);
e.setProOrgNumber(orgNum);
e.setDocumentStatus(docStatus);
e.setFilterProductOrderCode(filterPo);
e.setProductNumber(r.getProductNumber());
e.setProductName(r.getProductName());
e.setProviderName(r.getProviderName());
e.setProductOrderCodes(r.getProductOrderCodes());
e.setDocumentDate(r.getDocumentDate());
e.setShiftTaskName(r.getShiftTaskName());
e.setLeaveQty(r.getLeaveQty());
e.setEnterQty(r.getEnterQty());
e.setQualifiedQty(r.getQualifiedQty());
entities.add(e);
}
subcontractTransferMapper.insertBatch(entities, 500);
return entities.size();
}
private static String toReportDateTime(String dateInput, boolean endOfDay) {
String t = dateInput == null ? "" : dateInput.trim();
if (t.length() <= 10) {
return endOfDay ? t + " 23:59:59" : t + " 00:00:00";
}
return t;
}
}

View File

@ -0,0 +1,173 @@
package com.ruoyi.system.service.support;
import cn.hutool.core.date.DateUtil;
import com.ruoyi.system.domain.SfcOperationPlanningDetail;
import com.ruoyi.system.domain.SfcOperationPlanningMain;
import com.ruoyi.system.domain.dto.OperationPlanResultDTO;
import com.ruoyi.system.domain.dto.ProcessDetailDTO;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 工序计划主从表 {@link OperationPlanResultDTO}供分页级联与综合看板复用
*/
public final class OperationPlanningResultAssembler {
private OperationPlanningResultAssembler() {
}
/**
* @param mainList 主表记录顺序保留
* @param detailMap mainId 明细列表已按工序号排序更佳
*/
public static List<OperationPlanResultDTO> assemble(
List<SfcOperationPlanningMain> mainList,
Map<Long, List<SfcOperationPlanningDetail>> detailMap) {
List<OperationPlanResultDTO> resultList = new ArrayList<>();
if (mainList == null || mainList.isEmpty()) {
return resultList;
}
for (SfcOperationPlanningMain main : mainList) {
OperationPlanResultDTO resultDTO = new OperationPlanResultDTO();
resultDTO.setMoNumber(main.getMoNumber());
resultDTO.setBatchNo(main.getHbytSclh());
resultDTO.setProductCode(main.getProductCode());
resultDTO.setProductName(main.getProductName());
resultDTO.setBillNo(main.getBillNo());
resultDTO.setProSpecification(main.getProSpecification());
resultDTO.setPlanStartTime(main.getPlanStartTime() != null ? DateUtil.formatDateTime(main.getPlanStartTime()) : null);
resultDTO.setPlanFinishTime(main.getPlanFinishTime() != null ? DateUtil.formatDateTime(main.getPlanFinishTime()) : null);
resultDTO.setFid(main.getFid());
resultDTO.setRawPlanStartTime(main.getPlanStartTime());
List<ProcessDetailDTO> processList = new ArrayList<>();
List<SfcOperationPlanningDetail> relatedDetails = detailMap != null ? detailMap.get(main.getId()) : null;
double totalPlanQty = 0.0;
double totalOkQty = 0.0;
int finishedCount = 0;
String mainWorkCenter = "";
if (relatedDetails != null && !relatedDetails.isEmpty()) {
mainWorkCenter = relatedDetails.get(0).getWorkCenterName();
for (SfcOperationPlanningDetail detail : relatedDetails) {
if (detail.getOperQty() != null) {
totalPlanQty += detail.getOperQty().doubleValue();
}
if (detail.getQualifiedQty() != null) {
totalOkQty += detail.getQualifiedQty().doubleValue();
}
if ("4".equals(detail.getOperStatus())) {
finishedCount++;
}
}
for (SfcOperationPlanningDetail detail : relatedDetails) {
ProcessDetailDTO detailDTO = new ProcessDetailDTO();
detailDTO.setOperNo(detail.getOperNumber() != null ? detail.getOperNumber().intValue() : null);
detailDTO.setProcessName(detail.getProcessName());
detailDTO.setWorkCenter(detail.getWorkCenterName());
detailDTO.setPlanQty(detail.getOperQty() != null ? detail.getOperQty().doubleValue() : null);
detailDTO.setInQty(detail.getTransInQty() != null ? detail.getTransInQty().doubleValue() : null);
detailDTO.setOkQty(detail.getQualifiedQty() != null ? detail.getQualifiedQty().doubleValue() : null);
detailDTO.setNgQty(detail.getUnqualifiedQty() != null ? detail.getUnqualifiedQty().doubleValue() : null);
detailDTO.setTransOutQty(detail.getTransOutQty() != null ? detail.getTransOutQty().doubleValue() : null);
detailDTO.setWastageQty(detail.getWastageQty() != null ? detail.getWastageQty().doubleValue() : null);
detailDTO.setDepartment(detail.getDepartmentName());
detailDTO.setOperator(detail.getOperator());
if (detailDTO.getPlanQty() != null && detailDTO.getInQty() != null && detailDTO.getPlanQty() > 0) {
BigDecimal progress = BigDecimal.valueOf(detailDTO.getInQty())
.multiply(BigDecimal.valueOf(100))
.divide(BigDecimal.valueOf(detailDTO.getPlanQty()), 1, RoundingMode.HALF_UP);
if (progress.compareTo(BigDecimal.ZERO) < 0) {
progress = BigDecimal.ZERO;
} else if (progress.compareTo(BigDecimal.valueOf(100)) > 0) {
progress = BigDecimal.valueOf(100);
}
detailDTO.setProgress(progress.doubleValue());
}
String statusStr = detail.getOperStatus();
if ("1".equals(statusStr)) {
detailDTO.setK3Status("计划");
} else if ("2".equals(statusStr)) {
detailDTO.setK3Status("计划下达");
} else if ("3".equals(statusStr)) {
detailDTO.setK3Status("开工");
} else if ("4".equals(statusStr)) {
detailDTO.setK3Status("已完工");
} else if ("5".equals(statusStr)) {
detailDTO.setK3Status("结案");
} else if ("6".equals(statusStr)) {
detailDTO.setK3Status("结算");
} else {
detailDTO.setK3Status(statusStr);
}
double inQty = detailDTO.getInQty() == null ? 0D : detailDTO.getInQty();
double okQty = detailDTO.getOkQty() == null ? 0D : detailDTO.getOkQty();
double ngQty = detailDTO.getNgQty() == null ? 0D : detailDTO.getNgQty();
double transOutQty = detailDTO.getTransOutQty() == null ? 0D : detailDTO.getTransOutQty();
if ("5".equals(statusStr) || "6".equals(statusStr)) {
detailDTO.setStatus("已关闭");
} else if (inQty == 0D) {
detailDTO.setStatus("未开工");
} else if (transOutQty > 0D) {
detailDTO.setStatus("已转出");
} else if (okQty + ngQty >= inQty) {
detailDTO.setStatus("工序完成");
} else if (okQty + ngQty > 0D) {
detailDTO.setStatus("质检中");
} else {
detailDTO.setStatus("生产中");
}
detailDTO.setSeqPlanStartTime(detail.getSeqPlanStartTime() != null ? DateUtil.formatDateTime(detail.getSeqPlanStartTime()) : null);
detailDTO.setSeqPlanFinishTime(detail.getSeqPlanFinishTime() != null ? DateUtil.formatDateTime(detail.getSeqPlanFinishTime()) : null);
detailDTO.setOperPlanStartTime(detail.getOperPlanStartTime() != null ? DateUtil.formatDateTime(detail.getOperPlanStartTime()) : null);
detailDTO.setOperPlanFinishTime(detail.getOperPlanFinishTime() != null ? DateUtil.formatDateTime(detail.getOperPlanFinishTime()) : null);
detailDTO.setOptCtrlCode(detail.getOptCtrlCode());
detailDTO.setKeyOper(detail.getKeyOper());
detailDTO.setActivity1Name(detail.getActivityName());
detailDTO.setOperDescription(detail.getOperDescription());
detailDTO.setEquipment(detail.getEquipment());
detailDTO.setK3DetailId(detail.getK3DetailId());
detailDTO.setEntityEntryId(detail.getEntityEntryId());
processList.add(detailDTO);
}
resultDTO.setWorkCenter(mainWorkCenter);
resultDTO.setOverallPlanQty(totalPlanQty);
resultDTO.setOverallOkQty(totalOkQty);
double progress = 0.0;
if (totalPlanQty > 0) {
progress = (totalOkQty / totalPlanQty) * 100;
}
resultDTO.setOverallProgress(Math.min(100.0, Math.max(0.0, progress)));
if (relatedDetails.isEmpty() || (finishedCount == 0 && totalOkQty == 0)) {
resultDTO.setOverallStatus("未开工");
} else if (finishedCount == relatedDetails.size()) {
resultDTO.setOverallStatus("已完工");
} else {
resultDTO.setOverallStatus("生产中");
}
}
resultDTO.setProcessList(processList);
resultList.add(resultDTO);
}
resultList.sort(Comparator
.comparing(OperationPlanResultDTO::getBatchNo, Comparator.nullsLast(String::compareTo))
.thenComparing(OperationPlanResultDTO::getRawPlanStartTime, Comparator.nullsLast(Date::compareTo)));
return resultList;
}
}

View File

@ -0,0 +1,246 @@
package com.ruoyi.system.service.support;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.kingdee.bos.webapi.entity.RepoRet;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.ProcessRoute;
import com.ruoyi.system.domain.dto.PlanPrcessNumDTO;
import com.ruoyi.system.domain.dto.ProcessTimeInfo;
import com.ruoyi.system.jdmain.rouplan.FEntity;
import com.ruoyi.system.jdmain.rouplan.FSubEntity;
import com.ruoyi.system.jdmain.rouplan.Model;
import com.ruoyi.system.service.impl.ProcessRouteServiceImpl;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import com.ruoyi.system.runner.OperationPlanningDepartment018Save;
/**
* 加工车间 + 物料条件从金蝶拉取工序计划SFC_OperationPlanning再按工艺路线回写计划时间
* <p>
* {@link ProcessRouteServiceImpl#updateProcessPlan} 的更新逻辑类似 BillQuery 使用车间+物料过滤
* 工艺路线与工序时间按单据上的 {@link Model#getFMONumber}生产令号在本地关联无需再传入项目令号参数
*/
@Service
@RequiredArgsConstructor
public class OperationPlanningWorkshopUpdateService {
private static final Logger log = LoggerFactory.getLogger(OperationPlanningWorkshopUpdateService.class);
/** 与 {@link ProcessRouteServiceImpl#getSelecPlan} 相同的 FieldKeys保证反序列化到 {@link PlanPrcessNumDTO} */
private static final String OPERATION_PLANNING_FIELD_KEYS =
"FID,FSubEntity_FDetailID,FProductId.FNumber,FOperNumber,FEntity_FEntryID";
/** 保存到金蝶工序计划分录上的加工车间编码(与 {@link OperationPlanningDepartment018Save} 默认一致) */
private static final String WORKSHOP_DEPT_NUMBER = "018";
private final ProcessRouteServiceImpl processRouteService;
/**
* 使用默认过滤部门编码 007Compare 67物料编码包含/匹配 -MPCompare 17
* 再按每条工序计划上的生产令号 {@link Model#getFMONumber} 关联本地工艺路线并更新计划时间
*/
public List<Model> updateProcessPlanByWorkshopFilter() throws Exception {
return updateProcessPlanByWorkshopFilter("67", "007", "17", "-MP");
}
/**
* 按自定义 BillQuery 条件查询工序计划并更新部门 + 物料两行 FilterStringLogic 均为 0
* 工艺路线数据按每条单据的 {@link Model#getFMONumber} 查询不再单独传入项目令号
*
* @param departmentCompare 部门字段比较符 {@code "67"}
* @param departmentNumber 部门编码 {@code "007"}
* @param productCompare 物料字段比较符 {@code "17"}
* @param productFilterValue 物料过滤值 {@code "-MP"}
*/
@SuppressWarnings("rawtypes")
public List<Model> updateProcessPlanByWorkshopFilter(
String departmentCompare, String departmentNumber,
String productCompare, String productFilterValue) throws Exception {
List<Model> numDTOS = queryOperationPlanningModels(
departmentCompare, departmentNumber, productCompare, productFilterValue);
ExecutorService executorService = Executors.newFixedThreadPool(5);
List<Callable<Void>> tasks = new ArrayList<>();
for (Model numDTO : numDTOS) {
tasks.add(() -> {
String moNumber = numDTO.getFMONumber();
if (StringUtils.isBlank(moNumber)) {
log.warn("工序计划 FID={} 无 FMONumber跳过工艺路线时间回填", numDTO.getFID());
return null;
}
List<ProcessRoute> rawBomList = processRouteService.getRawBomList(moNumber);
for (ProcessRoute processRoute : rawBomList) {
ProcessTimeInfo processTimeInfo = processRouteService.selectProcessRouteByMaterialCode(
numDTO.getFProcessId_number(), moNumber);
if (numDTO.getFProcessId_number().equals(processRoute.getMaterialCode())) {
numDTO.setFPlanStartTime(processTimeInfo.getTenthProcessStartTime());
numDTO.setFPlanFinishTime(processTimeInfo.getLastProcessEndTime());
List<FEntity> fEntity = numDTO.getFEntity();
for (FEntity entity : fEntity) {
for (FSubEntity fSubEntity : entity.getFSubEntity()) {
if (fSubEntity.getFOperNumber().equals(processRoute.getProcessNo())) {
FSubEntity.FWorkShopID dept = new FSubEntity.FWorkShopID();
dept.setFNUMBER(WORKSHOP_DEPT_NUMBER);
fSubEntity.setFWorkShopID(dept);
fSubEntity.setFOperPlanStartTime(processRoute.getXuStartTime());
fSubEntity.setFOperPlanFinishTime(processRoute.getXuEndTime());
}
}
}
}
}
return null;
});
}
try {
List<Future<Void>> futures = executorService.invokeAll(tasks);
for (Future<Void> future : futures) {
future.get();
}
} catch (InterruptedException | ExecutionException e) {
log.error("按车间条件更新工序计划时并发任务异常", e);
throw e;
} finally {
executorService.shutdown();
}
if (numDTOS.isEmpty()) {
log.info("按车间条件更新工序计划:无单据,跳过保存");
return numDTOS;
}
RepoRet repoRet = OperationPlanningDepartment018Save.save(numDTOS);
if (repoRet == null) {
log.warn("按车间条件更新工序计划:保存未返回结果");
return numDTOS;
}
log.info(repoRet.isSuccessfully() ? "按车间条件更新工序计划:成功" : "按车间条件更新工序计划:失败");
if (repoRet.isSuccessfully()) {
log.info("按车间条件更新工序计划成功: {}", repoRet.getResult().getResponseStatus().getSuccessEntitys());
} else {
log.info("按车间条件更新工序计划失败: {}", repoRet.getResult().getResponseStatus().getErrors().get(0));
}
return numDTOS;
}
/**
* 仅查询并组装为 {@link Model} 列表不调用保存
*/
public List<Model> queryOperationPlanningModels(
String departmentCompare, String departmentNumber,
String productCompare, String productFilterValue) {
K3CloudApi client = new K3CloudApi();
JsonObject json = new JsonObject();
json.addProperty("FormId", "SFC_OperationPlanning");
json.addProperty("FieldKeys", OPERATION_PLANNING_FIELD_KEYS);
JsonArray filterString = new JsonArray();
JsonObject deptFilter = new JsonObject();
deptFilter.addProperty("Left", "");
deptFilter.addProperty("FieldName", "FDepartmentId.FNumber");
deptFilter.addProperty("Compare", departmentCompare);
deptFilter.addProperty("Value", departmentNumber);
deptFilter.addProperty("Right", "");
deptFilter.addProperty("Logic", 0);
filterString.add(deptFilter);
JsonObject productFilter = new JsonObject();
productFilter.addProperty("Left", "");
productFilter.addProperty("FieldName", "FProductId.FNumber");
productFilter.addProperty("Compare", productCompare);
productFilter.addProperty("Value", productFilterValue);
productFilter.addProperty("Right", "");
productFilter.addProperty("Logic", 0);
filterString.add(productFilter);
json.add("FilterString", filterString);
json.addProperty("OrderString", "");
json.addProperty("TopRowCount", 0);
json.addProperty("StartRow", 0);
json.addProperty("Limit", 2000);
json.addProperty("SubSystemId", "");
List<PlanPrcessNumDTO> plannedProcesses = new ArrayList<>();
try {
String resultJson = String.valueOf(client.billQuery(json.toString()));
log.info("工序计划 BillQuery(车间+物料) 返回: {}", resultJson);
JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class);
if (jsonArray == null || jsonArray.size() == 0) {
log.info("工序计划 BillQuery(车间+物料) 无数据");
return new ArrayList<>();
}
ObjectMapper objectMapper = new ObjectMapper();
List<PlanPrcessNumDTO> rows = objectMapper.readValue(jsonArray.toString(),
new TypeReference<List<PlanPrcessNumDTO>>() { });
if (rows != null && !rows.isEmpty()) {
plannedProcesses.addAll(rows);
}
} catch (Exception e) {
log.error("工序计划 BillQuery(车间+物料) 异常: {}", e.getMessage(), e);
}
return convertToRequiredJson(plannedProcesses);
}
/**
* {@link ProcessRouteServiceImpl} 中私有方法逻辑一致将多行 BillQuery 结果合并为按 FID 聚合的 {@link Model}
*/
private List<Model> convertToRequiredJson(List<PlanPrcessNumDTO> plannedProcesses) {
Map<Integer, Model> modelMap = new HashMap<>();
for (PlanPrcessNumDTO dto : plannedProcesses) {
Model model = modelMap.computeIfAbsent(dto.getFID(), fid -> {
Model newModel = new Model();
newModel.setFID(fid);
newModel.setFMONumber(dto.getFMONumber());
newModel.setFPlanStartTime(dto.getFPlanStartTime());
newModel.setFPlanFinishTime(dto.getFPlanFinishTime());
newModel.setFProcessId_number(dto.getFProcessId_number());
return newModel;
});
FEntity fEntity = model.getFEntity().stream()
.filter(entity -> entity.getFEntryID() == dto.getFEntity_FEntryID())
.findFirst()
.orElseGet(() -> {
FEntity newFEntity = new FEntity();
newFEntity.setFEntryID(dto.getFEntity_FEntryID());
newFEntity.setFSeqNumber(dto.getFSeqNumber());
newFEntity.setFSeqName(dto.getFSeqName());
model.getFEntity().add(newFEntity);
return newFEntity;
});
FSubEntity fSubEntity = new FSubEntity();
fSubEntity.setFDetailID(dto.getFSubEntity_FDetailID());
fSubEntity.setFOperNumber(dto.getFOperNumber());
fSubEntity.setFOperPlanStartTime(dto.getFOperPlanStartTime());
fSubEntity.setFOperPlanFinishTime(dto.getFOperPlanFinishTime());
FSubEntity.F_HBYT_RKCK rkck = new FSubEntity.F_HBYT_RKCK();
rkck.setFNUMBER(dto.getFRKCKFName());
fSubEntity.setF_HBYT_RKCK(rkck);
fEntity.getFSubEntity().add(fSubEntity);
}
return new ArrayList<>(modelMap.values());
}
}

View File

@ -0,0 +1,169 @@
package com.ruoyi.system.service.support;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.kingdee.bos.webapi.entity.RepoRet;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import com.ruoyi.system.domain.dto.PlanPrcessNumDTO;
import com.ruoyi.system.jdmain.rouplan.FEntity;
import com.ruoyi.system.jdmain.rouplan.FSubEntity;
import com.ruoyi.system.jdmain.rouplan.Model;
import com.ruoyi.system.runner.OperationReportDepartmentSave;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 工序汇报单{@link OperationReportDepartmentSave#FORM_ID}按车间+物料条件 BillQuery
* 将分录部门统一为 018 后保存仅更新 {@link OperationReportDepartmentSave} 中声明的字段
* <p>
* BillQuery 使用与工序计划共有的行键字段FID分录内码物料工序号等
* 若云星空汇报单不支持 {@code FProductId.FNumber} 等过滤键请在调用处改为该单实际字段
*/
@Slf4j
@Service
public class OperationReportWorkshopUpdateService {
/**
* 工序汇报 BillQuery 字段与工序计划侧常见行键一致两单都具备时可反序列化到 {@link PlanPrcessNumDTO}
*/
public static final String OPERATION_REPORT_BILL_FIELD_KEYS =
"FID,FSubEntity_FDetailID,FEntity_FEntryID";
/**
* 默认部门 67/007物料 17/-MP保存部门 018
*/
public List<Model> updateOperationReportByWorkshopFilter() throws Exception {
return updateOperationReportByWorkshopFilter("67", "007", "17", "-MP");
}
/**
* 查询工序汇报 写分录部门 SaveNeedUpDateFields FDepartmentId / FEntity / FSubEntity
*/
@SuppressWarnings("rawtypes")
public List<Model> updateOperationReportByWorkshopFilter(
String departmentCompare, String departmentNumber,
String productCompare, String productFilterValue) throws Exception {
List<Model> models = queryOperationReportModels(
departmentCompare, departmentNumber, productCompare, productFilterValue);
if (models.isEmpty()) {
log.info("工序汇报:无数据,跳过保存");
return models;
}
RepoRet repoRet = OperationReportDepartmentSave.save(models);
if (repoRet == null) {
log.warn("工序汇报:保存未返回结果");
return models;
}
log.info(repoRet.isSuccessfully() ? "工序汇报更新:成功" : "工序汇报更新:失败");
return models;
}
/**
* BillQuery 并组装 {@link Model}不保存
*/
public List<Model> queryOperationReportModels(
String departmentCompare, String departmentNumber,
String productCompare, String productFilterValue) {
K3CloudApi client = new K3CloudApi();
JsonObject json = new JsonObject();
json.addProperty("FormId", OperationReportDepartmentSave.FORM_ID);
json.addProperty("FieldKeys", OPERATION_REPORT_BILL_FIELD_KEYS);
JsonArray filterString = new JsonArray();
JsonObject deptFilter = new JsonObject();
deptFilter.addProperty("Left", "");
deptFilter.addProperty("FieldName", "FWorkShopID.FNumber");
deptFilter.addProperty("Compare", departmentCompare);
deptFilter.addProperty("Value", departmentNumber);
deptFilter.addProperty("Right", "");
deptFilter.addProperty("Logic", 0);
filterString.add(deptFilter);
JsonObject productFilter = new JsonObject();
productFilter.addProperty("Left", "");
productFilter.addProperty("FieldName", "FMaterialId.FNumber");
productFilter.addProperty("Compare", productCompare);
productFilter.addProperty("Value", productFilterValue);
productFilter.addProperty("Right", "");
productFilter.addProperty("Logic", 0);
filterString.add(productFilter);
json.add("FilterString", filterString);
json.addProperty("OrderString", "");
json.addProperty("TopRowCount", 0);
json.addProperty("StartRow", 0);
json.addProperty("Limit", 2000);
json.addProperty("SubSystemId", "");
List<PlanPrcessNumDTO> rows = new ArrayList<>();
try {
String resultJson = String.valueOf(client.billQuery(json.toString()));
log.info("工序汇报 BillQuery 返回: {}", resultJson);
JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class);
if (jsonArray == null || jsonArray.size() == 0) {
return new ArrayList<>();
}
ObjectMapper objectMapper = new ObjectMapper();
List<PlanPrcessNumDTO> parsed = objectMapper.readValue(jsonArray.toString(),
new TypeReference<List<PlanPrcessNumDTO>>() { });
if (parsed != null && !parsed.isEmpty()) {
rows.addAll(parsed);
}
} catch (Exception e) {
log.error("工序汇报 BillQuery 异常: {}", e.getMessage(), e);
}
return convertBillRowsToModels(rows);
}
private List<Model> convertBillRowsToModels(List<PlanPrcessNumDTO> plannedProcesses) {
Map<Integer, Model> modelMap = new HashMap<>();
for (PlanPrcessNumDTO dto : plannedProcesses) {
Model model = modelMap.computeIfAbsent(dto.getFID(), fid -> {
Model newModel = new Model();
newModel.setFID(fid);
newModel.setFMONumber(dto.getFMONumber());
newModel.setFPlanStartTime(dto.getFPlanStartTime());
newModel.setFPlanFinishTime(dto.getFPlanFinishTime());
newModel.setFProcessId_number(dto.getFProcessId_number());
return newModel;
});
FEntity fEntity = model.getFEntity().stream()
.filter(entity -> entity.getFEntryID() == dto.getFEntity_FEntryID())
.findFirst()
.orElseGet(() -> {
FEntity newFEntity = new FEntity();
newFEntity.setFEntryID(dto.getFEntity_FEntryID());
newFEntity.setFSeqNumber(dto.getFSeqNumber() != null ? dto.getFSeqNumber() : "");
newFEntity.setFSeqName(dto.getFSeqName() != null ? dto.getFSeqName() : "");
model.getFEntity().add(newFEntity);
return newFEntity;
});
FSubEntity fSubEntity = new FSubEntity();
fSubEntity.setFDetailID(dto.getFSubEntity_FDetailID());
fSubEntity.setFOperNumber(dto.getFOperNumber());
fSubEntity.setFOperPlanStartTime(dto.getFOperPlanStartTime());
fSubEntity.setFOperPlanFinishTime(dto.getFOperPlanFinishTime());
if (dto.getFRKCKFName() != null && !dto.getFRKCKFName().isEmpty()) {
FSubEntity.F_HBYT_RKCK rkck = new FSubEntity.F_HBYT_RKCK();
rkck.setFNUMBER(dto.getFRKCKFName());
fSubEntity.setF_HBYT_RKCK(rkck);
}
fEntity.getFSubEntity().add(fSubEntity);
}
return new ArrayList<>(modelMap.values());
}
}

View File

@ -0,0 +1,71 @@
package com.ruoyi.system.utils;
import com.ruoyi.common.utils.StringUtils;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 生产令号解析工具
* <p>常规令号年份取首段-后两位 {@code EY} 开头的研发令号 {@code EY2512-032}年份取 {@code EY} 后紧跟的两位</p>
*/
public final class ProductionOrderNoUtils {
private static final Map<String, String> PROJECT_NAME_MAP;
static {
Map<String, String> mapping = new LinkedHashMap<>();
mapping.put("ND3", "宁德三代项目");
mapping.put("WL5.0", "蔚来5.0项目");
mapping.put("WL5.1", "蔚来5.1项目");
PROJECT_NAME_MAP = Collections.unmodifiableMap(mapping);
}
private ProductionOrderNoUtils() {
}
public static String extractYear(String productionOrderNo) {
if (StringUtils.isBlank(productionOrderNo)) {
throw new IllegalArgumentException("生产令号为空,无法识别年份");
}
String code = productionOrderNo.trim();
// EY 开头研发令号年份为 EY 后两位 EY2512-032 -> 25 -> 2025
if (code.length() >= 4 && code.regionMatches(true, 0, "EY", 0, 2)) {
String yy = code.substring(2, 4);
if (!yy.chars().allMatch(Character::isDigit)) {
throw new IllegalArgumentException("EY研发令号年份段不是数字: " + productionOrderNo);
}
return "20" + yy;
}
int firstDash = code.indexOf('-');
if (firstDash < 0 || code.length() < firstDash + 3) {
throw new IllegalArgumentException("生产令号格式不正确,缺少年份段: " + productionOrderNo);
}
String yy = code.substring(firstDash + 1, firstDash + 3);
if (!yy.chars().allMatch(Character::isDigit)) {
throw new IllegalArgumentException("生产令号年份段不是数字: " + productionOrderNo);
}
return "20" + yy;
}
public static String extractYearPart(String productionOrderNo) {
String year = extractYear(productionOrderNo);
return year.substring(2);
}
public static String resolveProjectName(String productionOrderNo) {
if (StringUtils.isBlank(productionOrderNo)) {
return "未知项目";
}
String code = productionOrderNo.trim().toUpperCase();
for (Map.Entry<String, String> entry : PROJECT_NAME_MAP.entrySet()) {
if (code.startsWith(entry.getKey().toUpperCase())) {
return entry.getValue();
}
}
return "未知项目";
}
}

View File

@ -0,0 +1,971 @@
{
"result": {
"finishTime": "2026-05-15T08:38Z",
"attachedProcessInstanceIds": [],
"businessId": "202605131714000342828",
"title": "安宏生提交的技术方案申请表",
"originatorDeptId": "1057854496",
"operationRecords": [
{
"date": "2026-05-13T17:14Z",
"result": "NONE",
"images": [],
"showName": "提交申请",
"type": "START_PROCESS_INSTANCE",
"userId": "455108492423275705"
},
{
"date": "2026-05-13T17:16Z",
"result": "AGREE",
"activityId": "6650_e9ef",
"images": [],
"showName": "销售内勤3",
"remark": "",
"type": "EXECUTE_TASK_NORMAL",
"userId": "03462113426124233873"
},
{
"date": "2026-05-13T17:49Z",
"result": "AGREE",
"activityId": "0a8f_4e19",
"images": [],
"showName": "工业销售总监",
"remark": "已确认",
"type": "EXECUTE_TASK_NORMAL",
"userId": "02580952260533396432"
},
{
"date": "2026-05-14T10:06Z",
"result": "AGREE",
"activityId": "122b_b71f",
"images": [],
"showName": "总工程师",
"remark": "同意",
"type": "EXECUTE_TASK_NORMAL",
"userId": "035715651324258877"
},
{
"date": "2026-05-14T10:18Z",
"result": "AGREE",
"activityId": "7246_df51",
"images": [],
"showName": "项目负责副总工程师派工",
"remark": "",
"type": "EXECUTE_TASK_NORMAL",
"userId": "3816683726197864"
},
{
"date": "2026-05-14T14:07Z",
"result": "AGREE",
"activityId": "76d0_7eb3",
"images": [],
"showName": "项目负责人确认时间",
"remark": "已确认",
"type": "EXECUTE_TASK_NORMAL",
"userId": "264325116326361164"
},
{
"date": "2026-05-14T14:09Z",
"result": "AGREE",
"activityId": "76d0_7eb3",
"images": [],
"showName": "项目负责人确认时间",
"remark": "",
"type": "EXECUTE_TASK_NORMAL",
"userId": "283111015435457273"
},
{
"date": "2026-05-14T19:04Z",
"result": "AGREE",
"activityId": "25d1_3948",
"images": [],
"showName": "办理人",
"remark": "",
"type": "EXECUTE_TASK_NORMAL",
"userId": "455108492423275705"
},
{
"date": "2026-05-14T19:04Z",
"result": "NONE",
"activityId": "8e30_b091",
"images": [],
"showName": "抄送人",
"ccUserIds": [
"03462113426124233873"
],
"remark": "",
"type": "PROCESS_CC",
"userId": "455108492423275705"
},
{
"date": "2026-05-14T19:04Z",
"result": "NONE",
"activityId": "e584_2a28",
"images": [],
"showName": "抄送人",
"ccUserIds": [
"264325116326361164",
"283111015435457273",
"455108492423275705"
],
"remark": "",
"type": "PROCESS_CC",
"userId": "455108492423275705"
},
{
"date": "2026-05-15T08:16Z",
"result": "AGREE",
"activityId": "ffbb_66b4",
"images": [],
"showName": "研发技术人员确认提交方案",
"remark": "已确认",
"type": "EXECUTE_TASK_NORMAL",
"userId": "264325116326361164"
},
{
"date": "2026-05-15T08:36Z",
"result": "AGREE",
"activityId": "ffbb_66b4",
"images": [],
"showName": "研发技术人员确认提交方案",
"remark": "",
"type": "EXECUTE_TASK_NORMAL",
"userId": "283111015435457273"
},
{
"date": "2026-05-15T08:38Z",
"result": "AGREE",
"activityId": "f135_c1ff",
"images": [],
"showName": "销售确认收到方案",
"remark": "",
"type": "EXECUTE_TASK_NORMAL",
"userId": "03462113426124233873"
}
],
"formComponentValues": [
{
"componentType": "TextField",
"name": "方案申请编号",
"bizAlias": "",
"id": "TextField_1BBYI1OFDJA80",
"value": "GF-26-114"
},
{
"componentType": "TextField",
"name": "概述名称",
"bizAlias": "",
"id": "TextField_FRLYG3CQ3CG0",
"value": "GF-26-114\t升降台/安宏生/河南帕菲特/20260513"
},
{
"componentType": "InnerContactField",
"name": "填表人",
"bizAlias": "",
"id": "InnerContactField_9DSIOI7Y7AO0",
"value": "安宏生",
"extValue": "[{\"emplId\":\"455108492423275705\",\"itemId\":\"455108492423275705\",\"name\":\"安宏生\",\"avatar\":\"https://static.dingtalk.com/media/lQDPM5WVGKaHgqPNAf7NAf6wO-ZGtsVyAdQJQdv6i25iAQ_510_510.jpg\"}]"
},
{
"componentType": "DDDateField",
"name": "填表日期",
"bizAlias": "",
"id": "DDDateField_1BHYQ7T5N5TS0",
"value": "2026-05-13"
},
{
"componentType": "DDDateField",
"name": "需求日期",
"bizAlias": "",
"id": "DDDateField_YYD1HAMKFXS0",
"value": "2026-05-14"
},
{
"componentType": "DDSelectField",
"name": "有无前期对接工程师",
"bizAlias": "",
"id": "DDSelectField_1VS1BX17O9MO0",
"value": "无",
"extValue": "{\"label\":\"无\",\"key\":\"option_1\"}"
},
{
"componentType": "InnerContactField",
"name": "前期对接工程师",
"bizAlias": "",
"id": "InnerContactField_U886PC45AO00"
},
{
"componentType": "TextField",
"name": "客户全称",
"bizAlias": "",
"id": "TextField_1HXMC0VO5TCW0",
"value": "河南帕菲特搬运设备有限公司"
},
{
"componentType": "TextField",
"name": "联系人及电话",
"bizAlias": "",
"id": "TextField_QBMQQBNCTA80",
"value": "王经理"
},
{
"componentType": "DDSelectField",
"name": "项目分类",
"bizAlias": "",
"id": "DDSelectField_845RKMRCBNC",
"value": "工业类",
"extValue": "{\"label\":\"工业类\",\"key\":\"option_1\"}"
},
{
"componentType": "DDSelectField",
"name": "产品名称",
"bizAlias": "",
"id": "DDSelectField_1XTHOHPHULNK0",
"value": "举升链升降台 XCLLT",
"extValue": "{\"label\":\"举升链升降台 XCLLT\",\"key\":\"option_MJ62T1V3PI80\"}"
},
{
"componentType": "TextField",
"name": "产品应用领域",
"bizAlias": "",
"id": "TextField_1EIAVY538AM80"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_N0ZDGQT4UJ40"
},
{
"componentType": "TextareaField",
"name": "技术总工意见",
"bizAlias": "",
"id": "TextareaField_GO981AG879K0"
},
{
"componentType": "InnerContactField",
"name": "项目负责副总工程师",
"bizAlias": "",
"id": "InnerContactField_1TXM18E414740",
"value": "李德山",
"extValue": "[{\"nick\":\"李德山\",\"orgUserName\":\"李德山\",\"emplId\":\"3816683726197864\",\"corpId\":\"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0\",\"name\":\"李德山\",\"selectDeptName\":\"研究院\",\"avatar\":\"https://static.dingtalk.com/media/lADPDiCptl4dganNA_DNAvI_754_1008.jpg\",\"selectDeptId\":1062677229}]"
},
{
"componentType": "InnerContactField",
"name": "项目负责人派工",
"bizAlias": "",
"id": "InnerContactField_SHOIEPZ1X8W0",
"value": "李瑞娜,赵世通",
"extValue": "[{\"emplId\":\"264325116326361164\",\"itemId\":\"264325116326361164\",\"name\":\"李瑞娜\",\"selectDeptName\":\"\",\"avatar\":\"https://static.dingtalk.com/media/lADPDhJzvnPW8vDNASDNASA_288_288.jpg_60x60q90.jpg\",\"selectDeptId\":\"1051631211\"},{\"emplId\":\"283111015435457273\",\"itemId\":\"283111015435457273\",\"name\":\"赵世通\",\"selectDeptName\":\"\",\"avatar\":\"\",\"selectDeptId\":\"1051631211\"}]"
},
{
"componentType": "DDDateField",
"name": "预计完成日期",
"bizAlias": "",
"id": "DDDateField_1107GY4FF5R40",
"value": "2026-05-14"
},
{
"componentType": "TextareaField",
"name": "技术人员意见",
"bizAlias": "",
"id": "TextareaField_1JNZ7QFU4GLC0"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_5UK9OEEPNQG0"
},
{
"componentType": "TextNote",
"bizAlias": "",
"id": "TextNote_14QFWOA0NXUK",
"value": "举升链升降台 XCLLT / 自导向升降台 XCDLT / 咬合链升降台 XCZLT"
},
{
"componentType": "TextField",
"name": "台面尺寸",
"bizAlias": "",
"id": "TextField_7KHHS2KML4G0",
"value": "2*1.8m"
},
{
"componentType": "TextField",
"name": "行程",
"bizAlias": "",
"id": "TextField_17ONU2GWWQQK0",
"value": "2m"
},
{
"componentType": "TextField",
"name": "负载单位kg",
"bizAlias": "",
"id": "TextField_1D66PIGUHPEO0",
"value": "3t"
},
{
"componentType": "TextField",
"name": "速度单位m/s或mm/s",
"bizAlias": "",
"id": "TextField_2E68TAT1P2B",
"value": "没有要求"
},
{
"componentType": "TextField",
"name": "最低高度",
"bizAlias": "",
"id": "TextField_1FVHYJIFC9340",
"value": "0.6m"
},
{
"componentType": "DDSelectField",
"name": "驱动方式",
"bizAlias": "",
"id": "DDSelectField_12J1O9KUMFK00",
"value": "伺服电机",
"extValue": "{\"label\":\"伺服电机\",\"key\":\"option_1\"}"
},
{
"componentType": "DDSelectField",
"name": "有无偏载",
"bizAlias": "",
"id": "DDSelectField_1CTHXMP1W6000",
"value": "有",
"extValue": "{\"label\":\"有\",\"key\":\"option_0\"}"
},
{
"componentType": "DDSelectField",
"name": "限位方式",
"bizAlias": "",
"id": "DDSelectField_1QQEC44I00G00",
"value": "行程检测",
"extValue": "{\"label\":\"行程检测\",\"key\":\"option_0\"}"
},
{
"componentType": "TextField",
"name": "电源电压",
"bizAlias": "",
"id": "TextField_1X4ISVYJ2E000",
"value": "48V"
},
{
"componentType": "TextareaField",
"name": "使用环境",
"bizAlias": "",
"id": "TextareaField_9MIMABZEHW40"
},
{
"componentType": "TextField",
"name": "使用频率",
"bizAlias": "",
"id": "TextField_1N728V92Z1LS0",
"value": "低"
},
{
"componentType": "DDSelectField",
"name": "有无脚轮",
"bizAlias": "",
"id": "DDSelectField_4JP6PT1HB480",
"value": "无",
"extValue": "{\"label\":\"无\",\"key\":\"option_1\"}"
},
{
"componentType": "TextareaField",
"name": "电控要求",
"bizAlias": "",
"id": "TextareaField_1WLKQPZU8UF40"
},
{
"componentType": "TextareaField",
"name": "方案补充说明",
"bizAlias": "",
"id": "TextareaField_ZCRQZCLP3800"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_704TMWHBUK00"
},
{
"componentType": "DDAttachment",
"name": "附件",
"id": "DDAttachment_XJYUB17OFGW0",
"value": "[{\"spaceId\":\"27823713000\",\"fileName\":\"河南帕菲特搬运设备有限公司.xls\",\"fileSize\":23552,\"fileType\":\"xls\",\"fileId\":\"221145607469\"},{\"spaceId\":\"27823713000\",\"fileName\":\"微信图片_20260513163955_12_59.png\",\"thumbnail\":{\"authCode\":\"\",\"authMediaId\":\"$iwElAqNqcGcDAQTRAcgF0QIBBrDi5mc-dmf47QnZxa-9YegABwAIAAmqZGluZ3BhblBpYwoACwA\",\"rotation\":0,\"width\":456,\"mediaId\":\"\",\"height\":513},\"fileSize\":80830,\"fileType\":\"png\",\"fileId\":\"221145649720\"},{\"spaceId\":\"27823713000\",\"fileName\":\"微信图片_20260513164014_13_59.jpg\",\"fileSize\":784102,\"fileType\":\"jpg\",\"fileId\":\"221145679632\"},{\"spaceId\":\"27823713000\",\"fileName\":\"微信图片_20260513164031_14_59.png\",\"thumbnail\":{\"authCode\":\"\",\"authMediaId\":\"$iwElAqNqcGcDAQTRAmwF0QIEBrAdx_Bs03uJ0AnZxbBfKFcABwAIAAmqZGluZ3BhblBpYwoACwA\",\"rotation\":0,\"width\":716,\"mediaId\":\"\",\"height\":596},\"fileSize\":39858,\"fileType\":\"png\",\"fileId\":\"221145622748\"}]"
},
{
"componentType": "TextNote",
"bizAlias": "",
"id": "TextNote_1S3AH8USXUU80"
},
{
"componentType": "TextNote",
"bizAlias": "",
"id": "TextNote_1S2UFGJ55CDC0"
},
{
"componentType": "TextField",
"name": "基坑深度",
"bizAlias": "",
"id": "TextField_1JWDW5KVN95S0"
},
{
"componentType": "TextField",
"name": "台面尺寸/外形轮廓(可在附件内上传)",
"bizAlias": "",
"id": "TextField_1CTQW75A6XK00"
},
{
"componentType": "TextField",
"name": "动载",
"bizAlias": "",
"id": "TextField_23GWUBGROXWG0"
},
{
"componentType": "TextField",
"name": "静载(可在附件内上传)",
"bizAlias": "",
"id": "TextField_SIM35ICCGOW0"
},
{
"componentType": "TextField",
"name": "速度",
"bizAlias": "",
"id": "TextField_18UFLIYK2G0W"
},
{
"componentType": "TextField",
"name": "行程",
"bizAlias": "",
"id": "TextField_EEO52079YWG0"
},
{
"componentType": "TextField",
"name": "限位方式",
"bizAlias": "",
"id": "TextField_17J58EEU17DS0"
},
{
"componentType": "TextField",
"name": "电压频率是否特殊",
"bizAlias": "",
"id": "TextField_F05H5U3N9NC0"
},
{
"componentType": "TextField",
"name": "减速器要求",
"bizAlias": "",
"id": "TextField_J84FK4ALUOG0"
},
{
"componentType": "TextField",
"name": "导向形式",
"bizAlias": "",
"id": "TextField_3IXTW5EOSTK0"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_OWD8CAEIPCW0"
},
{
"componentType": "DDAttachment",
"name": "台下设备参数附件",
"bizAlias": "",
"id": "DDAttachment_ZVUJAK8ZRVK0"
},
{
"componentType": "TextNote",
"bizAlias": "",
"id": "TextNote_196NEZF2GKQO0"
},
{
"componentType": "TextareaField",
"name": "安装位置(如有纵/横剖图可附件说明)",
"bizAlias": "",
"id": "TextareaField_1BXA83S0L9Q80"
},
{
"componentType": "DDSelectField",
"name": "设备形式",
"bizAlias": "",
"id": "DDSelectField_1J17P5TOEU0W0"
},
{
"componentType": "TextField",
"name": "卷筒直径",
"bizAlias": "",
"id": "TextField_1ED24R0QOG4G0"
},
{
"componentType": "TextField",
"name": "行程",
"bizAlias": "",
"id": "TextField_62OWJDX5J780"
},
{
"componentType": "TextField",
"name": "速度",
"bizAlias": "",
"id": "TextField_W509DMUVT0W0"
},
{
"componentType": "TextField",
"name": "吊点数",
"bizAlias": "",
"id": "TextField_IR0XM2QFI4G0"
},
{
"componentType": "TextField",
"name": "额定载荷",
"bizAlias": "",
"id": "TextField_MWLXHEAJYDS0"
},
{
"componentType": "TextField",
"name": "杆体自重/总载荷",
"bizAlias": "",
"id": "TextField_GZISO77XGU80"
},
{
"componentType": "DDSelectField",
"name": "有无载荷传感器",
"bizAlias": "",
"id": "DDSelectField_1XGOO6QI7YE80"
},
{
"componentType": "TextareaField",
"name": "其他特殊要求",
"bizAlias": "",
"id": "TextareaField_15N86B1OM9R40"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_13OIS5R5G4G00"
},
{
"componentType": "DDAttachment",
"name": "台上设备参数附件",
"bizAlias": "",
"id": "DDAttachment_Y0KM7E71JY80"
},
{
"componentType": "TextNote",
"bizAlias": "",
"id": "TextNote_65FUYS6PMOG0"
},
{
"componentType": "TextField",
"name": "行程",
"bizAlias": "",
"id": "TextField_1WOIAN7UXMXS0"
},
{
"componentType": "TextField",
"name": "负载",
"bizAlias": "",
"id": "TextField_1B349K9H85FK0"
},
{
"componentType": "TextField",
"name": "箱体形式",
"bizAlias": "",
"id": "TextField_V3UBXSM0V400"
},
{
"componentType": "TextField",
"name": "出轴方式/方向",
"bizAlias": "",
"id": "TextField_1N6AOCMUFXXC0"
},
{
"componentType": "TextField",
"name": "地脚板位置",
"bizAlias": "",
"id": "TextField_5B1TRAUGUP80"
},
{
"componentType": "DDSelectField",
"name": "是否加装限位",
"bizAlias": "",
"id": "DDSelectField_R805UL353UO0"
},
{
"componentType": "TextField",
"name": "使用频率",
"bizAlias": "",
"id": "TextField_210LMWSH8CCG0"
},
{
"componentType": "TextareaField",
"name": "方案补充说明",
"bizAlias": "",
"id": "TextareaField_6JU2QSEND4G0"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_1OBP4JCUUC1S0"
},
{
"componentType": "DDAttachment",
"name": "附件",
"id": "DDAttachment_1OQ414MMSQE80"
},
{
"componentType": "TextNote",
"bizAlias": "",
"id": "TextNote_7USWEJCWOHO0"
},
{
"componentType": "TextField",
"name": "外形尺寸(长宽高)",
"bizAlias": "",
"id": "TextField_10A0OELOA9CW0"
},
{
"componentType": "TextField",
"name": "负载",
"bizAlias": "",
"id": "TextField_1F35DOLS3GJK0"
},
{
"componentType": "TextField",
"name": "速度",
"bizAlias": "",
"id": "TextField_G2N28LNPOKO0"
},
{
"componentType": "DDSelectField",
"name": "是否带升降",
"bizAlias": "",
"id": "DDSelectField_Y8AKWL5T20G0"
},
{
"componentType": "TextField",
"name": "升降高度",
"bizAlias": "",
"id": "TextField_1X0CJO3BBELC0"
},
{
"componentType": "TextField",
"name": "升降速度",
"bizAlias": "",
"id": "TextField_1DCKMEARM96O0"
},
{
"componentType": "TextareaField",
"name": "使用环境",
"bizAlias": "",
"id": "TextareaField_8ZYS78VXXKG0"
},
{
"componentType": "DDSelectField",
"name": "导航方式",
"bizAlias": "",
"id": "DDSelectField_1UNDZ9DNXIN4"
},
{
"componentType": "TextareaField",
"name": "方案补充说明",
"bizAlias": "",
"id": "TextareaField_902TJ8AC3BO0"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_1V6324DSHDMO0"
},
{
"componentType": "DDAttachment",
"name": "附件",
"id": "DDAttachment_19GLQ5UABT9C0"
},
{
"componentType": "TextNote",
"bizAlias": "",
"id": "TextNote_1JGD3A0EBOU80"
},
{
"componentType": "DDSelectField",
"name": "刚性链类型",
"bizAlias": "",
"id": "DDSelectField_JDD37MSAU7K0"
},
{
"componentType": "TextField",
"name": "行程",
"bizAlias": "",
"id": "TextField_1ODO49P4QIOW0"
},
{
"componentType": "TextField",
"name": "负载",
"bizAlias": "",
"id": "TextField_15YXLN28VYWW0"
},
{
"componentType": "TextField",
"name": "升降速度",
"bizAlias": "",
"id": "TextField_N3EEZETOMLS0"
},
{
"componentType": "TextField",
"name": "箱体形式",
"bizAlias": "",
"id": "TextField_MZLNE0WXSYO0"
},
{
"componentType": "DDSelectField",
"name": "是否加装限位",
"bizAlias": "",
"id": "DDSelectField_1D1NY47OPRY80"
},
{
"componentType": "TextField",
"name": "电机减速机种类",
"bizAlias": "",
"id": "TextField_CO3RY4XTL800"
},
{
"componentType": "TextField",
"name": "使用频率",
"bizAlias": "",
"id": "TextField_1LJRN85YYW680"
},
{
"componentType": "TextareaField",
"name": "方案补充说明",
"bizAlias": "",
"id": "TextareaField_1W3YXGM2WVWG0"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_FVVK6OHVSMO0"
},
{
"componentType": "DDAttachment",
"name": "附件",
"id": "DDAttachment_NISKKTWA4LC0"
},
{
"componentType": "TextNote",
"bizAlias": "",
"id": "TextNote_18NMSNM15JLS0"
},
{
"componentType": "TextField",
"name": "台面尺寸",
"bizAlias": "",
"id": "TextField_YON75A1BPDS0"
},
{
"componentType": "TextField",
"name": "负载",
"bizAlias": "",
"id": "TextField_1LA4D1ZNJCO00"
},
{
"componentType": "TextField",
"name": "速度",
"bizAlias": "",
"id": "TextField_QZAR20YC9DC0"
},
{
"componentType": "TextField",
"name": "最低高度",
"bizAlias": "",
"id": "TextField_W5VDI6TJE0W0"
},
{
"componentType": "DDSelectField",
"name": "驱动方式",
"bizAlias": "",
"id": "DDSelectField_JQFNCPP9Q8G0"
},
{
"componentType": "TextField",
"name": "电源电压",
"bizAlias": "",
"id": "TextField_X7WT90RW88W0"
},
{
"componentType": "TextareaField",
"name": "使用环境",
"bizAlias": "",
"id": "TextareaField_XVWU129IDG00"
},
{
"componentType": "TextField",
"name": "使用频率",
"bizAlias": "",
"id": "TextField_21CFZH9VCESG0"
},
{
"componentType": "TextareaField",
"name": "其他特殊要求",
"bizAlias": "",
"id": "TextareaField_20MIUBGWHAYO0"
},
{
"componentType": "ColumnLayout",
"name": "分栏",
"id": "ColumnLayout_7E01AAY4TUO0"
},
{
"componentType": "DDAttachment",
"name": "附件",
"id": "DDAttachment_PVHB9480IPS0"
},
{
"componentType": "TextareaField",
"name": "任务详情",
"bizAlias": "",
"id": "TextareaField_I623WTCGKBK0",
"value": "出配置表"
},
{
"componentType": "DDDateField",
"name": "方案提交日期",
"bizAlias": "",
"id": "DDDateField_1QY4LG6SI9FK0",
"value": "2026-05-15"
},
{
"componentType": "DDSelectField",
"name": "是否收到方案",
"bizAlias": "",
"id": "DDSelectField_W8ZTK2TQHHS0",
"value": "是",
"extValue": "{\"label\":\"是\",\"key\":\"option_0\"}"
}
],
"result": "agree",
"bizAction": "NONE",
"ccUserIds": [
"03462113426124233873",
"455108492423275705",
"283111015435457273",
"264325116326361164"
],
"createTime": "2026-05-13T17:14Z",
"originatorUserId": "455108492423275705",
"bizData": "{}",
"tasks": [
{
"result": "AGREE",
"activityId": "25d1_3948",
"finishTime": "2026-05-14T19:04Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101080494031&businessId=202605131714000342828",
"createTime": "2026-05-14T14:09Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101080494031&businessId=202605131714000342828",
"userId": "455108492423275705",
"taskId": 101080494031,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "6650_e9ef",
"finishTime": "2026-05-13T17:16Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101091313121&businessId=202605131714000342828",
"createTime": "2026-05-13T17:14Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101091313121&businessId=202605131714000342828",
"userId": "03462113426124233873",
"taskId": 101091313121,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "f135_c1ff",
"finishTime": "2026-05-15T08:38Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101095534975&businessId=202605131714000342828",
"createTime": "2026-05-15T08:36Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101095534975&businessId=202605131714000342828",
"userId": "03462113426124233873",
"taskId": 101095534975,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "76d0_7eb3",
"finishTime": "2026-05-14T14:07Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101102549873&businessId=202605131714000342828",
"createTime": "2026-05-14T10:18Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101102549873&businessId=202605131714000342828",
"userId": "264325116326361164",
"taskId": 101102549873,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "76d0_7eb3",
"finishTime": "2026-05-14T14:09Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101102549874&businessId=202605131714000342828",
"createTime": "2026-05-14T10:18Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101102549874&businessId=202605131714000342828",
"userId": "283111015435457273",
"taskId": 101102549874,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "ffbb_66b4",
"finishTime": "2026-05-15T08:16Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101118665886&businessId=202605131714000342828",
"createTime": "2026-05-14T19:04Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101118665886&businessId=202605131714000342828",
"userId": "264325116326361164",
"taskId": 101118665886,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "ffbb_66b4",
"finishTime": "2026-05-15T08:36Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101118665887&businessId=202605131714000342828",
"createTime": "2026-05-14T19:04Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101118665887&businessId=202605131714000342828",
"userId": "283111015435457273",
"taskId": 101118665887,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "0a8f_4e19",
"finishTime": "2026-05-13T17:49Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101127712338&businessId=202605131714000342828",
"createTime": "2026-05-13T17:16Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101127712338&businessId=202605131714000342828",
"userId": "02580952260533396432",
"taskId": 101127712338,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "122b_b71f",
"finishTime": "2026-05-14T10:06Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101128816574&businessId=202605131714000342828",
"createTime": "2026-05-13T17:49Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101128816574&businessId=202605131714000342828",
"userId": "035715651324258877",
"taskId": 101128816574,
"status": "COMPLETED"
},
{
"result": "AGREE",
"activityId": "7246_df51",
"finishTime": "2026-05-14T10:18Z",
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101139004605&businessId=202605131714000342828",
"createTime": "2026-05-14T10:06Z",
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101139004605&businessId=202605131714000342828",
"userId": "3816683726197864",
"taskId": 101139004605,
"status": "COMPLETED"
}
],
"originatorDeptName": "经营中心-工业事业部-销售科",
"status": "COMPLETED"
},
"success": true
}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

View File

@ -0,0 +1,9 @@
-- 已有表 ding_scheme_application 时按需执行(列已存在会报错,请跳过)
-- 1中文名映射与 wf_values_json 的 key 均为控件 id
ALTER TABLE ding_scheme_application
ADD COLUMN form_label_map MEDIUMTEXT NULL COMMENT '控件 id -> 中文 nameJSON' AFTER form_json;
-- 2宽表单值 JSON替代数百个 wf_* 物理列,避免 InnoDB 1118
ALTER TABLE ding_scheme_application
ADD COLUMN wf_values_json LONGTEXT NULL COMMENT '控件 id -> {value,ext} JSON' AFTER form_label_map;

View File

@ -0,0 +1,5 @@
-- 已有旧表(含大量 wf_* 列导致 1118先加 JSON 列、升级应用后再按需删除旧 wf_* 列
-- 若 wf_values_json 已存在则跳过本段
ALTER TABLE ding_scheme_application
ADD COLUMN wf_values_json LONGTEXT NULL COMMENT '控件 id -> {value,ext} JSON' AFTER form_label_map;

View File

@ -0,0 +1,2 @@
-- 已废弃:数百个 wf_* 列会触发 MySQL [1118] Row size too large。
-- 请使用 ding-scheme-application.sql新装或 ding-scheme-application-alter-wf-values-json.sql + wf_values_json。

View File

@ -0,0 +1,229 @@
-- 仅当表上曾创建过数百个 wf_* 列且已成功添加 wf_values_json、应用已改为写 JSON 后执行。
-- 列不存在时会报错,可忽略该条。
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1bbyi1ofdja80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1bbyi1ofdja80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_frlyg3cq3cg0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_frlyg3cq3cg0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_9dsioi7y7ao0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_9dsioi7y7ao0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1bhyq7t5n5ts0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1bhyq7t5n5ts0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_yyd1hamkfxs0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_yyd1hamkfxs0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1vs1bx17o9mo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1vs1bx17o9mo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_u886pc45ao00`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_u886pc45ao00_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1hxmc0vo5tcw0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1hxmc0vo5tcw0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_qbmqqbncta80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_qbmqqbncta80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_845rkmrcbnc`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_845rkmrcbnc_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1xthohphulnk0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1xthohphulnk0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1eiavy538am80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1eiavy538am80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_n0zdgqt4uj40`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_n0zdgqt4uj40_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_go981ag879k0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_go981ag879k0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_1txm18e414740`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_1txm18e414740_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_shoiepz1x8w0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_shoiepz1x8w0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1107gy4ff5r40`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1107gy4ff5r40_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1jnz7qfu4glc0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1jnz7qfu4glc0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_5uk9oeepnqg0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_5uk9oeepnqg0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_14qfwoa0nxuk`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_14qfwoa0nxuk_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_7khhs2kml4g0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_7khhs2kml4g0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_17onu2gwwqqk0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_17onu2gwwqqk0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1d66piguhpeo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1d66piguhpeo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_2e68tat1p2b`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_2e68tat1p2b_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1fvhyjifc9340`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1fvhyjifc9340_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_12j1o9kumfk00`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_12j1o9kumfk00_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1cthxmp1w6000`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1cthxmp1w6000_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1qqec44i00g00`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1qqec44i00g00_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1x4isvyj2e000`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1x4isvyj2e000_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_9mimabzehw40`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_9mimabzehw40_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1n728v92z1ls0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1n728v92z1ls0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_4jp6pt1hb480`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_4jp6pt1hb480_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1wlkqpzu8uf40`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1wlkqpzu8uf40_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_zcrqzclp3800`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_zcrqzclp3800_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_704tmwhbuk00`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_704tmwhbuk00_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_xjyub17ofgw0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_xjyub17ofgw0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1s3ah8usxuu80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1s3ah8usxuu80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1s2ufgj55cdc0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1s2ufgj55cdc0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1jwdw5kvn95s0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1jwdw5kvn95s0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ctqw75a6xk00`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ctqw75a6xk00_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_23gwubgroxwg0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_23gwubgroxwg0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_sim35iccgow0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_sim35iccgow0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_18ufliyk2g0w`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_18ufliyk2g0w_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_eeo52079ywg0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_eeo52079ywg0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_17j58eeu17ds0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_17j58eeu17ds0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_f05h5u3n9nc0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_f05h5u3n9nc0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_j84fk4aluog0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_j84fk4aluog0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_3ixtw5eostk0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_3ixtw5eostk0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_owd8caeipcw0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_owd8caeipcw0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_zvujak8zrvk0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_zvujak8zrvk0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_196nezf2gkqo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_196nezf2gkqo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1bxa83s0l9q80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1bxa83s0l9q80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1j17p5toeu0w0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1j17p5toeu0w0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ed24r0qog4g0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ed24r0qog4g0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_62owjdx5j780`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_62owjdx5j780_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_w509dmuvt0w0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_w509dmuvt0w0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_ir0xm2qfi4g0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_ir0xm2qfi4g0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_mwlxheajyds0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_mwlxheajyds0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_gziso77xgu80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_gziso77xgu80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1xgoo6qi7ye80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1xgoo6qi7ye80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_15n86b1om9r40`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_15n86b1om9r40_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_13ois5r5g4g00`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_13ois5r5g4g00_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_y0km7e71jy80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_y0km7e71jy80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_65fuys6pmog0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_65fuys6pmog0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1woian7uxmxs0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1woian7uxmxs0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1b349k9h85fk0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1b349k9h85fk0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_v3ubxsm0v400`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_v3ubxsm0v400_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1n6aocmufxxc0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1n6aocmufxxc0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_5b1traugup80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_5b1traugup80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_r805ul353uo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_r805ul353uo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_210lmwsh8ccg0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_210lmwsh8ccg0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_6ju2qsend4g0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_6ju2qsend4g0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_1obp4jcuuc1s0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_1obp4jcuuc1s0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_1oq414mmsqe80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_1oq414mmsqe80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_7uswejcwoho0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_7uswejcwoho0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_10a0oeloa9cw0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_10a0oeloa9cw0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1f35dols3gjk0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1f35dols3gjk0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_g2n28lnpoko0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_g2n28lnpoko0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_y8akwl5t20g0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_y8akwl5t20g0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1x0cjo3bbelc0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1x0cjo3bbelc0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1dckmearm96o0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1dckmearm96o0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_8zys78vxxkg0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_8zys78vxxkg0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1undz9dnxin4`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1undz9dnxin4_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_902tj8ac3bo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_902tj8ac3bo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_1v6324dshdmo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_1v6324dshdmo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_19glq5uabt9c0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_19glq5uabt9c0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1jgd3a0ebou80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1jgd3a0ebou80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_jdd37msau7k0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_jdd37msau7k0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1odo49p4qiow0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1odo49p4qiow0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_15yxln28vyww0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_15yxln28vyww0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_n3eezetomls0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_n3eezetomls0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_mzlne0wxsyo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_mzlne0wxsyo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1d1ny47opry80`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1d1ny47opry80_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_co3ry4xtl800`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_co3ry4xtl800_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ljrn85yyw680`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ljrn85yyw680_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1w3yxgm2wvwg0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1w3yxgm2wvwg0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_fvvk6ohvsmo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_fvvk6ohvsmo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_niskktwa4lc0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_niskktwa4lc0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_18nmsnm15jls0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_18nmsnm15jls0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_yon75a1bpds0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_yon75a1bpds0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1la4d1znjco00`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1la4d1znjco00_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_qzar20yc9dc0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_qzar20yc9dc0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_w5vdi6tje0w0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_w5vdi6tje0w0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_jqfncpp9q8g0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_jqfncpp9q8g0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_x7wt90rw88w0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_x7wt90rw88w0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_xvwu129idg00`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_xvwu129idg00_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_21cfzh9vcesg0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_21cfzh9vcesg0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_20miubgwhayo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_20miubgwhayo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_7e01aay4tuo0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_7e01aay4tuo0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_pvhb9480ips0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_pvhb9480ips0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_i623wtcgkbk0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_i623wtcgkbk0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1qy4lg6si9fk0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1qy4lg6si9fk0_ext`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_w8ztk2tqhhs0`;
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_w8ztk2tqhhs0_ext`;

View File

@ -0,0 +1,48 @@
-- 钉钉「技术方案申请表」审批通过后落库(业务 MySQL 执行一次)
-- 宽表字段改为单列 wf_values_json避免 InnoDB 行大小 >8126key=控件 idvalue={ "value","ext" }
-- 与 form_label_mapid->中文名)键一致,均为钉钉 componentId
CREATE TABLE IF NOT EXISTS ding_scheme_application
(
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
process_instance_id VARCHAR(64) NOT NULL COMMENT '钉钉审批实例 ID',
business_id VARCHAR(64) DEFAULT NULL COMMENT '钉钉 businessId',
process_code VARCHAR(128) DEFAULT NULL COMMENT '审批模板 processCode',
title VARCHAR(512) DEFAULT NULL COMMENT '审批标题',
instance_result VARCHAR(32) DEFAULT NULL COMMENT '实例审批结果 agree/refuse 等',
ding_process_status VARCHAR(32) DEFAULT NULL COMMENT '钉钉实例状态 COMPLETED 等',
originator_user_id VARCHAR(64) DEFAULT NULL COMMENT '发起人 userId',
originator_dept_name VARCHAR(256) DEFAULT NULL COMMENT '发起人部门',
ding_instance_create_time DATETIME DEFAULT NULL COMMENT '钉钉实例创建时间',
ding_instance_finish_time DATETIME DEFAULT NULL COMMENT '钉钉实例结束时间',
trigger_event_type VARCHAR(64) DEFAULT NULL COMMENT '触发入库的事件类型',
form_json MEDIUMTEXT COMMENT '表单控件快照 JSON完整备份',
form_label_map MEDIUMTEXT COMMENT '控件 id -> 中文 nameJSON',
wf_values_json LONGTEXT COMMENT '控件 id -> {value,ext}JSON与 gen-ding-scheme-wide IDS 顺序写入)',
scheme_apply_no VARCHAR(128) DEFAULT NULL COMMENT '方案申请编号(冗余)',
overview_name VARCHAR(1000) DEFAULT NULL COMMENT '概述名称(冗余)',
filler_name VARCHAR(128) DEFAULT NULL COMMENT '填表人展示名(冗余)',
fill_date DATE DEFAULT NULL COMMENT '填表日期(冗余)',
need_date DATE DEFAULT NULL COMMENT '需求日期(冗余)',
customer_full_name VARCHAR(512) DEFAULT NULL COMMENT '客户全称(冗余)',
contact_and_phone VARCHAR(512) DEFAULT NULL COMMENT '联系人及电话(冗余)',
project_category VARCHAR(128) DEFAULT NULL COMMENT '项目分类(冗余)',
product_name VARCHAR(256) DEFAULT NULL COMMENT '产品名称(冗余)',
task_detail VARCHAR(2000) DEFAULT NULL COMMENT '任务详情(冗余)',
scheme_submit_date DATE DEFAULT NULL COMMENT '方案提交日期(冗余)',
scheme_received VARCHAR(32) DEFAULT NULL COMMENT '是否收到方案(冗余)',
plm_push_status VARCHAR(32) DEFAULT 'PENDING' COMMENT 'PLM 推送状态 PENDING/SUCCESS/FAIL 等',
plm_push_time DATETIME DEFAULT NULL COMMENT 'PLM 推送时间',
plm_push_message VARCHAR(1000) DEFAULT NULL COMMENT 'PLM 推送结果说明',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME DEFAULT NULL,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_process_instance (process_instance_id),
KEY idx_scheme_apply_no (scheme_apply_no),
KEY idx_business_id (business_id),
KEY idx_plm_push_status (plm_push_status)
) ENGINE = InnoDB
ROW_FORMAT = DYNAMIC
DEFAULT CHARSET = utf8mb4 COMMENT ='钉钉技术方案申请表审批归档';

View File

@ -0,0 +1,3 @@
-- 工艺计划表钉钉发送次数(在业务库执行一次;若列已存在请跳过)
ALTER TABLE process_order_pro
ADD COLUMN route_plan_send_count INT NOT NULL DEFAULT 0 COMMENT '工艺计划表(钉钉)发送次数';

View File

@ -0,0 +1,261 @@
import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const IDS = [
"TextField_1BBYI1OFDJA80",
"TextField_FRLYG3CQ3CG0",
"InnerContactField_9DSIOI7Y7AO0",
"DDDateField_1BHYQ7T5N5TS0",
"DDDateField_YYD1HAMKFXS0",
"DDSelectField_1VS1BX17O9MO0",
"InnerContactField_U886PC45AO00",
"TextField_1HXMC0VO5TCW0",
"TextField_QBMQQBNCTA80",
"DDSelectField_845RKMRCBNC",
"DDSelectField_1XTHOHPHULNK0",
"TextField_1EIAVY538AM80",
"ColumnLayout_N0ZDGQT4UJ40",
"TextareaField_GO981AG879K0",
"InnerContactField_1TXM18E414740",
"InnerContactField_SHOIEPZ1X8W0",
"DDDateField_1107GY4FF5R40",
"TextareaField_1JNZ7QFU4GLC0",
"ColumnLayout_5UK9OEEPNQG0",
"TextNote_14QFWOA0NXUK",
"TextField_7KHHS2KML4G0",
"TextField_17ONU2GWWQQK0",
"TextField_1D66PIGUHPEO0",
"TextField_2E68TAT1P2B",
"TextField_1FVHYJIFC9340",
"DDSelectField_12J1O9KUMFK00",
"DDSelectField_1CTHXMP1W6000",
"DDSelectField_1QQEC44I00G00",
"TextField_1X4ISVYJ2E000",
"TextareaField_9MIMABZEHW40",
"TextField_1N728V92Z1LS0",
"DDSelectField_4JP6PT1HB480",
"TextareaField_1WLKQPZU8UF40",
"TextareaField_ZCRQZCLP3800",
"ColumnLayout_704TMWHBUK00",
"DDAttachment_XJYUB17OFGW0",
"TextNote_1S3AH8USXUU80",
"TextNote_1S2UFGJ55CDC0",
"TextField_1JWDW5KVN95S0",
"TextField_1CTQW75A6XK00",
"TextField_23GWUBGROXWG0",
"TextField_SIM35ICCGOW0",
"TextField_18UFLIYK2G0W",
"TextField_EEO52079YWG0",
"TextField_17J58EEU17DS0",
"TextField_F05H5U3N9NC0",
"TextField_J84FK4ALUOG0",
"TextField_3IXTW5EOSTK0",
"ColumnLayout_OWD8CAEIPCW0",
"DDAttachment_ZVUJAK8ZRVK0",
"TextNote_196NEZF2GKQO0",
"TextareaField_1BXA83S0L9Q80",
"DDSelectField_1J17P5TOEU0W0",
"TextField_1ED24R0QOG4G0",
"TextField_62OWJDX5J780",
"TextField_W509DMUVT0W0",
"TextField_IR0XM2QFI4G0",
"TextField_MWLXHEAJYDS0",
"TextField_GZISO77XGU80",
"DDSelectField_1XGOO6QI7YE80",
"TextareaField_15N86B1OM9R40",
"ColumnLayout_13OIS5R5G4G00",
"DDAttachment_Y0KM7E71JY80",
"TextNote_65FUYS6PMOG0",
"TextField_1WOIAN7UXMXS0",
"TextField_1B349K9H85FK0",
"TextField_V3UBXSM0V400",
"TextField_1N6AOCMUFXXC0",
"TextField_5B1TRAUGUP80",
"DDSelectField_R805UL353UO0",
"TextField_210LMWSH8CCG0",
"TextareaField_6JU2QSEND4G0",
"ColumnLayout_1OBP4JCUUC1S0",
"DDAttachment_1OQ414MMSQE80",
"TextNote_7USWEJCWOHO0",
"TextField_10A0OELOA9CW0",
"TextField_1F35DOLS3GJK0",
"TextField_G2N28LNPOKO0",
"DDSelectField_Y8AKWL5T20G0",
"TextField_1X0CJO3BBELC0",
"TextField_1DCKMEARM96O0",
"TextareaField_8ZYS78VXXKG0",
"DDSelectField_1UNDZ9DNXIN4",
"TextareaField_902TJ8AC3BO0",
"ColumnLayout_1V6324DSHDMO0",
"DDAttachment_19GLQ5UABT9C0",
"TextNote_1JGD3A0EBOU80",
"DDSelectField_JDD37MSAU7K0",
"TextField_1ODO49P4QIOW0",
"TextField_15YXLN28VYWW0",
"TextField_N3EEZETOMLS0",
"TextField_MZLNE0WXSYO0",
"DDSelectField_1D1NY47OPRY80",
"TextField_CO3RY4XTL800",
"TextField_1LJRN85YYW680",
"TextareaField_1W3YXGM2WVWG0",
"ColumnLayout_FVVK6OHVSMO0",
"DDAttachment_NISKKTWA4LC0",
"TextNote_18NMSNM15JLS0",
"TextField_YON75A1BPDS0",
"TextField_1LA4D1ZNJCO00",
"TextField_QZAR20YC9DC0",
"TextField_W5VDI6TJE0W0",
"DDSelectField_JQFNCPP9Q8G0",
"TextField_X7WT90RW88W0",
"TextareaField_XVWU129IDG00",
"TextField_21CFZH9VCESG0",
"TextareaField_20MIUBGWHAYO0",
"ColumnLayout_7E01AAY4TUO0",
"DDAttachment_PVHB9480IPS0",
"TextareaField_I623WTCGKBK0",
"DDDateField_1QY4LG6SI9FK0",
"DDSelectField_W8ZTK2TQHHS0",
];
const createSql = `\
-- 钉钉技术方案申请表审批通过后落库业务 MySQL 执行一次
-- 宽表字段改为单列 wf_values_json避免 InnoDB 行大小 >8126key=控件 idvalue={ "value","ext" }
-- form_label_mapid->中文名键一致均为钉钉 componentId
CREATE TABLE IF NOT EXISTS ding_scheme_application
(
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
process_instance_id VARCHAR(64) NOT NULL COMMENT '钉钉审批实例 ID',
business_id VARCHAR(64) DEFAULT NULL COMMENT '钉钉 businessId',
process_code VARCHAR(128) DEFAULT NULL COMMENT '审批模板 processCode',
title VARCHAR(512) DEFAULT NULL COMMENT '审批标题',
instance_result VARCHAR(32) DEFAULT NULL COMMENT '实例审批结果 agree/refuse 等',
ding_process_status VARCHAR(32) DEFAULT NULL COMMENT '钉钉实例状态 COMPLETED 等',
originator_user_id VARCHAR(64) DEFAULT NULL COMMENT '发起人 userId',
originator_dept_name VARCHAR(256) DEFAULT NULL COMMENT '发起人部门',
ding_instance_create_time DATETIME DEFAULT NULL COMMENT '钉钉实例创建时间',
ding_instance_finish_time DATETIME DEFAULT NULL COMMENT '钉钉实例结束时间',
trigger_event_type VARCHAR(64) DEFAULT NULL COMMENT '触发入库的事件类型',
form_json MEDIUMTEXT COMMENT '表单控件快照 JSON完整备份',
form_label_map MEDIUMTEXT COMMENT '控件 id -> 中文 nameJSON',
wf_values_json LONGTEXT COMMENT '控件 id -> {value,ext}JSON与 gen-ding-scheme-wide IDS 顺序写入)',
scheme_apply_no VARCHAR(128) DEFAULT NULL COMMENT '方案申请编号(冗余)',
overview_name VARCHAR(1000) DEFAULT NULL COMMENT '概述名称(冗余)',
filler_name VARCHAR(128) DEFAULT NULL COMMENT '填表人展示名(冗余)',
fill_date DATE DEFAULT NULL COMMENT '填表日期(冗余)',
need_date DATE DEFAULT NULL COMMENT '需求日期(冗余)',
customer_full_name VARCHAR(512) DEFAULT NULL COMMENT '客户全称(冗余)',
contact_and_phone VARCHAR(512) DEFAULT NULL COMMENT '联系人及电话(冗余)',
project_category VARCHAR(128) DEFAULT NULL COMMENT '项目分类(冗余)',
product_name VARCHAR(256) DEFAULT NULL COMMENT '产品名称(冗余)',
task_detail VARCHAR(2000) DEFAULT NULL COMMENT '任务详情(冗余)',
scheme_submit_date DATE DEFAULT NULL COMMENT '方案提交日期(冗余)',
scheme_received VARCHAR(32) DEFAULT NULL COMMENT '是否收到方案(冗余)',
plm_push_status VARCHAR(32) DEFAULT 'PENDING' COMMENT 'PLM 推送状态 PENDING/SUCCESS/FAIL 等',
plm_push_time DATETIME DEFAULT NULL COMMENT 'PLM 推送时间',
plm_push_message VARCHAR(1000) DEFAULT NULL COMMENT 'PLM 推送结果说明',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME DEFAULT NULL,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_process_instance (process_instance_id),
KEY idx_scheme_apply_no (scheme_apply_no),
KEY idx_business_id (business_id),
KEY idx_plm_push_status (plm_push_status)
) ENGINE = InnoDB
ROW_FORMAT = DYNAMIC
DEFAULT CHARSET = utf8mb4 COMMENT ='钉钉技术方案申请表审批归档';
`;
const alterAddWfJson = `\
-- 已有旧表含大量 wf_* 列导致 1118先加 JSON 升级应用后再按需删除旧 wf_*
-- wf_values_json 已存在则跳过本段
ALTER TABLE ding_scheme_application
ADD COLUMN wf_values_json LONGTEXT NULL COMMENT '控件 id -> {value,ext} JSON' AFTER form_label_map;
`;
const drops = [];
for (const cid of IDS) {
const c = "wf_" + cid.toLowerCase();
drops.push(`ALTER TABLE ding_scheme_application DROP COLUMN \`${c}\`;`);
drops.push(`ALTER TABLE ding_scheme_application DROP COLUMN \`${c}_ext\`;`);
}
const dropSql =
"-- 仅当表上曾创建过数百个 wf_* 列且已成功添加 wf_values_json、应用已改为写 JSON 后执行。\n" +
"-- 列不存在时会报错,可忽略该条。\n\n" +
drops.join("\n") +
"\n";
fs.writeFileSync(path.join(__dirname, "ding-scheme-application.sql"), createSql, "utf8");
fs.writeFileSync(path.join(__dirname, "ding-scheme-application-alter-wf-values-json.sql"), alterAddWfJson, "utf8");
fs.writeFileSync(path.join(__dirname, "ding-scheme-application-drop-old-wf-columns.sql"), dropSql, "utf8");
// 旧版「逐列 ADD wf_*」已不再使用,保留空说明文件避免误执行
fs.writeFileSync(
path.join(__dirname, "ding-scheme-application-alter-wide.sql"),
"-- 已废弃:数百个 wf_* 列会触发 MySQL [1118] Row size too large。\n" +
"-- 请使用 ding-scheme-application.sql新装或 ding-scheme-application-alter-wf-values-json.sql + wf_values_json。\n",
"utf8"
);
const javaPath = path.join(
__dirname,
"..",
"..",
"..",
"ruoyi-system",
"src",
"main",
"java",
"com",
"ruoyi",
"system",
"constant",
"DingSchemeFormWideColumns.java"
);
const javaBody = `package com.ruoyi.system.constant;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
/**
* event.json formComponentValues(146-843) gen-ding-scheme-wide.mjs IDS 一致
* 表单宽数据写入 {@code wf_values_json}JSON key 为钉钉控件 id原始大小写 {@code form_label_map} key 一致
*/
public final class DingSchemeFormWideColumns {
private DingSchemeFormWideColumns() {
}
public static final List<String> ORDERED_IDS = Collections.unmodifiableList(Arrays.asList(
${IDS.map((id) => ` "${id}"`).join(",\n")}
));
private static final Set<String> ID_SET = new HashSet<>(ORDERED_IDS);
public static boolean isKnownComponentId(String componentId) {
return componentId != null && ID_SET.contains(componentId);
}
/** JSON 中的控件 id key与钉钉一致 */
public static String jsonKey(String componentId) {
return componentId;
}
/** 兼容旧「列名」思路wf_ + id 小写,仅用于文档/SQL 排查,不再建物理列 */
public static String legacyPhysicalColumnName(String componentId) {
return "wf_" + componentId.toLowerCase(Locale.ROOT);
}
}
`;
fs.mkdirSync(path.dirname(javaPath), { recursive: true });
fs.writeFileSync(javaPath, javaBody, "utf8");
console.log("OK", javaPath);

View File

@ -0,0 +1,55 @@
-- 金蝶系统报表快照(工序汇报汇总 / 工序委外转移),在业务 MySQL 执行一次
CREATE TABLE IF NOT EXISTS kingdee_operation_report_sum (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
kingdee_form_id VARCHAR(64) NOT NULL COMMENT '金蝶报表 FormId',
scope_begin VARCHAR(64) NOT NULL COMMENT '查询开始(传入金蝶 Model)',
scope_end VARCHAR(64) NOT NULL COMMENT '查询结束',
org_number VARCHAR(32) NOT NULL DEFAULT '100' COMMENT '加工组织 FNumber',
time_unit VARCHAR(16) NOT NULL DEFAULT 'B' COMMENT '统计粒度 FTimeUnit',
filter_mo_bill_no VARCHAR(64) DEFAULT NULL COMMENT '过滤条件生产订单号',
department_id VARCHAR(128) DEFAULT NULL COMMENT '车间 FDEPARTMENTID',
report_date VARCHAR(64) DEFAULT NULL COMMENT '单据日期',
mo_bill_no VARCHAR(64) DEFAULT NULL COMMENT '生产订单编号',
op_oper VARCHAR(64) DEFAULT NULL COMMENT '工序号',
work_center_id VARCHAR(128) DEFAULT NULL COMMENT '工作中心',
process_id VARCHAR(128) DEFAULT NULL COMMENT '作业',
product_number VARCHAR(128) DEFAULT NULL COMMENT '产品编码',
material_name VARCHAR(512) DEFAULT NULL COMMENT '产品名称',
finish_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '完工数量',
qua_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '合格数量',
fail_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '废品数量',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME DEFAULT NULL,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME DEFAULT NULL,
PRIMARY KEY (id),
KEY idx_kingdee_op_scope (kingdee_form_id, scope_begin, scope_end, org_number, time_unit)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='金蝶工序汇报汇总报表快照';
CREATE TABLE IF NOT EXISTS kingdee_subcontract_transfer (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
kingdee_form_id VARCHAR(64) NOT NULL COMMENT '金蝶报表 FormId',
scope_start VARCHAR(64) NOT NULL COMMENT '查询开始 FStartDate',
scope_finish VARCHAR(64) NOT NULL COMMENT '查询结束 FFinishDate',
pro_org_number VARCHAR(32) NOT NULL DEFAULT '100' COMMENT '生产组织 FProOrgId.FNumber',
document_status VARCHAR(16) NOT NULL DEFAULT 'C' COMMENT '单据状态',
filter_product_order_code VARCHAR(64) DEFAULT NULL COMMENT '过滤生产订单编号',
product_number VARCHAR(128) DEFAULT NULL COMMENT '产品编码',
product_name VARCHAR(512) DEFAULT NULL COMMENT '产品名称',
provider_name VARCHAR(512) DEFAULT NULL COMMENT '供应商名称',
product_order_codes VARCHAR(128) DEFAULT NULL COMMENT '生产订单编号',
document_date VARCHAR(64) DEFAULT NULL COMMENT '单据日期',
shift_task_name VARCHAR(256) DEFAULT NULL COMMENT '委外作业',
leave_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '委外发出',
enter_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '委外接收',
qualified_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '合格数量',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME DEFAULT NULL,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME DEFAULT NULL,
PRIMARY KEY (id),
KEY idx_kingdee_sub_scope (kingdee_form_id, scope_start, scope_finish, pro_org_number)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='金蝶工序委外转移报表快照';