Compare commits

...

3 Commits

Author SHA1 Message Date
tzy
ac596588b5 Merge branch 'master' of https://git.evo-techina.com/hbyt/evoToK3Cloud
# Conflicts:
#	ruoyi-admin/src/main/resources/application.yml
2026-05-18 10:58:43 +08:00
tzy
db73bbc7d0 更新,工序计划 2026-05-18 10:56:56 +08:00
tzy
c71f6ecc98 更新,工序计划 2026-05-18 09:47:48 +08:00
131 changed files with 396045 additions and 2122 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-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-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-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-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-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-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-04-12 09:48:11 [SpringApplicationShutdownHook] INFO io.undertow - stopping server: Undertow - 2.2.24.Final
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
2026-04-12 09:48:11 [Thread-43] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
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-04-12 09:48:11 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destroy.
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
2026-04-12 09:48:11 [xxl-job, executor JobLogFileCleanThread] INFO c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy.
2026-04-12 09:48:11 [xxl-job, executor TriggerCallbackThread] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destroy.
2026-04-12 09:48:11 [Thread-42] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destroy.
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.r.f.manager.ShutdownManager - ====关闭后台任务任务线程池====
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Shutdown initiated...
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Shutdown completed.
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown initiated...
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown completed.
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
2026-04-12 09:48:16 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
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-04-12 09:48:16 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
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-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
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-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
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-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
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-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
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-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
2026-04-12 09:48:28 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
2026-04-12 09:48:28 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
2026-04-12 09:48:29 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Starting...
2026-04-12 09:48:30 [main] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Start completed.
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [sqlserver] success
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [master]
2026-04-12 09:48:31 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
2026-04-12 09:48:40 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
2026-04-12 09:48:41 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
2026-04-12 09:48:41 [main] INFO org.redisson.Version - Redisson 3.20.1
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-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-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - --------------------------------------------------
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - 正在启动钉钉 Stream 模式事件推送服务...
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - ClientId: dingebfrpzqko25vo8w6
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - 钉钉 Stream 模式服务启动成功
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - --------------------------------------------------
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-04-12 09:48:49 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-04-12 09:48:55 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
2026-04-12 09:48:55 [main] INFO org.xnio - XNIO version 3.8.7.Final
2026-04-12 09:48:55 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
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-04-12 09:48:55 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
2026-04-12 09:48:55 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 40.946 seconds (JVM running for 42.897)
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
2026-04-12 09:48:56 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
2026-04-12 09:48:56 [XNIO-1 task-1] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
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-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-04-12 09:49:35 [schedule-pool-1] INFO c.r.s.s.i.SysLogininforServiceImpl - [192.168.5.200]内网IP[admin][Success][登录成功]
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-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: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-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-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-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-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
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-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
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-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
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-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
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-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
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-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-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-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=1779065669219, msg_signature=1f9e1dfa38660b8dddc97443135ee95f1a5228f8, encrypt=K2kpgIUZ5mUCT34f40hJ4PdGAHbxi9DZV05apmThq4xHNyaZ+2FslTnvGQNKmIt8ohDly/HG8BevZUQfYMg3dw==, nonce=wtcBpP5IILlRBNLH}
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-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-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

@ -94,7 +94,7 @@
<artifactId>ruoyi-job</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-oss</artifactId>
</dependency>
@ -161,6 +161,22 @@
<version>1.39.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-core</artifactId>
<version>1.39.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-core</artifactId>
<version>1.39.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.ortools/ortools-java -->

View File

@ -9,6 +9,7 @@ import com.ruoyi.common.dingding.DingCallbackCrypto;
import com.ruoyi.common.dingding.robot.RobotGroupService;
import com.ruoyi.common.dingding.util.DingUtil;
import com.ruoyi.common.dingding.webhook.WebhookClient;
import com.ruoyi.common.dingding.workflow.SchemeApplicationBpmsEventHandler;
import com.ruoyi.system.controller.KingdeeWorkCenterDataController;
import com.ruoyi.system.domain.ProcessOrderPro;
import com.ruoyi.system.mapper.ProcessOrderProMapper;
@ -49,6 +50,9 @@ public class CallbackController {
@Autowired
private WebhookClient webhookClient; // 注入 WebhookClient
@Autowired
private SchemeApplicationBpmsEventHandler schemeApplicationBpmsEventHandler;
@PostMapping("/receive")
public Map<String, String> callBack(@RequestBody(required = false) Map<String, Object> json) {
@ -216,6 +220,8 @@ public class CallbackController {
eventType = "robot_message";
}
bizLogger.info("事件类型: {}", eventType);
//只处理技术方案表同意场景
schemeApplicationBpmsEventHandler.handleEventPayload(eventType, eventJson.toJSONString());
// 4. 根据EventType分类处理
if ("check_url".equals(eventType)) {
bizLogger.info("测试回调url的正确性");

View File

@ -2,12 +2,14 @@ package com.ruoyi.web.controller.dingtalk;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.dingding.relay.DingMessageRelayService;
import com.ruoyi.common.dingding.util.DingUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@ -18,6 +20,8 @@ import com.dingtalk.api.response.OapiV2UserGetResponse;
@RequestMapping("/ding/talk")
public class DingTalkController {
private final DingMessageRelayService dingMessageRelayService;
/**
* 查询用户详情
*/
@ -136,4 +140,28 @@ public class DingTalkController {
return R.ok("发送成功", processQueryKey);
}
/**
* 示例经消息中转平台发送 Markdown 单聊需启动中转服务并配置 dingtalk.message-relay-base-url
*/
@GetMapping("/testRelayMarkdown")
public R<String> testRelayMarkdown() {
StringBuilder markdownMsg = new StringBuilder();
markdownMsg.append("### 安全库存提醒\n\n")
.append("今日暂无安全库存预警数据。\n\n")
.append("**物料编号: 123321**\n")
.append("- 物料名称: 测试测试567\n")
.append("- 预计可用量: 200\n")
.append("- 即时库存: 100\n")
.append("- 最大库存: 50\n")
.append("---\n")
.append("**总数汇总**\n")
.append("- 今日安全库存预警数据总数: **50**\n");
String resp = dingMessageRelayService.sendMarkdownToUser(
"test测试",
markdownMsg.toString(),
Arrays.asList("史国臣", "田志阳"));
return R.ok("中转返回", resp);
}
}

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

@ -49,8 +49,10 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
#url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
url: jdbc:mysql://192.168.5.121:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
# 本机双实例5.7 常用 33068.0 常用其它端口(示例 3307内网库另见下行注释
#url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
#url: jdbc:mysql://localhost:3307/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://192.168.5.121:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
username: root
password: root
# 从库数据源
@ -58,11 +60,13 @@ spring:
lazy: true
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
#url: jdbc:mysql://localhost:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
url: jdbc:mysql://192.168.5.121:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
#url: jdbc:mysql://localhost:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
#url: jdbc:mysql://localhost:3307/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://192.168.5.121:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
username: root
password: root
sqlserver:
lazy: true
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://192.168.5.9:1433;databaseName=AIS20241010133631;encrypt=false;trustServerCertificate=true

View File

@ -78,6 +78,31 @@ public class DingTalkProperties {
*/
private String syncK3NotifyUserIds;
/**
* 消息中转服务根地址 http://host:8089不要带尾斜杠也可为空则不调用中转发送
*/
private String messageRelayBaseUrl;
/**
* 技术方案申请表 OA 模板 processCode PROC-xxx为空则不处理 BPMS 审批事件
*/
private String schemeApplicationProcessCode = "";
/**
* 是否在 bpms_instance_change 整单结束且 result=agree 时拉取审批详情推荐
*/
private boolean schemeBpmsOnInstanceAgree = true;
/**
* 是否在 bpms_task_change 单任务结束且 result=agree 时拉取审批详情会多次触发默认关闭
*/
private boolean schemeBpmsOnTaskAgree = false;
/**
* 拉取详情后日志中输出的控件名称逗号分隔为空则输出全部非空表单字段
*/
private String schemeApplicationLogFieldNames = "";
/**
* 回调路由 Key
*/

View File

@ -11,15 +11,19 @@ import org.springframework.stereotype.Component;
import shade.com.alibaba.fastjson2.JSONObject;
import javax.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
/**
* 钉钉 Stream 模式事件推送服务
*/
@Component
@RequiredArgsConstructor
public class DingTalkStreamService {
private static final Logger log = LoggerFactory.getLogger(DingTalkStreamService.class);
private final com.ruoyi.common.dingding.workflow.SchemeApplicationBpmsEventHandler schemeApplicationBpmsEventHandler;
// 钉钉应用的 AppKey
private static final String CLIENT_ID = "dingebfrpzqko25vo8w6";
// 钉钉应用的 AppSecret
@ -57,6 +61,7 @@ public class DingTalkStreamService {
log.info("BornTime: {}", bornTime);
log.info("BizData: {}", bizData != null ? bizData.toString() : "null");
schemeApplicationBpmsEventHandler.handleEventPayload(eventType, bizData != null ? bizData.toJSONString() : "{}");
//处理事件
process(bizData);
//消费成功

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

@ -934,7 +934,14 @@ public class DingUtil {
}
}
/**
* 使用 Token 初始化账号 ClientOA 审批 / workflow
*/
public static com.aliyun.dingtalkworkflow_1_0.Client createWorkflowClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
config.protocol = "https";
config.regionId = "central";
return new com.aliyun.dingtalkworkflow_1_0.Client(config);
}
}

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

@ -4,7 +4,7 @@ spring:
application:
name: ruoyi-monitor-admin
profiles:
active: @profiles.active@
active: ${SPRING_PROFILES_ACTIVE:dev}
logging:
config: classpath:logback-plus.xml

View File

@ -9,12 +9,14 @@ spring.boot.admin.client:
username: ruoyi
password: 123456
--- # 数据库配置
--- # 数据库配置(与 ruoyi-admin dev 同一实例;本机 5.7 多为 3306MySQL8 多为 3307
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
#url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://localhost:3307/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
#url: jdbc:mysql://192.168.5.121:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
username: root
password: root
hikari:

View File

@ -7,7 +7,7 @@ spring:
application:
name: ruoyi-xxl-job-admin
profiles:
active: @profiles.active@
active: ${SPRING_PROFILES_ACTIVE:dev}
mvc:
servlet:
load-on-startup: 0

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

@ -84,6 +84,8 @@ public class BomDetailsController extends BaseController {
private final IProcessOrderProService iProcessOrderProService;
private final IProductionOrderService iProductionOrderService;
private final ProcessOrderProMapper processOrderProMapper;
private final BomDetailsMapper bomDetailsMapper;
@ -390,12 +392,17 @@ public class BomDetailsController extends BaseController {
if (bomDetails != null && !bomDetails.isEmpty()) {
//TODO 处理父级物料
ProcessOrderPro bo = iProcessOrderProService.selectByProjectNumber(totalWeight);
// 第一步处理所有物料的保存
for (BomDetails material : bomDetails) {
// 获取工艺表中的非委外工时
Double fbWorkTime = iProcessRouteService.getFbWorkTime(material);
if (material.getPartNumber() != null && material.getName() != null && material.getUnitWeight().equals("")) {
if (material.getPartNumber().startsWith("015") || material.getPartNumber().startsWith("009")) {
return R.fail("015和009为管控物料请先申请");
}
if (material.getRemarks() != null && material.getRemarks().contains("甲供")) {
continue;
}
String state = determineState(material);
//判断bom类型是生产还是电气
if (material.getBomType().equals("0")) {
@ -437,13 +444,13 @@ public class BomDetailsController extends BaseController {
if (needUpload) {
try {
// 物料清单保存方法,判断是电气还是生产
BOMUploadResult bomUploadResult = FBloadBillOfMaterialsPreservation(bomDetails, bo,groupName);
BOMUploadResult bomUploadResult = FBloadBillOfMaterialsPreservation(bomDetails, bo, groupName);
if (bomUploadResult.isSuccess()) {
KindegeeLogDTO logDTO = new KindegeeLogDTO();
logDTO.setProjectCode(bo.getProductionOrderNo());
logDTO.setMaterialCode(fnumber); // 使用物料编码而不是单个物料的编码
logDTO.setCode("200");
logDTO.setReason("成功上传"+"版本号:"+bomUploadResult.getNumber());
logDTO.setReason("成功上传" + "版本号:" + bomUploadResult.getNumber());
logDTOS.add(logDTO);
} else {
KindegeeLogDTO logDTO = new KindegeeLogDTO();
@ -498,8 +505,8 @@ public class BomDetailsController extends BaseController {
}
//查询工艺路线数量
LambdaQueryWrapper<ProcessRoute> wqroute = new LambdaQueryWrapper<>();
wqroute.eq(ProcessRoute::getRouteDescription,totalWeight)
.eq(ProcessRoute::getProcessNo,"10");
wqroute.eq(ProcessRoute::getRouteDescription, totalWeight)
.eq(ProcessRoute::getProcessNo, "10");
Long routeCount = routeMapper.selectCount(wqroute);
// 计算统计数据
int bomCount = fNumberCount + partdiagramCodeCount;
@ -771,7 +778,7 @@ public class BomDetailsController extends BaseController {
}
// FBOM物料清单保存
public BOMUploadResult FBloadBillOfMaterialsPreservation(List<BomDetails> bomlist, ProcessOrderPro bo,String groupName) {
public BOMUploadResult FBloadBillOfMaterialsPreservation(List<BomDetails> bomlist, ProcessOrderPro bo, String groupName) {
BomDetails bomDetails1 = bomlist.get(0);
int verification = isMaterialVerification(bomDetails1.getFNumber(), bomDetails1.getFName());
@ -928,7 +935,20 @@ public class BomDetailsController extends BaseController {
JsonObject FSVRIAssistant = new JsonObject();
FSVRIAssistant.addProperty("FNumber", materialProperties.getMaterialAttributeId());
model.add("F_SVRI_Assistant", FSVRIAssistant);
// 单重 Excel 批量匹配逻辑一致production_order.drawing_no process_route.material_code图号用物料编码 partNumber库中未查到则为 null
Double dz = iProductionOrderService.resolveSingleWeightByMaterialCode(bomDetails.getPartNumber());
if (dz == null) {
if (bomDetails.getDanZhong() != null && bomDetails.getSingleWeghit() != null) {
dz = bomDetails.getSingleWeghit();
} else if (bomDetails.getDanZhong() != null) {
dz = bomDetails.getDanZhong();
} else if (bomDetails.getSingleWeghit() != null) {
dz = bomDetails.getSingleWeghit();
}
}
if (dz != null) {
model.addProperty("F_HBYT_DZ", dz);
}
// 创建FMaterialGroup对象并加入Model
JsonObject fMaterialGroup = new JsonObject();
fMaterialGroup.addProperty("FNumber", "XM-100");
@ -946,6 +966,9 @@ public class BomDetailsController extends BaseController {
// 创建FCategoryID对象并加入SubHeadEntity
JsonObject fCategoryID = new JsonObject();
if(bomDetails.getFNumber().contains("-MP")){
fCategoryID.addProperty("FNumber", "007");
}
fCategoryID.addProperty("FNumber", "CHLB05_SYS");
subHeadEntity.add("FCategoryID", fCategoryID);
@ -1094,7 +1117,7 @@ public class BomDetailsController extends BaseController {
/*
* FB父级物料保存接口
*/
public static int loadFBMaterialPreservation(BomDetails bomDetail) {
public int loadFBMaterialPreservation(BomDetails bomDetail) {
K3CloudApi client = new K3CloudApi();
// 创建一个空的JsonObject
JsonObject json = new JsonObject();
@ -1117,7 +1140,20 @@ public class BomDetailsController extends BaseController {
model.add("FMaterialGroup", fMaterialGroup);
model.addProperty("FIsHandleReserve", true);
// 单重 Excel 批量匹配逻辑一致production_order.drawing_no process_route.material_code图号用物料编码 partNumber库中未查到则为 null
Double dz = iProductionOrderService.resolveSingleWeightByMaterialCode(bomDetail.getPartNumber());
if (dz == null) {
if (bomDetail.getDanZhong() != null && bomDetail.getSingleWeghit() != null) {
dz = bomDetail.getSingleWeghit();
} else if (bomDetail.getDanZhong() != null) {
dz = bomDetail.getDanZhong();
} else if (bomDetail.getSingleWeghit() != null) {
dz = bomDetail.getSingleWeghit();
}
}
if (dz != null) {
model.addProperty("F_HBYT_DZ", dz);
}
// 创建SubHeadEntity对象并加入Model
JsonObject subHeadEntity = new JsonObject();
model.add("SubHeadEntity", subHeadEntity);
@ -1127,6 +1163,9 @@ public class BomDetailsController extends BaseController {
// 创建FCategoryID对象并加入SubHeadEntity
JsonObject fCategoryID = new JsonObject();
if (bomDetail.getFNumber().contains("-MP")){
fCategoryID.addProperty("FNumber", "007");//
}
fCategoryID.addProperty("FNumber", "CHLB05_SYS");// 产成品
subHeadEntity.add("FCategoryID", fCategoryID);
@ -1512,11 +1551,19 @@ public class BomDetailsController extends BaseController {
json.add("Model", model);
model.addProperty("FMATERIALID", 0);
//单重
if (!(bomDetails1.getDanZhong() == null) && !(bomDetails1.getSingleWeghit() == null)) {
model.addProperty("F_HBYT_DZ", bomDetails1.getSingleWeghit());
} else {
model.addProperty("F_HBYT_DZ", bomDetails1.getDanZhong());
// 单重 Excel 批量匹配逻辑一致production_order.drawing_no process_route.material_code图号用物料编码 partNumber库中未查到则为 null
Double dz = iProductionOrderService.resolveSingleWeightByMaterialCode(bomDetails1.getPartNumber());
if (dz == null) {
if (bomDetails1.getDanZhong() != null && bomDetails1.getSingleWeghit() != null) {
dz = bomDetails1.getSingleWeghit();
} else if (bomDetails1.getDanZhong() != null) {
dz = bomDetails1.getDanZhong();
} else if (bomDetails1.getSingleWeghit() != null) {
dz = bomDetails1.getSingleWeghit();
}
}
if (dz != null) {
model.addProperty("F_HBYT_DZ", dz);
}
model.addProperty("FSpecification", bomDetails1.getRemarks());
model.addProperty("FNumber", bomDetails1.getPartNumber());
@ -1544,9 +1591,9 @@ public class BomDetailsController extends BaseController {
subHeadEntity.addProperty("FErpClsID", states);
subHeadEntity.addProperty("FFeatureItem", "1");
//存货类别
JsonObject fCategoryID = new JsonObject();
if (states.equals("2") || states.equals("3")) {
if (states.equals("2") || states.equals("3")||bomDetails1.getPartNumber().contains("-MP")) {
fCategoryID.addProperty("FNumber", "007");
} else {
fCategoryID.addProperty("FNumber", "006");
@ -1834,7 +1881,7 @@ public class BomDetailsController extends BaseController {
// 创建SubHeadEntity对象并加入Model
JsonObject subHeadEntity = new JsonObject();
model.add("SubHeadEntity", subHeadEntity);
if (bomDetails1.getWareHouse().contains("伊特")){
if (bomDetails1.getWareHouse().contains("伊特")) {
subHeadEntity.addProperty("FErpClsID", "2");
}
subHeadEntity.addProperty("FErpClsID", "1");
@ -2260,7 +2307,7 @@ public class BomDetailsController extends BaseController {
List<BomDetails> list = new ArrayList<>();
if (rows != null) {
for (ElectricalMaterialBomVO bomVO : rows) {
if(bomVO.getRemark().equals("研发已领用")|| bomVO.getRemark().contains("领用")){
if (bomVO.getRemark() != null && bomVO.getRemark().contains("领用")) {
continue;
}
BomDetails bomDetails = new BomDetails();
@ -2271,6 +2318,9 @@ public class BomDetailsController extends BaseController {
bomDetails.setName(bomVO.getDrawingName());
bomDetails.setMaterial(bomVO.getModel());
bomDetails.setWareHouse(bomVO.getBrand());
if(bomVO.getBrand().contains("伊特")){
bomDetails.setStats("自制");
}
bomDetails.setStats("外购");
bomDetails.setQuantity(bomVO.getQuantity() == null ? null : bomVO.getQuantity().toString());
bomDetails.setRemarks(bomVO.getUnit());
@ -2320,6 +2370,7 @@ public class BomDetailsController extends BaseController {
}
return materialsToAdd;
}
@Log(title = "查看BOM上传日志")
@SaCheckPermission("system:route:viewGetBomUploadStatus")
@PostMapping("/viewGetBomUploadStatus")

View File

@ -13,9 +13,13 @@ import java.util.stream.Collectors;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kingdee.bos.webapi.entity.SuccessEntity;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.excel.ExcelResult;
import com.ruoyi.common.utils.JdUtils;
import com.ruoyi.system.domain.EleMaterials;
@ -453,43 +457,103 @@ public class EleMaterialsController extends BaseController {
}
@Log(title = "更新物料单重", businessType = BusinessType.IMPORT)
@Log(title = "更新物料单重", businessType = BusinessType.UPDATE)
@SaCheckPermission("system:route:updateDanzhong")
@PostMapping(value = "/updateDanzhong", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> updateDanzhong(@RequestParam("file") MultipartFile file) throws Exception {
String originalFilename = file.getOriginalFilename();
log.info("读取文件名: " + originalFilename);
ExcelResult<JdDanZhong> result = ExcelUtil.importExcelSheet1(file.getInputStream(), JdDanZhong.class, true);
List<JdDanZhong> list = result.getList();
@PostMapping("/updateDanzhong")
public R<Void> updateDanzhong() {
final int pageSize = 500;
int pageNum = 1;
long totalRows = 0;
long skippedDisabled = 0;
long skippedNoWeight = 0;
long submitted = 0;
int failedTasks = 0;
// 创建固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(10);
List<Future<Void>> futures = new ArrayList<>();
list.forEach(vmi -> executor.submit(() -> {
List<JdEntryVmi> entryID = JdUtil.getEntryID2(vmi.getMaterialCode());
entryID.forEach(jdEntryVmi -> {
int fmaterialid = jdEntryVmi.getFMATERIALID();
try {
log.info("=====================>开始更新 " + vmi.getMaterialCode() + " 的单重");
JdUtil.updateDanzhong(fmaterialid,vmi.getDanzhong() );
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}));
// 关闭线程池并等待所有任务完成
executor.shutdown();
try {
if (!executor.awaitTermination(60, TimeUnit.MINUTES)) {
executor.shutdownNow(); // 超时后强制关闭
while (true) {
LambdaQueryWrapper<ImMaterial> qw = Wrappers.lambdaQuery();
qw.isNotNull(ImMaterial::getMaterialCode);
qw.ne(ImMaterial::getMaterialCode, "");
qw.and(w -> w.isNull(ImMaterial::getForbidStatus).or().ne(ImMaterial::getForbidStatus, "B"));
qw.orderByAsc(ImMaterial::getId);
Page<ImMaterial> page = materialMapper.selectPage(new Page<>(pageNum, pageSize), qw);
List<ImMaterial> rows = page.getRecords();
if (rows.isEmpty()) {
break;
}
for (ImMaterial m : rows) {
totalRows++;
if (m == null || StringUtils.isBlank(m.getMaterialCode())) {
continue;
}
if (StringUtils.isNotBlank(m.getForbidStatus()) && "B".equalsIgnoreCase(m.getForbidStatus().trim())) {
skippedDisabled++;
continue;
}
if (m.getSingleWeight() == null) {
skippedNoWeight++;
continue;
}
final String materialCode = m.getMaterialCode().trim();
final String danzhongStr = m.getSingleWeight().stripTrailingZeros().toPlainString();
futures.add(executor.submit(() -> {
List<JdEntryVmi> entryID = JdUtil.getEntryID2(materialCode);
if (entryID == null || entryID.isEmpty()) {
log.warn("金蝶未查到物料编码: {}", materialCode);
return null;
}
for (JdEntryVmi jdEntryVmi : entryID) {
int fmaterialid = jdEntryVmi.getFMATERIALID();
try {
log.info("=====================>开始更新 {} 的单重(来自 im_material)", materialCode);
JdUtil.updateDanzhong(fmaterialid, danzhongStr);
} catch (Exception e) {
log.error("更新单重失败 materialCode={}, fmaterialid={}", materialCode, fmaterialid, e);
throw new RuntimeException(e);
}
}
return null;
}));
submitted++;
}
if (rows.size() < pageSize) {
break;
}
pageNum++;
}
for (Future<Void> future : futures) {
try {
future.get();
} catch (ExecutionException e) {
failedTasks++;
log.error("更新物料单重任务异常: {}", e.getCause() != null ? e.getCause().getMessage() : e.getMessage(), e);
}
}
} catch (InterruptedException e) {
executor.shutdownNow();
Thread.currentThread().interrupt(); // 保留中断状态
Thread.currentThread().interrupt();
log.error("更新物料单重被中断", e);
return R.fail("任务被中断");
} finally {
executor.shutdown();
try {
if (!executor.awaitTermination(60, TimeUnit.MINUTES)) {
executor.shutdownNow();
}
} catch (InterruptedException e) {
executor.shutdownNow();
Thread.currentThread().interrupt();
}
}
log.info("updateDanzhong 完成: 扫描行={}, 提交金蝶任务={}, 跳过禁用={}, 跳过无单重={}, 失败任务={}", totalRows, submitted, skippedDisabled, skippedNoWeight, failedTasks);
if (failedTasks > 0) {
return R.fail(String.format("部分失败: 失败任务数=%d详见日志", failedTasks));
}
return R.ok("更新成功");
}
@ -542,8 +606,6 @@ public class EleMaterialsController extends BaseController {
log.info("读取文件名: " + originalFilename);
ExcelResult<JdDanZhong> result = ExcelUtil.importExcelSheet1(file.getInputStream(), JdDanZhong.class, true);
List<JdDanZhong> list = result.getList();
return R.ok("更新成功");
}

View File

@ -21,17 +21,26 @@ import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.excel.ExcelResult;
import com.ruoyi.common.utils.JdUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.ImMaterial;
import com.ruoyi.system.domain.bo.ImMaterialBo;
import com.ruoyi.system.domain.dto.buildcapacity.BuildCapacityDTO;
import com.ruoyi.system.domain.dto.buildcapacity.CalcInfo;
import com.ruoyi.system.domain.dto.buildcapacity.MaterialItem;
import com.ruoyi.system.domain.dto.buildcapacity.StockInfo;
import com.ruoyi.system.domain.dto.productionorder.ProductionOrderMaterialsDTO;
import com.ruoyi.system.domain.vo.BuildCapacityMaterialExportVo;
import com.ruoyi.system.domain.vo.ImMaterialVo;
import com.ruoyi.system.mapper.ImMaterialMapper;
import com.ruoyi.system.service.IImMaterialService;
import com.ruoyi.system.service.IPartCostService;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -43,8 +52,15 @@ import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import static com.ruoyi.common.core.mapper.BaseMapperPlus.log;
@ -72,6 +88,12 @@ public class ImMaterialController extends BaseController {
private final ImMaterialMapper imMaterialMapper;
private final IPartCostService iPartCostService;
@Value("${plm.pdf.base-dir:D:/plm/pdf}")
private String plmPdfBaseDir;
@Value("${plm.pdf.separator:}")
private String plmPdfSeparator;
/**
* 金蝶物料保存 自动推送到此接口
* SaIgnore 注解用于开放此接口无需 token 验证
@ -114,6 +136,426 @@ public class ImMaterialController extends BaseController {
}
}
@SaIgnore
@PostMapping(value = "/plm/pdf", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Map<String, String>> receivePlmPdfDrawing(
@RequestParam("productionOrderNo") String productionOrderNo,
@RequestParam("materialCode") String materialCode,
@RequestParam("materialName") String materialName,
@RequestParam(value = "pdfFileName", required = false) String pdfFileName,
@RequestPart("file") MultipartFile file
) {
if (StringUtils.isBlank(productionOrderNo)) {
return R.fail("生产令号不能为空");
}
if (StringUtils.isBlank(materialCode)) {
return R.fail("物料编码不能为空");
}
if (StringUtils.isBlank(materialName)) {
return R.fail("物料名称不能为空");
}
if (file == null || file.isEmpty()) {
return R.fail("PDF文件不能为空");
}
String originalName = file.getOriginalFilename();
String finalPdfFileName = StringUtils.isNotBlank(pdfFileName) ? pdfFileName : originalName;
if (!isPdfFileName(finalPdfFileName)) {
return R.fail("仅支持上传PDF文件");
}
String safeProductionOrderNo = sanitizePathPart(productionOrderNo);
String safeMaterialCode = sanitizeFileNamePart(materialCode);
String safeMaterialName = sanitizeFileNamePart(materialName);
String separator = StringUtils.trimToEmpty(plmPdfSeparator);
String targetBaseName = safeMaterialCode + separator + safeMaterialName;
Path dir = Paths.get(plmPdfBaseDir, safeProductionOrderNo);
try {
Files.createDirectories(dir);
Path targetFile = resolveAvailablePdfPath(dir, targetBaseName);
try (InputStream in = file.getInputStream()) {
Files.copy(in, targetFile, StandardCopyOption.REPLACE_EXISTING);
}
Map<String, String> resp = new HashMap<>(8);
resp.put("productionOrderNo", productionOrderNo);
resp.put("materialCode", materialCode);
resp.put("materialName", materialName);
resp.put("pdfFileName", finalPdfFileName);
resp.put("savedFileName", targetFile.getFileName().toString());
resp.put("savedDir", dir.toString());
resp.put("savedPath", targetFile.toString());
return R.ok(resp);
} catch (Exception e) {
log.error("接收PLM PDF图纸失败: productionOrderNo={}, materialCode={}", productionOrderNo, materialCode, e);
return R.fail("接收PLM PDF图纸失败: " + e.getMessage());
}
}
@SaIgnore
@PostMapping(value = "/plm/pdf/batch", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Map<String, Object>> receivePlmPdfDrawingsBatch(
@RequestParam("productionOrderNo") String productionOrderNo,
@RequestPart("items") String itemsJson,
@RequestPart("files") MultipartFile[] files
) {
if (StringUtils.isBlank(productionOrderNo)) {
return R.fail("生产令号不能为空");
}
if (StringUtils.isBlank(itemsJson)) {
return R.fail("items不能为空");
}
if (files == null || files.length == 0) {
return R.fail("files不能为空");
}
List<PlmPdfBatchItem> items;
try {
items = new ObjectMapper().readValue(itemsJson, new TypeReference<List<PlmPdfBatchItem>>() {});
} catch (JsonProcessingException e) {
return R.fail("items不是合法JSON: " + e.getOriginalMessage());
}
if (items == null || items.isEmpty()) {
return R.fail("items不能为空");
}
Map<String, PlmPdfBatchItem> metaByFileName = new HashMap<>(items.size() * 2);
for (PlmPdfBatchItem item : items) {
if (item == null) {
continue;
}
String pdfName = normalizeOriginalName(item.getPdfFileName());
if (StringUtils.isBlank(pdfName)) {
return R.fail("items中pdfFileName不能为空");
}
if (StringUtils.isBlank(item.getMaterialCode())) {
return R.fail("items中materialCode不能为空: " + pdfName);
}
if (StringUtils.isBlank(item.getMaterialName())) {
return R.fail("items中materialName不能为空: " + pdfName);
}
if (!isPdfFileName(pdfName)) {
return R.fail("items中仅支持PDF文件名: " + pdfName);
}
if (metaByFileName.containsKey(pdfName)) {
return R.fail("items中存在重复pdfFileName: " + pdfName);
}
metaByFileName.put(pdfName, item);
}
Set<String> fileNames = new HashSet<>(files.length * 2);
List<String> duplicateFiles = new ArrayList<>();
List<String> filesWithoutMeta = new ArrayList<>();
for (MultipartFile f : files) {
if (f == null || f.isEmpty()) {
continue;
}
String fn = normalizeOriginalName(f.getOriginalFilename());
if (StringUtils.isBlank(fn)) {
return R.fail("files中存在无文件名的上传项");
}
if (!isPdfFileName(fn)) {
return R.fail("仅支持上传PDF文件: " + fn);
}
if (!fileNames.add(fn)) {
duplicateFiles.add(fn);
}
if (!metaByFileName.containsKey(fn)) {
filesWithoutMeta.add(fn);
}
}
if (!duplicateFiles.isEmpty()) {
return R.fail("files中存在重复文件名: " + String.join(", ", duplicateFiles));
}
if (!filesWithoutMeta.isEmpty()) {
return R.fail("以下文件未在items中声明: " + String.join(", ", filesWithoutMeta));
}
List<String> missingFiles = new ArrayList<>();
for (String metaFileName : metaByFileName.keySet()) {
if (!fileNames.contains(metaFileName)) {
missingFiles.add(metaFileName);
}
}
if (!missingFiles.isEmpty()) {
return R.fail("以下items声明的文件未上传: " + String.join(", ", missingFiles));
}
String safeProductionOrderNo = sanitizePathPart(productionOrderNo);
String separator = StringUtils.trimToEmpty(plmPdfSeparator);
Path dir = Paths.get(plmPdfBaseDir, safeProductionOrderNo);
List<Map<String, String>> saved = new ArrayList<>(files.length);
try {
Files.createDirectories(dir);
for (MultipartFile f : files) {
if (f == null || f.isEmpty()) {
continue;
}
String fn = normalizeOriginalName(f.getOriginalFilename());
PlmPdfBatchItem item = metaByFileName.get(fn);
String safeMaterialCode = sanitizeFileNamePart(item.getMaterialCode());
String safeMaterialName = sanitizeFileNamePart(item.getMaterialName());
String targetBaseName = safeMaterialCode + separator + safeMaterialName;
Path targetFile = resolveAvailablePdfPath(dir, targetBaseName);
try (InputStream in = f.getInputStream()) {
Files.copy(in, targetFile, StandardCopyOption.REPLACE_EXISTING);
}
Map<String, String> row = new HashMap<>(6);
row.put("pdfFileName", fn);
row.put("materialCode", item.getMaterialCode());
row.put("materialName", item.getMaterialName());
row.put("savedFileName", targetFile.getFileName().toString());
row.put("savedDir", dir.toString());
row.put("savedPath", targetFile.toString());
saved.add(row);
}
Map<String, Object> resp = new HashMap<>(6);
resp.put("productionOrderNo", productionOrderNo);
resp.put("savedDir", dir.toString());
resp.put("count", saved.size());
resp.put("items", saved);
return R.ok(resp);
} catch (Exception e) {
log.error("批量接收PLM PDF图纸失败: productionOrderNo={}", productionOrderNo, e);
return R.fail("批量接收PLM PDF图纸失败: " + e.getMessage());
}
}
@SaIgnore
@PostMapping(value = "/plm/pdf/zip", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Map<String, Object>> receivePlmPdfDrawingsZip(
@RequestPart("manifest") String manifestJson,
@RequestPart("zip") MultipartFile zipFile
) {
if (StringUtils.isBlank(manifestJson)) {
return R.fail("manifest不能为空");
}
if (zipFile == null || zipFile.isEmpty()) {
return R.fail("zip不能为空");
}
PlmPdfManifest manifest;
try {
manifest = new ObjectMapper().readValue(manifestJson, PlmPdfManifest.class);
} catch (JsonProcessingException e) {
return R.fail("manifest不是合法JSON: " + e.getOriginalMessage());
}
if (manifest == null || StringUtils.isBlank(manifest.getProductionOrderNo())) {
return R.fail("manifest.productionOrderNo不能为空");
}
if (manifest.getItems() == null || manifest.getItems().isEmpty()) {
return R.fail("manifest.items不能为空");
}
String productionOrderNo = manifest.getProductionOrderNo();
String safeProductionOrderNo = sanitizePathPart(productionOrderNo);
String separator = StringUtils.trimToEmpty(plmPdfSeparator);
Path dir = Paths.get(plmPdfBaseDir, safeProductionOrderNo);
Map<String, PlmPdfManifestItem> itemByPdfPath = new LinkedHashMap<>(manifest.getItems().size() * 2);
for (PlmPdfManifestItem item : manifest.getItems()) {
if (item == null) {
continue;
}
String pdfPath = normalizeZipEntryName(item.getPdfPath());
if (StringUtils.isBlank(pdfPath)) {
return R.fail("manifest.items[].pdfPath不能为空");
}
if (!isPdfFileName(pdfPath)) {
return R.fail("manifest.items[].pdfPath仅支持PDF: " + pdfPath);
}
if (StringUtils.isBlank(item.getMaterialCode())) {
return R.fail("manifest.items[].materialCode不能为空: " + pdfPath);
}
if (StringUtils.isBlank(item.getMaterialName())) {
return R.fail("manifest.items[].materialName不能为空: " + pdfPath);
}
if (itemByPdfPath.containsKey(pdfPath)) {
return R.fail("manifest中存在重复pdfPath: " + pdfPath);
}
itemByPdfPath.put(pdfPath, item);
}
Path tempZip = null;
try {
Files.createDirectories(dir);
tempZip = Files.createTempFile("plm-pdf-", ".zip");
try (InputStream in = zipFile.getInputStream()) {
Files.copy(in, tempZip, StandardCopyOption.REPLACE_EXISTING);
}
Map<String, ZipEntry> pdfEntryByPath = new HashMap<>(itemByPdfPath.size() * 2);
Set<String> extraPdfFiles = new LinkedHashSet<>();
try (ZipFile zf = new ZipFile(tempZip.toFile())) {
Enumeration<? extends ZipEntry> entries = zf.entries();
while (entries.hasMoreElements()) {
ZipEntry ze = entries.nextElement();
if (ze == null || ze.isDirectory()) {
continue;
}
String name = normalizeZipEntryName(ze.getName());
if (StringUtils.isBlank(name)) {
continue;
}
if (!isPdfFileName(name)) {
continue;
}
if (pdfEntryByPath.containsKey(name)) {
return R.fail("zip中存在重复文件路径: " + name);
}
pdfEntryByPath.put(name, ze);
if (!itemByPdfPath.containsKey(name)) {
extraPdfFiles.add(name);
}
}
List<String> missing = new ArrayList<>();
for (String pdfPath : itemByPdfPath.keySet()) {
if (!pdfEntryByPath.containsKey(pdfPath)) {
missing.add(pdfPath);
}
}
if (!missing.isEmpty()) {
return R.fail("zip缺少以下PDF文件: " + String.join(", ", missing));
}
if (!extraPdfFiles.isEmpty()) {
return R.fail("zip包含未在manifest声明的PDF文件: " + String.join(", ", extraPdfFiles));
}
List<Map<String, String>> saved = new ArrayList<>(itemByPdfPath.size());
for (Map.Entry<String, PlmPdfManifestItem> kv : itemByPdfPath.entrySet()) {
String pdfPath = kv.getKey();
PlmPdfManifestItem item = kv.getValue();
ZipEntry ze = pdfEntryByPath.get(pdfPath);
String safeMaterialCode = sanitizeFileNamePart(item.getMaterialCode());
String safeMaterialName = sanitizeFileNamePart(item.getMaterialName());
String targetBaseName = safeMaterialCode + separator + safeMaterialName;
Path targetFile = resolveAvailablePdfPath(dir, targetBaseName);
try (InputStream in = zf.getInputStream(ze)) {
Files.copy(in, targetFile, StandardCopyOption.REPLACE_EXISTING);
}
Map<String, String> row = new HashMap<>(7);
row.put("pdfPath", pdfPath);
row.put("materialCode", item.getMaterialCode());
row.put("materialName", item.getMaterialName());
row.put("savedFileName", targetFile.getFileName().toString());
row.put("savedDir", dir.toString());
row.put("savedPath", targetFile.toString());
saved.add(row);
}
Map<String, Object> resp = new HashMap<>(6);
resp.put("productionOrderNo", productionOrderNo);
resp.put("savedDir", dir.toString());
resp.put("count", saved.size());
resp.put("items", saved);
return R.ok(resp);
}
} catch (Exception e) {
log.error("接收PLM PDF压缩包失败: productionOrderNo={}", manifest.getProductionOrderNo(), e);
return R.fail("接收PLM PDF压缩包失败: " + e.getMessage());
} finally {
if (tempZip != null) {
try {
Files.deleteIfExists(tempZip);
} catch (Exception ignored) {
}
}
}
}
private static boolean isPdfFileName(String fileName) {
if (StringUtils.isBlank(fileName)) {
return false;
}
return fileName.trim().toLowerCase(Locale.ROOT).endsWith(".pdf");
}
private static String normalizeOriginalName(String fileName) {
String s = StringUtils.trimToEmpty(fileName);
if (StringUtils.isBlank(s)) {
return s;
}
s = s.replace("\\", "/");
int idx = s.lastIndexOf('/');
if (idx >= 0 && idx + 1 < s.length()) {
s = s.substring(idx + 1);
}
return s.trim();
}
private static String normalizeZipEntryName(String entryName) {
String s = StringUtils.trimToEmpty(entryName);
if (StringUtils.isBlank(s)) {
return s;
}
s = s.replace("\\", "/");
while (s.startsWith("/")) {
s = s.substring(1);
}
while (s.startsWith("./")) {
s = s.substring(2);
}
if (s.contains("..")) {
throw new IllegalArgumentException("非法zip路径: " + entryName);
}
return s.trim();
}
private static String sanitizePathPart(String input) {
String s = StringUtils.trimToEmpty(input);
s = s.replace("\\", "_").replace("/", "_");
return sanitizeFileNamePart(s);
}
private static String sanitizeFileNamePart(String input) {
String s = StringUtils.trimToEmpty(input);
s = s.replaceAll("[\\\\/:*?\"<>|]", "_");
s = s.replaceAll("\\s+", " ");
s = s.trim();
if (s.length() > 120) {
s = s.substring(0, 120);
}
if (StringUtils.isBlank(s)) {
return "_";
}
return s;
}
private static Path resolveAvailablePdfPath(Path dir, String targetBaseName) {
String base = sanitizeFileNamePart(targetBaseName);
Path p = dir.resolve(base + ".pdf");
if (!Files.exists(p)) {
return p;
}
String suffix = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
return dir.resolve(base + "-" + suffix + ".pdf");
}
@Data
private static class PlmPdfBatchItem {
private String pdfFileName;
private String materialCode;
private String materialName;
}
@Data
private static class PlmPdfManifest {
private String productionOrderNo;
private List<PlmPdfManifestItem> items;
}
@Data
private static class PlmPdfManifestItem {
private String pdfPath;
private String materialCode;
private String materialName;
}
/**
* 查询物料检索列表
*/
@ -186,6 +628,16 @@ public class ImMaterialController extends BaseController {
return toAjax(iImMaterialService.deleteWithValidByIds(Arrays.asList(ids), true));
}
/**
* 手动触发全量分页刷新 im_material 单重按物料编码解析仅单重变化时更新 updateTimemodify_date
*/
@SaCheckPermission("system:material:edit")
@Log(title = "刷新物料单重", businessType = BusinessType.UPDATE)
@PostMapping("/refreshSingleWeightFromOrders")
public R<Map<String, Object>> refreshSingleWeightFromOrders() {
return iImMaterialService.refreshImMaterialSingleWeightFromOrders();
}
@PostMapping("/importTemplate")
public void importTemplate(HttpServletResponse response) {
ExcelUtil.exportExcel(new ArrayList<>(), "用户数据", ImMaterialBo.class, response);
@ -485,6 +937,91 @@ public class ImMaterialController extends BaseController {
public TableDataInfo search(@RequestParam(value = "query", required = false) String query) {
return iImMaterialService.search(query);
}
/**
* 齐套物料查询
*/
@SaCheckPermission("system:material:buildCapacity")
@Log(title = "齐套物料", businessType = BusinessType.EXPORT)
@GetMapping("/buildCapacity")
public R<BuildCapacityDTO> buildCapacity(@RequestParam("productionOrderNo") String productionOrderNo,
@RequestParam("productCode") String productCode,
@RequestParam(value = "productName", required = false) String productName) {
return R.ok(iImMaterialService.queryBuildCapacity(productionOrderNo, productCode, productName));
}
@SaCheckPermission("system:material:exportBuildCapacity")
@Log(title = "齐套物料导出", businessType = BusinessType.EXPORT)
@PostMapping("/buildCapacity/export")
public void exportBuildCapacity(@RequestParam("productionOrderNo") String productionOrderNo,
@RequestParam("productCode") String productCode,
@RequestParam(value = "productName", required = false) String productName,
HttpServletResponse response) {
BuildCapacityDTO dto = iImMaterialService.queryBuildCapacity(productionOrderNo, productCode, productName);
List<BuildCapacityMaterialExportVo> rows = new ArrayList<>();
if (dto != null) {
appendBuildCapacityRows(rows, productionOrderNo, dto, "自制", dto.getSelfMadeMaterials());
appendBuildCapacityRows(rows, productionOrderNo, dto, "采购", dto.getPurchaseMaterials());
}
ExcelUtil.exportExcel(rows, "齐套物料", BuildCapacityMaterialExportVo.class, response);
}
@GetMapping("/buildCapacityByProductionOrderNo")
public R<List<BuildCapacityDTO>> buildCapacityByProductionOrderNo(@RequestParam("productionOrderNo") String productionOrderNo) {
return R.ok(iImMaterialService.queryBuildCapacityByProductionOrderNo(productionOrderNo));
}
@GetMapping("/productionOrderMaterials")
public R<ProductionOrderMaterialsDTO> productionOrderMaterials(@RequestParam("productionOrderNo") String productionOrderNo,
@RequestParam("productCode") String productCode) {
return R.ok(iImMaterialService.queryProductionOrderMaterials(productionOrderNo, productCode));
}
private static void appendBuildCapacityRows(List<BuildCapacityMaterialExportVo> out,
String productionOrderNo,
BuildCapacityDTO dto,
String materialType,
List<MaterialItem> items) {
if (items == null || items.isEmpty()) {
return;
}
for (MaterialItem item : items) {
if (item == null) {
continue;
}
BuildCapacityMaterialExportVo row = new BuildCapacityMaterialExportVo();
row.setProductionOrderNo(productionOrderNo);
row.setProductCode(dto.getProductCode());
row.setProductName(dto.getProductName());
row.setMaxBuildQty(dto.getMaxBuildQty());
row.setMaterialType(materialType);
row.setMaterialCode(item.getMaterialCode());
row.setMaterialName(item.getMaterialName());
row.setRequiredQty(item.getRequiredQty());
row.setMaterial(item.getMaterial());
row.setSingleWeight(item.getSingleWeight());
row.setTotalWeight(item.getTotalWeight());
row.setRemark(item.getRemark());
row.setBatchQuantity(item.getBatchQuantity());
StockInfo stock = item.getStock();
if (stock != null) {
row.setOnHandQty(stock.getOnHandQty());
row.setPoNotInQty(stock.getPoNotInQty());
row.setMoNotInQty(stock.getMoNotInQty());
row.setMoNotPickQty(stock.getMoNotPickQty());
}
CalcInfo calc = item.getCalc();
if (calc != null) {
row.setAvailableQty(calc.getAvailableQty());
row.setFinalAvailableQty(calc.getFinalAvailableQty());
row.setCanSupportQty(calc.getCanSupportQty());
}
row.setStatus(item.getStatus() != null ? item.getStatus().name() : null);
out.add(row);
}
}
@SaIgnore
@PostMapping("/getObtainPartData2")
public R<Void> getObtainPartData() {

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

@ -15,6 +15,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.ruoyi.common.excel.DefaultExcelListener;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.FtpUtil;
import com.ruoyi.common.utils.HttpUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.VersionComparator;
import com.ruoyi.common.utils.file.SmbUtil;
@ -32,6 +33,7 @@ import com.ruoyi.system.mapper.ProcessOrderProMapper;
import com.ruoyi.system.mapper.SafetyStockMapper;
import com.ruoyi.system.runner.JdUtil;
import com.ruoyi.system.service.*;
import com.ruoyi.system.utils.ProductionOrderNoUtils;
import lombok.RequiredArgsConstructor;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
@ -40,6 +42,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@ -244,7 +247,14 @@ public class ProcessOrderProController extends BaseController {
String s = iProcessOrderProService.executDrawing(orderPro);
return R.ok(s);
}
@GetMapping("/getstate")
public R<JSONObject> getPlotState() {
String result = HttpUtils.sendGet("http://192.168.5.18:9000/getstate", "UTF-8");
if (StringUtils.isBlank(result)) {
return R.ok("操作成功", null);
}
return R.ok("操作成功", JSON.parseObject(result));
}
@GetMapping("/executDrawing/progress/{id}")
public SseEmitter executDrawingProgress(@PathVariable Long id) {
return iProcessOrderProService.startDrawingSse(id);
@ -933,8 +943,8 @@ public class ProcessOrderProController extends BaseController {
vo.setBatchQuantity(getCellValueAsString(row.getCell(8))); // 批次数量
vo.setParentPart(getCellValueAsString(row.getCell(9))); // 上级部件
vo.setParentDrawingNo(getCellValueAsString(row.getCell(10))); // 上级部件图号
vo.setMainProducts(getCellValueAsString(row.getCell(11))); // 主产品图号
vo.setMainProductsName(getCellValueAsString(row.getCell(12))); // 主产品名称
vo.setMainPart(getCellValueAsString(row.getCell(11))); // 主产品图号
vo.setMainName(getCellValueAsString(row.getCell(12))); // 主产品名称
resultList.add(vo);
}
@ -1095,8 +1105,8 @@ public class ProcessOrderProController extends BaseController {
}
map.put("batchQuantityInt", batchQuantityInt);
map.put("mainProducts", item.getMainProducts());
map.put("mainProductsName", item.getMainProductsName());
map.put("mainProducts", item.getMainPart());
map.put("mainProductsName", item.getMainName());
mapList.add(map);
}
return mapList;
@ -1882,6 +1892,25 @@ public class ProcessOrderProController extends BaseController {
return mapList;
}
/**
* 出图完成后由前端触发先推送出图完成Markdown再生成工艺计划表 Excel 并发至钉钉 notifyUserId
*/
@SaCheckPermission("system:orderPro:sendProcessRoutePlanExcel")
@Log(title = "发送工艺计划表", businessType = BusinessType.OTHER)
@PostMapping("/sendProcessRoutePlanExcel/{id}")
public R<Void> sendProcessRoutePlanExcel(@NotNull(message = "项目ID不能为空") @PathVariable Long id) {
return iProcessOrderProService.sendProcessRoutePlanExcel(id);
}
/**
* 查询工艺计划表钉钉发送成功次数用于按钮文案
*/
@SaIgnore
@GetMapping("/routePlanSendCount/{id}")
public R<Integer> getRoutePlanSendCount(@NotNull(message = "项目ID不能为空") @PathVariable Long id) {
return iProcessOrderProService.getRoutePlanSendCount(id);
}
@SaCheckPermission("system:orderPro:exportRoute3")
@Log(title = "下载工艺生产表3", businessType = BusinessType.EXPORT)
@GetMapping ("/exportRoute3")
@ -1925,30 +1954,28 @@ public class ProcessOrderProController extends BaseController {
return generateRoute3Excel(id, false);
}
/** 去掉 Windows 文件名非法字符,避免生成或钉钉展示异常 */
private static String sanitizeFileNameSegment(String name) {
if (StringUtils.isBlank(name)) {
return "unknown";
}
String trimmed = name.trim();
String illegal = "\\/:*?\"<>|";
StringBuilder sb = new StringBuilder(trimmed.length());
for (int i = 0; i < trimmed.length(); i++) {
char c = trimmed.charAt(i);
sb.append(illegal.indexOf(c) >= 0 ? '_' : c);
}
String out = sb.toString();
return out.isEmpty() ? "unknown" : out;
}
public String generateRoute3Excel(Long id, boolean isDrawing) throws Exception {
ProcessOrderPro orderPro = processOrderProMapper.selectById(id);
// 下载Excel文件
// 1. 解析年份
String productionCode = orderPro.getProductionOrderNo();
String year = "2025"; // 默认
if (productionCode != null) {
if (productionCode.startsWith("EY")) {
if (productionCode.length() >= 4) {
try {
Integer.parseInt(productionCode.substring(2, 4));
year = "20" + productionCode.substring(2, 4);
} catch (Exception e) {}
}
} else {
int firstDash = productionCode.indexOf("-");
if (firstDash >= 0 && firstDash + 3 <= productionCode.length()) {
try {
Integer.parseInt(productionCode.substring(firstDash + 1, firstDash + 3));
year = "20" + productionCode.substring(firstDash + 1, firstDash + 3);
} catch (Exception e) {}
}
}
}
String year = ProductionOrderNoUtils.extractYear(productionCode);
// 2. 构建FTP路径和本地路径
String ftpPath = "/" + year + "/" + productionCode;
@ -2313,7 +2340,11 @@ public class ProcessOrderProController extends BaseController {
// 使用Excel模板文件
String templatePath = "jpg/生产及工艺计划模版.xlsx";
String outputPath = "D:/file/" + orderPro.getProductionOrderNo() + "生产及工艺计划表.xlsx";
String safeOrderNo = sanitizeFileNameSegment(orderPro.getProductionOrderNo());
// 钉钉发送场景用令号+工艺表避免过长中文后缀在客户端显示异常浏览器导出仍为生产及工艺计划表
String outputPath = isDrawing
? ("D:/file/" + safeOrderNo + "工艺表.xlsx")
: ("D:/file/" + safeOrderNo + "生产及工艺计划表.xlsx");
// 准备模板数据
Map<String, Object> staticDataMap = new HashMap<>();
@ -2393,7 +2424,7 @@ public class ProcessOrderProController extends BaseController {
return;
}
// 检查 quantity 字段假设你的数量字段名是 quantity 或者 unitQuantity 这里假设是 getQuantity()如果不对请调整为对应的 get 方法
if (orderPro.getQuantity() != null && orderPro.getQuantity().intValue() == 0) {
if (orderPro.getIsDownload() != null && orderPro.getIsDownload().intValue() == 0) {
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(JSONObject.toJSONString(R.fail("当前图纸数量不允许下载")));
return;

View File

@ -40,6 +40,8 @@ import com.ruoyi.system.mapper.ProcessOrderProMapper;
import com.ruoyi.system.mapper.ProcessRouteMapper;
import com.ruoyi.system.runner.JdUtil;
import com.ruoyi.system.service.*;
import com.ruoyi.system.service.support.OperationPlanningWorkshopUpdateService;
import com.ruoyi.system.service.support.OperationReportWorkshopUpdateService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -62,6 +64,8 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
/**
* 工艺路线
@ -76,6 +80,8 @@ import java.util.stream.Collectors;
public class ProcessRouteController extends BaseController {
private final ProcessRouteMapper baseMapper;
private final IProcessRouteService iProcessRouteService;
private final OperationPlanningWorkshopUpdateService operationPlanningWorkshopUpdateService;
private final OperationReportWorkshopUpdateService operationReportWorkshopUpdateService;
private final IBomDetailsService iBomDetailsService;
private final ProcessOrderProMapper proMapper;
private final IImMaterialService materialService;
@ -603,6 +609,15 @@ public class ProcessRouteController extends BaseController {
if (!zipFile.exists()) {
throw new FileNotFoundException("ZIP 文件未找到: " + zipFilePath);
}
if (zipFile.length() <= 0) {
throw new IOException("ZIP 文件为空: " + zipFilePath);
}
try (ZipFile zf = new ZipFile(zipFile)) {
Enumeration<? extends ZipEntry> entries = zf.entries();
if (entries == null || !entries.hasMoreElements()) {
throw new IOException("ZIP 文件中没有PDF: " + zipFilePath);
}
}
FileInputStream fis = new FileInputStream(zipFile);
OutputStream outputStreams = response.getOutputStream();
response.setContentType("application/zip");
@ -624,6 +639,46 @@ public class ProcessRouteController extends BaseController {
return iProcessRouteService.updateProcessPlan(rooteProdet);
}
/**
* 按车间+物料默认条件拉取工序计划回填工艺时间保存时部门统一为 018 {@link OperationPlanningWorkshopUpdateService} 一致
*/
@Log(title = "按车间物料更新工序计划(默认条件)")
@SaCheckPermission("system:route:updateProcessPlan")
@PostMapping("/updateProcessPlanByWorkshop")
public R<List<Model>> updateProcessPlanByWorkshop() throws Exception {
return R.ok(operationPlanningWorkshopUpdateService.updateProcessPlanByWorkshopFilter());
}
/**
* 同上BillQuery 过滤条件可自定义部门 Compare/Value物料 Compare/Value
*/
@Log(title = "按车间物料更新工序计划(自定义条件)")
@SaCheckPermission("system:route:updateProcessPlan")
@PostMapping("/updateProcessPlanByWorkshopCustom")
public R<List<Model>> updateProcessPlanByWorkshopCustom(
@RequestParam String departmentCompare,
@RequestParam String departmentNumber,
@RequestParam String productCompare,
@RequestParam String productFilterValue) throws Exception {
return R.ok(operationPlanningWorkshopUpdateService.updateProcessPlanByWorkshopFilter(
departmentCompare, departmentNumber, productCompare, productFilterValue));
}
@Log(title = "按车间物料更新工序汇报单(默认条件)")
@SaCheckPermission("system:route:updateProcessPlan")
@PostMapping("/updateOperationReportByWorkshop")
public R<List<Model>> updateOperationReportByWorkshop() throws Exception {
return R.ok(operationReportWorkshopUpdateService.updateOperationReportByWorkshopFilter());
}
@Log(title = "按车间物料更新工序汇报单(固定条件67/007/17/-MP)")
@SaCheckPermission("system:route:updateProcessPlan")
@PostMapping("/updateOperationReportByWorkshopCustom")
public R<List<Model>> updateOperationReportByWorkshopCustom() throws Exception {
return R.ok(operationReportWorkshopUpdateService.updateOperationReportByWorkshopFilter(
"67", "007", "17", "-MP"));
}
/**
* 更新生产订单的时间
*/

View File

@ -3,6 +3,8 @@ package com.ruoyi.system.controller;
import java.util.*;
import com.ruoyi.system.domain.ProductionOrder;
import com.ruoyi.system.domain.dto.productionorder.ProductionOrderWeightExportDTO;
import com.ruoyi.system.domain.dto.productionorder.ProductionOrderWeightImportDTO;
import com.ruoyi.system.domain.dto.PurchaseOrderExcelDTO;
import com.ruoyi.system.domain.dto.PurchaseRequestExcelDTO;
import com.ruoyi.system.runner.JdUtil;
@ -138,6 +140,19 @@ public class ProductionOrderController extends BaseController {
return R.ok(null);
}
/**
* 测试方法导入物料编码后批量匹配单重并导出
* Excel列物料编码物料名称单重
*/
@Log(title = "物料单重匹配导出", businessType = BusinessType.IMPORT)
@SaCheckPermission("system:order:import")
@PostMapping(value = "/testExportWeightByMaterialCode", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void testExportWeightByMaterialCode(@RequestPart("file") MultipartFile file, HttpServletResponse response) throws Exception {
List<ProductionOrderWeightImportDTO> importRows = ExcelUtil.importExcel(file.getInputStream(), ProductionOrderWeightImportDTO.class);
List<ProductionOrderWeightExportDTO> exportRows = iProductionOrderService.matchSingleWeightByMaterialCode(importRows);
ExcelUtil.exportExcel(exportRows, "物料单重匹配结果", ProductionOrderWeightExportDTO.class, response);
}
/**
* 获取组焊件bom列表
* @param productionOrderVo

View File

@ -12,6 +12,7 @@ import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.FigureSave;
import com.ruoyi.system.domain.ProductionOrder;
import com.ruoyi.system.domain.ProductionPlan;
import com.ruoyi.system.domain.bo.ProductionPlanBo;
import com.ruoyi.system.domain.vo.ProductionPlanVo;
@ -20,6 +21,7 @@ import com.ruoyi.system.mapper.FigureSaveMapper;
import com.ruoyi.system.mapper.ProductionPlanMapper;
import com.ruoyi.system.runner.JdUtil;
import com.ruoyi.system.service.IFigureSaveService;
import com.ruoyi.system.service.IProductionOrderService;
import com.ruoyi.system.service.IProductionPlanService;
import lombok.RequiredArgsConstructor;
import org.apache.poi.ss.usermodel.*;
@ -51,6 +53,7 @@ import java.util.List;
public class ProductionPlanController extends BaseController {
private final IFigureSaveService iFigureSaveService;
private final IProductionPlanService iProductionPlanService;
private final IProductionOrderService iProductionOrderService;
@Resource
private ProductionPlanMapper productionPlanMapper;
@Resource
@ -210,6 +213,26 @@ public class ProductionPlanController extends BaseController {
return R.ok("状态更新成功");
}
@SaCheckPermission("system:plan:productionOrderNoOptions")
@Log(title = "查询生产令号及主产品,预配套使用", businessType = BusinessType.UPDATE)
@GetMapping("/productionOrderNoOptions")
public R<List<String>> productionOrderNoOptions(@RequestParam(value = "keyword", required = false) String keyword,
@RequestParam(value = "limit", required = false) Integer limit) {
return R.ok("ok", iProductionOrderService.selectProductionOrderNoOptions(keyword, limit));
}
/**
* 根据生产令号查询所有的装配bom
*
* @param productionOrderNo 生产令号
*/
@SaCheckPermission("system:plan:selectByProCode")
@Log(title = "排产计划", businessType = BusinessType.UPDATE)
@PostMapping("/selectByProCode")
public R<List<ProductionOrder>> selectByProCode(@RequestParam("productionOrderNo") String productionOrderNo) {
List<ProductionOrder> productionOrders = iProductionOrderService.selectByProCode(productionOrderNo.trim());
return R.ok("ok", productionOrders);
}

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

@ -33,7 +33,10 @@ public class ProcessOrderPro extends BaseEntity {
* 是否延期0否 1是
*/
private Integer whetherDelay;
/**
* 是否可以下载
*/
private Integer isDownload;
/**
* 延期天数
*/
@ -134,4 +137,9 @@ public class ProcessOrderPro extends BaseEntity {
*/
private String notificationCardId;
/**
* 工艺计划表钉钉发送次数每次发送成功 +1
*/
private Integer routePlanSendCount;
}

View File

@ -66,6 +66,14 @@ public class ProductionOrder extends BaseEntity {
* 部件图号
*/
private String parentDrawingNo;
/**
* 主产品名称
*/
private String mainName;
/**
* 主产品图号
*/
private String mainPart;
/**
* 批次数量
*/

View File

@ -42,6 +42,9 @@ public class SfcOperationPlanningMain extends BaseEntity {
* 生产令号
*/
private String hbytSclh;
@TableField("hbyt_xmh")
private String fHbytXmh;
/**
* 产品编码
*/

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

@ -81,6 +81,10 @@ public class ProcessOrderProBo extends BaseEntity {
*/
private List<String> isEnterpriseStandardList;
/**
* 是否可以下载
*/
private Integer isDownload;
private String drawingPath;
/**

View File

@ -64,4 +64,14 @@ public class ProductionOrderBo extends BaseEntity {
* 批次数量
*/
private String batchQuantity;
/**
* 主产品名称
*/
private String mainName;
/**
* 主产品图号
*/
private String mainPart;
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.domain.bo;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
@ -50,7 +51,8 @@ public class SfcOperationPlanningMainBo extends BaseEntity {
*/
@NotBlank(message = "生产令号不能为空", groups = { AddGroup.class, EditGroup.class })
private String hbytSclh;
@NotBlank(message = "项目号不能为空", groups = { AddGroup.class, EditGroup.class })
private String fHbytXmh;
/**
* 产品编码
*/

View File

@ -8,7 +8,7 @@ import java.util.Date;
@Data
public class ConstructionDelayDTO {
//生产令号
@JsonProperty("F_HBYT_SCLH")
@JsonProperty("F_HBYT_XMH")
private String F_HBYT_SCLH;
//单据编码
@JsonProperty("FBillNo")

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

@ -18,6 +18,8 @@ public class OperationPlanResultDTO {
*/
private String batchNo;
private String projectNo;
/**
* 产品编码
*/

View File

@ -25,7 +25,11 @@ public class OperationPlanningDTO {
* 生产令号
*/
@JsonProperty("F_HBYT_SCLH")
private String fHbytSclh;
private String fHbytSclh;/**
* 生产令号
*/
@JsonProperty("F_HBYT_XMH")
private String fHbytXmh;
/**
* 生产订单编号

View File

@ -58,6 +58,60 @@ public class ProcessDetailDTO {
*/
private Double wastageQty;
/**
* 综合看板统计日请求参数 boardReportDay默认服务器当天内金蝶工序汇报汇总与本工序号匹配的完工数量合计
*/
private Double dayReportFinishQty;
/** 同上:合格数量合计 */
private Double dayReportQuaQty;
/** 同上:废品/不良数量合计 */
private Double dayReportFailQty;
/**
* 综合看板生产入库数量当前追溯数据未按工序拆分仅在<strong>该工序计划主档</strong>下工序号最大的一道工序上回填本生产订单入库数量合计其余工序为 null
*/
private Double operationInstockQty;
// ---------- 综合看板金蝶工序委外转移报表并入工序明细 boardReportDay 切分 ----------
/**
* 单据日期 &lt; boardReportDay 的委外<strong>发出</strong>数量累计多行合并
* 仅当本工序被识别为委外/外协相关且匹配到报表行时有值否则为 null
*/
private Double subcontractLeaveQtyBeforeReportDay;
/**
* 单据日期 &lt; boardReportDay 的委外<strong>接收</strong>数量累计
*/
private Double subcontractEnterQtyBeforeReportDay;
/**
* 单据日期 &lt; boardReportDay 的委外<strong>合格</strong>数量累计
*/
private Double subcontractQualifiedQtyBeforeReportDay;
/**
* 单据日期 = boardReportDay 当天的委外<strong>发出</strong>合计可多笔合并
*/
private Double subcontractLeaveQtyOnReportDay;
/**
* 单据日期 = boardReportDay 当天的委外<strong>接收</strong>合计
*/
private Double subcontractEnterQtyOnReportDay;
/**
* 单据日期 = boardReportDay 当天的委外<strong>合格</strong>合计
*/
private Double subcontractQualifiedQtyOnReportDay;
/**
* 统计日当天委外<strong>发出 + 接收</strong>之和便于前端单列展示等于 subcontractLeaveQtyOnReportDay + subcontractEnterQtyOnReportDay无当日数据时为 null
*/
private Double subcontractLeaveEnterSumOnReportDay;
/**
* 加工车间
*/

View File

@ -0,0 +1,13 @@
package com.ruoyi.system.domain.dto.buildcapacity;
import lombok.Data;
@Data
public class BottleneckMaterial {
private String materialCode;
private String materialName;
private Integer canSupportQty;
}

View File

@ -0,0 +1,34 @@
package com.ruoyi.system.domain.dto.buildcapacity;
import lombok.Data;
import java.util.List;
@Data
public class BuildCapacityDTO {
/**
* 成品编码前端选中的成品/产品编码
*/
private String productCode;
/**
* 成品名称可选仅用于展示
*/
private String productName;
/**
* 最大可生产套数取所有物料行 calc.canSupportQty 的最小值
*/
private Integer maxBuildQty;
/**
* 自制物料明细物料编码非 009 开头
*/
private List<MaterialItem> selfMadeMaterials;
/**
* 采购物料明细物料编码以 009 开头
*/
private List<MaterialItem> purchaseMaterials;
}

View File

@ -0,0 +1,13 @@
package com.ruoyi.system.domain.dto.buildcapacity;
import lombok.Data;
@Data
public class CalcInfo {
private Integer availableQty;
private Integer finalAvailableQty;
private Integer canSupportQty;
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.system.domain.dto.buildcapacity;
import lombok.Data;
@Data
public class MaterialItem {
private String materialCode;
private String materialName;
private Integer requiredQty;
private String material;
private Double singleWeight;
private Double totalWeight;
private String remark;
private String batchQuantity;
private StockInfo stock;
private CalcInfo calc;
private StockStatus status;
}

View File

@ -0,0 +1,27 @@
package com.ruoyi.system.domain.dto.buildcapacity;
import lombok.Data;
@Data
public class StockInfo {
/**
* 即时库存当前可用库存台账数量
*/
private Integer onHandQty;
/**
* 采购未入库数量
*/
private Integer poNotInQty;
/**
* 生产订单未入库数量
*/
private Integer moNotInQty;
/**
* 生产订单未领料数量
*/
private Integer moNotPickQty;
}

View File

@ -0,0 +1,6 @@
package com.ruoyi.system.domain.dto.buildcapacity;
public enum StockStatus {
OK,
SHORTAGE
}

View File

@ -1,6 +1,8 @@
package com.ruoyi.system.domain.dto.excuteDrawing;
import lombok.Data;
import java.util.List;
@Data
public class ProductInfo {
//型号名称
@ -11,4 +13,8 @@ public class ProductInfo {
private String number;
//变量信息
private DataInfo vars;
//是否保留零件图
private boolean preservepartdrawing;
//企标图子件信息
private List<Subparts> subparts;
}

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

@ -108,4 +108,16 @@ public class FigureSaveVo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date uploadTime;
/**
* 创建人
*/
private String createBy;
/**
* 更新人
*/
private String updateBy;
}

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

@ -32,6 +32,12 @@ public class PlanOrderVo {
@ExcelProperty(value = "生产令号")
@JsonProperty("F_HBYT_SCLH")
private String fHbytSclh;
/**
* 生产令号
*/
@ExcelProperty(value = "生产令号")
@JsonProperty("F_HBYT_XMH")
private String fHbytXmh;
/**
* 生产订单编号

View File

@ -44,7 +44,11 @@ public class ProcessOrderProVo {
@ExcelProperty(value = "项目名称")
private String productionName;
/**
* 是否可以下载
*/
@ExcelProperty(value = "是否可以下载")
private Integer isDownload;
/**
* 计划结束时间
*/
@ -185,4 +189,10 @@ public class ProcessOrderProVo {
*/
private Long delayDay;
/**
* 工艺计划表钉钉发送次数
*/
@ExcelProperty(value = "工艺计划表发送次数")
private Integer routePlanSendCount;
}

View File

@ -86,16 +86,16 @@ public class ProductionOrderVo {
@ExcelProperty(value = "上级部件图号")
private String parentDrawingNo;
/**
* 主产品图号
*/
@ExcelProperty(value = "主产品图号")
private String mainProducts;
/**
* 主产品名称
*/
@ExcelProperty(value = "主产品名称")
private String mainProductsName;
private String mainName;
/**
* 主产品图号
*/
@ExcelProperty(value = "主产品图号")
private String mainPart;
}

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

@ -50,6 +50,11 @@ public class SfcOperationPlanningMainVo {
*/
@ExcelProperty(value = "生产令号")
private String hbytSclh;
/**
* 项目号
*/
@ExcelProperty(value = "项目号")
private String fHbytXmh;;
/**
* 产品编码

View File

@ -19,6 +19,13 @@ public class FSubEntity {
@JsonProperty("FOperNumber")
private Long FOperNumber;
/**
* 加工车间部门 {@link F_HBYT_RKCK} 相同写法JSON
* {@code "FDepartmentId": { "FNumber": "018" }}对应金蝶字段路径 {@code FDepartmentId.FNumber}
*/
@JsonProperty("FWorkShopID")
private FWorkShopID FWorkShopID;
@JsonProperty("F_HBYT_ZYRY")
private String F_HBYT_ZYRY;
@ -31,6 +38,12 @@ public class FSubEntity {
@JsonProperty("F_HBYT_RKCK")
private F_HBYT_RKCK F_HBYT_RKCK;
@Data
public static class FWorkShopID {
@JsonProperty("FNUMBER")
private String FNUMBER;
}
@Data
public static class F_HBYT_RKCK {
@JsonProperty("FNUMBER")

View File

@ -20,9 +20,10 @@ public class Model {
@JsonProperty("FPlanFinishTime")
private Date FPlanFinishTime;
@JsonProperty("FEntity")
private List<FEntity> FEntity = new ArrayList<>();
// getters and setters
}

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

@ -4,6 +4,10 @@ import com.ruoyi.system.domain.ProductionOrder;
import com.ruoyi.system.domain.vo.ProductionOrderVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 生产订单Mapper接口
@ -14,4 +18,23 @@ import org.apache.ibatis.annotations.Delete;
public interface ProductionOrderMapper extends BaseMapperPlus<ProductionOrderMapper, ProductionOrder, ProductionOrderVo> {
@Delete("DELETE FROM production_order where production_order_no = #{productionOrderNo}")
void deleteWithProCode(String productionOrderNo);
@Select("SELECT DISTINCT production_order_no " +
"FROM production_order " +
"WHERE production_order_no IS NOT NULL " +
" AND production_order_no <> '' " +
" AND (#{keyword} IS NULL OR #{keyword} = '' OR production_order_no LIKE CONCAT('%', #{keyword}, '%')) " +
"ORDER BY production_order_no DESC " +
"LIMIT #{limit}")
List<String> selectDistinctProductionOrderNos(@Param("keyword") String keyword, @Param("limit") Integer limit);
/**
* 按图号批量查询单重
*/
List<ProductionOrder> selectWeightByDrawingNos(@Param("drawingNos") List<String> drawingNos);
/**
* 按物料编码批量查询工艺路线单重
*/
List<ProductionOrder> selectDiscWeightByMaterialCodes(@Param("materialCodes") List<String> materialCodes);
}

View File

@ -542,6 +542,298 @@ public class JdUtil {
return 0.0;
}
/**
* 金蝶报表部分数值列以字符串返回且可能含千分位逗号 1,176需规范化后再转 BigDecimal
*/
private static String normalizeKingdeeNumericString(String raw) {
if (raw == null) {
return "";
}
return raw.trim()
.replace(",", "")
.replace("", "")
.replace("\u00A0", "")
.trim();
}
private static BigDecimal getBigDecimalFromJsonArray(JsonArray array, int index) {
if (array.size() <= index || array.get(index).isJsonNull()) {
return null;
}
JsonElement el = array.get(index);
String raw;
if (el.isJsonPrimitive() && el.getAsJsonPrimitive().isNumber()) {
raw = el.getAsJsonPrimitive().getAsString();
} else {
raw = el.getAsString();
}
if (raw == null || raw.isEmpty()) {
return null;
}
String value = normalizeKingdeeNumericString(raw);
if (value.isEmpty()) {
return null;
}
try {
return new BigDecimal(value);
} catch (NumberFormatException e) {
log.warn("报表数量解析失败(规范化后仍非法): raw={} normalized={}", raw, value);
return null;
}
}
/**
* 工序汇报汇总报表系统报表 GetSysReportData
* FieldKeys 顺序需与 {@link KingdeeOperationReportSumRowDTO} 字段一致默认 11
*
* @param formId 报表 FormId金蝶报表属性中查看
* @param fieldKeys 输出列逗号分隔
* @param beginDateTime FBeginDate 2026-04-10 00:00:00
* @param endDateTime FEndDate 2026-05-10 23:59:59
* @param processOrgNumber 加工组织 FNumber 100
* @param timeUnit Model.FTimeUnit B 按日
* @param moBillNo 可选单个生产订单号过滤 FMOBillNo
* @param limitPerPage 每页 Limit内部会分页累加
*/
public static List<KingdeeOperationReportSumRowDTO> getOperationReportSumRpt(
String formId,
String fieldKeys,
String beginDateTime,
String endDateTime,
String processOrgNumber,
String timeUnit,
String moBillNo,
int limitPerPage) {
List<KingdeeOperationReportSumRowDTO> all = new ArrayList<>();
if (formId == null || formId.isEmpty()) {
log.warn("工序汇报汇总报表 FormId 为空");
return all;
}
int limit = Math.min(Math.max(limitPerPage, 1), 10000);
K3CloudApi client = new K3CloudApi();
Gson gson = new Gson();
JsonObject template = new JsonObject();
template.addProperty("FieldKeys", fieldKeys != null && !fieldKeys.isEmpty() ? fieldKeys
: "FDEPARTMENTID,FDATE,FMOBillNo,FOpOper,FWORKCENTERID,FPROCESSID,FPRODUCTNUMBER,FMATERIALNAME,FPRDFINISHQTY,FPRDQUAQTY,FPRDFAILQTY");
template.addProperty("SchemeId", "");
template.addProperty("IsVerifyBaseDataField", "true");
JsonObject model = new JsonObject();
JsonObject fProcessOrgId = new JsonObject();
fProcessOrgId.addProperty("FNumber", processOrgNumber != null && !processOrgNumber.isEmpty() ? processOrgNumber : "100");
model.add("FProcessOrgId", fProcessOrgId);
model.addProperty("FBeginDate", beginDateTime);
model.addProperty("FEndDate", endDateTime);
model.addProperty("FTimeUnit", timeUnit != null && !timeUnit.isEmpty() ? timeUnit : "B");
template.add("Model", model);
JsonArray filterString = new JsonArray();
if (moBillNo != null && !moBillNo.trim().isEmpty()) {
JsonObject f = new JsonObject();
f.addProperty("Left", "");
f.addProperty("FieldName", "FMOBillNo");
f.addProperty("Compare", "67");
f.addProperty("Value", moBillNo.trim());
f.addProperty("Right", "");
f.addProperty("Logic", 0);
filterString.add(f);
}
template.add("FilterString", filterString);
int startRow = 0;
try {
while (true) {
JsonObject page = gson.fromJson(template.toString(), JsonObject.class);
page.addProperty("StartRow", startRow);
page.addProperty("Limit", limit);
String resultJson = client.getSysReportData(formId, page.toString());
if (resultJson == null || resultJson.isEmpty()) {
log.warn("工序汇报汇总报表返回空 formId={} startRow={}", formId, startRow);
break;
}
JsonObject root = new JsonParser().parse(resultJson).getAsJsonObject();
if (!root.has("Result")) {
log.warn("工序汇报汇总报表无 Result 节点: {}", trunc(resultJson));
break;
}
JsonObject result = root.getAsJsonObject("Result");
if (result.has("ResponseStatus")) {
JsonObject rs = result.getAsJsonObject("ResponseStatus");
if (rs.has("IsSuccess") && !rs.get("IsSuccess").getAsBoolean()) {
log.error("工序汇报汇总报表业务失败: {}", trunc(resultJson));
break;
}
}
if (!result.has("Rows")) {
break;
}
JsonArray rows = result.getAsJsonArray("Rows");
if (rows == null || rows.size() == 0) {
break;
}
for (JsonElement rowElement : rows) {
if (rowElement == null || rowElement.isJsonNull() || !rowElement.isJsonArray()) {
continue;
}
JsonArray row = rowElement.getAsJsonArray();
KingdeeOperationReportSumRowDTO dto = mapOperationReportSumRow(row);
all.add(dto);
}
if (rows.size() < limit) {
break;
}
startRow += limit;
}
} catch (Exception e) {
log.error("工序汇报汇总报表调用异常 formId={}", formId, e);
}
return all;
}
private static KingdeeOperationReportSumRowDTO mapOperationReportSumRow(JsonArray row) {
KingdeeOperationReportSumRowDTO dto = new KingdeeOperationReportSumRowDTO();
dto.setDepartmentId(getStringFromJsonArray(row, 0));
dto.setReportDate(getStringFromJsonArray(row, 1));
dto.setMoBillNo(getStringFromJsonArray(row, 2));
dto.setOpOper(getStringFromJsonArray(row, 3));
dto.setWorkCenterId(getStringFromJsonArray(row, 4));
dto.setProcessId(getStringFromJsonArray(row, 5));
dto.setProductNumber(getStringFromJsonArray(row, 6));
dto.setMaterialName(getStringFromJsonArray(row, 7));
dto.setFinishQty(getBigDecimalFromJsonArray(row, 8));
dto.setQuaQty(getBigDecimalFromJsonArray(row, 9));
dto.setFailQty(getBigDecimalFromJsonArray(row, 10));
return dto;
}
private static String trunc(String s) {
if (s == null) {
return "";
}
return s.length() > 500 ? s.substring(0, 500) + "..." : s;
}
/**
* 工序委外转移报表系统报表 GetSysReportData
* ModelFProOrgIdFStartDateFFinishDateFDocumentStatus
* Result 可能含顶层 {@code IsSuccess} ResponseStatus 并存
*/
public static List<KingdeeSubcontractTransferRowDTO> getSubcontractTransferRpt(
String formId,
String fieldKeys,
String startDateTime,
String finishDateTime,
String proOrgNumber,
String documentStatus,
String productOrderCode,
int limitPerPage) {
List<KingdeeSubcontractTransferRowDTO> all = new ArrayList<>();
if (formId == null || formId.isEmpty()) {
log.warn("工序委外转移报表 FormId 为空");
return all;
}
int limit = Math.min(Math.max(limitPerPage, 1), 10000);
K3CloudApi client = new K3CloudApi();
Gson gson = new Gson();
JsonObject template = new JsonObject();
template.addProperty("FieldKeys", fieldKeys != null && !fieldKeys.isEmpty() ? fieldKeys
: "FProductNumber,FProductName,FProviderName,FProductOrderCodes,FDates,FShiftTaskName,FLeaveQty,FEnterQty,FQualifiedQty");
template.addProperty("SchemeId", "");
template.addProperty("IsVerifyBaseDataField", "true");
JsonObject model = new JsonObject();
JsonObject fProOrgId = new JsonObject();
fProOrgId.addProperty("FNumber", proOrgNumber != null && !proOrgNumber.isEmpty() ? proOrgNumber : "100");
model.add("FProOrgId", fProOrgId);
model.addProperty("FStartDate", startDateTime);
model.addProperty("FFinishDate", finishDateTime);
model.addProperty("FDocumentStatus", documentStatus != null && !documentStatus.isEmpty() ? documentStatus : "C");
template.add("Model", model);
JsonArray filterString = new JsonArray();
if (productOrderCode != null && !productOrderCode.trim().isEmpty()) {
JsonObject f = new JsonObject();
f.addProperty("Left", "");
f.addProperty("FieldName", "FProductOrderCodes");
f.addProperty("Compare", "67");
f.addProperty("Value", productOrderCode.trim());
f.addProperty("Right", "");
f.addProperty("Logic", 0);
filterString.add(f);
}
template.add("FilterString", filterString);
int startRow = 0;
try {
while (true) {
JsonObject page = gson.fromJson(template.toString(), JsonObject.class);
page.addProperty("StartRow", startRow);
page.addProperty("Limit", limit);
String resultJson = client.getSysReportData(formId, page.toString());
if (resultJson == null || resultJson.isEmpty()) {
log.warn("工序委外转移报表返回空 formId={} startRow={}", formId, startRow);
break;
}
JsonObject root = new JsonParser().parse(resultJson).getAsJsonObject();
if (!root.has("Result")) {
log.warn("工序委外转移报表无 Result: {}", trunc(resultJson));
break;
}
JsonObject result = root.getAsJsonObject("Result");
if (result.has("IsSuccess") && !result.get("IsSuccess").getAsBoolean()) {
log.error("工序委外转移报表 IsSuccess=false: {}", trunc(resultJson));
break;
}
if (result.has("ResponseStatus")) {
JsonObject rs = result.getAsJsonObject("ResponseStatus");
if (rs.has("IsSuccess") && !rs.get("IsSuccess").getAsBoolean()) {
log.error("工序委外转移报表 ResponseStatus 失败: {}", trunc(resultJson));
break;
}
}
if (!result.has("Rows")) {
break;
}
JsonArray rows = result.getAsJsonArray("Rows");
if (rows == null || rows.size() == 0) {
break;
}
for (JsonElement rowElement : rows) {
if (rowElement == null || rowElement.isJsonNull() || !rowElement.isJsonArray()) {
continue;
}
JsonArray row = rowElement.getAsJsonArray();
all.add(mapSubcontractTransferRow(row));
}
if (rows.size() < limit) {
break;
}
startRow += limit;
}
} catch (Exception e) {
log.error("工序委外转移报表调用异常 formId={}", formId, e);
}
return all;
}
private static KingdeeSubcontractTransferRowDTO mapSubcontractTransferRow(JsonArray row) {
KingdeeSubcontractTransferRowDTO dto = new KingdeeSubcontractTransferRowDTO();
dto.setProductNumber(getStringFromJsonArray(row, 0));
dto.setProductName(getStringFromJsonArray(row, 1));
dto.setProviderName(getStringFromJsonArray(row, 2));
dto.setProductOrderCodes(getStringFromJsonArray(row, 3));
dto.setDocumentDate(getStringFromJsonArray(row, 4));
dto.setShiftTaskName(getStringFromJsonArray(row, 5));
dto.setLeaveQty(getBigDecimalFromJsonArray(row, 6));
dto.setEnterQty(getBigDecimalFromJsonArray(row, 7));
dto.setQualifiedQty(getBigDecimalFromJsonArray(row, 8));
return dto;
}
/**
* 查询生产订单单据体
* 查询
@ -1598,167 +1890,6 @@ public class JdUtil {
}
}
//新增父级物料
public static int loadChengPinMaterialPreservation(BomDetails bomDetail, Double fbWorkTime) {
K3CloudApi client = new K3CloudApi();
// 创建一个空的JsonObject
JsonObject json = new JsonObject();
// 添加IsAutoSubmitAndAudit字段
json.addProperty("IsAutoSubmitAndAudit", "true");
// 创建Model对象并加入JsonObject
JsonObject model = new JsonObject();
json.add("Model", model);
// 添加Model字段
model.addProperty("FMATERIALID", 0);
if (!(bomDetail.getDanZhong() == null)) {
model.addProperty("F_HBYT_DZ", bomDetail.getDanZhong());
}
model.addProperty("FNumber", bomDetail.getFNumber());
model.addProperty("FName", bomDetail.getFName());
// 创建FMaterialGroup对象并加入Model
JsonObject fMaterialGroup = new JsonObject();
fMaterialGroup.addProperty("FNumber", "A000106");
model.add("FMaterialGroup", fMaterialGroup);
model.addProperty("FIsHandleReserve", true);
// 创建SubHeadEntity对象并加入Model
JsonObject subHeadEntity = new JsonObject();
model.add("SubHeadEntity", subHeadEntity);
subHeadEntity.addProperty("FErpClsID", "2");
subHeadEntity.addProperty("FFeatureItem", "1");
// 创建FCategoryID对象并加入SubHeadEntity
JsonObject fCategoryID = new JsonObject();
fCategoryID.addProperty("FNumber", "CHLB05_SYS");// 产成品
subHeadEntity.add("FCategoryID", fCategoryID);
// 创建FTaxRateId对象并加入SubHeadEntity
JsonObject fTaxRateId = new JsonObject();
fTaxRateId.addProperty("FNUMBER", "SL02_SYS");
subHeadEntity.add("FTaxRateId", fTaxRateId);
// 创建FBaseUnitId对象并加入SubHeadEntity
JsonObject fBaseUnitId = new JsonObject();
fBaseUnitId.addProperty("FNumber", "008");
subHeadEntity.add("FBaseUnitId", fBaseUnitId);
subHeadEntity.addProperty("FIsPurchase", true);
subHeadEntity.addProperty("FIsInventory", true);
// 成品不允许委外
// subHeadEntity.addProperty("FIsSubContract", true);
subHeadEntity.addProperty("FIsSale", true);
subHeadEntity.addProperty("FIsProduce", true);
// 创建SubHeadEntity1对象并加入Model
JsonObject subHeadEntity1 = new JsonObject();
model.add("SubHeadEntity1", subHeadEntity1);
JsonObject fStoreUnitId = new JsonObject();
fStoreUnitId.addProperty("FNumber", "008");
subHeadEntity1.add("FStoreUnitID", fStoreUnitId);
subHeadEntity1.addProperty("FUnitConvertDir", "1");
// 创建FStockId对象并加入SubHeadEntity1
JsonObject fStockId = new JsonObject();
// 判断是产成品还是企标
String cangKu = "CK011";
fStockId.addProperty("FNumber", cangKu);
subHeadEntity1.add("FStockId", fStockId);
// 创建FCurrencyId对象并加入SubHeadEntity1
JsonObject fCurrencyId = new JsonObject();
fCurrencyId.addProperty("FNumber", "PRE001");
subHeadEntity1.add("FCurrencyId", fCurrencyId);
subHeadEntity1.addProperty("FIsSNPRDTracy", false);
subHeadEntity1.addProperty("FSNManageType", "1");
subHeadEntity1.addProperty("FSNGenerateTime", "1");
subHeadEntity1.addProperty("FBoxStandardQty", 0.0);
// 创建FPurchaseUnitId对象并加入SubHeadEntity1
JsonObject fPurchaseUnitId = new JsonObject();
fPurchaseUnitId.addProperty("FNumber", "008");
subHeadEntity1.add("FPurchaseUnitId", fPurchaseUnitId);
// 创建SubHeadEntity3对象并加入Model
JsonObject subHeadEntity3 = new JsonObject();
model.add("SubHeadEntity3", subHeadEntity3);
// 创建FPurchasePriceUnitId对象并加入SubHeadEntity3
JsonObject fPurchasePriceUnitId = new JsonObject();
fPurchasePriceUnitId.addProperty("FNumber", "008");
subHeadEntity3.add("FPurchasePriceUnitId", fPurchasePriceUnitId);
subHeadEntity3.addProperty("FIsQuota", false);
subHeadEntity3.addProperty("FQuotaType", "1");
// 创建SubHeadEntity6对象并加入Model 检验项
JsonObject subHeadEntity6 = new JsonObject();
model.add("SubHeadEntity6", subHeadEntity6);
subHeadEntity6.addProperty("FCheckProduct", true);
subHeadEntity6.addProperty("FCheckReturn", true);
// 创建SubHeadEntity5对象并加入Model
JsonObject subHeadEntity5 = new JsonObject();
model.add("SubHeadEntity5", subHeadEntity5);
// 创建FProduceUnitId对象并加入SubHeadEntity5
JsonObject fProduceUnitId = new JsonObject();
fProduceUnitId.addProperty("FNumber", "008");
subHeadEntity5.add("FProduceUnitId", fProduceUnitId);
// 创建FProduceBillType对象并加入SubHeadEntity5
JsonObject fProduceBillType = new JsonObject();
fProduceBillType.addProperty("FNUMBER", "SCDD05_SYS");
subHeadEntity5.add("FProduceBillType", fProduceBillType);
// 创建FBOMUnitId对象并加入SubHeadEntity5
JsonObject fBOMUnitId = new JsonObject();
fBOMUnitId.addProperty("FNumber", "008");
subHeadEntity5.add("FBOMUnitId", fBOMUnitId);
subHeadEntity5.addProperty("FIsMainPrd", true);
subHeadEntity5.addProperty("FIssueType", "1");
// 创建FPickStockId对象并加入SubHeadEntity5
JsonObject fPickStockId = new JsonObject();
fPickStockId.addProperty("FNumber", "CK012");
subHeadEntity1.add("FPickStockId", fPickStockId);
subHeadEntity5.addProperty("FOverControlMode", "1");
subHeadEntity5.addProperty("FStdLaborProcessTime", fbWorkTime);
subHeadEntity5.addProperty("FStandHourUnitId", "60");
subHeadEntity5.addProperty("FBackFlushType", "1");
String jsonData = json.toString();
System.out.println(jsonData);
try {
// 业务对象标识
String formId = "BD_MATERIAL";
// 调用接口
String resultJson = client.save(formId, jsonData);
// 用于记录结果
Gson gson = new Gson();
// 对返回结果进行解析和校验
RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
log.debug("接口返回结果: %s%n" + gson.toJson(repoRet.getResult()));
return 1;
} else {
MessageUtil.fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
log.error("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
return 0;
}
} catch (Exception e) {
MessageUtil.fail(e.getMessage());
return 0;
}
}
//查询物料 作用于更新到物料的 仓位 是否启用VMI
public static List<JdEntryVmi> getEntryID2(String materialCode) {
@ -3672,7 +3803,7 @@ public class JdUtil {
JsonObject json = new JsonObject();
json.addProperty("FormId", "SFC_OperationPlanning");
json.addProperty("FieldKeys",
"FID,FENTITY_FEntryID,FSubEntity_FDetailID,F_HBYT_SCLH,FMONumber,FProductId.FNumber,FProductName,FProSpecification,FBillNo,FOperNumber," +
"FID,FENTITY_FEntryID,FSubEntity_FDetailID,F_HBYT_SCLH,F_HBYT_XMH,FMONumber,FProductId.FNumber,FProductName,FProSpecification,FBillNo,FOperNumber," +
"FOperQty,FQualifiedQty,FTransOutQty,FUnqualifiedQty,FWastageQty,FTransInQty,FDepartmentId.FName,FWorkCenterId.FName," +
"FProcessId.FName,F_HBYT_ZYRY,FOperStatus,FSeqPlanStartTime,FSeqPlanFinishTime,FOperPlanStartTime,FOperPlanFinishTime," +
"FOptCtrlCodeId.FName,FKeyOper,FActivity1Name,FOperDescription,FPlanStartTime,FPlanFinishTime,F_HBYT_SB");
@ -3811,6 +3942,7 @@ public class JdUtil {
OperationPlanResultDTO resultDTO = new OperationPlanResultDTO();
resultDTO.setMoNumber(moNumber);
resultDTO.setBatchNo(firstItem.getFHbytSclh()); // 生产令号
resultDTO.setProjectNo(firstItem.getFHbytXmh());
resultDTO.setProductCode(firstItem.getFProductIdFNumber());
resultDTO.setProductName(firstItem.getFProductName());
resultDTO.setBillNo(firstItem.getFBillNo());

View File

@ -85,7 +85,10 @@ public class JsonConverter {
processRouteDTO.getWorkCenter().equals("铆焊工段") ||
processRouteDTO.getWorkCenter().equals("委外中心")) {
department.setFNUMBER("006");
} else {
} else if (processRouteDTO.getWorkCenter().equals("下料工段")||
processRouteDTO.getWorkCenter().equals("焊接工段")){
department.setFNUMBER("018");
}else{
department.setFNUMBER("007");
}
subEntity.setFDepartmentId(department);

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

@ -6,9 +6,13 @@ import com.ruoyi.system.domain.vo.ImMaterialVo;
import com.ruoyi.system.domain.bo.ImMaterialBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.domain.dto.buildcapacity.BuildCapacityDTO;
import com.ruoyi.system.domain.dto.productionorder.ProductionOrderMaterialsDTO;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 物料检索Service接口
@ -66,4 +70,16 @@ public interface IImMaterialService {
Boolean insertJDMaterial(List<ImMaterial> materialList);
Boolean updateByFMid(List<ImMaterial> imMaterials);
BuildCapacityDTO queryBuildCapacity(String productionOrderNo, String productCode, String productName);
List<BuildCapacityDTO> queryBuildCapacityByProductionOrderNo(String productionOrderNo);
ProductionOrderMaterialsDTO queryProductionOrderMaterials(String productionOrderNo, String productCode);
/**
* 分页扫描 im_material按物料编码批量解析单重production_order process_route并写回
* 仅解析到单重且与库中值不同时更新 single_weightmodify_dateupdate_time
*/
R<Map<String, Object>> refreshImMaterialSingleWeightFromOrders();
}

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

@ -99,6 +99,20 @@ public interface IProcessOrderProService {
*/
void pushDingTalkCard(Long id);
/**
* 生成工艺计划表 Excel出图场景模板并发送至钉钉机器人配置的接收人
*
* @param id 项目令号主键 ID与列表/详情中的 id 一致
*/
R<Void> sendProcessRoutePlanExcel(Long id);
/**
* 查询工艺计划表钉钉已成功发送次数供前端按钮等展示
*
* @param id 项目令号主键 ID
*/
R<Integer> getRoutePlanSendCount(Long id);
/**
* 刷新并计算项目延期状态
*/

View File

@ -1,65 +1,89 @@
package com.ruoyi.system.service;
import com.ruoyi.system.domain.ProductionOrder;
import com.ruoyi.system.domain.bo.FigureSaveBo;
import com.ruoyi.system.domain.bo.ProcessOrderProBo;
import com.ruoyi.system.domain.vo.ProductionOrderVo;
import com.ruoyi.system.domain.bo.ProductionOrderBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 生产订单Service接口
*
* @author 田志阳
* @date 2024-10-20
*/
public interface IProductionOrderService {
/**
* 查询生产订单
*/
ProductionOrderVo queryById(Long id);
/**
* 查询生产订单列表
*/
TableDataInfo<ProductionOrderVo> queryPageList(ProductionOrderBo bo, PageQuery pageQuery);
/**
* 查询生产订单列表
*/
List<ProductionOrderVo> queryList(ProductionOrderBo bo);
/**
* 新增生产订单
*/
Boolean insertByBo(ProductionOrderBo bo);
/**
* 修改生产订单
*/
Boolean updateByBo(ProductionOrderBo bo);
/**
* 校验并批量删除生产订单信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
void loadProductionOrder(List<ProductionOrderVo> productionOrderVoList);
List<ProductionOrder> getGroupWeld(ProductionOrderVo productionOrderVo);
List<ProductionOrder> getGroupWeldSubset(ProductionOrderVo productionOrderVo);
Boolean executDrawing(ProcessOrderProBo orderPro);
List<ProductionOrder> selectByProCode(String productionOrderNo);
/**
* 是否属于外购件
*/
Boolean isPurchas(String proCode,String materialCode);
}
package com.ruoyi.system.service;
import com.ruoyi.system.domain.ProductionOrder;
import com.ruoyi.system.domain.bo.FigureSaveBo;
import com.ruoyi.system.domain.bo.ProcessOrderProBo;
import com.ruoyi.system.domain.dto.productionorder.ProductionOrderWeightExportDTO;
import com.ruoyi.system.domain.dto.productionorder.ProductionOrderWeightImportDTO;
import com.ruoyi.system.domain.vo.ProductionOrderVo;
import com.ruoyi.system.domain.bo.ProductionOrderBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 生产订单Service接口
*
* @author 田志阳
* @date 2024-10-20
*/
public interface IProductionOrderService {
/**
* 查询生产订单
*/
ProductionOrderVo queryById(Long id);
/**
* 查询生产订单列表
*/
TableDataInfo<ProductionOrderVo> queryPageList(ProductionOrderBo bo, PageQuery pageQuery);
/**
* 查询生产订单列表
*/
List<ProductionOrderVo> queryList(ProductionOrderBo bo);
/**
* 新增生产订单
*/
Boolean insertByBo(ProductionOrderBo bo);
/**
* 修改生产订单
*/
Boolean updateByBo(ProductionOrderBo bo);
/**
* 校验并批量删除生产订单信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
void loadProductionOrder(List<ProductionOrderVo> productionOrderVoList);
List<ProductionOrder> getGroupWeld(ProductionOrderVo productionOrderVo);
List<ProductionOrder> getGroupWeldSubset(ProductionOrderVo productionOrderVo);
Boolean executDrawing(ProcessOrderProBo orderPro);
List<ProductionOrder> selectByProCode(String productionOrderNo);
/**
* 是否属于外购件
*/
Boolean isPurchas(String proCode,String materialCode);
/**
* 查询生产令号列表去重用于下拉选择
*/
List<String> selectProductionOrderNoOptions(String keyword, Integer limit);
/**
* 通过物料编码匹配系统单重未匹配数据会跳过
*/
List<ProductionOrderWeightExportDTO> matchSingleWeightByMaterialCode(List<ProductionOrderWeightImportDTO> rows);
/**
* 按物料图号/编码解析单重 production_order.drawing_no最新一条且 single_weight 非空 process_route.material_code disc_weight
* 未查到返回 null
*/
Double resolveSingleWeightByMaterialCode(String materialCode);
/**
* 批量解析单重内部 IN 分批仅返回能查到单重的编码查不到的编码不出现在 Map
*/
Map<String, Double> resolveSingleWeightByMaterialCodes(Collection<String> materialCodes);
}

Some files were not shown because too many files have changed in this diff Show More