Compare commits
3 Commits
1be74815a2
...
ac596588b5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac596588b5 | ||
|
|
db73bbc7d0 | ||
| c71f6ecc98 |
34
.idea/compiler.xml
Normal file
34
.idea/compiler.xml
Normal 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
31
.idea/encodings.xml
Normal 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
25
.idea/jarRepositories.xml
Normal 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
17
.idea/misc.xml
Normal 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
6
.idea/vcs.xml
Normal 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
4
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "interactive",
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
||||
128
docs/plans/生产令号综合看板报表.md
Normal file
128
docs/plans/生产令号综合看板报表.md
Normal file
@ -0,0 +1,128 @@
|
||||
---
|
||||
name: 生产令号综合看板报表
|
||||
overview: 新增一个以生产令号为顶层索引的聚合接口(及可选导出),串联 SQL Server 订单追溯(含采购线与生产线)、MySQL 工序计划主从表、以及工序汇报/委外两张快照表;在令号维度汇总生产入库、采购订单入库等指标。工序汇报与委外依赖快照数据时需约定日期过滤策略。
|
||||
todos:
|
||||
- id: bo-vo
|
||||
content: 新增 KingdeeProductionBoardQueryBo / 聚合 VO(令号→订单→计划/追溯/快照;令号维度的生产入库汇总 + 采购入库汇总)
|
||||
status: pending
|
||||
- id: service-merge
|
||||
content: 实现 KingdeeProductionBoardService:trace → 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
374986
logs/ruoyi-xxl-job-admin.log
374986
logs/ruoyi-xxl-job-admin.log
File diff suppressed because it is too large
Load Diff
5474
logs/sys-console.log
5474
logs/sys-console.log
File diff suppressed because it is too large
Load Diff
4114
logs/sys-error.log
4114
logs/sys-error.log
File diff suppressed because it is too large
Load Diff
@ -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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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 - 跳过方案申请表 BPMS:eventType=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}
|
||||
|
||||
@ -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 -->
|
||||
|
||||
@ -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的正确性");
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 常用 3306,8.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
|
||||
|
||||
@ -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
|
||||
*/
|
||||
|
||||
@ -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);
|
||||
//消费成功
|
||||
|
||||
@ -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,依次为 title、markdown 全文)。
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
}
|
||||
@ -934,7 +934,14 @@ public class DingUtil {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 使用 Token 初始化账号 Client(OA 审批 / 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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<>();
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package com.ruoyi.common.dingding.workflow;
|
||||
|
||||
/**
|
||||
* 技术方案申请表审批通过后的扩展点(如落库、后续 PLM 推送等)
|
||||
*/
|
||||
public interface SchemeApplicationApprovedSink {
|
||||
|
||||
void onSchemeApplicationApproved(SchemeApplicationApprovedPayload payload);
|
||||
}
|
||||
@ -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("跳过方案申请表 BPMS:eventType={}, 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 事件缺少 processInstanceId,payload={}", 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));
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -9,12 +9,14 @@ spring.boot.admin.client:
|
||||
username: ruoyi
|
||||
password: 123456
|
||||
|
||||
--- # 数据库配置
|
||||
--- # 数据库配置(与 ruoyi-admin dev 同一实例;本机 5.7 多为 3306,MySQL8 多为 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:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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() {
|
||||
}
|
||||
}
|
||||
@ -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")
|
||||
|
||||
@ -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("更新成功");
|
||||
}
|
||||
|
||||
|
||||
@ -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 单重(按物料编码解析);仅单重变化时更新 updateTime、modify_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() {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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(可多个)、purchaseBillNo、moBillNo、materialNumber。
|
||||
* 多个生产令号:{@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);
|
||||
}
|
||||
}
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
@ -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 JSON;body 示例:
|
||||
* <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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新生产订单的时间
|
||||
*/
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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 -> 中文标题 name(JSON),与 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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -66,6 +66,14 @@ public class ProductionOrder extends BaseEntity {
|
||||
* 部件图号
|
||||
*/
|
||||
private String parentDrawingNo;
|
||||
/**
|
||||
* 主产品名称
|
||||
*/
|
||||
private String mainName;
|
||||
/**
|
||||
* 主产品图号
|
||||
*/
|
||||
private String mainPart;
|
||||
/**
|
||||
* 批次数量
|
||||
*/
|
||||
|
||||
@ -42,6 +42,9 @@ public class SfcOperationPlanningMain extends BaseEntity {
|
||||
* 生产令号
|
||||
*/
|
||||
private String hbytSclh;
|
||||
|
||||
@TableField("hbyt_xmh")
|
||||
private String fHbytXmh;
|
||||
/**
|
||||
* 产品编码
|
||||
*/
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -81,6 +81,10 @@ public class ProcessOrderProBo extends BaseEntity {
|
||||
*/
|
||||
private List<String> isEnterpriseStandardList;
|
||||
|
||||
/**
|
||||
* 是否可以下载
|
||||
*/
|
||||
private Integer isDownload;
|
||||
|
||||
private String drawingPath;
|
||||
/**
|
||||
|
||||
@ -64,4 +64,14 @@ public class ProductionOrderBo extends BaseEntity {
|
||||
* 批次数量
|
||||
*/
|
||||
private String batchQuantity;
|
||||
|
||||
/**
|
||||
* 主产品名称
|
||||
*/
|
||||
private String mainName;
|
||||
|
||||
/**
|
||||
* 主产品图号
|
||||
*/
|
||||
private String mainPart;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
/**
|
||||
* 产品编码
|
||||
*/
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -18,6 +18,8 @@ public class OperationPlanResultDTO {
|
||||
*/
|
||||
private String batchNo;
|
||||
|
||||
private String projectNo;
|
||||
|
||||
/**
|
||||
* 产品编码
|
||||
*/
|
||||
|
||||
@ -25,7 +25,11 @@ public class OperationPlanningDTO {
|
||||
* 生产令号
|
||||
*/
|
||||
@JsonProperty("F_HBYT_SCLH")
|
||||
private String fHbytSclh;
|
||||
private String fHbytSclh;/**
|
||||
* 生产令号
|
||||
*/
|
||||
@JsonProperty("F_HBYT_XMH")
|
||||
private String fHbytXmh;
|
||||
|
||||
/**
|
||||
* 生产订单编号
|
||||
|
||||
@ -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 切分) ----------
|
||||
|
||||
/**
|
||||
* 单据日期 < boardReportDay 的委外<strong>发出</strong>数量累计(多行合并)。
|
||||
* 仅当本工序被识别为委外/外协相关且匹配到报表行时有值,否则为 null。
|
||||
*/
|
||||
private Double subcontractLeaveQtyBeforeReportDay;
|
||||
|
||||
/**
|
||||
* 单据日期 < boardReportDay 的委外<strong>接收</strong>数量累计。
|
||||
*/
|
||||
private Double subcontractEnterQtyBeforeReportDay;
|
||||
|
||||
/**
|
||||
* 单据日期 < 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;
|
||||
|
||||
/**
|
||||
* 加工车间
|
||||
*/
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
package com.ruoyi.system.domain.dto.buildcapacity;
|
||||
|
||||
public enum StockStatus {
|
||||
OK,
|
||||
SHORTAGE
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -108,4 +108,16 @@ public class FigureSaveVo {
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date uploadTime;
|
||||
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private String updateBy;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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<>();
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
* 生产订单编号
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -50,6 +50,11 @@ public class SfcOperationPlanningMainVo {
|
||||
*/
|
||||
@ExcelProperty(value = "生产令号")
|
||||
private String hbytSclh;
|
||||
/**
|
||||
* 项目号
|
||||
*/
|
||||
@ExcelProperty(value = "项目号")
|
||||
private String fHbytXmh;;
|
||||
|
||||
/**
|
||||
* 产品编码
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -20,9 +20,10 @@ public class Model {
|
||||
@JsonProperty("FPlanFinishTime")
|
||||
private Date FPlanFinishTime;
|
||||
|
||||
|
||||
@JsonProperty("FEntity")
|
||||
private List<FEntity> FEntity = new ArrayList<>();
|
||||
|
||||
// getters and setters
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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> {
|
||||
}
|
||||
@ -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> {
|
||||
|
||||
}
|
||||
@ -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> {
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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)。
|
||||
* Model:FProOrgId、FStartDate、FFinishDate、FDocumentStatus。
|
||||
* 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());
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -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_weight、modify_date、update_time。
|
||||
*/
|
||||
R<Map<String, Object>> refreshImMaterialSingleWeightFromOrders();
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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);
|
||||
|
||||
/**
|
||||
* 刷新并计算项目延期状态
|
||||
*/
|
||||
|
||||
@ -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
Loading…
Reference in New Issue
Block a user