更新,工序计划
This commit is contained in:
parent
c71f6ecc98
commit
db73bbc7d0
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-05-18 08:34:03 [connection-pool-2-1] INFO c.d.o.a.s.n.w.WebsocketTransportConnector - [DingTalk] start websocket connection, uri=wss://wss-open-connection-union.dingtalk.com:443/connect
|
||||||
2026-04-12 05:53:20 [connection-pool-2-1] INFO c.d.o.a.s.n.w.WebsocketTransportConnector - [DingTalk] start websocket connection, uri=wss://wss-open-connection-union.dingtalk.com:443/connect
|
2026-05-18 08:34:03 [connection-pool-2-1] INFO c.d.o.a.s.n.core.DefaultSessionPool - [DingTalk] connection is established, connectionId=451fc31e-5251-11f1-8397-a2985f78c079
|
||||||
2026-04-12 05:53:20 [connection-pool-2-1] INFO c.d.o.a.s.n.core.DefaultSessionPool - [DingTalk] connection is established, connectionId=db091e00-35f0-11f1-a582-1a02b3fe6148
|
2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"970975bfc38c1a9acc74c573fec3aa02b216b77f","msg_signature":"970975bfc38c1a9acc74c573fec3aa02b216b77f","timestamp":"1779065001340","nonce":"5eVXd79A","encrypt":"NUUFVmiLTgmVB0EndP4sbmCVxfw9VsVqUWye/GTJHrVVYy6Y1lK8xytUwAug3WlujTvCNIGn4VmXdxMxA5ibBboZqZsqtWonuZn3LAGoDCzlldLwEw1jNbE/gLxH47lNWMIWfuTpxGr3fUCyga5CDZ6o/F3n1Vq2JhuA7tPt4ONqAYFfWaYWewNuHQFkXu02/6jOFGeVSKb+GUnORMjyPZFqbV/TTaKa/EzH0WRnqUiJrF8sxLtdjMF9UMC5QYNqk+1Nw0sjSjWxnJvyjaBgwPhNhXsQ4Y2CGupMcNw0h3QoQCxDcPDowLqF/zZv3PFKQMr0cxd5e1aJcl63pjzs6MlOIqg8patj3fLrtjD7+DfLSOpS3QIWR8v/pedaGoOXmj1AMJkN/yO2QvYADbzXk6ukz2d4jFEBy8OJNgmitI17mq7M+a7u0SDZoWWMV1Dxv51jH3YB1t4RoVmI1em4F3qjiISI7fzfkxx6l8KX3dunE7X63A51st5kl2FajKmIm8hSXP/qO85h/VyYLgeEqxTvzrbp6mCEhZnV8tfnmgq+gBfok7pDXe0Jfu39y5p6JFhUosMfDQMjE3rDXBfXXtU+eFqc0YonJ7+AsqNXAPmWyMypYBOfM3NvztLQd+gs12GcEUTz+hAh+pFx0s3QGsKbmqR2hk1NJLeMvXZt5NuPqwFCOQx98E944dLruJaxrifXgytWLcmpf4H6n0PKMxsbCuCJWVYjKT/b6FeD5SdZ3Qs+URbTwtBJeopbgubZUL4x61dG6dEEMC2grcNdZPoYSkO2JEz1tmOlSuCyOmYQqiAH9TjtBYI618py5EJ2Qo1mztMHrj8v3t7icCggQ9THoOyhZVgM9toEIkJS4bCEmw1Gd1sMhO6ofkfRzVTIdAn2cx1nstB5tZk7va8IEazfuHkYFuCbIL0GkC6gsXow0WtVqfGaU2QWI62g6m3IdmLRTkXqvIPzRzyYI4xmVy0zh7jDuOhSlbmBgsryL+I80l6df+pvf0UIApULkmGdlu/eNsyMK+UmFQaAKt0MX+m84OA3fKQkbldOslTmVE4="}
|
||||||
2026-04-12 09:00:00 [xxl-job, EmbedServer bizThreadPool-1241045652] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job regist JobThread success, jobId:2, handler:com.xxl.job.core.handler.impl.MethodJobHandler@625439ba[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$7d2c6330#updateMaterials]
|
2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"2c9565538e3b46b0b4a237002ead56cf","finishTime":1779065000000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1778925260000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101156217321}
|
||||||
2026-04-12 09:01:33 [xxl-job, JobThread-2-1775955600005] INFO com.xxl.job.core.thread.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[xxl-job, JobThread-2-1775955600005,10,main]
|
2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:30:00 [xxl-job, EmbedServer bizThreadPool-1113096576] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job regist JobThread success, jobId:2, handler:com.xxl.job.core.handler.impl.MethodJobHandler@625439ba[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$7d2c6330#updateMaterials]
|
2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMS:eventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false(整单请订阅 bpms_instance_change;仅任务且非 agree 时不会处理)
|
||||||
2026-04-12 09:31:33 [xxl-job, JobThread-2-1775957400018] INFO com.xxl.job.core.thread.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[xxl-job, JobThread-2-1775957400018,10,main]
|
2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO io.undertow - stopping server: Undertow - 2.2.24.Final
|
2026-05-18 08:43:24 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065004374, msg_signature=42b8de361debef89d9e3f9c1310c4e04879111c4, encrypt=gUj5T88XBoYpMP16dzERFNG51JJ9Cqcl62iy3AUxr+nDx/5f3mLxGazBzp/M8tIdYRnCAUAtlKEvTlIRQRq4Pw==, nonce=7ldI5OO6FjWCDipG}
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
|
2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"0a01e86c240e730fa0a807fcd280e4af58c21f2d","msg_signature":"0a01e86c240e730fa0a807fcd280e4af58c21f2d","timestamp":"1779065001503","nonce":"WD1WK2R7","encrypt":"Tu5FRnEDir4G3rKDZqB+CwBtFayooqRyv+X4/8RYUXuhLlLf4ZuZU2XDloKHEJd5bcMl59oPU6q3bQiuKQO4aZmmn85zju3lcLsBYn481tjIdrIFj0RLV5ra52HLfd7IJGdnFHlA12G8V6GnW5Lce0skcbar4GDK+X1lzMbD7iKIwCjkUqMZgMNAE7xRQBS5nyu6WZXdnD7AZx7SlxcFSf0dSDMt5yZj0v9382hVHpoQk2jq5UY+cAXPKmjzE6MScDZR65xoKiPq6e/tTPU3W+Sd4Q7i5ddAfQYZrvE7rOCEkXckUYrVGDPxYELdh3SGKj60mfNE/n/A8HNtHKyvsu4Y8beHyNzwoNUUxNvW5xDwZ2s7ujbTil+UWY4YNXBtHwao9F2Hm6iIo8rSIPt7LMXLSLgR0Xjq6h0tBOzxOVnGc96ItVpjIvNPyjf7/sM3xyLNiEhpU6CfuWo+XlraQbbh/hDBaV8LeQjtEGaYEFXI4/Y9IW3V6KReQAJp1wm+hKFSfltN7FtBggo8Zf2Aarak83gWZrCwTQYBPjI5IstGDgjS4XpeLDu6pVWXKvUng1lJP54FqoVe2cqKUl1Qz7uMt+fvyZQdQscalTXQTFdId1VGMOHPGnatxrsLhqCjgmNRivZNJtGp7fJ6dxllc0p3bHOF7Drov8OMsNbK+wXbg3bf6dTPRi+lVObeJvhTVvBKk/bIe1qaMSTLGKTcFsMzzkL5arspAgs6Rjly0rknzauKvzVBLQcuYAoeuiniH6cFZG5V5O3FMe+hZRoK5brFnobiSqnMLcRURhHqI+uKgeuf8HqQ8rVm2bUYL7ZyTIom2gFIsAQI+hsAD2sl37fJkf1ROis7p06eWPjtyqKmZG+gRM+FToqTcOe45BCw/YsT2ZiLwADX0uYpScME5LE8Zle9RPyTrH5Mja+eHhnmEpMtd5pZXQG/CbxdS6yY3XCNftpfVZuLRiDPcadlO3X59UlYkb5vh0QJ9mlsr8KL+2Gk4Vam1QgijODWTfnj"}
|
||||||
2026-04-12 09:48:11 [Thread-43] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
|
2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"964fc204bc6b4e5dbe5755eaff059ac9","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"研发技术人员确认提交方案","actualActionerId":"01190846452221394385","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779065001000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"01190846452221394385","taskId":101208140285}
|
||||||
2026-04-12 09:48:11 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry-remove success, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://192.168.5.200:9101/'}, registryResult:ReturnT [code=200, msg=null, content=null]
|
2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:11 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destroy.
|
2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
|
2026-05-18 08:43:32 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065012881, msg_signature=ab6aceaea6c6cc4e644fb72a91320cf7130b3711, encrypt=9Tr0a9j3S9w4F7gYre7ZtcRU5AQJCw6tu3eNoC0q8/jPLiPdYItqrmvyf2oKZpSXYnEchp3G1AzUdbLhZAHSAA==, nonce=7RSNMTEXkxiTN62l}
|
||||||
2026-04-12 09:48:11 [xxl-job, executor JobLogFileCleanThread] INFO c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy.
|
2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"bc8af64e15d2ef492a71df3a4a6078212a08a7d7","msg_signature":"bc8af64e15d2ef492a71df3a4a6078212a08a7d7","timestamp":"1779065014134","nonce":"XY2KoIR0","encrypt":"cNPeb19i9oVYsWDsZnsgrOBeHx7okf4Yy/QbVFm/Cf5ux3pFjko7ddE/c5tfjSF+7zgQjwQPnc/vkFBPuI34Dc9NQtB/4OAgqie4v9r72TgzSbffaFi0EK4AIlRXgtVmuaYQvJx1ur6v7m7Y07BMqsc+Sb2FyCZhKxipQ8rAmFGEqbDJre9q8fq0AQzKq5LfytGAZ5tg0TFxHQCUVC3vKlkJoinXr5LDaN/zWwlidQcuMwSHosBbt9rEKHWY6OY1miUoVeUD57CcgXRPULt+OwZnmqcvV3+SwLSYpoFpyITcYpDdccVtrySfDJRZaH+nb5x1dSb667Tb18Nve+YHYIprNV9FGijbNmqHl0tRUfEzjL5XrwuJAcmOgnMsV1Df5sMQ9Eiwdywfl6CbtRiCCAjny8aOJaVBcQe0xlCMx37e5jsJMHP80+8rQoPOExtIzSc9Lr+O5aZ38tsRhR6uOAiZJHq8mrr1GZRCZSnSz4uzY2h83/7+HmEbc2i5l1kF2GgjLY2mFLTktzJxm8/ISacokHrmdAS9YTIpNup2C88GcxxrpS0zSfqI/7qSUomSp2ZU2d6yZEymJvEGjTf8h9i3/y3xhoXlEj73E0V5M6JZn6qOr3c7gvs6oBX4Ynu8j0pO9OS9SfWAp7sl23kXbQB3Z/b0WzhKWFtQR+NMukCwPetC9CLtyTIwmRGQdXn46rPvUVEyXlZ8+R7Vl1FKJ6eY9h+5c0RJxMNUXnb/PrIE4K+tjdM5dwDqQ74FfwsFpJBt3GknYI93wmg/LbNxHYbaPKnvrGZBty1dDjdeRWByJSzrKwP9mVlSlBDTAIlVwvEyDVF25ewN0XKNWTx/W/MEiOaRdrWv+YuOpfOwS5zbuk2XUeokltp7xfPUCSJ336tANl1LtPwYFMc+YwmCSbMPaffgfCdMO3YnqLTjJ9SReMgjJkzvhQZCc7HPOErFApxEAaec0NAa8QzSWwemp2cOEBjHd/AxvNlaKfIgs+PgPXZPNy9vqQsh40jInQdv"}
|
||||||
2026-04-12 09:48:11 [xxl-job, executor TriggerCallbackThread] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destroy.
|
2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"964fc204bc6b4e5dbe5755eaff059ac9","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"研发技术人员确认提交方案","actualActionerId":"01190846452221394385","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779065001000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"01190846452221394385","taskId":101208140285}
|
||||||
2026-04-12 09:48:11 [Thread-42] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destroy.
|
2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.r.f.manager.ShutdownManager - ====关闭后台任务任务线程池====
|
2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
|
2026-05-18 08:43:39 [XNIO-1 task-5] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065019054, msg_signature=3951e5c0798ac44d531923db6ad4da2fbe1aa6ed, encrypt=cuXPbB+qCqLqKNssY8xetfQPEa4/vsFlfimLFBn586xmaD6bqjxsTHWvi1jVpd5h2CFChCtqgniMIqueHrPdhw==, nonce=AfUcHUQD1efB4klY}
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Shutdown initiated...
|
2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"151fc508f6363c520ea6b9192cb23a73b1fd1090","msg_signature":"151fc508f6363c520ea6b9192cb23a73b1fd1090","timestamp":"1779065014023","nonce":"PxO1oGmx","encrypt":"FBKoB/nJUq8QLTEfavJwaMysmUAa0+5HacszHptfORq/bsgYOM26mx3DwhaIGzh9ttEw2fVDl2eV5FqyvjBOc14/AxIDtduB79cDsrEAA1GpEiht116dgzGBrZLfJf37C9g6j+UBhaMa5+NjplZe/mW4MoY8+mNTJLocrFENh35Jo+a97kdkjPPww5eg0tU151jpzv2OnPystg6CELg2FwS2nkj2skdpOHH7F3iOfJF2QcJZJ4nmKYfUAnLziVyKmDkj/4gklm/qWvr5vA3SxzZPLNHg5a83msGtj+9AftgXjWrWiSJsBuTzgzgaUq9essoNUJZ1ru6q3FbzGQ6UNLEa/GDJXADGXqPynjGfi5maFtd2k/k5wGsyzGv/zgrttEFTuHMlY6xOkWcQLQgarbgEGyipaDzP5ma5QXWA0mi1aXhx2rBa1YY0YoMTKkff+2pLVas9U36kb8l0XVVt8iQBo/PU9v/N3Of9nSr0r7/T5BUm/ClNCHUxF5zFjqfrzkSo3G+A9As0Irff96mnznGPrrz4/QyKDwouXgtqPuwdAzBFMvSKdKGq9IpBOYA1pqSKqG0vGtwYKwZuD0A9YaW5mzc0gARyDcWqHeC7odlUscpm0WpbBtw3o+2LPL9Jlu/slhhqGtfKlcP3hwsj/gYNLRqEv5E621Mx22JhfAv8vktDSC4WlyhB/Bs8DWZFtYe/Pv3BrFL1KxJXqaV9p97jVfyNnf3hpoM8lDe5K/K92qQTuAdPmvMDne4NYQDMzvA4BUerVIIFeuGnC3Qm9A/G8XFLFrAbJDCAyshciUZIy1qQyU11qfE9gBy4/Z+C+YVhVev9dEYH6lgAytyN3ZCpCX7IGcPFj3jv8UhF8lQASZh7lBeHp72tvCtAJWVfgP8qU3IbVJBqOlFd3dKwZjsJMu9DuXez1PZXl6Y4/6kpN3JskVtBtxh95mIH0EVGJ4s55y/fmCHO2YhTg8EwLpJJyBDbxEWiZ9f/XFjps7QxQUDSaDWwJxjDKxI7WlU1uu3T68TSt723f44TvthuS2PDEBKSmMwkTMkgApJ6xag="}
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Shutdown completed.
|
2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"2c9565538e3b46b0b4a237002ead56cf","finishTime":1779065000000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1778925260000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101156217321}
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown initiated...
|
2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown completed.
|
2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMS:eventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false(整单请订阅 bpms_instance_change;仅任务且非 agree 时不会处理)
|
||||||
2026-04-12 09:48:11 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
|
2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:16 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
|
2026-05-18 08:43:40 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065020651, msg_signature=99248a0fbe146e5b0c5c84a9c9f6f260cce255ad, encrypt=zhOdt6t9puYa1OqLY9Jk0yjeG4I4YarWoV8JBuzjg0P+EhHWKZAAgiEgrW+5LhRYcPxegD6Atg53dMqcexW0gw==, nonce=RlYjgrnfVKE3yBMF}
|
||||||
2026-04-12 09:48:16 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 36660 (F:\evo_k3cloud\ruoyi-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"53af8acaf7b0ecf05f2ac7cb31af738f95936f55","msg_signature":"53af8acaf7b0ecf05f2ac7cb31af738f95936f55","timestamp":"1779065046707","nonce":"JPEPQP6y","encrypt":"KXFNdwgUcJb0VnnmdYLW6oN4UlcKr+qqGP1AlObGmObNBxb6PupKxD0SsWcG8VHOTRtcTn9K8bnDW8pqc99SU84lV1r2WLD1pSM2UJ/WBXzpEDRIhshJTpFU6/T/RCHOmTuAhDhjT/sfMMrLCYptVrDL8kHWyq9QlBXWkXLwdpvT6p7JiQFasALEY/tC2mrWIrHMOBg3Quky+Qd+k2UvC6w+AEmvMDzotesDrG9kPoNyg8Iv9YbiYmkdBSGOghfxap4BIdBrSI+M32NTSYa3fgPDLXCBZBH9VzfVyRH+9zudsqbwH0RRwcLwi62xzGzFNIJ1bgW7/vYrWG0/XLkkLvU921h79PHNPbFifHW4pMKgs038xmIgKNs5PA43aOitVkkLVTfxsIi0b5ouL4qotirqWzdA4q9R8bXpq0TOnLXj5UExOEI7r8BAqKvipKhglvX562+RXckRsfdio+8gXLftkyP/6EOr9IZMQvqGE/6NS9z7PnPY79wXxDLYXYYF+YkKP6Bm0i+U1RTK2PrnUXy9TZ33C8L0d0qtEg4kN+jAhqSpbQWLGmYgWtkh9Py+ffkAKp0j11xDkJ5/AQ0eTNyIoNjmM3X/J577cjuwbQMwVwvzx7/Xtux2udwN5y1y659hO2aKj1vYHtEMhtkLbZQPab64hWCznXQ3yLMr2OSPzVVIdOZfivLSXVb3B5dgdrvn9yYVQLIONzffSY4NgSFqaM41GIZbpGODUJhtKfs7moxNuwZUhWT+4XNfrL02TngACXkYoXXpQ/BTo3flfqNHhbz578oQT7iBAX00gKAma6N5I+O996k2MduDhaRSYNQYUos4FYPEMJlIOWAuggtXsCTpN4pL+CVoHYxtvCCnmt/sTTf88C4PSqrw9rNMGg7nFAygHsXpDbQej71rQm/HuQy/42iQvPbsV6EKcx0MyOTgqKQx+ngviOZN8Tzx+JfdSCo8SU3hGm/mYioRBQzJJIVRGJ4v7hJTyNj66stYjUPdxukFVp0z9PKoszFAFB/OMeywx8j0WkuDzXC42CZ+B9mAvErP3T1/MCnkOF4="}
|
||||||
2026-04-12 09:48:16 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"2c9565538e3b46b0b4a237002ead56cf","finishTime":1779065000000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1778925260000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101156217321}
|
||||||
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMS:eventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false(整单请订阅 bpms_instance_change;仅任务且非 agree 时不会处理)
|
||||||
2026-04-12 09:48:25 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao }
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065047037, msg_signature=cb8d08e20dd2bd53f274f44102a6d11531120db8, encrypt=mI5mn+MxHeD4hlBW8N7c7/FPWtv+3gMQw33E+UgzGSZ6Y/7yRiXCoivnNjCuQVaZ1WKEckWXa71ILEd+tD8mSA==, nonce=2kpXyq0M14ie9Nqf}
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"508f5a217d52b8c82d50fb9644e953a71a85115a","msg_signature":"508f5a217d52b8c82d50fb9644e953a71a85115a","timestamp":"1779065046761","nonce":"ATZhGQjr","encrypt":"Ga9seFWKfbh5sLt/i2pbqz/4rJ+DOiZKnDO44rJY7X1tud0WbDSk6THp4DAyjhdRL46pR8tF5BjJwHRaJ/xZWP09J914zXC3jir0Ov+IjCyQHTmx2MEiRM6xzTnjWHWKZLneLvf+wFvpxNGUuuJ5jcPCXtpTMAK+r5o5R9qXejETFkxi758EbdnOoAVstPKUkWhKOcnEVPzKygj1aNG5LfnEAHUfiN8PtcC52x5JAHOuBTSBTGjPeEwtQjrYR4yXzGcOQE5bxeK5ZXYomsneHGpCV+lhryOP/fZOJ4Z2Gae0NUm7M4K46l8OlZStvgtvDv6qQZpQLrs3w+JxvIcQOGFfQ7/qKVrX9HlJYT7bJv7dC+S8cyiQ+mQebP14rgllmayZMe+Mi0oZFJ5HVj2M30hvFxHDdP1Mjh1htAgStuxO4Nhlj5oWhrYR/ZpWTBP5wqUKAxrvrMTdkntk2YrmHRVOdPqjlGOxNu04g1MszImbD1XoZjEoZzYjg5G+UIY1hk+lQjEBjBuyORKltplEg7jRP4FShd9X1eSP/8qVEyJsSeGqS0r5sEThmzTM+xd5Y2De52GMZ2/QtpPdf9arGTEioiq4Fs2tdN3wpeDQ5PraHS44ScrudBIsrP3PZCMzPaBxS74WKGedgjG1DYrsst1i95QSgbMM7oD4aT66tH6vNugFEr+5q4mJ8GY6dhM65CDuZ7l+H9Rkziyi3w+HB2GERnexNOCqMQ+x/aHF9ggH6KOg6VBFzbandSXDbqdXWhNH4lghvUO6RHS/KbKbLcwjBSH03oTK9AcaDpojvB9zDwpL4gDLKQ/tAnJ6wh950eEAj1l8joX4l6VDdAlihI6NjC0+Twha4LArMyrDcFjsLH/vt6XLxMT/lalf37j1nsZpqitFAEmU29ufX7vac19Ns0m5Cl8gX311tMW5UPqCVoYUCrB5ima2S/PhdZJ8cg6KQN1QmX8f7FHZ5RhrtaCjJwGuHZluPwCPEgmrCsldDio3Y/pulATxw9miG6Xb"}
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao }
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"qKnJo9BRRSq3GemBFc_Q_g08411778909461","eventId":"964fc204bc6b4e5dbe5755eaff059ac9","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161331000017243","activityName":"研发技术人员确认提交方案","actualActionerId":"01190846452221394385","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"ffbb_66b4","createTime":1779065001000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"01190846452221394385","taskId":101208140285}
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao }
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
|
2026-05-18 08:44:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065047056, msg_signature=19ea2bbda37a333721f38981d8664edc9aa6b204, encrypt=DazfUoxa24dOQ1soxkwY8RlMK/uxrmLy26HoOXqSau7Wl4W3YIQGw0fBkCxSVKzVHcG//r4survYNJBe5lajzw==, nonce=TH8hU2Gqqh6ZWWuA}
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao }
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"43b599e80b6a82ec9da5b39a4c5dd211c8b20753","msg_signature":"43b599e80b6a82ec9da5b39a4c5dd211c8b20753","timestamp":"1779065112957","nonce":"WvSX71ZT","encrypt":"EYP5+5f4KID4oUN7S4SL3GO1zkDxrIoMj1uIFCUm6BXIClr1eoSJMB6bUs2610V1Yklt0P+UAkbXezxNsLSRSGG09kQ5Aw1oxB6cdPCa8A8Sd3X3a21/FY6Rz774RzFoTlSrYqtCzNnEPQwz+war8tv9mdmDSjoG8KLC4YjX9ShvORlDmHFQs695KTof1bjsacTr/8yRnwkqZe2j2yVjSKxxxdbmAJjynZTN4c6x+PmB7pmWehv1nxW1vbvG9beBcpqmuKG7iGep01Rd/tb1Py0IEOK0P/2aNmGcLp0juxdQgq0yqHGw5IRO9gasNIFE2H2cx0VIbHepXQZT+Z0OIQ5sA3JKOFDJibt+TwA7GzYU95xgBsUIniiKjvLe78/4iGhpfGXFkSVAFXDts1xwm1GyUAnFlguqzwSqhAyPhXCTVpjAk5ZVPRjgD1O4FC7upsq/Nx/Cmed+HqrqXa4gXeUX83g6/ieqqUi0SGsRoCucAvcbG4zk4humjasFOjDVobUuc7q5cEaaQk2DiCY0YRID6tXB8YkCRBSYCi0KrApivsiu0PlF8m2gBydX4kRjEQbNXb3Cq5ODvnwyhZHS4QDJrrei0vivsEyDSfsNLMxMdCMQF6Nw2ZBYdHu8cxhin7FeplrUL766k7tE0Bmxk4FVLVkOKPD1NZzIUlFHNIaICiSLiubwhNmLKGMp+8B+HDlChCJzPgjVD7/tvs3qE3r/JeaKLG5Vyu+OoOt1RtILxrNP8ZTn/mFf9H0TvlNMwqUmcL4oDoDMA8kDFr5TaSutjJPlrJ9liZym1IhRFURznIHQM2JU0X4wlKIptYy1Itn7iJFgAAdv8xiIOhADa+A4b5jm1V2gkFhjOFMFMZ1rOMcNr+VqHQuNhmVPnhZcBJkd2VIW637cWn7703FYB04ywtCa17ZsLGDPVC7lT08mKlOd5/VxwQkMs1KdudUaRx8YtW5AJ1UOMjZExrW0JQ=="}
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"JKgCIslCQR2qzoIzZnUf7Q08411778920494","eventId":"bc5c3685bb93498a919fe06ecaae2e58","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/start","EventType":"bpms_task_change","businessId":"202605161634000544911","activityName":"经营副总","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"start","activityId":"8d29_685e","createTime":1779065112000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101102815300}
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao }
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:26 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:28 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065113261, msg_signature=505512f6b7ad5c8129e4ff9782269ffa2307cf35, encrypt=8aDUY4z4kZH5cWfjfTiwHvLpBQJQDYjpigceCxAzaNtkaOeejha2q9kEX+tCYasbhwwnYF2/WGe7k4taZXEEVA==, nonce=1HsyEDuPygbImN9T}
|
||||||
2026-04-12 09:48:28 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"0cb550fd3367bcbbeaed4b5e724fb2ed0bbe2523","msg_signature":"0cb550fd3367bcbbeaed4b5e724fb2ed0bbe2523","timestamp":"1779065113095","nonce":"60fMatQl","encrypt":"J6F3oFqSbAY01+lxPB2mHN/DbUx9bvgpZKhDT8csLgK4yBR5e27CWMlUuxQpvj+7adkANu91SR/SNVy+pOgY9zSk/BqaCkl0Iwzh588VWA+56of25fbno30whaG/f8G1acI4EhsUmNgFXojgD4Dmw63QYKynCxpSAyOnaTrJksGyG2BtP2hT8XmOap9KPeXkamXZcyg4abgxMFAtlCW8cwk4XdLCx1VDk5uaOq9Wfrh485rfkD/H8pmNmQjb/SIVhSed9qMeRNCN1CNxx8fFxNU5DZKpw7+JSSptrE85ugcU4jlCZMd32N5o41VWkRovhz6GAYjF58ZrhGrHJDAHChWXQucnWngf9iYCHp35WRpD1CnAKJSMR6RW2n3Qs0Jpl3Umap3RoOq+jCzULonause2O5lJtt6kgKRWLK2cEaKkEXMYvSoGDhjo/lv/TYbcpY1mDeWbduA1hWV+ECvxWiBAyBahGpxziUUIEZ/TsHYt3nihZqO14ir0oIhqiww55TxDEN6NiYduJ8/nG+J8gTvvC1v5Rg/Dfpiwi73q4YZRcUom9I+Sqq55ee1FugtPk866hhefyWhXv9LXqRVL06HSP6mMrrn0vzNGrZE2Jo8v4yJq7fDFE76g7169XYN1KPZt97WPUWAufd8VmlzAI1atYIRNfEGXzsJ9/RQQO883W4CKBZ9eOFujsT6cOBk6Qb1qHNSAjbQE0OMgBE/uHJFHEjaJt2cOnssUHzvU6KPaH3iZAIEpjaM21G+RLq71gyAr/HRjKLXlI4FleuEaeDxd5jOXxHqclpQ1nfIMum6EnxiMapsug3D0rJSgXLU7wn9K+ZQSjPslK5eb0tkQ98d+FJwWbJVsIUmfGe16syMZjBjBRM5nyFHTIselrlnKQSOx91e+8Jxy8T9TStD94YGdWM/Gm2yvie99zqHsWtU92gW485HmXfaAS64WN9ljivdfUZODWhkFz0hZDA1hujNoQF1mkkYrmPdwUl5ZfJu5Hjm0YROxCe2phhJnNhecVK3YiP4fKTaNNZW3AkomCN434ZDqi8we5jRz8bIE2rU="}
|
||||||
2026-04-12 09:48:29 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"JKgCIslCQR2qzoIzZnUf7Q08411778920494","eventId":"6502eca8185f4c8195bea87a80abee2b","finishTime":1779065112000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/finish","EventType":"bpms_task_change","businessId":"202605161634000544911","activityName":"部门领导","remark":"同意","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"finish","result":"agree","activityId":"1918_5cd3","createTime":1778920495000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101192164822}
|
||||||
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:29 [main] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Starting...
|
2026-05-18 08:45:13 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065113402, msg_signature=b651d7e1c4444e9adf24be61b9e0df96172aca00, encrypt=FB8dufTTc5Kc8JAkw+FHuDRbi8IMVinwZG9H9ipKIsESAGyY2fcVJwFu+Hb7MAZbWuLlEyhsycL8VFYOUhVAXw==, nonce=tBOFL9i3StEMSFED}
|
||||||
2026-04-12 09:48:30 [main] INFO com.zaxxer.hikari.HikariDataSource - sqlserver - Start completed.
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"3e58db1bac0ca405e8bbeb90ab02b80475e7b074","msg_signature":"3e58db1bac0ca405e8bbeb90ab02b80475e7b074","timestamp":"1779065132842","nonce":"bIPVo5Cq","encrypt":"YAhZ2QGV0Tcpa3cMi3KKqdLXGHOm5RxxvD0XLar1SGvV3BtoFyo+Gv4JHhD89ZA660Qgw62WSy9zaUwCWNPJnzLXKEJvfRE/8lvyQ4KSaVof6O7WmIj0AWpJZj6jt3Iy5PJ8UM2yo6zKNiiP/9jttQ1sjOCrcAHVU8sEEuh94oho5m59P/MDm9vXHyJ4HjRo9KduEnaHS8quXxyWSEO5eABICLdy3rHBr47EUczxO/Wc4xIXpn9Nu45NqsXE2Qtcedb25SSbNkCeDNlNMm+e7xT9vucXH3VwBeNeZ10rzmn8uaW+ptBZPv9H8QW9QsOk4zxEqSv0cx0E2oKvzgVJS7BW91HaqPjAaM+f3UevzFx73xFKWn/IJqHL+ZWAP4Ov4+tfedsk7n63T2xtWWlH7jk+U3PxVQe6cKrsYwH4PioAB0qnG1xTaxZyUyuZCgMzocW7yDmkyfqr5Jb/Uci8LXC9BBfcaFiXF0RdepajoNhILbt/JHCOZUZZABLUVrdnQ0Dr1E/xxn1ybdtmRWrDZ8WvIC8+VIjsBXcXEv2miSr2xwmQdh8zbwDsWRchXGTXqbjLKidSlIUpyjskgiHY8rU/j+TemEXtg/iZzujjWmiALfz8Hk1Nwud+H9SZ0fw107UHHK91K0+SR+Nykoq5N6KTva3Jf9eDO25F7fPPAW1i5f7VkjBlrRD7UjnKtjTkNbUilJxdmzZpr5yxpP0GkUvvEEfcCVVhQ94y64bIgs/W8rtUx3G6ZGvGB3HrzUBA3pkm4C4H4+bidCzfLLWLvLIf1g89OL3WjG9Hylsy88Cj7vJmPwJreICXSMx6GgzhLSo5abRmSd/y30drbLgrkaBAJA4wEHj/QpQn517/VyM/wmxdvjRHtS0Urhek4G1odkPaA1cPsxykTUxOGNmfbkV7vKyyHtzGkikbsYCcf6O1Gidl2TLF/7N/uUWknqHNsRTueTYuAOlICrhw0DKwsg=="}
|
||||||
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"KAZXa5tFTaOO8AtVY2QUvw08411778920716","eventId":"949c5fa9e58945468f8ceead2d47869e","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605161638000369846","activityName":"连续多级主管","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"start","activityId":"d4b7_f54c","createTime":1778920717000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101087267117}
|
||||||
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [sqlserver] success
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:30 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [master]
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065133167, msg_signature=c06bcbb9e014a31fd27d4269f286df131e655587, encrypt=Dq/DFJK3WUf0+vsVxbCmA3L+CbEx7wa5rxzQ1bQR4FrCYXObdRTZiNP1pvE/MeumYK2+WPlUTFE0NzPUh/QcCw==, nonce=4MRwyxbHvZvuQCDu}
|
||||||
2026-04-12 09:48:31 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"5b8b4194367686cab0a63614ff83f3136be6625e","msg_signature":"5b8b4194367686cab0a63614ff83f3136be6625e","timestamp":"1779065132847","nonce":"BfBBSSlr","encrypt":"n5X5/Cqd1dsgDLH2CoAVpxEpRRv0LX9wLdfMx+qSBfkT2Jq6+w5IElUA0vX/srGcnpRA2DsoieErXDJN2VrFWocY836zFwtLkfQPr6ayOhrXn4kzVpFds4GKUF6jr1gCAr8Tb1h+ossedvBSnH9gESkn3/5D7R1xOLwULLEMKw2zq98YIroeRqB4QMpl7siPxlERho76krodZ2Nx0pFnxS/DsPCECaqACo/tXInO+Js8/HyrJ80IgSP9ctFDwOEQtcLlXiLrrobu/teI4Or89s7WcUsDe2yIAfkfvCb8yU7t3dBoDM+c8EbGPdBZkH2iuC1TvdyeAN2W+POtdbXTHxnBe5D/jE34LCVRlbqWOMte2zkMPOIzJZW/TSm4Eijg4nIhIIx+bxWo+qqQPYAgwdZDVL1eIvTaInu+fovEMAKUMlKW40VI7314xIXiZr5mzHVvMTdrRFmINOe0KFCPfjNQ0hqfRnjeEgeMSrpGiI+0LD3HB5GtZIZ92FcnjuyIPjnszwFywi3OlmGp0HAP3dLtykNS8ZJRKFOCMpoC7USpltwq2lsRIrfJgC81JMJPqci+OAGDe93QlgXeBKaMfMIR0Pv9YixAuBEpv38rB+cJswdDVQjX6afVRn+atsS2wMwas64l0Q9WGyWcNQeDALM5TojQygPGbUbaY8mpx13SSxuacHXhAJ8rajyRo21/yBC+d+9VX5HOcnT3r9/l2C3NOY6qOHxE4kfRq8+w6CHKj8uDrVIlMqdZ8PO0+mxf8Srh7UYW2W9dOP4jfN8ObzqCmlzCKUXVnXXluJsMMBv7syKhAatIPzVCc5I1iqZIzzq3R6xgp1AWh6WGzI4/wvLyBR+JykvXvOYJNW82nxEoD1STKg7xenRAz7MDH4aRiJVY4Bxm4Ol9HgmnC33Cysgk6wBfB2cysSvtrifj9WEziTWfUng2FmXkxJwC2rhf43xJGK1c1KX/dWRje2uNhReCZ0ulP0xQTqHG5yZB54t8EIQiaGAhOlCByhRQfLiie9Irh/eNs9Ebs5w/kcZG8efGkfF9Wr7E+tbw8+cYFCg="}
|
||||||
2026-04-12 09:48:40 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"KAZXa5tFTaOO8AtVY2QUvw08411778920716","eventId":"a5ce68c03b9b401d8c7cdb70436ad0a7","finishTime":1779065132000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605161638000369846","activityName":"连续多级主管","remark":"同意","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1778920717000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101087267116}
|
||||||
2026-04-12 09:48:41 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:41 [main] INFO org.redisson.Version - Redisson 3.20.1
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:42 [redisson-netty-2-6] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379
|
2026-05-18 08:45:33 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065133191, msg_signature=0b0f1c566e002900c2002459999a55826722d691, encrypt=VsD9OVb6tPvudNloyIIrNkMM2Y5ieWPlTzMVJG0Nc1VqBNpW/ADoQ7yNC3Jworw4L5czHKHFXvqfBDXCtiZQ7A==, nonce=qrlBiBtlKSZjzhTK}
|
||||||
2026-04-12 09:48:42 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"c464e1e7e4d359f59d2a6ec89c5723dcfa7d3c35","msg_signature":"c464e1e7e4d359f59d2a6ec89c5723dcfa7d3c35","timestamp":"1779065147219","nonce":"g0yEIztf","encrypt":"oQGmkxECQoLfYUzEoBRWZu3jAxdjMPP1Rv7QuSi7AinNYLXxs2s4/+rEMdasGKVfR7IX43qgm7r+P/kOpN+xER7cqUyt78HnPN99Ct/dyH1Gm49dL6Wf29iXzANLlPdsCitJKxyQArxQXg/2W5UWpvqNyoCZU049M6r137RHO1oKcZLDkKvxCumlKlMbw1W6RiQEDV4Ihx1F9kYdbZG+7fSTBLsiV+Qgf1L76/1/q7bess+5csmlWMFzBG/U9P5vcrJKdm8baQDxleUYzkP9mz2ft4YE93kBkgaRoyzcQwB1wA9EqPqnKvvAVeGBZfD14dmoC1ZqjeQEtuBMQgT5m90zkLqYvVG4HqGJM2Dt7E2cLvdSU2tj20TY/5V2QtvHMk13BuFl76B3tuVjd83niEKSK2IjZvzstRxHQAocjew8u6VAfhTTnUkDEdmeWsvZ56fUjgZPiiXya9ZxOc3eQDE4jIk/A2BAfYU7+5+RaawfOSGIIqfZkjhk0Pajrxrmpy6ZAaE/B/e+prIbKN9lGx6KSFHxFaJlkOq5C+tBPpE3/+fQZjr0T5ZthmWuiCsHM6AhwEiWrSdKnDday2AjVYr8dm2e+D58MRizMtW2GK9RPWiaNIiccLIyQnNZstO61wmxeSMw4vY05IkEEDAP3NZDr/hSOd2PH4zzORncieFfWfD+n7CFpDlDowjWMmuZ+Ss+ky3aQHjE0P5OavmlBExeEopnSBiL7JdPu+5jLs7MK39B4fzHOzWdqXbQrFKlV9g8xhlR+wXe0oZrfjCau+zLHss0muEf+Pb4gCvNb5uG7zKDLJZ8g9uvCi3qUpMUCSv9pEKsKfkxOJR0QS40sMSJkGu1qhaYqKPuleX+R8HgBCrgdXRzDz7JbhFpvvAeNKj8hZEiebkQQp423u86zY6BeZTUD5eJ3Z6ZFk3AXmazdbkcC6s5NzVzH0KuM0Z0FBopouFAUFFer9WBFGJLXaMMakUE33uXpU7vMjaVYkHBZaH752KKdOGFbsgojSqOm1d8sMfCZggLJ7/BPsZPoZMf5KdfY4Vsf6wMrufpfDo="}
|
||||||
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - --------------------------------------------------
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"zXa8jMa2QO6JJBnfFHi0zQ08411778918891","eventId":"056e633ae3974d528246939a73ea291b","finishTime":1779065147000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605161608000119008","activityName":"连续多级主管","remark":"同意","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1778918892000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101154557980}
|
||||||
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - 正在启动钉钉 Stream 模式事件推送服务...
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - ClientId: dingebfrpzqko25vo8w6
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - 钉钉 Stream 模式服务启动成功
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065147574, msg_signature=9246ee84e9c5aabe7525ead2a9c0b39ae4e7e1f9, encrypt=J+m1HvJSigaBvvS8fssPRzzPsPTRtSLxDLIRTAxm8/g1RucL2yqzl7uBnoavIK6IZeEs7fsab1mYyON7ZNR38w==, nonce=pta5GS7eDDk4alc9}
|
||||||
2026-04-12 09:48:46 [Thread-58] INFO c.r.c.dingding.DingTalkStreamService - --------------------------------------------------
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"48921919889340ad3ba23da6e59c4b4c75bf5854","msg_signature":"48921919889340ad3ba23da6e59c4b4c75bf5854","timestamp":"1779065147327","nonce":"SXOInfxz","encrypt":"dVrMPIoa+IB/nn3T7ef0wm+rFzvF1DmN2AL5c5PGshZT2bR3fHbGOQCy6B0ANTsGO4aVTIdMztnECI4ZQoc1U9NmOqNje9LA/f9BX9I7+HsB5HIOtytrqQsT1vkXflL6uv5qZTb/UItbBTLR5jNIszB/U7Ef500i2vxo0xV4CkyY8qyYdaRRaLcsE3+cg4VHijzUclNELNKQwt7rq8EHjewThgckcgVphT4BT5RWfkpZWBxJQqmpDNTKwmEGlAcOK+uap00l6r4L+TCjWWerB5mbfdPkJTIQnck7qFwJmufqwX1dHO/H5/IyVJWkbx3ayrVg0tD3rcAw67oYXgaP9g4l2tQc+ptTUMjbFAJ/ZedyJ5xo3MfyBCzvfQ1pk6mMP7G0T0c29g8JM8Q98J0RwoHaC2ycf4NPXBLAv49+au4e1aiqfz7+CLbsic86C0oZrA+9V0ZNAUhJGR2R1IYC8pvhIIl9+2uc7je0GyS8ULwP5g/6HVTuiOMVlyFJ3ypqm+ldYx/88pmYc6HUYY450ZssLnIQ58D4MNKygO8MU55Nk4Oh3Ch4wEWy5MTlvdb9tFVSQp8NQ4InRuRmABVeAKhZAV0MQutsOWBaJHjxTomIyAvBnUMu3RK1mJ55qwKjbhTYuL0F/N3bSZkxbGBS39uOnFNn6IntHAFN7kD2dGGk/JC2Opxl1Q7hV4wLRHgMMmyWu0/miU+7efBPgLz9bMkZM1556HXk5RCOlQyuHW0atabF6STqzuotrM7DbJCdTiB8PxOGgeTUnGhJEXa8qSt9ncWTyD3eGfR5af5oiyzta37tIAH+sqgmoKAu1+0XIAPdE0JLjgRWwC131dcacJSA0BcvM8TjJQOv7QD9MVrZzJ0AmYKFt5E+4mLEtuc23zGUuXsE9vFEZ/y6MlrNKv8hG2FOdgY9kJOLizaiGFCRiHRZgY7J+W83YknJKJPJzZoGcHoC7Gty9EkI/7qXUw=="}
|
||||||
2026-04-12 09:48:49 [connection-pool-2-1] INFO c.d.o.a.s.n.w.WebsocketTransportConnector - [DingTalk] start websocket connection, uri=wss://wss-open-connection-union.dingtalk.com:443/connect
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"zXa8jMa2QO6JJBnfFHi0zQ08411778918891","eventId":"0d037e11fd954c4cb2bd6a2ba6053cfb","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605161608000119008","activityName":"连续多级主管","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"start","activityId":"d4b7_f54c","createTime":1778918892000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101154557981}
|
||||||
2026-04-12 09:48:49 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:52 [connection-pool-2-1] INFO c.d.o.a.s.n.core.DefaultSessionPool - [DingTalk] connection is established, connectionId=c01791eb-3611-11f1-a72d-ea7993a5e174
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@48515dfc[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$3a3fb3c#updateMaterials]
|
2026-05-18 08:45:47 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065147641, msg_signature=6314484061fdff8497f65b1d5e9bebde716cfcad, encrypt=wtMMn5d7xJnVEZ3r3lLqzM1Qz2wJ1ocB/iVWXXiSD4wG/sFzUQxRC/rBsPhHLWXcReXzNUgL+XcayqPTMjCiPg==, nonce=nRQ3eTsPE338pJN8}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:insertJDMaterial, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@8f2513c[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$3a3fb3c#insertJDMaterial]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"52df9877aeccdfe89752fdd46784be64f52a4f42","msg_signature":"52df9877aeccdfe89752fdd46784be64f52a4f42","timestamp":"1779065223916","nonce":"pkDqn4f3","encrypt":"QOpo7urUo3Ap/Leh7+YJ2cFcD9uKEbO9if9xngyepnaMufZSjFxpAHSp4+q5/qOPJuhoja6kkwXbuQJs4fNgRRz44jR8EeoGUuDblksZnxBEzyHcfal02ya6zmqhsH+la9hBPhRnE68dQBh0TJvuSGfbN2Xg9e95Ca2jkbEY4gGrCj8gm+6StN9neMm6nk/Jj9jPVjEAIqBuHKKWhDhd9x9n8KgLxhqLtglzQVm6gcELDxKkdgFDMkudAUbE0K3vDcys14VrCnMCSpAPA73secxPSfwgvUGOtZ9NWKIKHfUXpZTNxOS/4EwlC/+TXyI7AM5Y7cvTfw1eNJWs6sQzd1BgeLuzKt7LmhXc7P8kGJzyDlXdLLkVS5DsRC6BdKSk4oQrrCnHCHK0/B8hFatAaY0MqnqQct0WthJO2PAhta26IP28VLrPlL64Vj9aPLxj8k2QyW+MRFX0hDAv4sVwwnJJFAz6HZ6tgnCKSqQmgX5qrIKVbBRjXNJghIgpjoi71Zw57e1adAINq+TzmqkBXhRi4BgVqt4j6ULI7OJmt6kv7ALP/k77Hnibaynvkc3vxNPy9EWbk+WV6sN0T7bgC+K4F7CqrsgNMgrvkvnEe93AU9dSezn/2CqD2uQAJhRiNTcm6uzM0gl3dR0XKh6i12NFVfL/EkMMaspXLYjbPRWgn9D+HBimoboptL5ItjNNNrc5q5Yxb0MKx97azLcdqwSftRjhhYvty15lk3JMxz5SnNgcl1NCWRxXkWASqYfAecYeJ58mtLJimyRxwpZK/zacVfJDvZkVyJALojJ0rZiibQd2Wm8mahd+dYr29WDGtIDWCS3/+DsYu2DeoA5/bE2kBthmKEY1Knr2b+Zici213zG5ddt7jMnX/v0guR+1F8RdSTrKgaZWyhogD9hdJ95Fjy+KLX4VS/3fi7EpO8JxGt+uHB1OQOYQddkgBngyXCkgJGes19llvYdafQaNjQ=="}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@561b39f4[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$a28d31e4#procurementOrder]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"dd46634f896b46e7940f7922e7ddc1a6","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/start","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"生产技术部长","actualActionerId":"01201038164023402380","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"start","activityId":"b689_7c0a","createTime":1779065223000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"01201038164023402380","taskId":101102887296}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@587107c[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$a28d31e4#outsourcingOrder]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@47fb038d[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$a28d31e4#shengchanOrder2]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateAssetCard, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5d9ac1ff[class com.ruoyi.system.controller.KingdeeAssetCardController$$EnhancerBySpringCGLIB$$dc276134#updateAssetCard]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065224281, msg_signature=f41f941364bfc63ec4b274dd10827c477ade0c03, encrypt=Lfjj3SiD5U6iJAuegr4KjFksXIZTwbjR6IFMY49El+GGDj0vP8cNa+4vmGKhsmLvXEK2etFtkdKC+2Y8y6Htxg==, nonce=CMI2CQIrp2Twir8p}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@52418721[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getMassageDelayDate]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"2ecef8a28c522ab10e13661bc48ba6d10130432c","msg_signature":"2ecef8a28c522ab10e13661bc48ba6d10130432c","timestamp":"1779065224084","nonce":"I86iOUDE","encrypt":"3iarZzmYF5E2lPCo33753FcVZUwFvMhuobSoZ8DhohcfL6QgR/Ayln1DgSEKkPE4HDdWaA+NeQIX16pMujn7fBIGbfRD0nnab1fPtb3LoXfY3m/DxhkmL6FkGN4iLWiR4YpICjN8CGEBsKz9JbBGga2uezAlCRUvwtnEs+0FYR8uJTdLUUeSDnxtjsMdAhZEiLfNeBvUkcoEdimgsfrovmoJeFpd9qDksNQ9l8cMgqDdC8i1KlQiFK8ecksBa4MZ0+fQckZjjTR5lIlLAwJLpSLMv0vh3AEHOyjNj6QhZhKYUB9UZV6Z3eCpr6bPUpc8lBcSKS2oqSg2g3OjX/JsC9SSsXywyQXBWdkQ9geHBlpgPsxQ45rtCBV9BUPJqgwRjbiTJk+noVmQA3slpSUBLqWuih10RIRIyN/3eq3C8CSgMS3udSXecyb0xFH1KtsK3mmJgbl79tZGQg2v1FTJ2HTi0uiLjHoU/LvXOcQBKYFi8iVSRD+SQ0dckdPSEU1/RfqU4CkP/CpuiBG7s7vMX/x4nU+HfwmlzLXvn+wI4oarnAElse60anGm5Mes/QramHri0iZTJz1Spp0URySOKHmkHzkw18AG5AMFOLXLB/3PoHMHFi2gDw9eNYsoU0okZUNf5sStOfi3cEQPsV2tLccoqMChEk4a9F4Xa1lWm9Ld6DLBShnfT/PX082+4/pFKTC4sDL+o5P+VGqnfXCRweqGf/V867gHNYfdq8qAZsaNx6AeBFs4FdYiz8vbYy+PgdIm/9ymOBqCaTA3+GlWMktTi/ZLyBYQfIEdaPUk2iVm0+MbnswrlnmJmn8i30RNYrEoTpbryEsegwOXZihCjm/Q1NIw2KDxpxGfg7b4QdhnMlnDbPhxWiOHiQ5AoXlyCkBDvQ8v0fUdoatgz/5xLwcg9rxsQ+dQiqRp4PgCpJ4Cj9e4Ca/66mhMyN+q7Sm6V82pm2HeDKFiYixUczXh2q66MqldzBRnJE6TIGYDEvlveNnF6Rx6iGKn2CCX7b+m2eL0NBsHLzguCUHx5Uh5om90an8yrtAfJPb2RbEd8SA="}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getConstructionDelay, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6ff879e5[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getConstructionDelay]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"670e81d6f0234f5a846219befe190800","finishTime":1779065223000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/finish","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"部门领导","remark":"同意","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"finish","result":"agree","activityId":"1918_5cd3","createTime":1778914560000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101190804299}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getUninspectedData, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7080e8fc[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getUninspectedData]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getApplicationMessage, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7b9e4a2a[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getApplicationMessage]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getProcessTransferForm, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@25b8a2f7[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getProcessTransferForm]
|
2026-05-18 08:47:04 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065224440, msg_signature=a22124125d293d7cd10626e761bf6857b70edc75, encrypt=uBchH/FqAWQfeskoBAt7GrHvYA7w1dISMkIqrI5lyR8GHl2x/MFom3LhMIAxt4FLb/0MBOTYMeyz7vywRub4ag==, nonce=YPMYgQxpioJutSeC}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@9a3d0f4[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getMassageForMultipleWorkCenters]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"fbee3ef8ba676d11d1540486cd07d804c3eee493","msg_signature":"fbee3ef8ba676d11d1540486cd07d804c3eee493","timestamp":"1779065245377","nonce":"BVjV0XJd","encrypt":"Adgsvb2N0fKZD6qiGjnC1+n0bwzzOtfGn+UDYOrmJtPUUPjVcv8ztYCGdI1Dps1NWZ/y5UHCEI8yQX4Lauu2Cp96pi8cW6WbObBqXMyhv4ES1zv5xPIrfa7cYK4vTxlIQtkSfh2Q7Ir/tyJQSmsjkOxoOgtZPyvnRWBVTsuRGEgGw0IdqClhop1WrkHPcNNBXKxPfrli21jF8ApZiyiTeO1aVrO6iAtLzLlTd/BHGeoR7iWXwq5htTYBFLYHaJPEdTBD3kt4AhMjKAtRSycA4RW7hPOS5hhxj9t7cnwNLdecsYlXPNMMGiJI2dFmkMLsQCr+o/vbulVoxA8Ft8QTocG2wAnrDoJYAt1CQytJKyT+mOnw91q1SFKXWChDfkLXqsJFl6dh/KCwlM9KlL6kGiEjGguWd5TqJngjapBecTRP8fpRyAJRa7EG0cegLFqTTVsFYHCHQgaLB8bJT2OrM/C5tiR/tukMdwnBC0w9dQT3WJB7YE4bisjIcDLu8zFi+3RJq30o09S8qdqu6LWOoE48j4xSICCjsSZSE/bWx6p5s14ZWRDmQLuZxFfk8OvMm2OzQoyz1p37pf6wDQCNu1yfJoRVJ50MvfG0rmsFlsxmJya1nu7IcmSpt2/IsL/SGqw4isfYGXPCfvm6sBsaas0bQFoipYLfcE6wQGZqTgre4xKb/yT/m8aoAp3bqSf6O+GjVKSCuUEI+H23gTNt+2MuOTZ4YAzQfaAY6jLJmRJdDo4EDR1QYY3s58I1L4S4/FhGCq3IiYu8a/kiQOYNrIR9pnNA7YUAcdPxe42PQV+xFV3NQgX1QjSHr61xfC+bmeOQw4mrqZjH/m+spjhGx1oPvMCebTlBMxZyVqMf1BRbQRGEpRj6fTJK9SsSXN1t8l6LTXRoaP5oqrz6D+aLNxBz78vy4/dJm98dPtDOdmVscj+2U2iL5er3+ij+n7n5oEBgLIiAXeHKIxsShq7qGIc+rurlqM2r39KXMUAmDFIUnaxiQ8xpqqe9dpS9leSx0Deum404bbbZbFQ98uZuDLVrc7R5otfxc+5Y7QYqRsF4uqGz/uDGlE2hnxWSyY3Epv/ELiKAuVGJkgO8YcKPww=="}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getPurchaseOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7e130e34[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getPurchaseOrder2]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"78489aaae61543c791400bcf2a61e3aa","finishTime":1779065245000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"工业销售总监","remark":"已确认","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"0a8f_4e19","createTime":1778917294000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101086411175}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getProductionOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@77d5c4c6[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getProductionOrder]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@171a6fd1[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getKuCun]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 BPMS:eventType=bpms_task_change, type=finish, eventResult=audit, onInstance=true, onTask=false(整单请订阅 bpms_instance_change;仅任务且非 agree 时不会处理)
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@a929b6[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getKuCunTo40SB]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getPurchaseOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@66ade539[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$a034a386#getPurchaseOrder]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065245692, msg_signature=b66d57115b2cd3172f02d82ae5a8bbf9bd78b38b, encrypt=96ZH20NtOjD/q+uUzY6Y8F16flqx4t+FETuXJ6x3W3xCy4kW3mm5FC0SsFaY8ED+BZ8S6BzhmEhVu7Oz6uHlOQ==, nonce=eiO4hpwTsTNPgys9}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3f07eede[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$410bf0#generateDoc1]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"e0ed5f51a64f00f8e02425e10323f7a27d3a7eb3","msg_signature":"e0ed5f51a64f00f8e02425e10323f7a27d3a7eb3","timestamp":"1779065245516","nonce":"Gw0x8XcO","encrypt":"Ryqkt9zbrAgHGfWIpojjy4Ne7OXme/Fbe14aDLgHNUfXA4pHj00eVIUX20qZ7+ZIYJOFKi+6r5g0YfP1UZOJVq3kwm1+ijYUA69DOVOdmgaxt4VdCCDR8KWRrMDBgrI5pMXxRUivkt9nkbIzmiKXcVDICN2jo6BjmOBNPcH6HPcRGqZrWbtVQhPpN3TuAXsr2qr+SBfXDIEm9CIUtEDQxn/CHnc619DWvcz/nmtueIn4ClXY5J0jIucBAPhGgwImBZZI68X/EXLANnwQPt6MWHlkdcHHqUPkjD6cC0da3b6zDJB0vJcgo9AKTJ0jedyVnyX+LutMFr+WF7IYX12JAn1w0tD2e7yRBso9Xrmxo9So8HU40uiBH7iqW/NBHcVaSQmrT3re1h8NHneIX4K9lP7ej9TDiLXfZjIyO+DLHG90E/Ff8XnaiPXyNFsVzdOqDuf3R/N62S37zvbkbLoSJtBxDGg6hR2sBrVEK74O2DU9AHR8icoEYXOBD4cm+usjhrCGEmr7FVpbrKmI0wG3HdtcsLOqI3vEjLYDZKLRz/0IG60wZ8YBcDCuFxhP5CfNrxFusw/JVtCv/tY4HGvZVfc4iiY9e5le6cVrZV5Dch0XMkOsNp/PzdcIqUWtMaA1yG3ZQHQ+NuJIHKWrj2Xm29Jzctxy/NXIOaAvxLFh2238E75OupXgLx2BtXatiOSy5HZYEjJXKxR0cUFT6oJWJhXl+jR5CeLHXnsO3LpTtAvuc1C+6B3GJRsvuUXEhaqUhyGTK+jB9yxWLQg8Ik+IwNfFRQ3fUSLqQuxZF5BSoHnUPs8TxOGzwGuLbqZr1l3Bfe0z1mAJDf+1cAeNHZWWCSCyGWWNPQrPjilTREX7KS8JLZ+D9hsWRVHsp/H/csSkKoZ7tMZkFSA+HgtMel4lZQOhlWrL6aHKQ4Xdm6iVbEdb9+ma6a8vYZvNTb67eOFsgeewi6qewZKQEWAXTkt8ww=="}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:syncOperationPlanningJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7b276a08[class com.ruoyi.system.job.SfcOperationPlanningJob#syncOperationPlanningJobHandler]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"HHIC0OoBT8OYiZJ4jnAMmQ08411778917283","eventId":"ff40bdcf73eb4aadaeadf7de1dc5ecb9","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605161541000233493","activityName":"总工程师","actualActionerId":"035715651324258877","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"122b_b71f","createTime":1779065245000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"035715651324258877","taskId":101170493283}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@328a1843[class com.ruoyi.job.service.SampleService#shardingJobHandler]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3b07b706[class com.ruoyi.job.service.SampleService#commandJobHandler]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3b76dfa6[class com.ruoyi.job.service.SampleService#demoJobHandler2]
|
2026-05-18 08:47:25 [XNIO-1 task-3] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065245826, msg_signature=d1b231538003e524ac299a1150da1278be8cb0dd, encrypt=fj/wU1adumXsK4QTfB7Bydz3YG1LA//fN9vS07TpbV502N4rTkXMyymRqqgSQF4FbmX44KRGfr0uFuZbV2p2RA==, nonce=ONzJVmen26nunLAe}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7b4185ea[class com.ruoyi.job.service.SampleService#httpJobHandler]
|
2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"2b2c01930639ffe3abe631165e340335357e21f0","msg_signature":"2b2c01930639ffe3abe631165e340335357e21f0","timestamp":"1779065622724","nonce":"CHYinqHR","encrypt":"ZoKb79i7vnHD8Nx63/8qLYQAfmjtcIEBwkz3uebJTgB8udWAvoQzqmjufh9K0WXwTzvNpmMnI5LihvZXFhe7NuDt5X98UAwxu7Z2ah0QexEI986Y4y2vdfkm/shu5cFaaZIkfodsD0Ojf6vxjoDDIXm3zSFso/IYA/mHBbAVaJngmOOTL1ULmrxlkCFVYp7dmH8cUyGjw/8n4nEFd1KWqECfatxBgJLodIVR5FNw6yjspIscTxPO0e1X2zsHM7rpiaoUMETyEEWV0kgA3ZYctpMIRSNJwrB3FDEDKMCKK5xOgOKU8le7tsT3p5F3MTVGae/2RkL2Tf0OOFlZzTd166aikbHz0wvyR9SdQ3ZQcBdDl/dfid0ezBjVwMPggm8Ctdgyk5HR4th51/tNI8VacLb3M/ojs8dVm2r41V7vRYTLQNbu9/ZBG/XHnhxon9MAGBtk22C9WW1gwmji0tD4hESSR4wQCNXoEKENSeYJ8tTyGSSxxulhEg0z4VNM3KXU+OH+mkyewKc29t9LnzP8Jpu0Xi7oD0hji2b6/x7Bkfc4nWUCkpgrp8fWUcSzVqwjBKZWIOppUTNfqSvYDLrcFSB65z0tkjb9svVZdZCR0vI7wyiDYKVWoOwqKYjBUYyHMVweuj5Bn13GCTTiw1NokShrZWLfadERwk1COs9txBuMcnoBNie3r8e+0YM8SOBY2/ZZkwMHMN9SR2I8DAxu/uaKWjW1s+lWS0pyeN01CGOWTkpEe+Y8f1564yVYry5JWlzzZaXVwx7hiTWmvu7vqvj3uzBapVwpfnQ8gNUtwkb3J2Xan9pdRvSVY8wPXrwdQPzU7IAplfuvTKmA9ycDG/naUrRdmUKNT0X6PEli4CJK7EylRwH1f6nF/ImA47o79uhY6pxBFHhaiApL2Sjq3mwvZ1nviickqei3cBwruuaTM+5OVo5plIA/CcXckFZZeq/ghQPJyLQwW3J6YXJqoMW+0lC7dFO5NlHPSOQ/WmzuaL6wqhzMUE2f5pcN6eqD+T3R5xxEs1R8AmwX83DOg5qKYAAHRyyFBsx52HkWSkgwPXYKRm2fLfM9IjNB0GaE8GQ6em3npkyXy+/nTkotEXSgg+bhC9ThX8gHJbCbMGdvE1j8CDoEiAsX8XoFAY2KJMgmo6Y4i1CMHvZwPIFK5Qxt2A8cpNKcuNOX29ktfl8="}
|
||||||
2026-04-12 09:48:54 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@196bc2c1[class com.ruoyi.job.service.SampleService#demoJobHandler]
|
2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"JKgCIslCQR2qzoIzZnUf7Q08411778920494","eventId":"13c86cb3b9c64389a74fd1b8b296975f","finishTime":1779065622000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/finish","EventType":"bpms_task_change","businessId":"202605161634000544911","activityName":"经营副总","remark":"售后人员不知道什么原因,领导不知道原因,反正就是售后,不正常。不同意拒绝","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"finish","result":"refuse","activityId":"8d29_685e","createTime":1779065112000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101102815300}
|
||||||
2026-04-12 09:48:55 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
|
2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:55 [main] INFO org.xnio - XNIO version 3.8.7.Final
|
2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:55 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
|
2026-05-18 08:53:43 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065623038, msg_signature=87948638896f6edfb996941683df41f1d7b03080, encrypt=SulxTVz3ofISPz1Sd865EdQp6vLlPU7j813LbwD4fgS4cSTuLEJf/5SLNWAtrG1hBrSZitVRVwPyF+cwC4THJg==, nonce=988oDm7M9oK5CO8J}
|
||||||
2026-04-12 09:48:55 [Thread-74] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
|
2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"1dd7f1de30e1b596d8f7570c2735a3071cb2597e","msg_signature":"1dd7f1de30e1b596d8f7570c2735a3071cb2597e","timestamp":"1779065644073","nonce":"qIiMFoNj","encrypt":"i/okOIKUrJ4gCEF2biocDgCf16Q/1l8a1y5AfIItvBe3aMlKNbZn+Mjeq5Exevf6EMFk9xduD3t0tGdNNMdrhV3fLhd7KHk5ANImEWXk66Xm6ONykoEBSveiRbuq9xDtkx7HVkqrDeVLqv0mP1nDn3EZWzENIHWssLQgD1+/zzTJ0xfmWGOUdGraWn0tUHImD2fKXozaBMxggBqfjeTOtTc4g/i+/fHAi5tFsv2Ofk/V2j2Kh9AjgMpZl8/jI5/tWj5pm6yY76sqVJTQ9DByklqqNVqVHXpdhE/37ByRMZDJHiu36riQ0MIwziizFVv/yVDSljZiobmsetmxT7368uVbvhokMlN7RHKnOiJv2VdaatMdh6uMmChv28y7ikMGcWRpqXJaBRh5L46tOLAFRS0B3s4PT4I5uGZLqsoGEhv4HWojL8QperQDf5DOkeN8aXZHKyGKUhRxKgCUUT0dWqvfegYiNesFYqWyGazloVnrE2e+ZKq7fcEcn4giR3HWF57HRVNiXwVlT+Jw0EL3hx/KOF+7nDifG5phO9li3Bv6GQpkDDDISVxF/Nf2F5BBzjW3yB4RotydbjYrc4kTKb1cnMwkd/1/0YJErk5/o/cp1S4Pb6NoQe8Tg/Y6XnhrH1sAGL5vFzfElF45dOVij9rftmPnlaiaT/0skHATcjvkyCxa+LLgs2LivC27bKY5RIi3I++yZQDZAJoZ3BApmgNnWsrrQfVLPnUDvkIYGhdg7rFxKGu71KY+Q3t4l+Va12NfBvup4r4Rf8V07V7XKTqoWwblTk9aCNIy2ux7+PjymOsfzrTUjqchXEMXU8PuGdAq8kRXXxJ8Zp4uYB1z3LaX7/8+f6ji+iYBEAN/i5uNMunfxdzI10okUwhO1wL+FD+b8RVf9KqX0TrQ8lVH0pjOUF4s3UufjQ3EIr9kmaVVD4B9SVhbb9IyAx/5F23jXDlisjOs2MZ9xkq9Pz9Fr2nCypPxDmsoz0XQDg8baYcyIH90LsclB6H08UVDH4fihLwbPJQqyP2IeVPLNvcuHeWEUqm9u7slbGEJmNi+0Ks="}
|
||||||
2026-04-12 09:48:55 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
|
2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"KAZXa5tFTaOO8AtVY2QUvw08411778920716","eventId":"427d8baf727645328202f4d6c9d3a623","finishTime":1779065643000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605161638000369846","activityName":"连续多级主管","remark":"同意","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1778920717000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101087267117}
|
||||||
2026-04-12 09:48:55 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 40.946 seconds (JVM running for 42.897)
|
2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
|
2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
|
2026-05-18 08:54:04 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065644376, msg_signature=0afb41fca17471a603ac449f9890337fa039459d, encrypt=mJb4vCZwA+DiHUtpMHkyJtYcAOaBcqUHHg0aOQ6ZjiqYH++Raxwfx+STLbvMyUnLPcTw+QBfkmO2/sKBUXzu3Q==, nonce=pTQwUg3wTIlmXwnG}
|
||||||
2026-04-12 09:48:56 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"1ae3a0351344a5d850b377d6b6b24c666530c02e","msg_signature":"1ae3a0351344a5d850b377d6b6b24c666530c02e","timestamp":"1779065668918","nonce":"2GSZMoJ7","encrypt":"1CPqVmjPZqYrsJzdpkR7ckxu1RzgSApWMaSnRZDKHM2cT7Uoai3p0YKP6iGtzPlVS+Hl8zGghGjcAowYYvibBuMj3OZQqAUxF3XrhJEwST7ZRQy0twOArW/J8ss7En0xH+Q4FVhKCc/u8YwqO4cZzsYqOuIyzMzaRyoQ4OyGCglqgd1U6h6Fony4kRBMvWwRceKDH5QHjJAbmAcn0y7b2W6H0mFStfDWUu96JGUQzAzX6wXloZ2ynER6TQECifCohfWkhdHfJNNeFg7AEzrGlWEpnzTb6/MaY8FkratyPQLoOSrrsXjzPXW+9o2541+hBUGhAW+Ky3CEx2FvDJ9uUVX5ORi6nNcPrP20rrt5EuQ+meKw2FfH/F5L1QqUpkhaIp+2BRqfEyIH6gTDeqcqAlvPkHihZC5n2jqIuluNXDi1BxvP/k7Js1csw2YHyvUkcu8LmomOz8KZIz7rB7mfkAXz0eZsy7iSYiVDiuFaZd4mKFjIT8jYP1kpUzGV/j3Knzl/6LLvJgX6IyrAQw5rACSHn2M0BOv/eggNXZn13GBusehcuUZe1F8EgyuIda5xVa03sudPfJCiOCBfyxHbHG/2N0hW0lXKzTfnGwlPh6g6dIalQAityiZjDzraTKAOkdkmUttl9rtKVI0el2aEzPIlCEcsGftQYM/Jtlyp3RQ4zlo5XUVMh53WeXkkfarxxuDk/KwkZGulK8TT09NIkFBqk2OA/gAPgzBnB+hi0rv/xeb4Do202Fui4tpYyyXgZ/dYPpjiSkX4Ilj7dMGCIOOo7kAjfvra3x6ZUTb3CwxGaMUsh1/+PJI/4z922bHPaq2Q0Jw+osOSTHXvM2+xCFI8stjDEeqpDLbFHsmr6NxAwyg9YJl+Jz335V1/tGPkBr0pDhlw7gJvoL2TqVfkGS5yVS2zz5sR6y/mDMHHLRylefYd5G90/BpA7kUAr+LK7zAgWl4vujfviCPx4d/gr56K4bAaFHCfuSjmZxu9Cl8o/X5ehwRbkFx5w7Gy+3/x"}
|
||||||
2026-04-12 09:48:56 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"9qhNpt8QQvWwUEY5nXeXZw08411778832037","eventId":"94540b39e4cc4774b8382148f2ce7d6d","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35/type/start","EventType":"bpms_task_change","businessId":"202605151600000374159","activityName":"质量判断整改有效性并判断被考核人","actualActionerId":"173760274129324770","agentActionerIds":[],"title":"陈志学提交的不合格评审单","type":"start","activityId":"305c_d252","createTime":1779065668000,"processCode":"PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35","bizCategoryId":"","businessType":"","staffId":"173760274129324770","taskId":101142674034}
|
||||||
2026-04-12 09:48:56 [XNIO-1 task-1] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
2026-04-12 09:49:35 [XNIO-1 task-2] INFO c.r.f.listener.UserActionListener - user doLogin, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiI4RjhCZTYxWThaOWhvb0Q4Y3laRko3SmtMdDZqN2dlVyIsInVzZXJJZCI6MX0.N6J3UliErkRBVs0s0YmF3iD_a3hmS8kwhQC1xR5wKKU
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
2026-04-12 09:49:35 [XNIO-1 task-2] INFO c.r.f.listener.UserActionListener - user doLogout, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJjVkhETDFFbDA1SU1MSmRsWW52WE1rOTBNbDJiSWtCMyIsInVzZXJJZCI6MX0.xS6Y4Qm4Aa5RjknEEboez03oRlBpxYQwrYiseJUmcE4
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065669219, msg_signature=1f9e1dfa38660b8dddc97443135ee95f1a5228f8, encrypt=K2kpgIUZ5mUCT34f40hJ4PdGAHbxi9DZV05apmThq4xHNyaZ+2FslTnvGQNKmIt8ohDly/HG8BevZUQfYMg3dw==, nonce=wtcBpP5IILlRBNLH}
|
||||||
2026-04-12 09:49:35 [schedule-pool-1] INFO c.r.s.s.i.SysLogininforServiceImpl - [192.168.5.200]内网IP[admin][Success][登录成功]
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"4ee84eb25c6275a192e990c5746382d5d5c735ca","msg_signature":"4ee84eb25c6275a192e990c5746382d5d5c735ca","timestamp":"1779065668994","nonce":"WxKNQEe4","encrypt":"xYoEUNgWs3R7a+M5ou6D/A6WM1GZAhxvRqsgmYGNQw+lOIu4TauL0C5acuu++8UKf/Qj4JIUBXKbylwNRk0KdQpwRQsH/sZCLAPqQF71SM86+PHhxMMA6sbqnUBE1V90p9LOzAv3CKlgEwybM3/IL9CImRd4/ITcrgQaZ1+iBkBlLhDiqg2q2Rg3isyjBKO9lXbka+sVmF8Y7HOBiFtlwn7LIeJzIpsCkvY+bXB5aPfbiOYF3H97RTxIfhU2smwvBkxrcHF+T5XHwVAdG3vumVEgGltng9fGlzPYfO7QBhFf1+szN9lZJ0uk86xfDbDWLvjxhDzqoaBe8e6qZwbQUJGdXXcb5oXA2hcHl4oiobuNVp2ExAZAX+6ncySL+kmQHTJzfWDQrV18G71Mii3FMa2M1Ntvnq/xow+BsiCqv7Z4saI9gbADiN6MRJrBrSUI7r0x0VPgE4NHdYA4STXrgxK/qwMFFzSckWGaiSjlhbIOwXpy///+skSTZppyFnoQsGKlbrsDjesVsKNCsZvOtNGvebEeCjNGiDpeQKUfl3AtW7kivk9DM90Ihblw8aaAOeMiaO40JPF2YJwr2wXboSPTvY9sCnZ4fiV9zGnDRVzMxr01J4JIEux3gepcttVH4AerVnvRxej6pf+pO7eFD3bsFkp8xss9wr6c66z0LsNHtCVdmP7cyXol79QQscLUY3OJ1pyOFnhoHZE54UABoGy+OXS+22tL47y7a9qBtXKfxTSqB2gzvFP3SJ0dE5ttjWTFVBHttrN5RvFg8hIXU3U4siJpJgdd4f4UqIzK+t8UaDkComOgrZb2Owx6ciKl4VoeOiwAPCTdnmkVVH+m7hbuRwSQMwH+04lJzzzz/XgKOhnbwdEz71XRMsLlBDM07gdZgvyJihXjZuHY44AO/UT5u2liGVCTcKQ6pAVhl6AXvMeJ4BpDkkcF1D1oMAe3DGypSexscjpzOJ+4bHOMqcR3xXDQ9KCcb2KGm7FPjrcGlk4O3PDBazjZU76XrgdAuWzbHrtXpaaNqcTRucUtvHjKZHapF8BPjrKYhkbl1opPIYSDAhutouCMVnC8yK4KSVjOWA1C5EYNAa7EDMo8oA=="}
|
||||||
2026-04-12 10:00:00 [xxl-job, EmbedServer bizThreadPool-2102006448] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job regist JobThread success, jobId:2, handler:com.xxl.job.core.handler.impl.MethodJobHandler@48515dfc[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$3a3fb3c#updateMaterials]
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"9qhNpt8QQvWwUEY5nXeXZw08411778832037","eventId":"de92ec4846fc4f5f931542c1b2910293","finishTime":1779065668000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35/type/finish","EventType":"bpms_task_change","businessId":"202605151600000374159","activityName":"责任部门提交整改措施","remark":"已确认","actualActionerId":"010858214800672369","agentActionerIds":[],"title":"陈志学提交的不合格评审单","type":"finish","result":"audit","activityId":"679e_2fe7","createTime":1778926412000,"processCode":"PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35","bizCategoryId":"","businessType":"","staffId":"010858214800672369","taskId":101088555729}
|
||||||
2026-04-12 10:01:33 [xxl-job, JobThread-2-1775959200149] INFO com.xxl.job.core.thread.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[xxl-job, JobThread-2-1775959200149,10,main]
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 08:54:29 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065669293, msg_signature=9c2cbda630fbbc25f3f2a465105de8ada8589709, encrypt=kzwRjo602CCmzMOUYovoybPSroTp8s6nlbZnQNav/Wz1QFWwsPiU41q6FQvtrdn5bpEtibTRa4sdZP4wT/cOJA==, nonce=BKLAFFWqp39M5RgI}
|
||||||
|
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"26c8c1cab2cd75ccbc72b74bcd005dec8a29e2b8","msg_signature":"26c8c1cab2cd75ccbc72b74bcd005dec8a29e2b8","timestamp":"1779065676034","nonce":"osQ7MDHZ","encrypt":"myIB4x7nS3Cig8dBtje90/Cl3yNCLF94KDLVbnbrOHDEXlcinmSTUVdp0Zgkt04+xUExJZTYwjQwzMRbJT6AU9qEnaRE2t8SN8T2CPWQiibVd53LmAF61uQ6bj4QOdM68SpF/LeIHaVve8ouc1RzZRluqD1ZfjMTYpZ6NsDq5jM/sX6VycBCReHis+AI7DGqLvQcVs2IG1v6sNzRC0h+LlOyz/daocC3UwmNX1TP/bVB8o2kxo4MLIMvIB3+riDhsvbelehim1kiTIAOEKviUmhE/bJLapb3FFfbAZOjq/Wdrpptd4GzAO8bHAe9nH6u8UojIpGaB9mtWwow02Q6rIokVa0TnGMSJsy/ZwaaLZTAQ2OJaMlc9cqXzP0gdoghVC75o2ptpAnKSQyhqa29nAmNK6pYIFISXR9eOCDvQPUc3oS7Z1A9gCfrUqYS2GRF1MK1AbbKv6jDL+tp3uRCF7PTmUCs3Ymb64ymSR4pDcC74GEytiEWg3P7EaiO0Ifp1Iv+jACeT5C8wWBEdkvFKdkSKrnQ1xmtYem7LUDjR3Ce5v2c7bMKLICNuCQPyULdecF9o3c2RJIH2xv77XPOqmnZHeEH+aeC8JoiBYjbbrJ/f0w7oGYfWnAt3Stc6E84cs4ylw8/JS5MDjDtD2LWeTaTbtfG7aDE++KA2ICw4zrl9MZnq4RUYOXJKDGhII8SHzAgayGHs+RMypCo/yzskXc/H+bomL0tzgjMvLa+czE0dHAsgo0rj/HOnJ3Mf26xQw9BPPU8VmdMtdIPazPkYv+ptszszR63e8oj5TA4+MTymxMtIGqXHLK+IfDdFGAjeRTqpgH3dGAlU88l5Vjm4OT25/ioVRHJ5C1yrRtoKH9KIqh/BVdP4NlbxHT4PhurhebNvLgkwJyXYAInufyYMzTnft++zHtPX4te8hqbzsStm8HjiUCmDj5Ju6fYsMSNA12eUt50ozMDSCD45esF2ijW0TjI74mDnxpzukgdQDerdUPfue6Q5YqU+OZYjn+pzAVdVVeLNJdqE6fkzami3pvPu+BSO1Il3Iy1Pj/yMVI="}
|
||||||
|
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"zXa8jMa2QO6JJBnfFHi0zQ08411778918891","eventId":"ec58f397f8ae4aefb24d964fb8175b63","finishTime":1779065675000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605161608000119008","activityName":"连续多级主管","remark":"同意","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"张茜提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1778918892000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101154557981}
|
||||||
|
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 08:54:36 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065676341, msg_signature=f5668c057606cc3add687e1751fe0a7b815317a7, encrypt=gixHPwlB/55xy/EiWjcrLgd5pcWb6wpw6eytldvDMuVC2zN1eJEvLEcApMVPmP5r/YoU3EbyAjItgbTki6G/AA==, nonce=TWnq0NhjvjAx6Zub}
|
||||||
|
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"c7c3a36c26d029e8acce2fce406af5f1b2f80e71","msg_signature":"c7c3a36c26d029e8acce2fce406af5f1b2f80e71","timestamp":"1779065947099","nonce":"v0cORoWp","encrypt":"OsbQzle+3f5JCrxawIGnHz/tYa3BmGCCInMZcco8saENPjhhePsLin9g10c6Rj/X2QDTQuqDa4EDA7y7EmZIAtp4IfhCBySMQ+R4I1sd0qClg1EK/s/UQj3+HCErvavox8yJ//gulBQXOkgaWviHSfEpxLynmhzKXvbsRZkRhMF2+VExVxLEoyvzxqZmW3Q8p1DrlgRHRaFcQUZYzWEisaZsvJxBWql8bJbfbk9rWjZy3YbNy2ShqNE//dyu26OSHVCDpOyebUwj626UX+F1JlHDcbFzitOBscaftV77YmYZina4VUL+zattJeeKkBBF0zDYDC7D9t1/VbYlvRjP/toiYFVVwSfpO4fuNlw9sI34dVbnqeW5egSXFZ1UO9r/cfsGwyotmlhbt7/xufS1yOnGVOVEK+y5CGhWibqZg/QlIuD3VOaPFGnNbEu/W1JCHzAu710AUy9hjFJKsq/d2Q64fQTyEkctMvA6TNKVrpsS7P4GNi6PG6t4SrtQ9Ns9fw4jMYpoMorlL4z2JJyJCIfEqNihkzlTXQjJDHHdpQTBYc9ZiITj+cAV+fjHfrCVzs12uN0hhbgokwfCuKXgSEfcJD3CV1/yES6XqaRJHXyUeU2VTRSCShOQi86zus2NsOixVpHd0tHMGiqyD79XKi2ybzVjbprzJN3Aj5hN2VY539UZtLcUZq5g3IsZpyi6xlN/9JPUtJsMztmL9wrBnw1pgO/Ib3/kKvPvwe2sv1+xfIEjGwIy4Yrrr+Q+cvoyheWndZ3RwuY/kIJWQvNWXBu0TCVMjTxaiLkC96TfBAlo1NygxEtVh/Qo3EMqh1MAH9o/5G7lzmGoRWOE/Y3RtXWQugIqPJcXzjBt65kHhQB84VXvK9jXjVEuVeiQPi0VON1wIVRT7vGEzFAuHXVKGJlU74TOp06XgXK+p/kJxV9cDTTPSKtG0t+jOyJFq7NGREHjR1oBqLilnUlCOvfmHQ=="}
|
||||||
|
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"22nH2X4WTzyyzkctrJ2LKw08411779065946","eventId":"ad1caa439040490595b91f076b45af5d","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/start","EventType":"bpms_task_change","businessId":"202605180859000065828","activityName":"部门领导","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"start","activityId":"1918_5cd3","createTime":1779065946000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101208612829}
|
||||||
|
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 08:59:07 [XNIO-1 task-10] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779065947422, msg_signature=f7b2bcd39c67b81f50f45204063ed91bb60fc073, encrypt=PMbMc3PQS2CK0tDfYO1qvwQXjUczZUr1W8ll5CqTMIy+6PL6RSCzfvtzfB12Cdcy1tSMfttJNZq0x81qoGjyGg==, nonce=VzB29LRvrOSs6yaF}
|
||||||
|
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO io.undertow - stopping server: Undertow - 2.2.24.Final
|
||||||
|
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
|
||||||
|
2026-05-18 09:08:43 [Thread-44] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
|
||||||
|
2026-05-18 09:08:43 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry-remove success, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://192.168.5.200:9101/'}, registryResult:ReturnT [code=200, msg=null, content=null]
|
||||||
|
2026-05-18 09:08:43 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destroy.
|
||||||
|
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
|
||||||
|
2026-05-18 09:08:43 [xxl-job, executor JobLogFileCleanThread] INFO c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy.
|
||||||
|
2026-05-18 09:08:43 [xxl-job, executor TriggerCallbackThread] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destroy.
|
||||||
|
2026-05-18 09:08:43 [Thread-43] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destroy.
|
||||||
|
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO c.r.f.manager.ShutdownManager - ====关闭后台任务任务线程池====
|
||||||
|
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
|
||||||
|
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown initiated...
|
||||||
|
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown completed.
|
||||||
|
2026-05-18 09:08:43 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
|
||||||
|
2026-05-18 09:09:09 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
|
||||||
|
2026-05-18 09:09:09 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_482 on LAPTOP-AK2JCS84 with PID 67076 (D:\evo-k3cloud\ruoyi-admin\target\classes started by lenovo in D:\evo-k3cloud)
|
||||||
|
2026-05-18 09:09:09 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
|
||||||
|
2026-05-18 09:09:13 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
|
||||||
|
2026-05-18 09:09:13 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
|
||||||
|
2026-05-18 09:09:13 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao }
|
||||||
|
2026-05-18 09:09:14 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
|
||||||
|
2026-05-18 09:09:15 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
|
||||||
|
2026-05-18 09:09:15 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
|
||||||
|
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
|
||||||
|
2026-05-18 09:09:15 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
|
||||||
|
2026-05-18 09:09:15 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
|
||||||
|
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
|
||||||
|
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [sqlserver] success
|
||||||
|
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
|
||||||
|
2026-05-18 09:09:15 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [master]
|
||||||
|
2026-05-18 09:09:15 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
|
||||||
|
2026-05-18 09:09:20 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
|
||||||
|
2026-05-18 09:09:20 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
|
||||||
|
2026-05-18 09:09:20 [main] INFO org.redisson.Version - Redisson 3.20.1
|
||||||
|
2026-05-18 09:09:21 [redisson-netty-2-5] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2026-05-18 09:09:21 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - --------------------------------------------------
|
||||||
|
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - 正在启动钉钉 Stream 模式事件推送服务...
|
||||||
|
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - ClientId: dingebfrpzqko25vo8w6
|
||||||
|
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - 钉钉 Stream 模式服务启动成功
|
||||||
|
2026-05-18 09:09:22 [Thread-35] INFO c.r.c.dingding.DingTalkStreamService - --------------------------------------------------
|
||||||
|
2026-05-18 09:09:23 [connection-pool-2-1] INFO c.d.o.a.s.n.w.WebsocketTransportConnector - [DingTalk] start websocket connection, uri=wss://wss-open-connection-union.dingtalk.com:443/connect
|
||||||
|
2026-05-18 09:09:23 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
|
||||||
|
2026-05-18 09:09:23 [connection-pool-2-1] INFO c.d.o.a.s.n.core.DefaultSessionPool - [DingTalk] connection is established, connectionId=3493760e-5256-11f1-a582-1a02b3fe6148
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6c54d0dc[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$33481d46#updateMaterials]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:insertJDMaterial, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5b5f06bb[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$33481d46#insertJDMaterial]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@7c74ef4a[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$d23153ee#outsourcingOrder]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@54519d74[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$d23153ee#procurementOrder]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1ec96512[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$d23153ee#shengchanOrder2]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateAssetCard, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3d00c2ae[class com.ruoyi.system.controller.KingdeeAssetCardController$$EnhancerBySpringCGLIB$$bcb833e#updateAssetCard]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@665574fb[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getMassageForMultipleWorkCenters]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3eb7ff78[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getMassageDelayDate]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6b83ec49[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getKuCun]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getPurchaseOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@50ad5625[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getPurchaseOrder]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1d921267[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getKuCunTo40SB]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getConstructionDelay, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1c5f6292[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getConstructionDelay]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getPurchaseOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@684a34f4[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getPurchaseOrder2]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getProductionOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@52ec5ba6[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getProductionOrder]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getApplicationMessage, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5f606ab6[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getApplicationMessage]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getProcessTransferForm, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@384cd83a[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getProcessTransferForm]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getUninspectedData, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@198a653[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$cfd8c590#getUninspectedData]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3119fcad[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$2fe52dfa#generateDoc1]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:syncOperationPlanningJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6d7005e2[class com.ruoyi.system.job.SfcOperationPlanningJob#syncOperationPlanningJobHandler]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@33a39d7e[class com.ruoyi.job.service.SampleService#demoJobHandler]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@77cd1f67[class com.ruoyi.job.service.SampleService#httpJobHandler]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@94f79a7[class com.ruoyi.job.service.SampleService#demoJobHandler2]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@647d3279[class com.ruoyi.job.service.SampleService#commandJobHandler]
|
||||||
|
2026-05-18 09:09:25 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4b9a1be5[class com.ruoyi.job.service.SampleService#shardingJobHandler]
|
||||||
|
2026-05-18 09:09:26 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
|
||||||
|
2026-05-18 09:09:26 [Thread-46] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
|
||||||
|
2026-05-18 09:09:26 [main] INFO org.xnio - XNIO version 3.8.7.Final
|
||||||
|
2026-05-18 09:09:26 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
|
||||||
|
2026-05-18 09:09:26 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
|
||||||
|
2026-05-18 09:09:26 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 17.632 seconds (JVM running for 21.041)
|
||||||
|
2026-05-18 09:09:26 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
|
||||||
|
2026-05-18 09:09:26 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
|
||||||
|
2026-05-18 09:09:26 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
|
||||||
|
2026-05-18 09:09:27 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
|
||||||
|
2026-05-18 09:09:27 [XNIO-1 task-1] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2026-05-18 09:13:28 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"d613a1eecc0a8b7f64b9e39228490550a2cb0e39","msg_signature":"d613a1eecc0a8b7f64b9e39228490550a2cb0e39","timestamp":"1779066808573","nonce":"CBMOmOBX","encrypt":"kru77HtFgKrw8HXEK2B6nZ3NzXXLX+T4Km7vlvpItRkjWKaBYFCjpL4/c7mNxbyEZANhQpjW4XJdMRNhJ0wwBGJ9WCXRI/t+Ep5WvKvzHGEvUYe+Y6dl616nhP+p4YliAbhTdo/zyv1FTj1aENlSOXDitZmih5nvPAki2WbFlD3tnrISKBJQh4zxAoczoyvzUzn/kl6lhC0T49+sPecATuYt8/dufTr2pAvJ2rdPx4Yb3bMPwWy1YtHygdLpFdnYocNmRgQtIZT8lqPgIc4FKOmIrbNcStMjeUnXRQb/hY9N4AeVff8DH0KzQV4BthcFQ7B3VqDgf4tr6q2aAH47k2KvXRMzxVOG+TwbOFnrjynZVpoVDeav/6za10xL6JyS+eUd3giDs93ipLnnsxTykA3vinBKeETyRoMwQxLvz+QnK+2ia2szYah0LvS7e8wFKi9HzsOpmEyZzICkvs7flBTh/tnRC+Wb5NnlmPixXHYgF5hOqdP+gjWpT0p4zECCXjQQi8lEpGZJqkoDqzLGEiefoGdQG2fp18yLZk/O1PMGKZFkCR5fM+qcosMPS+yZaUyRkNc3EXl8tWkeUKCMbsgAvTkWzj8PU8KFHSAzCzdirVb7Sr13+tk4XUBEKyg3K7MOLxH/J6TLkMXWKcHOuAhqp9IkZAf//FqzpFoeCkiayBvZsPUYFQw0O0hTiaDFdj+HHFd2l4Rk0ehY5dhipau1d6hb1gBzAHAosCLPYAkUTw9v2jbDSo+nTSX0hoZZ6X/iUrAbYIUxGBO4iEyoJjLAakMXNKNQfDRQbIJ0zlu6EtRvdCwjVD08cXNcCkCDy60I5b0/FYZmrzs3qVI8Jg=="}
|
||||||
|
2026-05-18 09:13:28 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"632548b4eaf34895b9fb3aed324c2782ab46043e","msg_signature":"632548b4eaf34895b9fb3aed324c2782ab46043e","timestamp":"1779066808463","nonce":"7CMejZCz","encrypt":"XSdqn5mVA5ZrHht9bqx/qTuEQ5mcQLNFYnR1b+02ylTTliNsmdKRx3Ecv8BVyRtmUKJ8uA46PNQpYOyAXgM28zAMSFGlqVTqggAkmRoi2p2C4RPH8Q/OAVhbQ2zGade7q6d3N5X+CAAbZuj1dy9O34u1+p6ciH3M4O5B3+h6EGUmsxxzJKJMNLVyURk4wC5NxHU0bHiIDjh7Ir4W+GyWmnp954r+SRrNK/6ieTtrEN9TGyDxewC4xbdCu34d1WzIc4RkWDQm6Ge86ZzroqMLxnqHVhHKXpKj4GFdbYrQFB7vcEm61myYpVoHCA/OavPlHr900Iu4aIAv4xWgiirVhv3Nspu/14axDQN+8PGMy4OcIPmgdDgFpiY/MsdUDeNt+Sv02Y/j2ORgqCUJvP70ht5PBIfnWyvmMb512EvtANJLyZa8E6pZZMIshxMkCEErxVgT17WVzoDf+6mamik9joyNOc/qUsaaArmFi2emMa0/GReNAcVp8j5tycJNuDq51BBHSRG1UwBvScI/d5VKBe1DRAoluP3RHxTbowRTpgKcLuJsupKoDiRYnCcefPrtzvQpoJyGrGbgS2+6pizNRk8PAa3gKyORSC6CL0tsJKEn+FxXKlISx2FbS/ZZiMw7ZGVcZL9GFZTo27AmSlgga7sZk5DR/FNhizmrtqpdpFbPuuV1j5+RIW+LKH+r/yZOICNX+zbhjc6dY8nseGiBwMz46ZR1mdrttjxgIsXuxgOy/chsbRhDaV39t9ACntX8laibfICOMlcWhZazVrlF9jnMaVhvm/q5V/RRf9VMAJxYmPQ7xHYZ6vbS9muaAQncmLQPoMOpZ5sJuJd3jpAmuQ=="}
|
||||||
|
2026-05-18 09:13:28 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"yOda8XN4STGkd1FKhjUfeA08411778912977","eventId":"2dbe6eec793047288bc851e8258c9718","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/comment","EventType":"bpms_task_change","businessId":"202605161429000373885","title":"田志阳提交的技术方案申请表","type":"comment","content":"管理员后台删除","createTime":1779066808315,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283633411029629036"}
|
||||||
|
2026-05-18 09:13:28 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"zUFBG2SXRZSqspRumD65YA08411778912762","eventId":"10c58d08c6dd4b59b815f4028b26ded4","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/comment","EventType":"bpms_task_change","businessId":"202605161426000023614","title":"田志阳提交的技术方案申请表","type":"comment","content":"管理员后台删除","createTime":1779066808153,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283633411029629036"}
|
||||||
|
2026-05-18 09:13:28 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:13:28 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:13:29 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:13:29 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:13:29 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066809043, msg_signature=05c89233a706719d0ffa504d34068020398f1003, encrypt=VECoAXl2siR0YfApd6H3ipgQQ2YRBYRU2dd7e8FIZ42auBZ0JPehjUqkwNfM4ltzQbqh+7hYp+UOhCEQOz/ZDg==, nonce=xUOZmOtk7EcJcvne}
|
||||||
|
2026-05-18 09:13:29 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066809043, msg_signature=0fd3f9afe0ff6d53a495ff87d270ce7f61cc3aef, encrypt=aw83Tt7eqNIpuZRnr6yRk4ehjSxmY+xY5r3NLSHd+8k87dragsdju292kEvFHUnE0iLe/KFmDIviejXGeUfT+g==, nonce=l8bbUqL7NrRJ60P9}
|
||||||
|
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"de768abf89ffa91c4840818397fa918473d08c91","msg_signature":"de768abf89ffa91c4840818397fa918473d08c91","timestamp":"1779066960606","nonce":"00YrRphr","encrypt":"J74WvfUGX6HVAh8tz9Jb2uv1qjClS+1fN6h/+q75fvSYoKIWQILTAMTM93vpUXqgcL39CX1gsayzus1/+4p4kNYM7+kjlj1DfUM23vBKT3ygs5lzu+PfNLiCDasMkEEVZnujxHTwPCepIwmyRqEVAaIQzxx4u8qa2ZSDckrVyNV26XFdJDOA1YOsiBKl3R6mdwJiTeTLXNbCJewU2QS7boDEIAvONqExbHdDYc7oyFYGCu5CFK6xG9+00fHXkDvFPTLIazfM3CE+TngyagyDksi6subeg5gExHIR9Qm60H0E72DenP3gDe1D3IcuFitrk5xGPi5oeGcPYMDjjJnXaKBYlL6rTYsk3XgR3Y0PjNWVLrQCIagfTDGIF4OifRpbMjE2k6bjVf3V2b0rMXgE7gFr7Gzgn8+Ef0xBzNDc8LbE/XKFjH3Vx2InyCVlFQUvj5rVHJIdp9suqUmWZjU8jrFZbTJzVnxLJFG5jpDnVplkA9w6runHsYPFhnoLiCI8IIVDXKK+1u1h7/TPPp6PW6YaGZY1LduFNi+ydTe5zagn3sXc9Ve2NXl8BW3hgeQQt7gHxnGQ/ECWCyE0SIgC4klSYOpBWcyVyYiWk0Ds7YbElgQTdqyI/mw+0F0W+viveU199nSluwxK6xN8/Yxlpsf6kn8gd0LXvBfBd4STOKBrviwVq//F7iHrqyKtyqLfrm9wuET+LsA0/MXv6KrtD57T1dDkInG6DauxRaLPrYznWwTrZepSH57WipEijgYwF49gF8m5PFKjEgR1jVWa1YWpajNygsT0rNOzPGbJlbLi1ksE3AC8z82q7uqwTEeRW5GuLKT93h5aIvCW3tCRnKueM4o025SL3zjYam5z5fgwdx5Wcwtrrkz7anc96h6dJU9y9A3U+qRuZDd6rjASFRibFM5cH3o4HuplnEu//LLDS/SmBs/FDQyDt/KRBak4eAUt/n3tTKzNgU9WRwqwSQ=="}
|
||||||
|
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"T_XBf04fSpujK04zZMJXjg08411779066959","eventId":"e94970a436554d6d95aff2a0ff1c7860","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180915000597802","activityName":"连续多级主管","actualActionerId":"223241230721375124","agentActionerIds":[],"title":"郭亚曼提交的用印审批单","type":"start","activityId":"d4b7_f54c","createTime":1779066960000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"223241230721375124","taskId":101171617644}
|
||||||
|
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:16:00 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066960938, msg_signature=a24e789606ecf7cdc834b89c235dc991ab391cd2, encrypt=P4uhcdQY18l6+1q+XABswan23bydTCEnCR/jYgQvJtcLBnjhOreXaq3q8/Wrlhb64lu1Zz7jgOKb1WbSKdUnGA==, nonce=0M760ns02gUMq6he}
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"6530c5e6db03562fbcfa79899211c91846e170c4","msg_signature":"6530c5e6db03562fbcfa79899211c91846e170c4","timestamp":"1779066981492","nonce":"YbLpCbWD","encrypt":"ts9NUjJkK5BEtzFzZybZCb9jUiKTZ3V/a48xECgEKEJEkrjzEJ51Liv+Ez3F52sRrdMvkyUR9o6BnflBFFC4G3Uv4cZ3aYIzpFHEB7vU3gFlnWXx9mmzfusF7X5V4Y1DTKv4pBFxnjpcx13N3rUwFVqyCnamNdrfdrN33fH/Qa3iHk3gEqDFZNpYxX9diQgruTfRvigNZPNqPPFFc9k3iAycRa5x+gbVosffViBGfYEhYEpTtAQFPpY29Fk6ipu9vh9JE9K9l77UWvx4uDo6fhdmUM8xKZV87W/A88V8ihdS0Wor2RojdI0/apg4oX/9ML14FfBBmqcHA1ctNVcjXDz2++yIvD/04BtrcR0N3lrOrFCoWWJHFLe9xfTfjZ2q9YBROb/P3ZC0h6lskjYxwezs7N0KcREiUj9Vexqu1p7RKWTwj46JUqu4NNaqzCk76yYC5j6Mq5WMO7Le/QCUaryI7PQD7vGY2pGAKFYTiJNstcXxZ99QB/PprBofx62ulrso1iqYVFePt3ovY2m1uc0rJCq+xUM+NuLFAiFhPUOmYRvljR74u/Bwq46mcZ1YR8ba0wKtX9dUZw/QVofup7arsnLIaiLHUwnt/XSskPalx3mJ5//7j2psOnGBCtj4DAgQ+4LpOi4if+QYUsxAgvFghydWIBqGIxa5kIuuKvGGWYvlOBJWa0sYWTW+uRK52aR7FIli4OsZQfoyypw7Ohv3GhTUzxJNzoVqUMFlzqI5d2M23DD7voWIT67wiaPN35pCawqQItXmtQn4a2d6U3ju9TCqIbktkMV7yVhjGM5vjNFnSAsQC9+5mBp511lksqK8M65LLN8rfpMZ7bA0KxHf46X9XSiyNL+liG4CFOCiThjkLlcr/Gz5WW9onkADCXmakMMbAeyp6QOuag2jgja3/1aE2ovgUa/9qa/AoKmov1UhUtP+UFz0144XqOGcin96OiK34iLrIgRqfmXSOg=="}
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"T_XBf04fSpujK04zZMJXjg08411779066959","eventId":"641f34d6ebf3483f988d77e6c6022ddb","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180915000597802","activityName":"连续多级主管","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"郭亚曼提交的用印审批单","type":"start","activityId":"d4b7_f54c","createTime":1779066960000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101171617645}
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066981796, msg_signature=b2a4b2230586d76c7d540dd38fbc3793f3a25366, encrypt=Va/S0mpJUo+YeHAYiY795sKMylZavNVCsqyLCVb9T6UYtqhAtc76O2UlW9ht5Sawb3SSVCYU415NsYe5yW+ciA==, nonce=fvZdndRBzcypVeRe}
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"31e65f4bcfb710010f9bac2c91a7dbefb38ea6a1","msg_signature":"31e65f4bcfb710010f9bac2c91a7dbefb38ea6a1","timestamp":"1779066981569","nonce":"ilX4w96p","encrypt":"um3mdq457NuU7sOByV70sCPykcFNi6AhsLv4w4y+rxdG+2v/rRpVeNXXYMbsdsjShSJdYoa6HA1XMl9gLJzXEp7JiI2OYg6RtUSwL1YjeTNhvny/otsHUGjrSbrPNd0op/8AMIjLZl7NXmGY1JCw5KwOoHsOMvFDMUdfPVkhA8gJGj5tM3FWg9tNNyC10Yrd/WJ/Pt/NxAYMHQPMtB2oxuisJNarkqiK0jvTMWBeX6uFjmF7l/PkoiZ/HIg7hJKqhIqkSA+iOGFzf0j06VNrjNvXcC1b5CvapeDp0bKHakeoXY1+5tsDQXeaky/3vsH1C1Xc88D1JDJr9UbBPh5fZwhrrgZ52y8cmHKIkWesYfiUCo+hbrAaKne51MBETtBajm/TQnpNDXOmYwOelphIRX1GKIlESAkc1PLoc1RajYIdbPXhdDVptsvH6lsScjJYguJePLLVqG5frNwA+CgZSgczJ19PRk85JiBRYLy0Q1plQukfIIKnBz8L7QBQ2nVnluqU3GlbnwdoDrW6vQ/l6kofv7TTAPoA3cgmWOe/AAcIgl7ZD6ciZv2o/GJqKEZn+R0oiK7JkkELNaWFrkaTU0/p/HAmRUx0gtNXfa7y/KmfOyejJCtxJnpQHUd0cRV4lDFzJDhE6WQZQOqWa9dXSIx38629Wf+j2Bpcv+9eYIJ0p9B/5q6Isrv49ynMeX5Vum7X1tX6tll6Cuv9Edih9YJcx4kk9kIgtYH3cH8op5zSKHGfictXN27fyxjCvhygjbsl4m6ix4KKsdYSnK7ko4cEaA+nHO4mWYoyHSmi6NvtB2h2fkgdIYo7akhn7w1MfQ5RsjWFLqJN8dT/rv8QLoWPk7+/eUQdH92/oMGgr/QtPCwVONcv3KpavKNt/0zgAo1UiqoYqMz6RF1gUBlZuI2oBtlp19ar9jfcwmSpgVtccf0CuQnaHouvLYJOwMVy05W0lTFepBC5WrFYydoozJzDxCPaNKy09hkZi3jl2hSbEuk+DVZ0k3FYlrXwPulsrw4Voz30/MlX6FhMpsRfY0+a0U/wf/9q94PkaduHd5A="}
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"T_XBf04fSpujK04zZMJXjg08411779066959","eventId":"bb2d94df682141e1b186d6dd7890a014","finishTime":1779066981000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605180915000597802","activityName":"连续多级主管","actualActionerId":"223241230721375124","agentActionerIds":[],"title":"郭亚曼提交的用印审批单","type":"finish","result":"agree","activityId":"d4b7_f54c","createTime":1779066960000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"223241230721375124","taskId":101171617644}
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:16:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779066981864, msg_signature=84173f8439d351d1ed3f784b423b8e11ff523334, encrypt=vYgTZ3hb5TXnX1aZjKNKWQTHMW1Eu1PkPQBiHYtQCrvD1TjkoILA/Gm6iJ4edVsYrAx4ECk3OAiVqZlkMUCadw==, nonce=xg8fiBgv2uz5LvJI}
|
||||||
|
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"e5aa047c984a90d36b5eb2f46f877249583829a8","msg_signature":"e5aa047c984a90d36b5eb2f46f877249583829a8","timestamp":"1779067040748","nonce":"34AM3H7o","encrypt":"eREhFZ/t61DYNCipWpe0ZIBRPR5OIadrVotty9RzzQlSL2U+SY79Umr1VwvSch3NhfkHDKwq0uPia85fm5QK8tJpFsTYgra5g4obPH0ygSBGL1QnmQsxIC01VKERxtB6/7yCVHklD3KhbLNBdcKMEz4cfEBVU2tGNAY/NKMt3Ifb5F/hC5P2yj+w+Oplf8NEKot51IG/DIUSsuoY6JHLGsBXK1K9ynsFvMZvNPc+cWDTWlVQNax+XdxQHLjZ37FKO4Ljx1yA5gt/z9y0RNigNXW9fNcc9cZlCMAzDVjsi7s5PTnBK3bYDqwuYz+4RBtJkKXg5cTCcvD+7WN22Qjx5gfB7mZApo809xXH4DO3agUCe1HluExGomu2HYrJx+cN4+mPvB/zTkFxbdTi7XJBdnPrJ76UfegPzRCGreBZKU8/HLZ1l8jwZGh8tVYjlbyQf/i7aP23Se62YUX5298yyBe3rujW96p6E3PMhrjbC3OzEtvnH7rJSqoHb2n/nQSUYC00a/kKBRL1BiMfT6QsoDax4dy5bxYuRWzwzGZdNEJY8BUMOINil7abIrIWbFqEOw/zrXuTJEQVJOz/Eb8bbPc8Ioo9F9tWT6xkVwaU8psoFeYzqW+3MbkwKn6sWese948ag1zpJ7cKrgQW4V7NlOkF4GW1g/PlrBx/KDWoSvmlpO77IifhDmVlCQeppR+ZgyT/TAdAwMh6eWajiWQWG/T8f5ThkDvwmP3UdhZVHEubNtMNHYofrDuyZpnvI0+i8IJE13oaXij5bBputKoQbef+1GISlYVui2fYquLfkQKpwSk19QErXFDjWuMUv2mZtbWbVmirbr0Jk1QWPeev6LoOxodjG/+oLfrPMsjdHgpbkRd7nQ9Ei170ZePqsRL+QhvBHcGjwMqORZdJNZ+wghaktdgqy0kni3CaaIKxZACyXUiUAdAUxOo5GFYoVcEhCPReUbO5jsTI8iWh0JCDtw=="}
|
||||||
|
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"mSJmSHiNSNulT_2pRiVZ1Q08411779067039","eventId":"c090a273e6c94df3aa991f38775c3c7f","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B/type/start","EventType":"bpms_task_change","businessId":"202605180917000199559","activityName":"部门领导","actualActionerId":"02580952260533396432","agentActionerIds":[],"title":"位晓峰提交的售后单","type":"start","activityId":"1918_5cd3","createTime":1779067040000,"processCode":"PROC-FDF3F88C-ADAC-473C-ABCB-9EAAFECABE3B","bizCategoryId":"","businessType":"","staffId":"02580952260533396432","taskId":101143434454}
|
||||||
|
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:17:21 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067041069, msg_signature=36e2848888199fa8dda4e75d457b413d7ef6e814, encrypt=lYpJphlN/Q5fTGvFEChPphUfN6z3RIVj1aqbGs44uPSJkWDaP5jgEGs4poz4t6ERvSZpUDgZwNoAvYTKgFW+bA==, nonce=Frpio3kiPoRrrzju}
|
||||||
|
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"18f2d1ab815106b50068fd47a55178a76c850099","msg_signature":"18f2d1ab815106b50068fd47a55178a76c850099","timestamp":"1779067081444","nonce":"6neqbdT4","encrypt":"VDBhlLGXLHB2Sm9dWs2+slyAl1j2pGfMOLhOQOS5kdmXKBLoGuzxtpCI97BFrLZvMA9RHRRGcC+fqTgsfSxBH77O5/BhGKOrICiavcijstYzEHRraAgzz9cOqOOtXVkLNuWQoDq0kyiOobmg+/CBiAHH/hCoFgL5EVkeC8V4p0GmExHyAt/4To8ACZyaRVhjlNyNlM5Zku3VVvx7DbHQvf1OV6fEdV20S6MEo3IXOZpZvBMMewDQD4KyBcHCmpsCDAM2EKA37ue82iey6S/ZZMs6HzyThzw0oukM44ZQklkqvkqkLQ9wAbATIoq6oT1CoitepuKme8Xe518kvmwcyEfHCVOQNaF92DKRQhNJ8YzlWJOAxWEmZ1+brAXO9ls0+DqmPCIWZ3xB78+Bi1HBLPJn/ai7uNWyBR2U05cPuifFdmfuNII1FXf9SzlfbE0c14SxqKBDdLaT2Eo1lHvuRXLirUW58FeahR6oNmYmnY6O0qCxukqzgKfu8Bok5jArY3UiJ0rY2AKG9gedGb4UGVEpfdD+OLGabTyQ23YPW/ETx6ZhoOHhIJKB2sRmnfqigBuBr58F4fyZNLL2Jf2yydPw4KVShQ51Lhm7IpINRKfp/ASswjYJjJ87IoRFzpvmFBxo7SXgwI1A2VfdiVEadgmVtbyEkkgEwh6N871aLuYu/2AASXktnHLNytkEuOCULOPQvqQ5RaUaSln1UTv85Ce5GdA0Poj5hXM6HyJjT03uvbGOW3+YkOWxD0ieSO3nV6Nhoyqg3EGQqx0qMf7aDOjrFIeztxPPUlo6a6WTuuFxDdEREyDXa1VmRp/u7lHBiQD0CLcc5KeThNUZi6+ejunhkK4fs0bz3/yZiRhOLYH1EQY5kM1fa9dCBqj6IBojCTJ4GOcDTUNDEGL6oiu3xhMAjZNRwqKexlCu8Ud4m2ovzXbEEhtszF+AXslJkGFb2v0KMBRJ3KP7ecoOYm8Ykg=="}
|
||||||
|
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"40857a1cd58f430f86e4dd6d108c89bc","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"直接主管","actualActionerId":"176735225223967751","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"start","activityId":"19a5_614c","createTime":1779067081000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"176735225223967751","taskId":101104191675}
|
||||||
|
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:18:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067081757, msg_signature=aa74302484bf47cbeef948d63318638f0bef6a6e, encrypt=bukD9pOiJyR4Kyfxd6XU8DM55Jz3pfpl6xqXV2B+5krmdvuPahhh0MDNEjN6FuxXD7APtmd1qLaMvpOiMX/bSw==, nonce=lAeteB0vqeNGu1cb}
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"262c96163121a7ea113446558be6fe16dd26917e","msg_signature":"262c96163121a7ea113446558be6fe16dd26917e","timestamp":"1779067251234","nonce":"G8gHDeov","encrypt":"1M+UZ7dv19vVLpMFDeQDfYy8RJuXII0i+otwJHCA31SU/QyEEHkIQ4ukD3hdgerJnC0M92ke55DYDc5QcOV2f5hVA6URgvccXkuh6jvLTwY18xOA1mDMepB7Uj1cVDhILIhnrDzMweJZJx68TI5Idtir7fFBodqxYNXTNv8w5Bg294D5VRjFxUzbFCmUzb6J6PXLPImah1L1SqWzSVS5TCW3t37Xs0pvRAR86nD+5qfWyUJhQzLHdJbl1l3zQVaiMs6o1VHnPJkCQrtUpECSJAUKc+7GHLgowRENBHj2oPqSm3uGieCZaf73Txzzdtcs1KyHef2WLPsQ+MTpHXeyaHsCjLI+7q8qea5QTBXB9ES+KDdsXnMB6MD2mu53UA5YCjq1EomEhCkaAZwQgai8pDtservGpDfjgKdgOFi0mTpJVoSwg5NDS0OLaSIZdhKE+93tXDTLqHMK7qSQzuKjQwZy7zCWtPbar1PxZZ428dyM9O/+0Ja92ze5MuCJMmkHhFzKS9xrU+Ud7w+zjgmkEhdkhIZ1oCozqUPCvZ8r16ViXgK8ZvoyDmTfvhDZx9n7X0zIHul40koaTBja2Em+BMWo2KD112RnKf8rYTCdO2n1q6hqae8ghQvdZfx014pI8Vg8ofjv6F3mhZOTe2PQ365sFNx+BIT0PZcomse6vNSmokQtL9J0vQYvGqO4Q5GPMyYsBS809+miK32it1oWgRj6Dhf7DZZVqQRxJrOGV6Ikg3G9WOaKKfv8prqtS7cAkfgaWq2omXRuMybcz8Ia8RQSdrm3U5kLNFshw4UftPpxzAlP5snryRZOxEwCW0K/X5GMKrVf2zgftAtYkaJ+73RrtNLdsX+y/QVZkBR/dEleljloHlHqmwmhnQPfbN3hLHyJB4Q6pmHg5Fs0TjzvHcFpaA2kWaKBAk5qxNyfsOpaCQjF3yJ4K5iky2hs94uTOi/tnI7LjYKadGmEQNecIQ=="}
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"b0a54bae49b7411891c291d17d24ed9c","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"经营副总","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"start","activityId":"53cc_22ee","createTime":1779067238000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101104291687}
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067254535, msg_signature=81509d43f545e547f8ed00618ace07017bf7b61d, encrypt=5EuOq6CbOFG3jwd/SCWt0haaOeEbuciEU2wk7aBF1VgIbyISXAYs7DUdu/tKucKM8gLpciJ9duaP+vhxS930jw==, nonce=31UHeKDc6Ld0OOFx}
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"32d87d25df5af7e7ac439fde94cdddd27e8edf3f","msg_signature":"32d87d25df5af7e7ac439fde94cdddd27e8edf3f","timestamp":"1779067251272","nonce":"ovcTGUSx","encrypt":"jea2Pr4pR/QVDB6ln+Y+N8JfahT8drdxfP5TAQwGPVdOkaKzM6+51mu3AznLS8utHd+WP3m6uaXwuvJoQGTgF1Bh3LzN6aAfRsiEIJ+F4YGb3BRn713yv+qLgDg3xg2dShbkwnBXo6cjPjCt+HNjoLZ5OkVOT7CRP7dKnbbd3fspclovDUU7uqR/xddtanCxhETj98DQQkub/sagJ1Q/82EeyYvCuXRsrB560hOWF12VE44IrBvddCKZzLKT+3xcKOgZacEuF8preBCp8TJkbJbQklUdD8CG+fowEs7pRhWf2h8oItzogD4OcyyTvZfsl2LW/cNIUq767+7TN4tKkQPDZja7fZLWLFSSjd3fZ7OGGt1tBxFVAvzQtuWU/ZyuScvzsHNHLd7BvZQcznCxSEtc5e5Zssvn4D1ViTJyLw24HwhFgNrkHttW3kzl6VSxiZwwOWoAQxMbfOPXLcUDKYIPzm60byI6gchV6iwQXzF/1SwPTkbi1XqWVjw82ChNbyIXLvT9VftGaNJQ9SXff3p3oi2r28G92bA0G2zJyArdLd8LrI7C7Y20EY83ewBEfBdYrJU8tcjRQBOxH+upEXT1XBQxzPlrJ9x5gFD/4u2Zw3nImtsj7a+GA5Op/ppa0AWYS/US2zoQjdj9SAqvhI2p1Fh4NaKDoAEvW++jw/6SP4YFO/htfx3H1VL1UsWoS6/UCEFbdPdqs6Cg+Ryb/Fg/6sRhO1k8p9MgcNnG9mN1sI1g82TC8uCeEl4e3Lvyc2ynDoOTmy/Q/P5IyT5KElqREFlodhkpJw+ACPsCWskii7glOFTYfZfS34GgvGLYAHVr8Ed0Cz7IAIWDl2sbrV3kg7lL5/5zCB4HbLTJ8mDSH3mMtKoDdvuYU1v6EGD8v9brbq20OGPOisFNwCzmreWJJhchlYh5RwoBWLSBKYm5ufGfW9zuzCbpbQeQ6UdAPGdvkaryezFGM0n1kh2IiDZxIn2yqACFmwtJJRDstIF65FqT5Qfb5i0WLChVQYfM"}
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"0905c3a6b665497da41a3150f99d87d4","finishTime":1779067238000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"直接主管","actualActionerId":"176735225223967751","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"finish","result":"agree","activityId":"19a5_614c","createTime":1779067081000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"176735225223967751","taskId":101104191675}
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:20:54 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067254568, msg_signature=5880f0cc6bddcbc9721166f5070bc51644e0db62, encrypt=+/88qIB3oEJ/Go15XNcWOEh3NGtTu+nPnnZRfcOnwgPtdDz1qKUnPoG9mQ7B409tlhlmlcRamFFL8t6JmwKvEA==, nonce=PkBtTU5XmpbTNuRo}
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"79beb7d5bc4e36c0fbd34265f3d2b6c9263c3e82","msg_signature":"79beb7d5bc4e36c0fbd34265f3d2b6c9263c3e82","timestamp":"1779067283866","nonce":"h4dSHx8u","encrypt":"A6XARVAgEw96SAkv+2sAr4oFh9Oc8nX9p/wE71dHJWWdj7LUSKc+gn68oJ9duxQMRzGfs0Bh6IATm+pmT+RrOb851f2f0HLmXp18aOYRS4Izl0qrwJTaU1yQunRtedqwSGYIEvGgCWNTkEfrBKo0nkWuEKP4kmAn/zbgGaGP7MOiHZpF4l+zZuLr8F3+5UjyuJkf+EKfHh6NyY6+YdBzKFxtexBHtXsGtrnTQYRQt0teM7E06v8BqxooFsu7XfrlInu5azNBkY/2vR0lFSWWaWxlxg2ORjC95i37J9N9etWibnZcm0uhzfZgT3jjHavMELZLqzUaJGPSWGX5NdXybhW7d0D/Fm/sbJZ2ADNKALiltfGzfD4hSRMt5sg3og7RnWS+eIIBCoHs2LeELHYRyIpLc45Hf2qGCQ7dLiUrmXhVn6a/EhVnVtnnEJicbbfou/ddT3VRl6WvKkVK2fjMi9W4DgE3SlaWny+KJC/utHzJfXs4wohqHKwxzMF+V8YlFrnJ2+rdLbnlahp0OTrSjpT6wzV1TVVL4BQipqF5hHtbchdnxggOeKQ4EHcdVpIiWhp1ek9W08Xccb3rQMgwzdshoO1xqLgnLSXuT7i2EHAWfuSa+zUx2ROjosPtptPEoXbvkjI6As5s3DFMMrRZkaPVV5UEId5bd4cTYKtZ5gtjDE0hQFZTOkU1+uUXgHGqDgSdid64sAz9I6KMq0cLXjXDer2MtK0tmydVYlRZ0EvwWF0Np0sY6IXMaXus3iceN38kNrBwEq4UzHeJod4rJum7rxnzlE43R/ylw+j6ixtUPP2qi67TRTlwQqtyx6hHK7R2t7p57k8igVQAFuNFxJIZfM1OydpuGYC2TAb6oXKkIgWTh5M7qve88GQupZN+LTT0VpvPKMfVbDJjGstxpcqR0efjZ9r+wr4u0GlPnX0TE36IsL7WfLlKpwf3mcBVq3qP7MCk++m9ujV3KsaSqejTSuXUCQU2YH4AGpO5tu9CyWz99OpTME8ucOWnMFNw"}
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"0905c3a6b665497da41a3150f99d87d4","finishTime":1779067238000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/finish","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"直接主管","actualActionerId":"176735225223967751","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"finish","result":"agree","activityId":"19a5_614c","createTime":1779067081000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"176735225223967751","taskId":101104191675}
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067284173, msg_signature=95204a48785d04eacc16151d1878a733dc752134, encrypt=yyo2Jw6aMJWTOO+bcNysFULpTb/YtF9PlQRw9UJAH74BEaldtNI2a2NTJYTbJol73nzxsf1r65oRPaOu09xh/w==, nonce=krm7frOO8vMr9uHN}
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"8a82e0e44bd62debe4164facde6b8b71356ccf0e","msg_signature":"8a82e0e44bd62debe4164facde6b8b71356ccf0e","timestamp":"1779067283949","nonce":"PwimurBf","encrypt":"akmLcPwhc1zipMYclAr9ua8GDZEQXUCY6jMCyTl3jAIm4hFbwubzhrflz3rctA8x5Vr4KkNbUYC0AT1K1dVzLiFhnDQuXWIGEfR2My2PpWWKqpn+JFbyI7kG75wRk6wc/I1MLRRMdpQc9+yOwBegs6nmcawC8mVaOkYCCXhKQFvom/KbLujkD7j26pAUE9KEPSdGhnC6y+n6S5dumiovCdmiKUYO32OzfAO8XSBebPSlFX1fdPjqWPPAbieRVsE/kKJMAg+ARQKj2YTXXKBNFcF3GDgkBsGtttsKEY9cHr3Uma6fpxBuLeHorTUAg16P82YpUkFVYVkkxKTlm2EzNAmEgzOodjU4WcjQeXhBX0VSiM5LHkHyWe9LzsXUTPCiTmTVS+IKCYoLoinBE7xikw+XLS3+ivnrS3oslICsu85OQp59dL7Ai1dvZg/AQmH5OpBAGUywhwH63gvFi3rkzBvBNO/ozUNOwdR12H+WPmtMKyZAXJFs17yAROEoUldqR/W4YRko0LLQNqlIfrRbOLB7nXmR3rRYXrg8VTSw0TsklyRbQ2vkhpcXbsYtUp7Is/p/laRvne/knhnxFlLmXGpSrdOFC1NLQ1HqV5wziIB2buKRQxcLISqBNtLaPa+5MuZ7/BeycjsZk6waWv5vdbBppU6+EZ8PbGrPgUEkqLSL+JVp859FYU9XBX+jxNCH/BKgwG1e19zu/M72rlk/NsWTmEpMtXIQWxh4L3SZXs5MDySp/e/hqobaKBjn3k/5Of+vysn90z7QdrZz6i3DUQlAbdWiklNmIqv9eJqZyaxP9uNHp3phgpxiArbmA1/o9ser8Uvh6QrHsUdpohv0KMGSrMZFvzwMCoyc95QRSs5QawEzNz/oUYegCJUzD0fe2CNvbKYfaGG1MDCKqWOpG87EcpKv+Y/BGnleitma9xjdRGJpHCl66JWihn98aMstvnnvmjOC3ATpu7bXLrSAhw=="}
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"gddeuwPJSviQZ0EElvuQlQ08411779067080","eventId":"b0a54bae49b7411891c291d17d24ed9c","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-FEC37380-3410-4EC8-8638-17844A89DBC6/type/start","EventType":"bpms_task_change","businessId":"202605180918000006850","activityName":"经营副总","actualActionerId":"1017253114780847","agentActionerIds":[],"title":"薛浩远提交的用印审批单","type":"start","activityId":"53cc_22ee","createTime":1779067238000,"processCode":"PROC-FEC37380-3410-4EC8-8638-17844A89DBC6","bizCategoryId":"","businessType":"","staffId":"1017253114780847","taskId":101104291687}
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:21:24 [XNIO-1 task-15] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779067284284, msg_signature=1060174513b1905783b450de2a1635e1977ac428, encrypt=pY3434wnokRJGxJ8KvN6g5UJ5rLPBkwogBf/Xbpu9OZ0L0DP9OZtGm1U26wEWR3CcrgZh8cc/qQZt6i4y4xNbg==, nonce=WV40VadIIx1jKbWT}
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"00c7089e8749e12ff92a76e3617ba29ddaa294a5","msg_signature":"00c7089e8749e12ff92a76e3617ba29ddaa294a5","timestamp":"1779068038432","nonce":"VB0SXe4w","encrypt":"iQMOsJsL0p9y0qmVG61Yc2AYK9qV33ybWiwJbeHxK4Sh4oYOrpvLLp7l0uQRLjQL4tKZwgxUDXSbuuHku2LxaeEjukwhJXdZ+ztBIh71aubzIe00kZsBeMnSmRNdcSlt0GXrKc/iKYRY8rGmePWJPGdf0rlzrrXn7+RkKvWEcuAjO0Mn85UplEz/p755M6ooalQFFbzCTq0iuw/6qX2Txe8oOxzTm4HTppag/2hXZWcEbpiZfNICTEpgCrXjCx0my2Vi+kgJ1TohPFmW05Yjq47bLUY78zzA5Ae7fnyz+lB57XJFwmVkzlSeWVkipL1SseSaDiesQZ8YSuf5jWnvpqAPf00FJSLXcSTZpk004QWICePMJ57mNvU1EXlMwQKCnzuRO97pMrgPE5k/Da52muDVbaFQzF5Xlc1SY4TD21Bsws51hDyInoHf4JkanmKwHwL8x+ew9czbMZdOTJy1nHPFZ9NNeLe8ncSmr+jeKmkaYio2fSxy8GaTN/7E8QpBogsQMH6JYX8HsLkoKWyR95mpzRCxq27Es+nusuNXitITvKkhpdiha7ZtS+aJcO5q5z+ev/zt1G9Wm2uII4OVWx/LmCuxGrIMWe5BAN0pWVqb/Jlvp5d1wULlcdNpIrG0P6GJ+tFwipCC01KbFSqyrG8UrRD1qqO+uZalS2MzahzmLqCse+hIVmHjm2VkCW4b7s7LB2Ep8zZO6/8bTGtZbRdyJSucIPP+bQfjLypGaR7wRSxg9vPE+8Z6Wz77Sl2cMo5xD4EslEGBch87yBIRj5+gnKMuJqrWt8nWQ09Hyy1Q2NGl4HNmnkJ9cDN7kOTfhKdz4sVxiW7FrHq88mfroMvOSsQu4dVq3wIoArCjLuj5SlZDOzNpR1hLZTI2ztGwuOm3ihi8lA3S7BXyAaB67fnq3L5A9M2V1S2ybttCJcY++YEx6UFXyjDt+2ZxafBRo4KADM8H56baag9F4nM2UiAtw3NVINgnIM+J6AjMcOH9ZcF3VsCrn1K7ZqEFcYerEPwJECJRaBpIlD1f/rcy9tIs/EhmYSe+FJ1BiQj9RVs="}
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"18b267ff3d264935b88704f2622951fe","finishTime":1779068038000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/finish","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"生产技术部长","remark":"","actualActionerId":"01201038164023402380","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"finish","result":"agree","activityId":"b689_7c0a","createTime":1779065223000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"01201038164023402380","taskId":101102887296}
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068038774, msg_signature=48eb20770cb5445821dd9acaae49e65306a3fbb0, encrypt=ZmMNQ4SpTt1Y0HTZgHb2uP4JhzVwhn1YZyCAPhX0MCepAC5pTDqih06n1b/PY9vZ7x7/h1VAGcqrLwN5gaxW5A==, nonce=sPBq3nXBDERbzrjQ}
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"8af1a580c87d48ea0dd6589978e8b8930e5c0cfc","msg_signature":"8af1a580c87d48ea0dd6589978e8b8930e5c0cfc","timestamp":"1779068038580","nonce":"OVfazdyw","encrypt":"YTwbrOaceTAgRRY/SnDdB2wqiGYftzaWk1OulwAO+HLms9oYkArRLGPfXXpNRgjqGrt7UpVeGHmp5Y1nywGHS06m1XrcwCA0QhCSozp2PGpe9xUW3a1fepv4H0zeqaFwAnqPz6J+6drYDERxha4Zuo0TknvRaL9QS4eLPSGC+sm+XHe1/RvDcS2sOuCetBbE5kbwvrbeSDLOmahOJa2K1N8ZEU5jypgXxvL9WaaTy8xS4fjJa4aRFLX2DpWBq2R5xJ5vad61lwUMOu0tbkUvg/oqryAi0UzH4Dj44JKn+jvUULBKqOXzn/5pJO4fJpL7h9TlBkH9Fwh/yxyhoiUu9+MO+YA+qthEgeF8jK5mnYI2f1sGXCKqQc19RK0cgdgSymYLDNajW3WvGrdMqOV3DOGXi7PZdTviYccRQQTIuSQ5af6Cr3nbBXAeXVTd6ziou4mcOfntzwbLRQGPj4YmLAq/0B8g8ccy7dl+yZ5S8bqOsHE3+kZvDrJLSnpI7+TJBjbV4jr8hCAmZzwKilUNCs3b3FxHAsstNqrmvX4ETmsg/kJshwHJbv+bNVnBXuGiffR9tRbFcSCYJRkNqMz1qwTynjWf35A0kolM8VReuXeaXXNSH3AupnsrDR6SBuzaZAmajNXW0ebroiHsAtCt3X4FExjvoqlgUY3BtxV4doBkPrCBMSSFTHfXkF6wjf2nI50xnXFTSvP9B25UYoI8aXbp903H3l0Zl43Y38lV0biRzrLp+PbCJFIObpdcW4J4pfq6YbF2OtTH9wIsVLOLu+IQx8ao8++E+RoY0kklYKrrdbAc6n/ARC0VloLEPGzEiso0TOitJT8aCUVOQ6XMsAkRnS5zcBtZ+ol9LOk5xJ9lAJuNue0Bu+KdFSt8Fy9nJmucm9KHviYLgiAYyfWX9kP1cxwbTC0CpH0D73vWmRYF0H2J93BkZKb3kLP2XVY/JAc5IuC7apYoUbIWG6cQ8Q=="}
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"RywCD4-WSe6yxrpgQl1YGg08411778914559","eventId":"b3dacc863f0f4aff9db33192bc73c90f","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5/type/start","EventType":"bpms_task_change","businessId":"202605161455000597391","activityName":"副总工程师(非标)","actualActionerId":"3816683726197864","agentActionerIds":[],"title":"位晓峰提交的售后联络单","type":"start","activityId":"d81a_b76e","createTime":1779068038000,"processCode":"PROC-A59BAFBA-8AAC-4943-B4DA-3FC964AC47D5","bizCategoryId":"","businessType":"","staffId":"3816683726197864","taskId":101144070875}
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:33:58 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068038875, msg_signature=429091eef1a6ca0859bcbbd7e39ca09f095a5fa5, encrypt=PQYxENQScJIy8rbitFKYUpN8s0a8Feq/aWzu3FHcXQhnKKs66yGp/14KHNUIuWjW7V/a50rhXoktnvAEC16u9g==, nonce=28yQkBs9gIlBYNzw}
|
||||||
|
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"bd29bcdcefcfc9b1c7d9685d5f5e199ebbf530db","msg_signature":"bd29bcdcefcfc9b1c7d9685d5f5e199ebbf530db","timestamp":"1779068161568","nonce":"Jm0fIjMk","encrypt":"HKMqjypyTMjg4e52c3hlHGZWmoFQjOzsBJ0982xacD101Sdo/+6SzwklBfAikf1xktlGdEsrJOTmsqhOTJcthg48WoZhOm0M1R4MrXXc4zmtek9b6vCKvNL5qBD3mJdH2RxvXepoY78pwKSojFZpNiUUOdLvTnIzQLPEngEY29SRpka7yZUHb8liymOJhDrcB5CwFHbYsNdETAb8nUoLJTCGS3bREdJBqnSbTTa7yavj1uXji/82nvTLLqgW+NzpbaNYdj23glp5IwzrsT3IRKCJurEHNMIjh1emDoUJAqsz2wYctYIj+BUpwIZrU9bDEap/hyQmyERiWwT6RvTVu/UTJ+9e7a/n6lR80539MrsU3+kVN5nNQpO9EA7dlynCuTFKTYe2ebuvOdieCQ4OWRH1kL2KKNEUh9Je+jkaYLurGdtduCGuGT95Y58nCFYcaUFxk0hpg1bIu/hqqtH7DCa1JLVMHTM5N//iVzlWcHmxMbhazbaXfV/r5TZAY93BEYtloHeK56tPg4fyqEZKTVNU+r3yGVc3xO6RYecSHm2i5mJvtCYAAxnHAQ6RB3HLyZdX3FsJUqrak7uHCFvchfYNz/BFtU4ILmDgmPYXwniIYbQ76N6eDlnN/ThuMC6r9KjovuyiuBKxfe1CNsGci7fyrvHqGQ0rdwtofTIFYI4Oih9DtEYuLMJ5XhR1eC29FXtUoVRHu8r8Npbb5JEJXKSPne7ZZ7R66QqJ7KWnJs/GunfKmR4WNDyuyzVQy2thcfBlBygdGGVFxlLYCbifIl+M+FqsAu61CrjcfLklFsAFWPZf4nKfmyLy0oGsTJVFLKW9BN8+VEfd5Ayq+9KTPsrDH1bDBfhc2XPdHSzlF7loF8W6EpXUAALjhdZ//Cy7Zv5WYs0Fvk9QGteV/5BA1J2azb+LFp63bI84sUGpdX1T/Z92AvMvLOYc2bWiwPJ5i+2xEzmAXDETCuONSiUczZJi9DEQ5QpdZxp3RJom5KKsquAPksILI25fKnDxWwUg"}
|
||||||
|
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"n7TPO9MCSWSMTowwenjDNw08411779068160","eventId":"8d6efa7de0bb4a9daa97a384f8afdfaf","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35/type/start","EventType":"bpms_task_change","businessId":"202605180936000000713","activityName":"质量管理副科长(制程)","actualActionerId":"173760274129324770","agentActionerIds":[],"title":"师敏玲提交的不合格评审单","type":"start","activityId":"53b4_05e1","createTime":1779068161000,"processCode":"PROC-3E5AA98A-55E9-47B3-BA84-0D2101BB1C35","bizCategoryId":"","businessType":"","staffId":"173760274129324770","taskId":101172625123}
|
||||||
|
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:36:01 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068161881, msg_signature=778de7c38b18001fe4d495582d76d2ac1ab26758, encrypt=EGscNi1LyD2n7YTnomPcWIfn2CxzXopH4w9wOWviN1hEX6ZCtFz8RASwX+j88ZOifudgopBsoLvG3YQG4UFJ+g==, nonce=JP1ZfE9o7w0X1p5A}
|
||||||
|
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"c4da823cee21a607add6bc114b652b929a450405","msg_signature":"c4da823cee21a607add6bc114b652b929a450405","timestamp":"1779068687878","nonce":"mjCyjLDu","encrypt":"mAGrd4oNl/UP5GhVYkyAF2MgbTc+XiebtuiRDW/Hrl1yW84w/GE6IKS/jaEFgPKZ/hdXmdgRhMo6CR0AyDi4yDzU1LkAOGs3GC75z6hQKyXl5qJAU2JLRtCqssGVR44FgV7x8+eX8twOC+8mYpa88rlmGVceNdJEJ3yRUmSIj1eowTM7yFq9by2gZt1ioRw22JLFFUF0Hq+UOR9svXq8K+PEw9Zgq/2aAemB2ILl6FhJLfmyTApkyJcJHSjKUCQ07SLaoBfzqrSW5raeUrDcNQK7BAjMvFI5ARCJ07dU/KlDKezHbH3QJmK7dmIPXl/h96tuzuLo8QTzd+uqL1Qp5hlvDUAMU+OgVxLdGriO9DNfUiAwwgdB+mpKkGBiAJECcN2IgHtfjIkTL+Wes3tlxKoAUgz0lqdFH8Ds0fjfKdFcTcJnCUbEV0K8duR7GrRDrTfxJ4ncGhGVRSPUEvg2zKnrzp8ttz9m/i4s3dgjaHny4vuGXtccNthY2I1A9uajuXmGCnqIT4yzY4z0Wc0uDHQo3XrIZbRHWt38BBkO63Si6CYLFUqGHxElJEFaE5F2pnmrug2bs6bHiz3MItMKjTumLwTRVnLDAxp/z/TatMUNtZrPT854EBNIm8G8u/4Hn7hRzIB+F8/KR5ZWMm0h+B9KB5pEKXtsyjVpMQoED95PogzQMohKO/hOw6orMVrustrhsaYW8j/IZIo8F5mPZe9oBU3Yh+bVI0R6+GVI5MDIDqKfucLh8QRra+a5iovErEDx0SOMKCdRTTGPNmGIawvq1iY82ovNkDPzH6Hn8D5Lf4VWwbYz3PHm0TbsT/cOeLQ61BFkoCMXUJyXtjKOaFqsP+pJIBtHX7CDLJ7VB4YZ6r7lrLZDvsqwnTp434Y1+yjTuM7h17hEeJ+O+bTbBzdNVvNeNAnC2xZwmsMneg3UC7nvQ29PJBoFII3c3Inwx7l9WVF8tmLsY2MzXvUMwpZhEplF8AWEU2Q5hBsIlNEXHz08Icj1TNc/KrQxaD+OyOxoWZZBAgeFN+gEf2i3oKFTdUOD4O1uTmDvG48RMY7XZM1VZXK+XRfhlACpeOk0X3bJHDeVEYdxuRu9GOu0gA=="}
|
||||||
|
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"xU4uJ-I8TEutJCaj6okI6A08411778812708","eventId":"7b6e4f64cbca410d94af2156460dc4ac","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/comment","EventType":"bpms_task_change","businessId":"202605151038000287274","title":"陶佳毅提交的技术方案申请表","type":"comment","content":"当前技术要求下,杜惠斌和马杰这边无法完成当前宽度下实现客户需求。考虑到方案申请流程的变更,建议将该方案提交给总经办,由领导判定[毕敏霞](02212765235927371076)","createTime":1779068687625,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"231850251526222856"}
|
||||||
|
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:44:48 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068688212, msg_signature=621c39eef50f73d3ff8f01ae304147bd574c0218, encrypt=iHlTuO6mLziFbh7X7V0+vgIZbeGkGqHoQH55UEukfDRVqVk1XriuExkDCs7qOMMf+hwEDjgZBmmHEpGkDh9x4w==, nonce=7maX9uadzqzhTUdL}
|
||||||
|
2026-05-18 09:46:39 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"f8087ada1ab2b7a81180592eef03ab95b78dd1e7","msg_signature":"f8087ada1ab2b7a81180592eef03ab95b78dd1e7","timestamp":"1779068798717","nonce":"bQUFx6nn","encrypt":"JSJu0D5wY6Gu6I4Hm5JjfytyZbrbQibp5+oaIKtiLDaMf+LsD2Gv7X58G1OUW3RB6iF/OTKUrYibbE6q0fhlEivOTw63aoU+vAKfFZsgEN1B+miC+oz3JsaDWhk+Ra2MWqVjH1jmoHeSAyJ5pMrP9nJWxk0L/dDiSex7uOS8q1zaF5UoXgUErAAZtRBgB1Z3z9UoPaL9aatYob8LUdt56LkWdSW/HDwgCx/2arD5/m6pEdbpIHzeWnoIrUc+OEyZHPqdqSowInPaIysk3ED93uJYOraliSbB7D4kV2bsepFlsZkqMc30msSKcomtNawZwWVrRIdQPMhstdCrffzO2vjYqTiLSW6iJRjIywFT+MnVKdz/Hu4DQ1vNbuB6as6jsbG4f/sTxqDvGGyBn4GpWMVuGNPgK4Gef0JAA7DdE9xNQ5LtX9vvZ58hL1JKjDuRnoAhaCtKtabCyQ8LI+Fm05O99oJywrjrN30lk7mwHWKnZHzdKGQdNFgKzG30r3JivsRIdssWX3ll4ziqNTJxAppz1KQf8dFvy2d5vKoxQHJ5jb5AxuVgsEFJXORbucxI+o7OxgkeqjBg02/FX8bU//tUEUOR96BDOJA2EuX8dWIcn0ey4ULgBgLNACqI0yO9JdiFi5LQeS/Z8uW8hWaRoTwhVrOwwkp0c3fOJD/gp10mi+EhDiWX6jbmg9auhr+pqJEmB8mjinW7BM2o/uePhFFga9QYlmz69Ep+0x1heu+e28o+vb1wVJfAD2dGIJ+MfPH4SnE+vGzFdCGtczS3WnMOHDiehUBtw9+HQyFXFu9X0GtpEioCOlKlbXQRN/c1GewPjixLAv9FKCZ9rZ/mvxdxhXYlWMSyNRpR5ecXCVd+3xtX99kKUeCO6eM2w3z24shnDSDhChVFywAYdfii/Ki9kzmGNWVTok3ZAv6vkoaGn6wt1T/p40ywIa8/qKronU97jQ99Tc7K7suEmHS+xQeE1auJVzTYdCeby3QejLJCNAxMadEaT2wCZmNIQg967QRjMSCnthKoLfKvw91IPRn79iUMSemLyXQPuMYHIFc="}
|
||||||
|
2026-05-18 09:46:39 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"af5ab9d071294855b9c3871995e96385","finishTime":1779068798000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"项目负责人确认时间","remark":"","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"76d0_7eb3","createTime":1778912734000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101190348445}
|
||||||
|
2026-05-18 09:46:39 [XNIO-1 task-13] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:47:53 [XNIO-1 task-11] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"8d5592b92ab7d881159b10a29fe3c54a8d41f0c4","msg_signature":"8d5592b92ab7d881159b10a29fe3c54a8d41f0c4","timestamp":"1779068811328","nonce":"Q0L14cMI","encrypt":"QHkX41oVsp6QPF96CRR1yRGGEU8Xvn/FCNu1CtneMfBa42Wo+6vLtvZ3ZnkGzy4NUhi26ssmbrlZRWZsXK0PD/kpEawXMogbp79zQeWkyGGO4HnntH8JFdV/K4uz0QqKVxf/1cg37EITwyzuEvoXu5htyRCPYeiBt3ZNjcZj8RrQS9+VUMTY42r6zc0Qt0KPmwO04YtioOwi+XDzLh5kuB3YQ2D0a4UvkfwO173EB4hB/X9mVxBRVPTEPJKDky+BXQQtOAeUc2L2V/+9iJLdESgiY7alLOn6fGtDUbdbqL/w6WuftN0yREYylCTXNfvuPHY29YxLYvbZPcgontLtY2+FjvCda8lXu3olNx6DygXVdHIFC4tRCBmLoM3HjUPs9cdlTXXM0313K6vDp3MxO95Gn1AzFcQ/JZsZ6AB0jfPXXOGS2qdfVwMVISx3btB1csOn6jx3tWyK596M9XYoni1gmLDI+UAvco3CmEv9N0Ljw07AOtCzHOB363f/V0zM/c6IPptL3WtcTi2+5ujdDKEw/GxR2rnZksS0EkMmZv6JnN5yUIx+EM5MlZzd9X8vZqQ8ckuVsdT1XrvGD2UGY6mfaXNIB/fcWi18wEOfppfxjIjqUyxfjNYc+k/T6T5bdNTBUSyyBzw+BSddi+4ImRa3YX3EZnxVffig3D/A2Y41bLpRTiCGWacuXDlj1Vf0DWVfBuAOv8tw5IV8J+8fV1x3GDoaIPjKM7JIJ3WP5pYsUxCY5ILIaxxmh67XwL3LrE+tIVhM8tePjeRMemBJn3w2wZ5MjYG9YCciqnUdmXEr1UNt+hAxajMAk/cRo4INW9hjtUUDdGg4pMIaR17lpFxUFna+YxDV8CxOUP9KQIEK4v3hl50gJnm0m5SgIrr7rZBHkgP8uIRq1wBz15StZ+rtC/CYwvgW8h1+BRZ9WGN6O+Ghaqfj7r5XtDmJpdm90UHlZaKTAhysTIiRX26h39naZLFybl8bXah/aHGBSji00Vsaqs9Xs/Mm5aahsJrMHSpxFyTtsdgZXukPDWbbALRgEeShGx1RfmCGovSrr0s="}
|
||||||
|
2026-05-18 09:47:53 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"4562c86d3a89a93f5ccd23cc1df88c7843da8c0a","msg_signature":"4562c86d3a89a93f5ccd23cc1df88c7843da8c0a","timestamp":"1779068798725","nonce":"fTvamjDl","encrypt":"Y9ZBMp/i7p0RbrAP0aJjXTgy8TfNMxNPExGCmVFG0FkQmbq4nuPQ58V4A3ci8WyLPdnZ+qqDfO+jYDsP55f543G0vZbxtZKpy4bJbQm8k4pKTa5S64d7ZVtsLBmXhrvL1qR1SnLyHf/Ivj9yi7xaQfAi1YsK5ZBQxG7+01CZnBWU7KtLBIZZfKjBLg+QBhjdcrT8MBTbDCjPH8eHV6U6hcPL+Ew5h7y7iowb3SrT0iIkVCPwyn3XSpPJfH7ZG75jKgMkb7up69uPBcJ9VQW+W3/005rnmlGcmbXfpTHmURr7cbywBlWDzS51RY5RUX8oB0eqLmd1YzZw2t5eDYNHbTT85C9CDRy2knVo5kLegvzvikgFXV8ltRxPT9BTGU2YNEhUrXu+vMHErm4PJ0+ZsjDSbiUMdxua27OVsh05uUcxvcivUwmyrGgmXjmJNti34OdAVwNRWrn2zossdb1l9JlNtt/Et3V2nAp6N/5+REpk/6qlpIyCvjydU9FxspAeM4q6nHC60BhiWfn8km/w+q/k5+qEWqflFxV/PKuWSxrRgOUP0B+GQNrQPW4pPdxfZ+o72ISm03l0oUXI+XuE2QYR0W8hstS8O6xlwJmAzbXKGL2IeNEYmb4WanQRVGRUmRqiYW3ACpUHCb/5XH24mOQKFN1LRZB0Yn7dIZARlsPOpTAbNlFkRKlapygysD77idQ0T97OA3bQdykVDcYaw9WWZMgItib5ZsdT5Pn506tc+rNbOviqHr48WwRiOuS+INzbKF7qb19i5ZUmbNZwRZ2qxp3guyqGb5w9gFnFNgsCaZF7yu5OtMjEbHChCquzLHUOdOQ2nitiXg4+GqtktGwZNPGu4VOOr82+tJp08P5tBW3EzrzOkH+23ZQ4euKlq1G8sF19sBjs+oZut9Q3DGEj0qGwZygeUl8SDg9okgfMr65ktWOC83eH1sita8VbKroS2JSd+oH9P6z08kzuaA=="}
|
||||||
|
2026-05-18 09:47:53 [XNIO-1 task-11] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"af5ab9d071294855b9c3871995e96385","finishTime":1779068798000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"项目负责人确认时间","remark":"","actualActionerId":"283111015435457273","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"76d0_7eb3","createTime":1778912734000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"283111015435457273","taskId":101190348445}
|
||||||
|
2026-05-18 09:47:54 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"8babb5e69cad4391a5fb54bb421c57d1","corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/start","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"办理人","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"start","activityId":"25d1_3948","createTime":1779068798000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101173037254}
|
||||||
|
2026-05-18 09:47:54 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:47:54 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 收到事件: type=bpms_task_change
|
||||||
|
2026-05-18 09:47:54 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 返回加密成功响应: {timeStamp=1779068874421, msg_signature=87ee2a6c56f2b149b3f5434bae4207de8ea36740, encrypt=pJ8f2hb8Zvu8/HJWP/H776+FlNKCjlElpNL6l5645gORrLQvdvQjc/UJgpVQCyZTpzJ2UGQv4HfdSzloph8efw==, nonce=OB1E8k7ffNe1IRWW}
|
||||||
|
2026-05-18 09:47:54 [XNIO-1 task-11] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:47:59 [XNIO-1 task-2] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"815efd81c932c988e2f886f167c693233a1a13e6","msg_signature":"815efd81c932c988e2f886f167c693233a1a13e6","timestamp":"1779068843969","nonce":"NfKtKa29","encrypt":"ETShVBA/eLfP6u8116RcjXVTro6ojyqNLaRugCnpd6PpShVmXZ24O+ShT135b6kCdfyVW1JpcZClpaDevkBgHa+T3n7T4VF1EcTBWVVqLWZYjL982jPoBSig6EdhV9FJjXB3oRu7+42uhdZBnt9cl6YUeaCnKJVXJckdVEN9DZm+w/2wriwVUNcuzAaUB+n19hXQ5mXirl9+KBmq8nbdjCLWpZ5QzMJmPj/79bFllrsC0lNYk9WHeetHxUnR7n2yP4XwEkWt/SSATEImpZgvPP/8dpkcIAgOATLuMkJAbwp2JlGBgCd3lncx491Q6KyTUHoBGm8wym17Ltp5MaTbFXFFqc5nvUahM8OekfruRAYN4gkr//JOGB+vkEJbwgxjq+5br1O0Cf/mMkMiMqBoR/Ope4H6C0vTqAyaChNGIzZRZp8DFw5g22d/+w7g7ZSUUvMMFV3exSN8ok2Cj8yjw8KrWMg7Gv2jNQwGh4vaX3u62NxakXxdtXcXKmCWa5TefCDnnBarHPbox+rkUC40eHmgmkvqmJoJMqbLD1Xrq+hbtSOdJXidU1J8wnYb0DuWRmXFgGG+253oWrmyO6Oy0K/6jqC7RZt7cCfFUjc32O2bNUegpAxM48gtnrtoy+xhkQmIlBLtP/WqWLQNogu3OSGXf43GzqiZpSHxj4jbC7yy9n8/FiRYe/LHd9LAMXBtBhP82mkAz0Xz2E2gs6nYzCjAsAF5c9xQNGczZhFD3tNCMN2oQanap3kT10EI5U7xAFIDCv1yqizYv7ycZQ/ULkGCTuBU8+wcZ1P58eoukBsSXQvDzwx3eaAYEGQjS1le20eFOBHxBquB7qfpE2jFpmzfsrKiNlHD1XGXzWOaeb5U42Er+vsdaaXUz+7TTbsKrmlfKSzm6xtwaoV/1uFXxvQ4GSRKeh6yMNnBs0tlJYCFLO/JOEQ1tncbQ2XTWAEg+JCzQa85m/W73gpyy2yQgEMLPaCJ/L/BOKtK+25Sgdyq498G6ydPfzf7Hjws5PV8WMiU7081HS/Y7Xwn9hlKAyMtoCbjGRqCoGgFdK092VI="}
|
||||||
|
2026-05-18 09:47:59 [XNIO-1 task-4] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"a488a8a0594d89c01a28cc0425498ea3b34ca516","msg_signature":"a488a8a0594d89c01a28cc0425498ea3b34ca516","timestamp":"1779068847935","nonce":"ovAQwDjn","encrypt":"WLp/z+zJTJ4rlwmbqcj5rUn3q+n9sTPfxfQS3BUxp4uctrzo3OUh6dzasVX4q+3OtVKDjI70D7LPWq2ngoYiBQfhIOxg3aKpCXRiwQ1SRVo6mRmZifch0kowTQST4Z7EYDQS6XT6HNf3orUwRmQw928YDzgkhLBQBKepLh519Dar/AS31qdkqZ/8aZZkx4OLNRn3XL3E0Jfm1Q1JDSpnyPMZdzY4rb+zx7Jw62QVfxJRN/4LHXu8q33QpoeKzOZcrAZ5tah4ThqePidg8giLA0iS+dX6uDqIsViytIpff8zTl11VDFWvRK7ixfEXhRgb6vSNRisedWpgoWyBCNY27qnJmqXEaWSeViSlVrUb3t99ZZLxPe226sukve+F8MbMC3DnbnDZRo4iSim7ioVynOO1ec2g/BSCKJbcyNJ83R9KaKxcc10ECUVWh1Oy68YhlYmdi7ovPKOcoG+AF0rgHVlf2o2Ef2OJbypj9WoYYY/VMTSTJ5WhpIjiBHB1bl4fmpRHu4z+R7wEwGsU6LBvSEEXvHZ5YvwFOOkBtblMo8F6Na8P7ja+ox7lBNV+fU6ee2uiLrtBFrk0QvaB4POirCtBaI+SOOAnpzwfRAALv6iIsI94BzOenUYcabC6KPUbLoaarBmhBNkdjA9YF6rzqvlbLRf05Tnx+lphsYOweL6x0z5xn3LycgmRTNR0ocgALUnrkdl1Tx1SBAzVzzLUXqnLbeYSqGUbSFaVwjnb0af5WOyl82hecwnvvjQBQrWof5xMP0vtz9jFrzdjCqvI00ZVlqriXnW4JHohOyO2u/BhfHv/yqvz3+4BR7h7Pr1zj5F/Z8C3Wgdlf7TZp5PkGNnsxvVUXHt/jz9gReCnxh01Z8ymj0it2riAS6OMazdHiGSEJt+tEqDOWp5xQGGeLe9hF3Jq7DP592dDl6h5OpVA6lDIFBVtSCzTRB5VmiGoecx7/REBfZhqF62w6sT5FSKji1eBvRxGEWGRBwC7R+IT6Hx3hlJXWXcGrRH/ZYRj"}
|
||||||
|
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 收到钉钉回调:json={"signature":"2acd0a4a2777fcf0e2d83eabf8ef083dc07d7a24","msg_signature":"2acd0a4a2777fcf0e2d83eabf8ef083dc07d7a24","timestamp":"1779068847843","nonce":"MCTTM4Um","encrypt":"Wvs7hwa9GKXtkOYj6FdmUTh+7k9PU0MdDLPJALm/98XS0/URxOZoH/xPBkZXvI+zBNBO1baE6ESTWVXADNL/XPEw+ctHmdGjMqVIYIuFQ9k4tExVc7Yzex1cSxsF7tahi+PzuE4Va5N5Ewn8fkh0lg8oO2UlTkA28iom/8zauGhwkklju09Wfa7sJymQewH6xK35BKmAGG7w5JEu9t1cXKXwX+12woQ+W8mmDKsbmKpnfm9JKUNm5+6jQ0r5/QNGVLwawh7NDGQu5bE82MgDJSOMp+IGg4pMBhA3ifW8o5B2H5DPRnPHgbv41K6UgsiLrbNXfeejZjk5pG2d4TSqu9TNRMqXdLADPieMTNUlMVY1rSnBCym1NM6jGztHKCEocmlRwztWrytd1glANBwCqMlyH1iqBWk/LcyDuMRibHtSVAxZfxj+BqjzQnDunpUvKgwEStON13Cte9R4ajh0D8IOnd7bkX0IYA8G2HeQ5Kas7+7q3iq7tenq3pDbcjiDBk56xjgMJB2Uhe11NLWp2YpZ/JMkxdZolJtf66v/czlksDsj2v11yeVkIXiu3mRHFowjTAV9X7BYWjgjjr6shpV1CdsntaTIGhacDeR5n8p0w6xuCcHsVgpQKBGZqkUsOWUekaga8DlkXs3fL9v7mrRAlqqWmy6nl+lidsV6wizDYzWTfPtFAkvisDqdHzXd+eG/AoYDPkZq599obHKj8hmyF+sIzDHZ5g7i3cfyZHU9C4rsiRwMoiKrmlP8oJ9ajvHmGRwxdOtdkQxr+sfc6xVCHUT9n2WBe7uOIW6xl8BVcBydiF7LwZmMH4GVQVvSLpjy8bcKkGSnJlxalD5U3boFvQh+2iZT18mFHgxzzen6HnhrErftgbH2lXpqTH/ZGZmwZA18uMiCkh8ZyDdm8cgn+7Hq6H9AJNKTtX7Om4fdCgIrFWAX3DuqPpXGwxhxljcsNjiVJk6ouiHu5s3kOrocq3NWVPdX9rMSYr6jAwa+kaSCQQAUbTc3rwEISTriPDoFa3GAhQ79YyGPT4DTaFQZvCTpX3lNiGNLkRXBuUg="}
|
||||||
|
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 解密后的回调内容: {"processInstanceId":"GFB2fmehTxGfA-nBZmMRRg08411778893677","eventId":"92ad2e7f01ed4aa98d0dfa67965f2810","finishTime":1779068847000,"corpId":"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0","resource":"/v1.0/event/bpms_task_change/processCode/PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB/type/finish","EventType":"bpms_task_change","businessId":"202605160907000570685","activityName":"办理人","remark":"","actualActionerId":"03462113426124233873","agentActionerIds":[],"title":"张新怡提交的技术方案申请表","type":"finish","result":"audit","activityId":"25d1_3948","createTime":1779068798000,"processCode":"PROC-81A79B4D-F0EA-4353-9A91-68FD7E3BCEBB","bizCategoryId":"","businessType":"","staffId":"03462113426124233873","taskId":101173037254}
|
||||||
|
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.w.c.dingtalk.CallbackController - 事件类型: bpms_task_change
|
||||||
|
2026-05-18 09:47:59 [XNIO-1 task-14] INFO c.r.c.d.w.SchemeApplicationBpmsEventHandler - 跳过方案申请表 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}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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() {
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
@ -0,0 +1,361 @@
|
|||||||
|
package com.ruoyi.system.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.ruoyi.common.dingding.workflow.SchemeApplicationApprovedPayload;
|
||||||
|
import com.ruoyi.common.dingding.workflow.SchemeApplicationApprovedSink;
|
||||||
|
import com.ruoyi.common.dingding.workflow.SchemeApplicationFormItem;
|
||||||
|
import com.ruoyi.system.constant.DingSchemeFormWideColumns;
|
||||||
|
import com.ruoyi.system.domain.DingSchemeApplication;
|
||||||
|
import com.ruoyi.system.mapper.DingSchemeApplicationMapper;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.dao.DuplicateKeyException;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* 技术方案申请表审批通过后写入 ding_scheme_application(表单宽数据在 wf_values_json)
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Component
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
|
||||||
|
public class DingSchemeApplicationApprovedSinkImpl implements SchemeApplicationApprovedSink {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(DingSchemeApplicationApprovedSinkImpl.class);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static final String ID_SCHEME_APPLY_NO = "TextField_1BBYI1OFDJA80";
|
||||||
|
|
||||||
|
private static final String ID_OVERVIEW_NAME = "TextField_FRLYG3CQ3CG0";
|
||||||
|
|
||||||
|
private static final String ID_FILLER = "InnerContactField_9DSIOI7Y7AO0";
|
||||||
|
|
||||||
|
private static final String ID_FILL_DATE = "DDDateField_1BHYQ7T5N5TS0";
|
||||||
|
|
||||||
|
private static final String ID_NEED_DATE = "DDDateField_YYD1HAMKFXS0";
|
||||||
|
|
||||||
|
private static final String ID_CUSTOMER = "TextField_1HXMC0VO5TCW0";
|
||||||
|
|
||||||
|
private static final String ID_CONTACT = "TextField_QBMQQBNCTA80";
|
||||||
|
|
||||||
|
private static final String ID_PROJECT_CATEGORY = "DDSelectField_845RKMRCBNC";
|
||||||
|
|
||||||
|
private static final String ID_PRODUCT_NAME = "DDSelectField_1XTHOHPHULNK0";
|
||||||
|
|
||||||
|
private static final String ID_TASK_DETAIL = "TextareaField_I623WTCGKBK0";
|
||||||
|
|
||||||
|
private static final String ID_SCHEME_SUBMIT_DATE = "DDDateField_1QY4LG6SI9FK0";
|
||||||
|
|
||||||
|
private static final String ID_SCHEME_RECEIVED = "DDSelectField_W8ZTK2TQHHS0";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private final DingSchemeApplicationMapper dingSchemeApplicationMapper;
|
||||||
|
|
||||||
|
private static final ConcurrentHashMap<String, Object> SAVE_LOCKS = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void onSchemeApplicationApproved(SchemeApplicationApprovedPayload p) {
|
||||||
|
if (p == null || StrUtil.isBlank(p.getProcessInstanceId())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DingSchemeApplication row = buildEntity(p);
|
||||||
|
String processInstanceId = row.getProcessInstanceId();
|
||||||
|
synchronized (lockFor(processInstanceId)) {
|
||||||
|
persistRow(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Object lockFor(String processInstanceId) {
|
||||||
|
return SAVE_LOCKS.computeIfAbsent(processInstanceId, k -> new Object());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void persistRow(DingSchemeApplication row) {
|
||||||
|
LambdaQueryWrapper<DingSchemeApplication> q = Wrappers.lambdaQuery();
|
||||||
|
q.eq(DingSchemeApplication::getProcessInstanceId, row.getProcessInstanceId());
|
||||||
|
DingSchemeApplication existing = dingSchemeApplicationMapper.selectOne(q);
|
||||||
|
if (existing != null) {
|
||||||
|
applyExistingMeta(row, existing);
|
||||||
|
dingSchemeApplicationMapper.updateById(row);
|
||||||
|
log.info("更新钉钉方案申请表归档 processInstanceId={} id={}", row.getProcessInstanceId(), row.getId());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
row.setCreateBy("dingtalk");
|
||||||
|
row.setUpdateBy("dingtalk");
|
||||||
|
try {
|
||||||
|
dingSchemeApplicationMapper.insert(row);
|
||||||
|
log.info("新增钉钉方案申请表归档 processInstanceId={} id={}", row.getProcessInstanceId(), row.getId());
|
||||||
|
} catch (DuplicateKeyException ex) {
|
||||||
|
existing = dingSchemeApplicationMapper.selectOne(q);
|
||||||
|
if (existing == null) {
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
applyExistingMeta(row, existing);
|
||||||
|
dingSchemeApplicationMapper.updateById(row);
|
||||||
|
log.info("并发插入冲突,已改为更新 processInstanceId={} id={}", row.getProcessInstanceId(), row.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void applyExistingMeta(DingSchemeApplication row, DingSchemeApplication existing) {
|
||||||
|
row.setId(existing.getId());
|
||||||
|
row.setCreateBy(existing.getCreateBy());
|
||||||
|
row.setCreateTime(existing.getCreateTime());
|
||||||
|
row.setPlmPushStatus(existing.getPlmPushStatus());
|
||||||
|
row.setPlmPushTime(existing.getPlmPushTime());
|
||||||
|
row.setPlmPushMessage(existing.getPlmPushMessage());
|
||||||
|
row.setUpdateBy("dingtalk");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private DingSchemeApplication buildEntity(SchemeApplicationApprovedPayload p) {
|
||||||
|
|
||||||
|
DingSchemeApplication e = new DingSchemeApplication();
|
||||||
|
|
||||||
|
e.setProcessInstanceId(trimToNull(p.getProcessInstanceId()));
|
||||||
|
|
||||||
|
e.setBusinessId(trimToNull(p.getBusinessId()));
|
||||||
|
|
||||||
|
e.setProcessCode(trimToNull(p.getProcessCode()));
|
||||||
|
|
||||||
|
e.setTitle(trimToNull(p.getTitle()));
|
||||||
|
|
||||||
|
e.setInstanceResult(trimToNull(p.getInstanceResult()));
|
||||||
|
|
||||||
|
e.setDingProcessStatus(trimToNull(p.getDingProcessStatus()));
|
||||||
|
|
||||||
|
e.setOriginatorUserId(trimToNull(p.getOriginatorUserId()));
|
||||||
|
|
||||||
|
e.setOriginatorDeptName(trimToNull(p.getOriginatorDeptName()));
|
||||||
|
|
||||||
|
e.setDingInstanceCreateTime(p.getDingInstanceCreateTime());
|
||||||
|
|
||||||
|
e.setDingInstanceFinishTime(p.getDingInstanceFinishTime());
|
||||||
|
|
||||||
|
e.setTriggerEventType(trimToNull(p.getTriggerEventType()));
|
||||||
|
|
||||||
|
e.setFormJson(JSONUtil.toJsonStr(p.getFormItems()));
|
||||||
|
|
||||||
|
e.setFormLabelMap(buildFormLabelMapJson(p.getFormItems()));
|
||||||
|
|
||||||
|
e.setWfValuesJson(buildWfValuesJson(p.getFormItems()));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Map<String, SchemeApplicationFormItem> byId = CollUtil.isEmpty(p.getFormItems())
|
||||||
|
|
||||||
|
? Collections.emptyMap()
|
||||||
|
|
||||||
|
: p.getFormItems().stream()
|
||||||
|
|
||||||
|
.filter(i -> i != null && StrUtil.isNotBlank(i.getComponentId()))
|
||||||
|
|
||||||
|
.collect(Collectors.toMap(SchemeApplicationFormItem::getComponentId, Function.identity(), (a, b) -> a));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
e.setSchemeApplyNo(val(byId, ID_SCHEME_APPLY_NO));
|
||||||
|
|
||||||
|
e.setOverviewName(val(byId, ID_OVERVIEW_NAME));
|
||||||
|
|
||||||
|
e.setFillerName(val(byId, ID_FILLER));
|
||||||
|
|
||||||
|
e.setFillDate(parseDateOnly(val(byId, ID_FILL_DATE)));
|
||||||
|
|
||||||
|
e.setNeedDate(parseDateOnly(val(byId, ID_NEED_DATE)));
|
||||||
|
|
||||||
|
e.setCustomerFullName(val(byId, ID_CUSTOMER));
|
||||||
|
|
||||||
|
e.setContactAndPhone(val(byId, ID_CONTACT));
|
||||||
|
|
||||||
|
e.setProjectCategory(val(byId, ID_PROJECT_CATEGORY));
|
||||||
|
|
||||||
|
e.setProductName(val(byId, ID_PRODUCT_NAME));
|
||||||
|
|
||||||
|
e.setTaskDetail(val(byId, ID_TASK_DETAIL));
|
||||||
|
|
||||||
|
e.setSchemeSubmitDate(parseDateOnly(val(byId, ID_SCHEME_SUBMIT_DATE)));
|
||||||
|
|
||||||
|
e.setSchemeReceived(val(byId, ID_SCHEME_RECEIVED));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (StrUtil.isBlank(e.getPlmPushStatus())) {
|
||||||
|
|
||||||
|
e.setPlmPushStatus("PENDING");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return e;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* 按模板 IDS 顺序写入 JSON:key=控件 id,value={value, ext},与 form_label_map 的 key 一致。
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static String buildWfValuesJson(List<SchemeApplicationFormItem> items) {
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(items)) {
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, SchemeApplicationFormItem> byId = items.stream()
|
||||||
|
|
||||||
|
.filter(i -> i != null && StrUtil.isNotBlank(i.getComponentId()))
|
||||||
|
|
||||||
|
.collect(Collectors.toMap(SchemeApplicationFormItem::getComponentId, Function.identity(), (a, b) -> a));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
JSONObject root = JSONUtil.createObj();
|
||||||
|
|
||||||
|
for (String componentId : DingSchemeFormWideColumns.ORDERED_IDS) {
|
||||||
|
|
||||||
|
SchemeApplicationFormItem it = byId.get(componentId);
|
||||||
|
|
||||||
|
JSONObject cell = JSONUtil.createObj();
|
||||||
|
|
||||||
|
if (it != null) {
|
||||||
|
|
||||||
|
cell.set("value", it.getValue());
|
||||||
|
|
||||||
|
cell.set("ext", it.getExtValue());
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
cell.set("value", null);
|
||||||
|
|
||||||
|
cell.set("ext", null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
root.set(componentId, cell);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return root.toString();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* 控件 id -> 钉钉「标题」中文 name
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static String buildFormLabelMapJson(List<SchemeApplicationFormItem> items) {
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(items)) {
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, String> map = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
for (SchemeApplicationFormItem it : items) {
|
||||||
|
|
||||||
|
if (it == null || StrUtil.isBlank(it.getComponentId())) {
|
||||||
|
|
||||||
|
continue;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
String name = trimToNull(it.getName());
|
||||||
|
|
||||||
|
if (name != null) {
|
||||||
|
|
||||||
|
map.put(it.getComponentId(), name);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return map.isEmpty() ? null : JSONUtil.toJsonStr(map);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static String val(Map<String, SchemeApplicationFormItem> byId, String componentId) {
|
||||||
|
|
||||||
|
SchemeApplicationFormItem it = byId.get(componentId);
|
||||||
|
|
||||||
|
return it == null ? null : trimToNull(it.getValue());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static String trimToNull(String s) {
|
||||||
|
|
||||||
|
if (s == null) {
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
String t = s.trim();
|
||||||
|
|
||||||
|
return t.isEmpty() ? null : t;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static Date parseDateOnly(String yyyyMmDd) {
|
||||||
|
|
||||||
|
if (StrUtil.isBlank(yyyyMmDd)) {
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
return DateUtil.parseDate(yyyyMmDd);
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,741 @@
|
|||||||
|
package com.ruoyi.system.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
|
||||||
|
import com.ruoyi.system.domain.SfcOperationPlanningDetail;
|
||||||
|
import com.ruoyi.system.domain.SfcOperationPlanningMain;
|
||||||
|
import com.ruoyi.system.domain.bo.KingdeeOrderTraceQueryBo;
|
||||||
|
import com.ruoyi.system.domain.bo.KingdeeProductionBoardQueryBo;
|
||||||
|
import com.ruoyi.system.domain.dto.KingdeeOperationReportSumRowDTO;
|
||||||
|
import com.ruoyi.system.domain.dto.KingdeeSubcontractTransferRowDTO;
|
||||||
|
import com.ruoyi.system.domain.dto.OperationPlanResultDTO;
|
||||||
|
import com.ruoyi.system.domain.dto.ProcessDetailDTO;
|
||||||
|
import com.ruoyi.system.domain.vo.KingdeeMoTraceVo;
|
||||||
|
import com.ruoyi.system.domain.vo.KingdeePoTraceVo;
|
||||||
|
import com.ruoyi.system.domain.vo.KingdeeProductionBoardVo;
|
||||||
|
import com.ruoyi.system.domain.vo.KingdeeOrderTraceVo;
|
||||||
|
import com.ruoyi.system.domain.vo.MoBoardNodeVo;
|
||||||
|
import com.ruoyi.system.domain.vo.PurchaseInboundSummaryVo;
|
||||||
|
import com.ruoyi.system.mapper.SfcOperationPlanningDetailMapper;
|
||||||
|
import com.ruoyi.system.mapper.SfcOperationPlanningMainMapper;
|
||||||
|
import com.ruoyi.system.service.IKingdeeProductionBoardService;
|
||||||
|
import com.ruoyi.system.service.MssqlQueryService;
|
||||||
|
import com.ruoyi.system.service.support.OperationPlanningResultAssembler;
|
||||||
|
import com.ruoyi.system.runner.JdUtil;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeParseException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.IdentityHashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生产令号综合看板实现。
|
||||||
|
* <p>
|
||||||
|
* 数据管线(单次请求):
|
||||||
|
* <ol>
|
||||||
|
* <li>SQL Server 追溯:按令号拉生产/采购明细;</li>
|
||||||
|
* <li>可选:对本请求涉及的全部生产订单号求并集,各调用一次金蝶工序汇报汇总、委外转移报表(日期窗口见 Bo),内存按订单号拆分;</li>
|
||||||
|
* <li>MySQL:按令号 + 订单集合加载工序计划主从表并组装 DTO(明细上已有转入/转出/合格/废品等);</li>
|
||||||
|
* <li>将指定统计日({@code boardReportDay},默认当天 Asia/Shanghai)的工序汇报汇总按工序号并入 {@link ProcessDetailDTO};生产入库合计回填在各工序计划主档的<strong>最大工序号</strong>一行(追溯未按工序拆分);</li>
|
||||||
|
* <li>委外转移报表行除保留在 {@link MoBoardNodeVo#getSubcontractTransferRows()} 外,按单据日期相对 {@code boardReportDay} 拆分后并入 {@link ProcessDetailDTO}(匹配规则见 {@link #enrichPlanningWithSubcontractTransfer})。</li>
|
||||||
|
* <li>按令号输出 {@link KingdeeProductionBoardVo}。</li>
|
||||||
|
* </ol>
|
||||||
|
* 报表数据不入库;入库仍走独立的 Kingdee /sync 接口。
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class KingdeeProductionBoardServiceImpl implements IKingdeeProductionBoardService {
|
||||||
|
|
||||||
|
private static final BigDecimal ZERO = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
/** 看板「当日」默认时区 */
|
||||||
|
private static final ZoneId BOARD_ZONE = ZoneId.of("Asia/Shanghai");
|
||||||
|
|
||||||
|
/** 金蝶/K3 追溯(MssqlQueryService) */
|
||||||
|
private final MssqlQueryService mssqlQueryService;
|
||||||
|
private final SfcOperationPlanningMainMapper operationPlanningMainMapper;
|
||||||
|
private final SfcOperationPlanningDetailMapper operationPlanningDetailMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按 Bo 中的多个生产令号依次组装看板;同一请求内报表仅拉取两轮(汇报 + 委外),避免按订单重复调 SDK。
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<KingdeeProductionBoardVo> queryBoard(KingdeeProductionBoardQueryBo bo) {
|
||||||
|
List<String> sclhList = normalizeSclhList(bo.getSclh());
|
||||||
|
if (sclhList.isEmpty()) {
|
||||||
|
throw new ServiceException("生产令号不能为空");
|
||||||
|
}
|
||||||
|
int maxMo = bo.getMaxMoPerBoard() == null ? 500 : Math.min(Math.max(bo.getMaxMoPerBoard(), 1), 2000);
|
||||||
|
boolean includePurchase = bo.getIncludePurchase() == null || bo.getIncludePurchase();
|
||||||
|
boolean includeSnapshots = bo.getIncludeSnapshots() == null || bo.getIncludeSnapshots();
|
||||||
|
|
||||||
|
KingdeeOrderTraceQueryBo traceBo = new KingdeeOrderTraceQueryBo();
|
||||||
|
traceBo.setSclh(sclhList);
|
||||||
|
KingdeeOrderTraceVo trace = mssqlQueryService.queryOrderTrace(traceBo);
|
||||||
|
|
||||||
|
List<KingdeeMoTraceVo> allMo = trace.getProductionList() != null ? trace.getProductionList() : new ArrayList<>();
|
||||||
|
List<KingdeePoTraceVo> allPo = trace.getPurchaseList() != null ? trace.getPurchaseList() : new ArrayList<>();
|
||||||
|
|
||||||
|
Map<String, List<KingdeeMoTraceVo>> moBySclh = allMo.stream()
|
||||||
|
.filter(r -> StringUtils.isNotBlank(r.getSclh()))
|
||||||
|
.collect(Collectors.groupingBy(KingdeeMoTraceVo::getSclh));
|
||||||
|
Map<String, List<KingdeePoTraceVo>> poBySclh = allPo.stream()
|
||||||
|
.filter(r -> StringUtils.isNotBlank(r.getSclh()))
|
||||||
|
.collect(Collectors.groupingBy(KingdeePoTraceVo::getSclh));
|
||||||
|
|
||||||
|
// includeSnapshots:工序汇报(FMOBillNo)、委外(FProductOrderCodes) 与生产订单号对齐后的分组结果,供各令号 buildOneBoard 复用
|
||||||
|
Map<String, List<KingdeeOperationReportSumRowDTO>> reportByMo = Collections.emptyMap();
|
||||||
|
Map<String, List<KingdeeSubcontractTransferRowDTO>> subByMo = Collections.emptyMap();
|
||||||
|
if (includeSnapshots) {
|
||||||
|
Set<String> unionMo = new LinkedHashSet<>();
|
||||||
|
for (String sclh : sclhList) {
|
||||||
|
for (KingdeeMoTraceVo r : moBySclh.getOrDefault(sclh, new ArrayList<>())) {
|
||||||
|
if (StringUtils.isNotBlank(r.getMoBillNo())) {
|
||||||
|
unionMo.add(r.getMoBillNo().trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!unionMo.isEmpty()) {
|
||||||
|
LiveReportMaps live = loadLiveReports(bo, unionMo);
|
||||||
|
reportByMo = live.reportByMo;
|
||||||
|
subByMo = live.subByMo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalDate boardReportDay = resolveBoardReportDay(bo);
|
||||||
|
|
||||||
|
List<KingdeeProductionBoardVo> boards = new ArrayList<>();
|
||||||
|
for (String sclh : sclhList) {
|
||||||
|
boards.add(buildOneBoard(sclh, moBySclh.getOrDefault(sclh, new ArrayList<>()),
|
||||||
|
includePurchase ? poBySclh.getOrDefault(sclh, new ArrayList<>()) : new ArrayList<>(),
|
||||||
|
maxMo, includeSnapshots, reportByMo, subByMo, boardReportDay));
|
||||||
|
}
|
||||||
|
return boards;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 金蝶报表按生产订单分组后的缓存结构(一次请求内共享)。 */
|
||||||
|
private static final class LiveReportMaps {
|
||||||
|
final Map<String, List<KingdeeOperationReportSumRowDTO>> reportByMo;
|
||||||
|
final Map<String, List<KingdeeSubcontractTransferRowDTO>> subByMo;
|
||||||
|
|
||||||
|
LiveReportMaps(Map<String, List<KingdeeOperationReportSumRowDTO>> reportByMo,
|
||||||
|
Map<String, List<KingdeeSubcontractTransferRowDTO>> subByMo) {
|
||||||
|
this.reportByMo = reportByMo;
|
||||||
|
this.subByMo = subByMo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在日期窗口内分页拉全量报表行(Limit 受 Bo 约束),再过滤 unionMo 并分组。
|
||||||
|
* 工序汇报不按单号传 Filter(SDK 仅支持单笔),故依赖内存过滤。
|
||||||
|
*/
|
||||||
|
private LiveReportMaps loadLiveReports(KingdeeProductionBoardQueryBo bo, Set<String> unionMo) {
|
||||||
|
ReportWindow w = resolveReportWindow(bo);
|
||||||
|
String beginDt = toReportDateTime(w.start, false);
|
||||||
|
String endDt = toReportDateTime(w.end, true);
|
||||||
|
int lim = bo.getReportLimit() == null ? 2000 : bo.getReportLimit();
|
||||||
|
lim = Math.min(Math.max(lim, 1), 10000);
|
||||||
|
|
||||||
|
String opForm = StringUtils.isBlank(bo.getOperationReportFormId())
|
||||||
|
? KingdeeSysReportFormIds.OPERATION_REPORT_SUM : bo.getOperationReportFormId().trim();
|
||||||
|
String subForm = StringUtils.isBlank(bo.getSubcontractTransferFormId())
|
||||||
|
? KingdeeSysReportFormIds.SUBCONTRACT_TRANSFER : bo.getSubcontractTransferFormId().trim();
|
||||||
|
String procOrg = StringUtils.isBlank(bo.getReportProcessOrgNumber()) ? "100" : bo.getReportProcessOrgNumber().trim();
|
||||||
|
String proOrg = StringUtils.isBlank(bo.getReportProOrgNumber()) ? "100" : bo.getReportProOrgNumber().trim();
|
||||||
|
String timeUnit = StringUtils.isBlank(bo.getReportTimeUnit()) ? "B" : bo.getReportTimeUnit().trim();
|
||||||
|
String docStatus = StringUtils.isBlank(bo.getReportDocumentStatus()) ? "C" : bo.getReportDocumentStatus().trim();
|
||||||
|
|
||||||
|
List<KingdeeOperationReportSumRowDTO> allRep =
|
||||||
|
JdUtil.getOperationReportSumRpt(opForm, null, beginDt, endDt, procOrg, timeUnit, null, lim);
|
||||||
|
Map<String, List<KingdeeOperationReportSumRowDTO>> reportByMo = allRep.stream()
|
||||||
|
.filter(r -> StringUtils.isNotBlank(r.getMoBillNo()) && unionMo.contains(r.getMoBillNo().trim()))
|
||||||
|
.collect(Collectors.groupingBy(r -> r.getMoBillNo().trim()));
|
||||||
|
|
||||||
|
List<KingdeeSubcontractTransferRowDTO> allSub =
|
||||||
|
JdUtil.getSubcontractTransferRpt(subForm, null, beginDt, endDt, proOrg, docStatus, null, lim);
|
||||||
|
Map<String, List<KingdeeSubcontractTransferRowDTO>> subByMo = allSub.stream()
|
||||||
|
.filter(r -> StringUtils.isNotBlank(r.getProductOrderCodes())
|
||||||
|
&& unionMo.contains(r.getProductOrderCodes().trim()))
|
||||||
|
.collect(Collectors.groupingBy(r -> r.getProductOrderCodes().trim()));
|
||||||
|
|
||||||
|
return new LiveReportMaps(reportByMo, subByMo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报表起止日期:优先 reportStartDate/reportEndDate,其次兼容 reportSnapshotBegin/End;
|
||||||
|
* 仍缺省时结束为当天、开始为当天前推 90 天(与 Bo 文档一致)。
|
||||||
|
*/
|
||||||
|
private static ReportWindow resolveReportWindow(KingdeeProductionBoardQueryBo bo) {
|
||||||
|
String start = firstNonBlank(bo.getReportStartDate(), bo.getReportSnapshotBegin());
|
||||||
|
String end = firstNonBlank(bo.getReportEndDate(), bo.getReportSnapshotEnd());
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
if (StringUtils.isBlank(end)) {
|
||||||
|
end = today.toString();
|
||||||
|
}
|
||||||
|
if (StringUtils.isBlank(start)) {
|
||||||
|
start = today.minusDays(90).toString();
|
||||||
|
}
|
||||||
|
return new ReportWindow(start.trim(), end.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** a 非空优先,否则 b;皆空返回 null */
|
||||||
|
private static String firstNonBlank(String a, String b) {
|
||||||
|
if (StringUtils.isNotBlank(a)) {
|
||||||
|
return a.trim();
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(b)) {
|
||||||
|
return b.trim();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 金蝶 Model 用的日历日期字符串(yyyy-MM-dd)。 */
|
||||||
|
private static final class ReportWindow {
|
||||||
|
final String start;
|
||||||
|
final String end;
|
||||||
|
|
||||||
|
ReportWindow(String start, String end) {
|
||||||
|
this.start = start;
|
||||||
|
this.end = end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 短日期补全为 00:00:00 / 23:59:59;已含时分秒则原样返回。 */
|
||||||
|
private static String toReportDateTime(String dateInput, boolean endOfDay) {
|
||||||
|
String t = dateInput == null ? "" : dateInput.trim();
|
||||||
|
if (t.length() <= 10) {
|
||||||
|
return endOfDay ? t + " 23:59:59" : t + " 00:00:00";
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组装单个令号维度的看板:采购汇总、生产追溯汇总、按生产订单展开的节点(计划 + 可选报表行)。
|
||||||
|
*
|
||||||
|
* @param globalReportByMo / globalSubByMo 已由 {@link #loadLiveReports} 填好;includeSnapshots 为 false 时不写入节点中的报表字段
|
||||||
|
* @param boardReportDay 工序汇报「当日」对齐用日历日(写入 {@link ProcessDetailDTO})
|
||||||
|
*/
|
||||||
|
private KingdeeProductionBoardVo buildOneBoard(String sclh, List<KingdeeMoTraceVo> moRows, List<KingdeePoTraceVo> poRows,
|
||||||
|
int maxMo, boolean includeSnapshots,
|
||||||
|
Map<String, List<KingdeeOperationReportSumRowDTO>> globalReportByMo,
|
||||||
|
Map<String, List<KingdeeSubcontractTransferRowDTO>> globalSubByMo,
|
||||||
|
LocalDate boardReportDay) {
|
||||||
|
KingdeeProductionBoardVo vo = new KingdeeProductionBoardVo();
|
||||||
|
vo.setSclh(sclh);
|
||||||
|
|
||||||
|
if (!poRows.isEmpty()) {
|
||||||
|
vo.setPurchaseList(new ArrayList<>(poRows));
|
||||||
|
vo.setPurchaseInboundSummary(buildPurchaseInboundSummary(poRows));
|
||||||
|
vo.setTotalPurchaseOrderQty(sumPo(poRows, true));
|
||||||
|
vo.setTotalPurchaseInstockQty(sumPo(poRows, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
vo.setProductionTraceList(new ArrayList<>(moRows));
|
||||||
|
vo.setTotalMoQty(sumMoQty(moRows));
|
||||||
|
vo.setTotalProductionInstockQty(sumMoInstock(moRows));
|
||||||
|
|
||||||
|
Set<String> moSet = moRows.stream()
|
||||||
|
.map(KingdeeMoTraceVo::getMoBillNo)
|
||||||
|
.filter(StringUtils::isNotBlank)
|
||||||
|
.map(String::trim)
|
||||||
|
.collect(Collectors.toCollection(LinkedHashSet::new));
|
||||||
|
if (moSet.size() > maxMo) {
|
||||||
|
throw new ServiceException("令号 " + sclh + " 下生产订单数超过上限 " + maxMo + ",请缩小查询范围");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<OperationPlanResultDTO> planningAll = moSet.isEmpty()
|
||||||
|
? new ArrayList<>()
|
||||||
|
: loadPlanning(sclh, moSet);
|
||||||
|
Map<String, List<OperationPlanResultDTO>> planningByMo = planningAll.stream()
|
||||||
|
.filter(p -> StringUtils.isNotBlank(p.getMoNumber()))
|
||||||
|
.collect(Collectors.groupingBy(OperationPlanResultDTO::getMoNumber));
|
||||||
|
|
||||||
|
List<String> moOrder = new ArrayList<>(moSet);
|
||||||
|
moOrder.sort(Comparator.naturalOrder());
|
||||||
|
|
||||||
|
for (String moBillNo : moOrder) {
|
||||||
|
MoBoardNodeVo node = new MoBoardNodeVo();
|
||||||
|
node.setMoBillNo(moBillNo);
|
||||||
|
List<KingdeeMoTraceVo> rowsForMo = moRows.stream()
|
||||||
|
.filter(r -> moBillNo.equals(StringUtils.trim(r.getMoBillNo())))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
node.setMoTraceRows(rowsForMo);
|
||||||
|
if (!rowsForMo.isEmpty()) {
|
||||||
|
KingdeeMoTraceVo first = rowsForMo.get(0);
|
||||||
|
node.setMaterialNumber(first.getMaterialNumber());
|
||||||
|
node.setMaterialName(first.getMaterialName());
|
||||||
|
}
|
||||||
|
node.setMoInstockQty(sumMoInstock(rowsForMo));
|
||||||
|
node.setPlanningList(new ArrayList<>(planningByMo.getOrDefault(moBillNo, new ArrayList<>())));
|
||||||
|
if (includeSnapshots) {
|
||||||
|
node.setOperationReportRows(new ArrayList<>(globalReportByMo.getOrDefault(moBillNo, new ArrayList<>())));
|
||||||
|
node.setSubcontractTransferRows(new ArrayList<>(globalSubByMo.getOrDefault(moBillNo, new ArrayList<>())));
|
||||||
|
}
|
||||||
|
enrichPlanningWithDayReportAndInstock(node, boardReportDay);
|
||||||
|
enrichPlanningWithSubcontractTransfer(node, boardReportDay);
|
||||||
|
vo.getOrders().add(node);
|
||||||
|
}
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析综合看板使用的「当日」:优先 Bo.boardReportDay(yyyy-MM-dd),否则取服务器当天({@link #BOARD_ZONE})。
|
||||||
|
*/
|
||||||
|
private static LocalDate resolveBoardReportDay(KingdeeProductionBoardQueryBo bo) {
|
||||||
|
if (bo == null || StringUtils.isBlank(bo.getBoardReportDay())) {
|
||||||
|
return LocalDate.now(BOARD_ZONE);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return LocalDate.parse(bo.getBoardReportDay().trim());
|
||||||
|
} catch (DateTimeParseException e) {
|
||||||
|
throw new ServiceException("boardReportDay 须为 yyyy-MM-dd");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 把统计日内的工序汇报按工序号写入 {@link ProcessDetailDTO};订单级入库合计写在每张工序计划的最大工序号上。
|
||||||
|
* 计划本身的转入/转出/合格/废品已在 Assembler 中带出,此处不改动。
|
||||||
|
*/
|
||||||
|
private static void enrichPlanningWithDayReportAndInstock(MoBoardNodeVo node, LocalDate boardReportDay) {
|
||||||
|
if (node == null || boardReportDay == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String mo = node.getMoBillNo();
|
||||||
|
Map<Integer, ReportDayAgg> aggByOper = new HashMap<>();
|
||||||
|
List<KingdeeOperationReportSumRowDTO> reportRows = node.getOperationReportRows();
|
||||||
|
if (reportRows != null && StringUtils.isNotBlank(mo)) {
|
||||||
|
for (KingdeeOperationReportSumRowDTO r : reportRows) {
|
||||||
|
if (r == null || StringUtils.isBlank(r.getMoBillNo())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!mo.equals(r.getMoBillNo().trim())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
LocalDate rowDay = parseKingdeeReportDate(r.getReportDate());
|
||||||
|
if (rowDay == null || !rowDay.equals(boardReportDay)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int op = parseOperNo(r.getOpOper());
|
||||||
|
if (op < 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ReportDayAgg a = aggByOper.computeIfAbsent(op, k -> new ReportDayAgg());
|
||||||
|
a.finish = a.finish.add(nz(r.getFinishQty()));
|
||||||
|
a.qua = a.qua.add(nz(r.getQuaQty()));
|
||||||
|
a.fail = a.fail.add(nz(r.getFailQty()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BigDecimal instockTotalBd = sumMoInstock(node.getMoTraceRows());
|
||||||
|
Double instockTotal = bdToDouble(instockTotalBd);
|
||||||
|
|
||||||
|
List<OperationPlanResultDTO> plans = node.getPlanningList();
|
||||||
|
if (plans == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (OperationPlanResultDTO plan : plans) {
|
||||||
|
List<ProcessDetailDTO> plist = plan.getProcessList();
|
||||||
|
if (plist == null || plist.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int maxOper = plist.stream()
|
||||||
|
.map(ProcessDetailDTO::getOperNo)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.max(Integer::compareTo)
|
||||||
|
.orElse(Integer.MIN_VALUE);
|
||||||
|
|
||||||
|
for (ProcessDetailDTO p : plist) {
|
||||||
|
Integer opn = p.getOperNo();
|
||||||
|
if (opn != null && opn >= 0) {
|
||||||
|
ReportDayAgg a = aggByOper.get(opn);
|
||||||
|
if (a != null) {
|
||||||
|
p.setDayReportFinishQty(bdToDouble(a.finish));
|
||||||
|
p.setDayReportQuaQty(bdToDouble(a.qua));
|
||||||
|
p.setDayReportFailQty(bdToDouble(a.fail));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (maxOper != Integer.MIN_VALUE && opn != null && opn.equals(maxOper) && instockTotal != null) {
|
||||||
|
p.setOperationInstockQty(instockTotal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将本生产订单下的委外转移报表行按工序明细汇总:
|
||||||
|
* <ul>
|
||||||
|
* <li>单据日期 < boardReportDay:发出/接收/合格累计写入 {@code subcontract*BeforeReportDay};</li>
|
||||||
|
* <li>单据日期 = boardReportDay:写入 {@code subcontract*OnReportDay},并给出当日发出+接收之和 {@code subcontractLeaveEnterSumOnReportDay};</li>
|
||||||
|
* <li>单据日期晚于统计日的行忽略。</li>
|
||||||
|
* </ul>
|
||||||
|
* 工序匹配:先在「工作中心/工序名/活动一/车间」中含<strong>委外</strong>或<strong>外协</strong>的工序中,
|
||||||
|
* 用报表 {@link KingdeeSubcontractTransferRowDTO#getShiftTaskName()} 与工序名、活动一名称、工序说明做模糊评分;
|
||||||
|
* 若仅有一道委外类工序则作为兜底归入该工序。
|
||||||
|
*/
|
||||||
|
private static void enrichPlanningWithSubcontractTransfer(MoBoardNodeVo node, LocalDate boardReportDay) {
|
||||||
|
if (node == null || boardReportDay == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String mo = node.getMoBillNo();
|
||||||
|
List<KingdeeSubcontractTransferRowDTO> rows = node.getSubcontractTransferRows();
|
||||||
|
List<OperationPlanResultDTO> plans = node.getPlanningList();
|
||||||
|
if (StringUtils.isBlank(mo) || rows == null || rows.isEmpty() || plans == null || plans.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<ProcessDetailDTO, SubBucketAgg> byDetail = new IdentityHashMap<>();
|
||||||
|
for (KingdeeSubcontractTransferRowDTO row : rows) {
|
||||||
|
if (row == null || StringUtils.isBlank(row.getProductOrderCodes())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!mo.trim().equals(row.getProductOrderCodes().trim())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
LocalDate docDay = parseKingdeeReportDate(row.getDocumentDate());
|
||||||
|
if (docDay == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ProcessDetailDTO target = findBestSubcontractTarget(plans, row);
|
||||||
|
if (target == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
SubBucketAgg agg = byDetail.computeIfAbsent(target, k -> new SubBucketAgg());
|
||||||
|
BigDecimal lv = nz(row.getLeaveQty());
|
||||||
|
BigDecimal ev = nz(row.getEnterQty());
|
||||||
|
BigDecimal qv = nz(row.getQualifiedQty());
|
||||||
|
if (docDay.isBefore(boardReportDay)) {
|
||||||
|
agg.sawBefore = true;
|
||||||
|
agg.leaveBefore = agg.leaveBefore.add(lv);
|
||||||
|
agg.enterBefore = agg.enterBefore.add(ev);
|
||||||
|
agg.quaBefore = agg.quaBefore.add(qv);
|
||||||
|
} else if (docDay.equals(boardReportDay)) {
|
||||||
|
agg.sawOnDay = true;
|
||||||
|
agg.leaveOn = agg.leaveOn.add(lv);
|
||||||
|
agg.enterOn = agg.enterOn.add(ev);
|
||||||
|
agg.quaOn = agg.quaOn.add(qv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (OperationPlanResultDTO plan : plans) {
|
||||||
|
List<ProcessDetailDTO> plist = plan.getProcessList();
|
||||||
|
if (plist == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (ProcessDetailDTO p : plist) {
|
||||||
|
SubBucketAgg agg = byDetail.get(p);
|
||||||
|
if (agg == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (agg.sawBefore) {
|
||||||
|
p.setSubcontractLeaveQtyBeforeReportDay(bdToDouble(agg.leaveBefore));
|
||||||
|
p.setSubcontractEnterQtyBeforeReportDay(bdToDouble(agg.enterBefore));
|
||||||
|
p.setSubcontractQualifiedQtyBeforeReportDay(bdToDouble(agg.quaBefore));
|
||||||
|
}
|
||||||
|
if (agg.sawOnDay) {
|
||||||
|
p.setSubcontractLeaveQtyOnReportDay(bdToDouble(agg.leaveOn));
|
||||||
|
p.setSubcontractEnterQtyOnReportDay(bdToDouble(agg.enterOn));
|
||||||
|
p.setSubcontractQualifiedQtyOnReportDay(bdToDouble(agg.quaOn));
|
||||||
|
p.setSubcontractLeaveEnterSumOnReportDay(bdToDouble(agg.leaveOn.add(agg.enterOn)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ProcessDetailDTO findBestSubcontractTarget(List<OperationPlanResultDTO> plans,
|
||||||
|
KingdeeSubcontractTransferRowDTO row) {
|
||||||
|
List<ProcessDetailDTO> candidates = new ArrayList<>();
|
||||||
|
for (OperationPlanResultDTO plan : plans) {
|
||||||
|
List<ProcessDetailDTO> plist = plan.getProcessList();
|
||||||
|
if (plist == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (ProcessDetailDTO p : plist) {
|
||||||
|
if (isOutsourceLikeProcess(p)) {
|
||||||
|
candidates.add(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (candidates.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (candidates.size() == 1) {
|
||||||
|
return candidates.get(0);
|
||||||
|
}
|
||||||
|
String task = normalizeToken(row.getShiftTaskName());
|
||||||
|
if (StringUtils.isBlank(task)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
ProcessDetailDTO best = null;
|
||||||
|
int bestScore = 0;
|
||||||
|
for (ProcessDetailDTO p : candidates) {
|
||||||
|
int sc = scoreSubcontractMatch(task, p);
|
||||||
|
if (sc > bestScore) {
|
||||||
|
bestScore = sc;
|
||||||
|
best = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bestScore >= 50) {
|
||||||
|
return best;
|
||||||
|
}
|
||||||
|
return bestScore > 0 ? best : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isOutsourceLikeProcess(ProcessDetailDTO p) {
|
||||||
|
if (p == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return containsOutsourceKeyword(p.getWorkCenter())
|
||||||
|
|| containsOutsourceKeyword(p.getProcessName())
|
||||||
|
|| containsOutsourceKeyword(p.getActivity1Name())
|
||||||
|
|| containsOutsourceKeyword(p.getDepartment());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean containsOutsourceKeyword(String s) {
|
||||||
|
if (StringUtils.isBlank(s)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return s.contains("委外") || s.contains("外协");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String normalizeToken(String s) {
|
||||||
|
return s == null ? "" : s.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** shiftTaskName 与工序名称等匹配得分,越高越优先(调用前应对多候选校验 task 非空) */
|
||||||
|
private static int scoreSubcontractMatch(String task, ProcessDetailDTO p) {
|
||||||
|
if (StringUtils.isBlank(task)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
String pn = normalizeToken(p.getProcessName());
|
||||||
|
String act = normalizeToken(p.getActivity1Name());
|
||||||
|
String od = normalizeToken(p.getOperDescription());
|
||||||
|
if (StringUtils.isNotBlank(pn)) {
|
||||||
|
if (task.equalsIgnoreCase(pn)) {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
if (task.contains(pn) || pn.contains(task)) {
|
||||||
|
return 80;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(act)) {
|
||||||
|
if (task.equalsIgnoreCase(act)) {
|
||||||
|
return 95;
|
||||||
|
}
|
||||||
|
if (task.contains(act) || act.contains(task)) {
|
||||||
|
return 75;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(od) && (task.contains(od) || od.contains(task))) {
|
||||||
|
return 60;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class SubBucketAgg {
|
||||||
|
BigDecimal leaveBefore = ZERO;
|
||||||
|
BigDecimal enterBefore = ZERO;
|
||||||
|
BigDecimal quaBefore = ZERO;
|
||||||
|
BigDecimal leaveOn = ZERO;
|
||||||
|
BigDecimal enterOn = ZERO;
|
||||||
|
BigDecimal quaOn = ZERO;
|
||||||
|
boolean sawBefore;
|
||||||
|
boolean sawOnDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class ReportDayAgg {
|
||||||
|
BigDecimal finish = ZERO;
|
||||||
|
BigDecimal qua = ZERO;
|
||||||
|
BigDecimal fail = ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 金蝶 FDATE 常见:2026/5/10、2026-05-10、带时间的取日期段 */
|
||||||
|
private static LocalDate parseKingdeeReportDate(String raw) {
|
||||||
|
if (StringUtils.isBlank(raw)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String s = raw.trim();
|
||||||
|
int sp = s.indexOf(' ');
|
||||||
|
if (sp > 0) {
|
||||||
|
s = s.substring(0, sp);
|
||||||
|
}
|
||||||
|
s = s.replace('/', '-').replace('/', '-').replace('-', '-');
|
||||||
|
String[] parts = s.split("-");
|
||||||
|
if (parts.length == 3) {
|
||||||
|
try {
|
||||||
|
int y = Integer.parseInt(parts[0].trim());
|
||||||
|
int m = Integer.parseInt(parts[1].trim());
|
||||||
|
int d = Integer.parseInt(parts[2].trim());
|
||||||
|
return LocalDate.of(y, m, d);
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return LocalDate.parse(s);
|
||||||
|
} catch (DateTimeParseException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int parseOperNo(String opOper) {
|
||||||
|
if (StringUtils.isBlank(opOper)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
double d = Double.parseDouble(opOper.trim());
|
||||||
|
return (int) Math.round(d);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Double bdToDouble(BigDecimal v) {
|
||||||
|
if (v == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return v.doubleValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本地工序计划:主表按令号且排除标题含「暂停」的计划,细表按工序号排序后交给 Assembler。
|
||||||
|
*/
|
||||||
|
private List<OperationPlanResultDTO> loadPlanning(String sclh, Set<String> moSet) {
|
||||||
|
LambdaQueryWrapper<SfcOperationPlanningMain> qw = Wrappers.lambdaQuery();
|
||||||
|
qw.eq(SfcOperationPlanningMain::getHbytSclh, sclh);
|
||||||
|
qw.notLike(SfcOperationPlanningMain::getHbytSclh, "暂停");
|
||||||
|
if (moSet != null && !moSet.isEmpty()) {
|
||||||
|
qw.in(SfcOperationPlanningMain::getMoNumber, moSet);
|
||||||
|
}
|
||||||
|
List<SfcOperationPlanningMain> mains = operationPlanningMainMapper.selectList(qw);
|
||||||
|
if (mains.isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
List<Long> mainIds = mains.stream().map(SfcOperationPlanningMain::getId).collect(Collectors.toList());
|
||||||
|
List<SfcOperationPlanningDetail> details = operationPlanningDetailMapper.selectList(
|
||||||
|
Wrappers.<SfcOperationPlanningDetail>lambdaQuery()
|
||||||
|
.in(SfcOperationPlanningDetail::getMainId, mainIds)
|
||||||
|
.orderByAsc(SfcOperationPlanningDetail::getOperNumber));
|
||||||
|
Map<Long, List<SfcOperationPlanningDetail>> detailMap = details.stream()
|
||||||
|
.collect(Collectors.groupingBy(SfcOperationPlanningDetail::getMainId));
|
||||||
|
return OperationPlanningResultAssembler.assemble(mains, detailMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 采购按「采购单 + 物料」聚合数量与行数,用于看板侧汇总展示。 */
|
||||||
|
private List<PurchaseInboundSummaryVo> buildPurchaseInboundSummary(List<KingdeePoTraceVo> poRows) {
|
||||||
|
Map<String, Agg> map = new LinkedHashMap<>();
|
||||||
|
for (KingdeePoTraceVo r : poRows) {
|
||||||
|
String po = StringUtils.blankToDefault(r.getPurchaseBillNo(), "");
|
||||||
|
String mat = StringUtils.blankToDefault(r.getMaterialNumber(), "");
|
||||||
|
String key = po + "\0" + mat;
|
||||||
|
Agg a = map.computeIfAbsent(key, k -> {
|
||||||
|
Agg x = new Agg();
|
||||||
|
x.purchaseBillNo = r.getPurchaseBillNo();
|
||||||
|
x.materialNumber = r.getMaterialNumber();
|
||||||
|
x.materialName = r.getMaterialName();
|
||||||
|
return x;
|
||||||
|
});
|
||||||
|
a.sumPurchase = a.sumPurchase.add(nz(r.getPurchaseQty()));
|
||||||
|
a.sumInstock = a.sumInstock.add(nz(r.getInstockQty()));
|
||||||
|
a.lines++;
|
||||||
|
}
|
||||||
|
List<PurchaseInboundSummaryVo> list = new ArrayList<>();
|
||||||
|
for (Agg a : map.values()) {
|
||||||
|
PurchaseInboundSummaryVo v = new PurchaseInboundSummaryVo();
|
||||||
|
v.setPurchaseBillNo(a.purchaseBillNo);
|
||||||
|
v.setMaterialNumber(a.materialNumber);
|
||||||
|
v.setMaterialName(a.materialName);
|
||||||
|
v.setSumPurchaseQty(a.sumPurchase);
|
||||||
|
v.setSumInstockQty(a.sumInstock);
|
||||||
|
v.setDetailLineCount(a.lines);
|
||||||
|
list.add(v);
|
||||||
|
}
|
||||||
|
list.sort(Comparator.comparing(PurchaseInboundSummaryVo::getPurchaseBillNo, Comparator.nullsLast(String::compareTo))
|
||||||
|
.thenComparing(PurchaseInboundSummaryVo::getMaterialNumber, Comparator.nullsLast(String::compareTo)));
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** purchaseQty=true 汇总采购数量,false 汇总入库数量 */
|
||||||
|
private static BigDecimal sumPo(List<KingdeePoTraceVo> rows, boolean purchaseQty) {
|
||||||
|
BigDecimal s = ZERO;
|
||||||
|
for (KingdeePoTraceVo r : rows) {
|
||||||
|
s = s.add(nz(purchaseQty ? r.getPurchaseQty() : r.getInstockQty()));
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 生产订单追溯行上的生产数量合计 */
|
||||||
|
private static BigDecimal sumMoQty(List<KingdeeMoTraceVo> rows) {
|
||||||
|
BigDecimal s = ZERO;
|
||||||
|
for (KingdeeMoTraceVo r : rows) {
|
||||||
|
s = s.add(nz(r.getQty()));
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 生产入库数量合计(同一订单多行追溯时累加) */
|
||||||
|
private static BigDecimal sumMoInstock(List<KingdeeMoTraceVo> rows) {
|
||||||
|
BigDecimal s = ZERO;
|
||||||
|
for (KingdeeMoTraceVo r : rows) {
|
||||||
|
s = s.add(nz(r.getInstockQty()));
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** null 视为 0,避免链式 add NPE */
|
||||||
|
private static BigDecimal nz(BigDecimal v) {
|
||||||
|
return v == null ? ZERO : v;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 去重、去空白;支持单个元素内逗号分隔多个令号。
|
||||||
|
*/
|
||||||
|
private static List<String> normalizeSclhList(List<String> raw) {
|
||||||
|
if (raw == null || raw.isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
Set<String> seen = new LinkedHashSet<>();
|
||||||
|
for (String s : raw) {
|
||||||
|
if (StringUtils.isBlank(s)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String t = s.trim();
|
||||||
|
if (t.contains(",")) {
|
||||||
|
for (String part : t.split(",")) {
|
||||||
|
String p = part.trim();
|
||||||
|
if (StringUtils.isNotBlank(p)) {
|
||||||
|
seen.add(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
seen.add(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new ArrayList<>(seen);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 采购汇总聚合桶(采购单号 + 物料维度) */
|
||||||
|
private static class Agg {
|
||||||
|
String purchaseBillNo;
|
||||||
|
String materialNumber;
|
||||||
|
String materialName;
|
||||||
|
BigDecimal sumPurchase = ZERO;
|
||||||
|
BigDecimal sumInstock = ZERO;
|
||||||
|
int lines;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,173 @@
|
|||||||
|
package com.ruoyi.system.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import com.ruoyi.system.constant.KingdeeSysReportFormIds;
|
||||||
|
import com.ruoyi.system.domain.KingdeeOperationReportSum;
|
||||||
|
import com.ruoyi.system.domain.KingdeeSubcontractTransfer;
|
||||||
|
import com.ruoyi.system.domain.bo.KingdeeOperationReportSumQueryBo;
|
||||||
|
import com.ruoyi.system.domain.bo.KingdeeSubcontractTransferQueryBo;
|
||||||
|
import com.ruoyi.system.domain.dto.KingdeeOperationReportSumRowDTO;
|
||||||
|
import com.ruoyi.system.domain.dto.KingdeeSubcontractTransferRowDTO;
|
||||||
|
import com.ruoyi.system.mapper.KingdeeOperationReportSumMapper;
|
||||||
|
import com.ruoyi.system.mapper.KingdeeSubcontractTransferMapper;
|
||||||
|
import com.ruoyi.system.runner.JdUtil;
|
||||||
|
import com.ruoyi.system.service.IKingdeeReportSnapshotService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 金蝶报表快照入库
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class KingdeeReportSnapshotServiceImpl implements IKingdeeReportSnapshotService {
|
||||||
|
|
||||||
|
private final KingdeeOperationReportSumMapper operationReportSumMapper;
|
||||||
|
private final KingdeeSubcontractTransferMapper subcontractTransferMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public int syncOperationReportSum(KingdeeOperationReportSumQueryBo bo) {
|
||||||
|
String formId = StringUtils.isBlank(bo.getFormId())
|
||||||
|
? KingdeeSysReportFormIds.OPERATION_REPORT_SUM : bo.getFormId().trim();
|
||||||
|
bo.setFormId(formId);
|
||||||
|
String beginDt = toReportDateTime(bo.getBeginDate(), false);
|
||||||
|
String endDt = toReportDateTime(bo.getEndDate(), true);
|
||||||
|
String orgNum = StringUtils.isBlank(bo.getProcessOrgNumber()) ? "100" : bo.getProcessOrgNumber().trim();
|
||||||
|
String timeUnit = StringUtils.isBlank(bo.getTimeUnit()) ? "B" : bo.getTimeUnit().trim();
|
||||||
|
String filterMo = StringUtils.isBlank(bo.getMoBillNo()) ? null : bo.getMoBillNo().trim();
|
||||||
|
int lim = bo.getLimit() == null ? 2000 : bo.getLimit();
|
||||||
|
lim = Math.min(Math.max(lim, 1), 10000);
|
||||||
|
|
||||||
|
List<KingdeeOperationReportSumRowDTO> rows = JdUtil.getOperationReportSumRpt(
|
||||||
|
bo.getFormId().trim(),
|
||||||
|
bo.getFieldKeys(),
|
||||||
|
beginDt,
|
||||||
|
endDt,
|
||||||
|
orgNum,
|
||||||
|
timeUnit,
|
||||||
|
filterMo,
|
||||||
|
lim
|
||||||
|
);
|
||||||
|
|
||||||
|
LambdaQueryWrapper<KingdeeOperationReportSum> del = Wrappers.lambdaQuery();
|
||||||
|
del.eq(KingdeeOperationReportSum::getKingdeeFormId, bo.getFormId().trim())
|
||||||
|
.eq(KingdeeOperationReportSum::getScopeBegin, beginDt)
|
||||||
|
.eq(KingdeeOperationReportSum::getScopeEnd, endDt)
|
||||||
|
.eq(KingdeeOperationReportSum::getOrgNumber, orgNum)
|
||||||
|
.eq(KingdeeOperationReportSum::getTimeUnit, timeUnit);
|
||||||
|
if (filterMo == null) {
|
||||||
|
del.isNull(KingdeeOperationReportSum::getFilterMoBillNo);
|
||||||
|
} else {
|
||||||
|
del.eq(KingdeeOperationReportSum::getFilterMoBillNo, filterMo);
|
||||||
|
}
|
||||||
|
operationReportSumMapper.delete(del);
|
||||||
|
|
||||||
|
if (rows.isEmpty()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
List<KingdeeOperationReportSum> entities = new ArrayList<>(rows.size());
|
||||||
|
for (KingdeeOperationReportSumRowDTO r : rows) {
|
||||||
|
KingdeeOperationReportSum e = new KingdeeOperationReportSum();
|
||||||
|
e.setKingdeeFormId(bo.getFormId().trim());
|
||||||
|
e.setScopeBegin(beginDt);
|
||||||
|
e.setScopeEnd(endDt);
|
||||||
|
e.setOrgNumber(orgNum);
|
||||||
|
e.setTimeUnit(timeUnit);
|
||||||
|
e.setFilterMoBillNo(filterMo);
|
||||||
|
e.setDepartmentId(r.getDepartmentId());
|
||||||
|
e.setReportDate(r.getReportDate());
|
||||||
|
e.setMoBillNo(r.getMoBillNo());
|
||||||
|
e.setOpOper(r.getOpOper());
|
||||||
|
e.setWorkCenterId(r.getWorkCenterId());
|
||||||
|
e.setProcessId(r.getProcessId());
|
||||||
|
e.setProductNumber(r.getProductNumber());
|
||||||
|
e.setMaterialName(r.getMaterialName());
|
||||||
|
e.setFinishQty(r.getFinishQty());
|
||||||
|
e.setQuaQty(r.getQuaQty());
|
||||||
|
e.setFailQty(r.getFailQty());
|
||||||
|
entities.add(e);
|
||||||
|
}
|
||||||
|
operationReportSumMapper.insertBatch(entities, 500);
|
||||||
|
return entities.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public int syncSubcontractTransfer(KingdeeSubcontractTransferQueryBo bo) {
|
||||||
|
String formId = StringUtils.isBlank(bo.getFormId())
|
||||||
|
? KingdeeSysReportFormIds.SUBCONTRACT_TRANSFER : bo.getFormId().trim();
|
||||||
|
bo.setFormId(formId);
|
||||||
|
String startDt = toReportDateTime(bo.getStartDate(), false);
|
||||||
|
String finishDt = toReportDateTime(bo.getFinishDate(), true);
|
||||||
|
String orgNum = StringUtils.isBlank(bo.getProOrgNumber()) ? "100" : bo.getProOrgNumber().trim();
|
||||||
|
String docStatus = StringUtils.isBlank(bo.getDocumentStatus()) ? "C" : bo.getDocumentStatus().trim();
|
||||||
|
String filterPo = StringUtils.isBlank(bo.getProductOrderCode()) ? null : bo.getProductOrderCode().trim();
|
||||||
|
int lim = bo.getLimit() == null ? 2000 : bo.getLimit();
|
||||||
|
lim = Math.min(Math.max(lim, 1), 10000);
|
||||||
|
|
||||||
|
List<KingdeeSubcontractTransferRowDTO> rows = JdUtil.getSubcontractTransferRpt(
|
||||||
|
bo.getFormId().trim(),
|
||||||
|
bo.getFieldKeys(),
|
||||||
|
startDt,
|
||||||
|
finishDt,
|
||||||
|
orgNum,
|
||||||
|
docStatus,
|
||||||
|
filterPo,
|
||||||
|
lim
|
||||||
|
);
|
||||||
|
|
||||||
|
LambdaQueryWrapper<KingdeeSubcontractTransfer> del = Wrappers.lambdaQuery();
|
||||||
|
del.eq(KingdeeSubcontractTransfer::getKingdeeFormId, bo.getFormId().trim())
|
||||||
|
.eq(KingdeeSubcontractTransfer::getScopeStart, startDt)
|
||||||
|
.eq(KingdeeSubcontractTransfer::getScopeFinish, finishDt)
|
||||||
|
.eq(KingdeeSubcontractTransfer::getProOrgNumber, orgNum)
|
||||||
|
.eq(KingdeeSubcontractTransfer::getDocumentStatus, docStatus);
|
||||||
|
if (filterPo == null) {
|
||||||
|
del.isNull(KingdeeSubcontractTransfer::getFilterProductOrderCode);
|
||||||
|
} else {
|
||||||
|
del.eq(KingdeeSubcontractTransfer::getFilterProductOrderCode, filterPo);
|
||||||
|
}
|
||||||
|
subcontractTransferMapper.delete(del);
|
||||||
|
|
||||||
|
if (rows.isEmpty()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
List<KingdeeSubcontractTransfer> entities = new ArrayList<>(rows.size());
|
||||||
|
for (KingdeeSubcontractTransferRowDTO r : rows) {
|
||||||
|
KingdeeSubcontractTransfer e = new KingdeeSubcontractTransfer();
|
||||||
|
e.setKingdeeFormId(bo.getFormId().trim());
|
||||||
|
e.setScopeStart(startDt);
|
||||||
|
e.setScopeFinish(finishDt);
|
||||||
|
e.setProOrgNumber(orgNum);
|
||||||
|
e.setDocumentStatus(docStatus);
|
||||||
|
e.setFilterProductOrderCode(filterPo);
|
||||||
|
e.setProductNumber(r.getProductNumber());
|
||||||
|
e.setProductName(r.getProductName());
|
||||||
|
e.setProviderName(r.getProviderName());
|
||||||
|
e.setProductOrderCodes(r.getProductOrderCodes());
|
||||||
|
e.setDocumentDate(r.getDocumentDate());
|
||||||
|
e.setShiftTaskName(r.getShiftTaskName());
|
||||||
|
e.setLeaveQty(r.getLeaveQty());
|
||||||
|
e.setEnterQty(r.getEnterQty());
|
||||||
|
e.setQualifiedQty(r.getQualifiedQty());
|
||||||
|
entities.add(e);
|
||||||
|
}
|
||||||
|
subcontractTransferMapper.insertBatch(entities, 500);
|
||||||
|
return entities.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String toReportDateTime(String dateInput, boolean endOfDay) {
|
||||||
|
String t = dateInput == null ? "" : dateInput.trim();
|
||||||
|
if (t.length() <= 10) {
|
||||||
|
return endOfDay ? t + " 23:59:59" : t + " 00:00:00";
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,173 @@
|
|||||||
|
package com.ruoyi.system.service.support;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.ruoyi.system.domain.SfcOperationPlanningDetail;
|
||||||
|
import com.ruoyi.system.domain.SfcOperationPlanningMain;
|
||||||
|
import com.ruoyi.system.domain.dto.OperationPlanResultDTO;
|
||||||
|
import com.ruoyi.system.domain.dto.ProcessDetailDTO;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工序计划主从表 → {@link OperationPlanResultDTO}(供分页级联与综合看板复用)
|
||||||
|
*/
|
||||||
|
public final class OperationPlanningResultAssembler {
|
||||||
|
|
||||||
|
private OperationPlanningResultAssembler() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param mainList 主表记录(顺序保留)
|
||||||
|
* @param detailMap mainId → 明细列表(已按工序号排序更佳)
|
||||||
|
*/
|
||||||
|
public static List<OperationPlanResultDTO> assemble(
|
||||||
|
List<SfcOperationPlanningMain> mainList,
|
||||||
|
Map<Long, List<SfcOperationPlanningDetail>> detailMap) {
|
||||||
|
List<OperationPlanResultDTO> resultList = new ArrayList<>();
|
||||||
|
if (mainList == null || mainList.isEmpty()) {
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
for (SfcOperationPlanningMain main : mainList) {
|
||||||
|
OperationPlanResultDTO resultDTO = new OperationPlanResultDTO();
|
||||||
|
resultDTO.setMoNumber(main.getMoNumber());
|
||||||
|
resultDTO.setBatchNo(main.getHbytSclh());
|
||||||
|
resultDTO.setProductCode(main.getProductCode());
|
||||||
|
resultDTO.setProductName(main.getProductName());
|
||||||
|
resultDTO.setBillNo(main.getBillNo());
|
||||||
|
resultDTO.setProSpecification(main.getProSpecification());
|
||||||
|
resultDTO.setPlanStartTime(main.getPlanStartTime() != null ? DateUtil.formatDateTime(main.getPlanStartTime()) : null);
|
||||||
|
resultDTO.setPlanFinishTime(main.getPlanFinishTime() != null ? DateUtil.formatDateTime(main.getPlanFinishTime()) : null);
|
||||||
|
resultDTO.setFid(main.getFid());
|
||||||
|
resultDTO.setRawPlanStartTime(main.getPlanStartTime());
|
||||||
|
|
||||||
|
List<ProcessDetailDTO> processList = new ArrayList<>();
|
||||||
|
List<SfcOperationPlanningDetail> relatedDetails = detailMap != null ? detailMap.get(main.getId()) : null;
|
||||||
|
|
||||||
|
double totalPlanQty = 0.0;
|
||||||
|
double totalOkQty = 0.0;
|
||||||
|
int finishedCount = 0;
|
||||||
|
String mainWorkCenter = "";
|
||||||
|
|
||||||
|
if (relatedDetails != null && !relatedDetails.isEmpty()) {
|
||||||
|
mainWorkCenter = relatedDetails.get(0).getWorkCenterName();
|
||||||
|
for (SfcOperationPlanningDetail detail : relatedDetails) {
|
||||||
|
if (detail.getOperQty() != null) {
|
||||||
|
totalPlanQty += detail.getOperQty().doubleValue();
|
||||||
|
}
|
||||||
|
if (detail.getQualifiedQty() != null) {
|
||||||
|
totalOkQty += detail.getQualifiedQty().doubleValue();
|
||||||
|
}
|
||||||
|
if ("4".equals(detail.getOperStatus())) {
|
||||||
|
finishedCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (SfcOperationPlanningDetail detail : relatedDetails) {
|
||||||
|
ProcessDetailDTO detailDTO = new ProcessDetailDTO();
|
||||||
|
detailDTO.setOperNo(detail.getOperNumber() != null ? detail.getOperNumber().intValue() : null);
|
||||||
|
detailDTO.setProcessName(detail.getProcessName());
|
||||||
|
detailDTO.setWorkCenter(detail.getWorkCenterName());
|
||||||
|
detailDTO.setPlanQty(detail.getOperQty() != null ? detail.getOperQty().doubleValue() : null);
|
||||||
|
detailDTO.setInQty(detail.getTransInQty() != null ? detail.getTransInQty().doubleValue() : null);
|
||||||
|
detailDTO.setOkQty(detail.getQualifiedQty() != null ? detail.getQualifiedQty().doubleValue() : null);
|
||||||
|
detailDTO.setNgQty(detail.getUnqualifiedQty() != null ? detail.getUnqualifiedQty().doubleValue() : null);
|
||||||
|
detailDTO.setTransOutQty(detail.getTransOutQty() != null ? detail.getTransOutQty().doubleValue() : null);
|
||||||
|
detailDTO.setWastageQty(detail.getWastageQty() != null ? detail.getWastageQty().doubleValue() : null);
|
||||||
|
detailDTO.setDepartment(detail.getDepartmentName());
|
||||||
|
detailDTO.setOperator(detail.getOperator());
|
||||||
|
if (detailDTO.getPlanQty() != null && detailDTO.getInQty() != null && detailDTO.getPlanQty() > 0) {
|
||||||
|
BigDecimal progress = BigDecimal.valueOf(detailDTO.getInQty())
|
||||||
|
.multiply(BigDecimal.valueOf(100))
|
||||||
|
.divide(BigDecimal.valueOf(detailDTO.getPlanQty()), 1, RoundingMode.HALF_UP);
|
||||||
|
if (progress.compareTo(BigDecimal.ZERO) < 0) {
|
||||||
|
progress = BigDecimal.ZERO;
|
||||||
|
} else if (progress.compareTo(BigDecimal.valueOf(100)) > 0) {
|
||||||
|
progress = BigDecimal.valueOf(100);
|
||||||
|
}
|
||||||
|
detailDTO.setProgress(progress.doubleValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
String statusStr = detail.getOperStatus();
|
||||||
|
if ("1".equals(statusStr)) {
|
||||||
|
detailDTO.setK3Status("计划");
|
||||||
|
} else if ("2".equals(statusStr)) {
|
||||||
|
detailDTO.setK3Status("计划下达");
|
||||||
|
} else if ("3".equals(statusStr)) {
|
||||||
|
detailDTO.setK3Status("开工");
|
||||||
|
} else if ("4".equals(statusStr)) {
|
||||||
|
detailDTO.setK3Status("已完工");
|
||||||
|
} else if ("5".equals(statusStr)) {
|
||||||
|
detailDTO.setK3Status("结案");
|
||||||
|
} else if ("6".equals(statusStr)) {
|
||||||
|
detailDTO.setK3Status("结算");
|
||||||
|
} else {
|
||||||
|
detailDTO.setK3Status(statusStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
double inQty = detailDTO.getInQty() == null ? 0D : detailDTO.getInQty();
|
||||||
|
double okQty = detailDTO.getOkQty() == null ? 0D : detailDTO.getOkQty();
|
||||||
|
double ngQty = detailDTO.getNgQty() == null ? 0D : detailDTO.getNgQty();
|
||||||
|
double transOutQty = detailDTO.getTransOutQty() == null ? 0D : detailDTO.getTransOutQty();
|
||||||
|
if ("5".equals(statusStr) || "6".equals(statusStr)) {
|
||||||
|
detailDTO.setStatus("已关闭");
|
||||||
|
} else if (inQty == 0D) {
|
||||||
|
detailDTO.setStatus("未开工");
|
||||||
|
} else if (transOutQty > 0D) {
|
||||||
|
detailDTO.setStatus("已转出");
|
||||||
|
} else if (okQty + ngQty >= inQty) {
|
||||||
|
detailDTO.setStatus("工序完成");
|
||||||
|
} else if (okQty + ngQty > 0D) {
|
||||||
|
detailDTO.setStatus("质检中");
|
||||||
|
} else {
|
||||||
|
detailDTO.setStatus("生产中");
|
||||||
|
}
|
||||||
|
|
||||||
|
detailDTO.setSeqPlanStartTime(detail.getSeqPlanStartTime() != null ? DateUtil.formatDateTime(detail.getSeqPlanStartTime()) : null);
|
||||||
|
detailDTO.setSeqPlanFinishTime(detail.getSeqPlanFinishTime() != null ? DateUtil.formatDateTime(detail.getSeqPlanFinishTime()) : null);
|
||||||
|
detailDTO.setOperPlanStartTime(detail.getOperPlanStartTime() != null ? DateUtil.formatDateTime(detail.getOperPlanStartTime()) : null);
|
||||||
|
detailDTO.setOperPlanFinishTime(detail.getOperPlanFinishTime() != null ? DateUtil.formatDateTime(detail.getOperPlanFinishTime()) : null);
|
||||||
|
detailDTO.setOptCtrlCode(detail.getOptCtrlCode());
|
||||||
|
detailDTO.setKeyOper(detail.getKeyOper());
|
||||||
|
detailDTO.setActivity1Name(detail.getActivityName());
|
||||||
|
detailDTO.setOperDescription(detail.getOperDescription());
|
||||||
|
detailDTO.setEquipment(detail.getEquipment());
|
||||||
|
detailDTO.setK3DetailId(detail.getK3DetailId());
|
||||||
|
detailDTO.setEntityEntryId(detail.getEntityEntryId());
|
||||||
|
|
||||||
|
processList.add(detailDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
resultDTO.setWorkCenter(mainWorkCenter);
|
||||||
|
resultDTO.setOverallPlanQty(totalPlanQty);
|
||||||
|
resultDTO.setOverallOkQty(totalOkQty);
|
||||||
|
|
||||||
|
double progress = 0.0;
|
||||||
|
if (totalPlanQty > 0) {
|
||||||
|
progress = (totalOkQty / totalPlanQty) * 100;
|
||||||
|
}
|
||||||
|
resultDTO.setOverallProgress(Math.min(100.0, Math.max(0.0, progress)));
|
||||||
|
|
||||||
|
if (relatedDetails.isEmpty() || (finishedCount == 0 && totalOkQty == 0)) {
|
||||||
|
resultDTO.setOverallStatus("未开工");
|
||||||
|
} else if (finishedCount == relatedDetails.size()) {
|
||||||
|
resultDTO.setOverallStatus("已完工");
|
||||||
|
} else {
|
||||||
|
resultDTO.setOverallStatus("生产中");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resultDTO.setProcessList(processList);
|
||||||
|
resultList.add(resultDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
resultList.sort(Comparator
|
||||||
|
.comparing(OperationPlanResultDTO::getBatchNo, Comparator.nullsLast(String::compareTo))
|
||||||
|
.thenComparing(OperationPlanResultDTO::getRawPlanStartTime, Comparator.nullsLast(Date::compareTo)));
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,246 @@
|
|||||||
|
package com.ruoyi.system.service.support;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.kingdee.bos.webapi.entity.RepoRet;
|
||||||
|
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import com.ruoyi.system.domain.ProcessRoute;
|
||||||
|
import com.ruoyi.system.domain.dto.PlanPrcessNumDTO;
|
||||||
|
import com.ruoyi.system.domain.dto.ProcessTimeInfo;
|
||||||
|
import com.ruoyi.system.jdmain.rouplan.FEntity;
|
||||||
|
import com.ruoyi.system.jdmain.rouplan.FSubEntity;
|
||||||
|
import com.ruoyi.system.jdmain.rouplan.Model;
|
||||||
|
import com.ruoyi.system.service.impl.ProcessRouteServiceImpl;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
import com.ruoyi.system.runner.OperationPlanningDepartment018Save;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按「加工车间 + 物料」条件从金蝶拉取工序计划(SFC_OperationPlanning),再按工艺路线回写计划时间。
|
||||||
|
* <p>
|
||||||
|
* 与 {@link ProcessRouteServiceImpl#updateProcessPlan} 的更新逻辑类似,但 BillQuery 使用车间+物料过滤;
|
||||||
|
* 工艺路线与工序时间按单据上的 {@link Model#getFMONumber}(生产令号)在本地关联,无需再传入项目令号参数。
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class OperationPlanningWorkshopUpdateService {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(OperationPlanningWorkshopUpdateService.class);
|
||||||
|
|
||||||
|
/** 与 {@link ProcessRouteServiceImpl#getSelecPlan} 相同的 FieldKeys,保证反序列化到 {@link PlanPrcessNumDTO} */
|
||||||
|
private static final String OPERATION_PLANNING_FIELD_KEYS =
|
||||||
|
"FID,FSubEntity_FDetailID,FProductId.FNumber,FOperNumber,FEntity_FEntryID";
|
||||||
|
|
||||||
|
/** 保存到金蝶工序计划分录上的加工车间编码(与 {@link OperationPlanningDepartment018Save} 默认一致) */
|
||||||
|
private static final String WORKSHOP_DEPT_NUMBER = "018";
|
||||||
|
|
||||||
|
private final ProcessRouteServiceImpl processRouteService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用默认过滤:部门编码 007(Compare 67)、物料编码包含/匹配 -MP(Compare 17),
|
||||||
|
* 再按每条工序计划上的生产令号 {@link Model#getFMONumber} 关联本地工艺路线并更新计划时间。
|
||||||
|
*/
|
||||||
|
public List<Model> updateProcessPlanByWorkshopFilter() throws Exception {
|
||||||
|
return updateProcessPlanByWorkshopFilter("67", "007", "17", "-MP");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按自定义 BillQuery 条件查询工序计划并更新(部门 + 物料两行 FilterString,Logic 均为 0)。
|
||||||
|
* 工艺路线数据按每条单据的 {@link Model#getFMONumber} 查询,不再单独传入项目令号。
|
||||||
|
*
|
||||||
|
* @param departmentCompare 部门字段比较符,如 {@code "67"}
|
||||||
|
* @param departmentNumber 部门编码,如 {@code "007"}
|
||||||
|
* @param productCompare 物料字段比较符,如 {@code "17"}
|
||||||
|
* @param productFilterValue 物料过滤值,如 {@code "-MP"}
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
|
public List<Model> updateProcessPlanByWorkshopFilter(
|
||||||
|
String departmentCompare, String departmentNumber,
|
||||||
|
String productCompare, String productFilterValue) throws Exception {
|
||||||
|
|
||||||
|
List<Model> numDTOS = queryOperationPlanningModels(
|
||||||
|
departmentCompare, departmentNumber, productCompare, productFilterValue);
|
||||||
|
ExecutorService executorService = Executors.newFixedThreadPool(5);
|
||||||
|
List<Callable<Void>> tasks = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Model numDTO : numDTOS) {
|
||||||
|
tasks.add(() -> {
|
||||||
|
String moNumber = numDTO.getFMONumber();
|
||||||
|
if (StringUtils.isBlank(moNumber)) {
|
||||||
|
log.warn("工序计划 FID={} 无 FMONumber,跳过工艺路线时间回填", numDTO.getFID());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
List<ProcessRoute> rawBomList = processRouteService.getRawBomList(moNumber);
|
||||||
|
for (ProcessRoute processRoute : rawBomList) {
|
||||||
|
ProcessTimeInfo processTimeInfo = processRouteService.selectProcessRouteByMaterialCode(
|
||||||
|
numDTO.getFProcessId_number(), moNumber);
|
||||||
|
if (numDTO.getFProcessId_number().equals(processRoute.getMaterialCode())) {
|
||||||
|
numDTO.setFPlanStartTime(processTimeInfo.getTenthProcessStartTime());
|
||||||
|
numDTO.setFPlanFinishTime(processTimeInfo.getLastProcessEndTime());
|
||||||
|
List<FEntity> fEntity = numDTO.getFEntity();
|
||||||
|
for (FEntity entity : fEntity) {
|
||||||
|
for (FSubEntity fSubEntity : entity.getFSubEntity()) {
|
||||||
|
if (fSubEntity.getFOperNumber().equals(processRoute.getProcessNo())) {
|
||||||
|
FSubEntity.FWorkShopID dept = new FSubEntity.FWorkShopID();
|
||||||
|
dept.setFNUMBER(WORKSHOP_DEPT_NUMBER);
|
||||||
|
fSubEntity.setFWorkShopID(dept);
|
||||||
|
fSubEntity.setFOperPlanStartTime(processRoute.getXuStartTime());
|
||||||
|
fSubEntity.setFOperPlanFinishTime(processRoute.getXuEndTime());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<Future<Void>> futures = executorService.invokeAll(tasks);
|
||||||
|
for (Future<Void> future : futures) {
|
||||||
|
future.get();
|
||||||
|
}
|
||||||
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
|
log.error("按车间条件更新工序计划时并发任务异常", e);
|
||||||
|
throw e;
|
||||||
|
} finally {
|
||||||
|
executorService.shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numDTOS.isEmpty()) {
|
||||||
|
log.info("按车间条件更新工序计划:无单据,跳过保存");
|
||||||
|
return numDTOS;
|
||||||
|
}
|
||||||
|
RepoRet repoRet = OperationPlanningDepartment018Save.save(numDTOS);
|
||||||
|
if (repoRet == null) {
|
||||||
|
log.warn("按车间条件更新工序计划:保存未返回结果");
|
||||||
|
return numDTOS;
|
||||||
|
}
|
||||||
|
log.info(repoRet.isSuccessfully() ? "按车间条件更新工序计划:成功" : "按车间条件更新工序计划:失败");
|
||||||
|
if (repoRet.isSuccessfully()) {
|
||||||
|
log.info("按车间条件更新工序计划成功: {}", repoRet.getResult().getResponseStatus().getSuccessEntitys());
|
||||||
|
} else {
|
||||||
|
log.info("按车间条件更新工序计划失败: {}", repoRet.getResult().getResponseStatus().getErrors().get(0));
|
||||||
|
}
|
||||||
|
return numDTOS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仅查询并组装为 {@link Model} 列表,不调用保存。
|
||||||
|
*/
|
||||||
|
public List<Model> queryOperationPlanningModels(
|
||||||
|
String departmentCompare, String departmentNumber,
|
||||||
|
String productCompare, String productFilterValue) {
|
||||||
|
|
||||||
|
K3CloudApi client = new K3CloudApi();
|
||||||
|
JsonObject json = new JsonObject();
|
||||||
|
json.addProperty("FormId", "SFC_OperationPlanning");
|
||||||
|
json.addProperty("FieldKeys", OPERATION_PLANNING_FIELD_KEYS);
|
||||||
|
|
||||||
|
JsonArray filterString = new JsonArray();
|
||||||
|
JsonObject deptFilter = new JsonObject();
|
||||||
|
deptFilter.addProperty("Left", "");
|
||||||
|
deptFilter.addProperty("FieldName", "FDepartmentId.FNumber");
|
||||||
|
deptFilter.addProperty("Compare", departmentCompare);
|
||||||
|
deptFilter.addProperty("Value", departmentNumber);
|
||||||
|
deptFilter.addProperty("Right", "");
|
||||||
|
deptFilter.addProperty("Logic", 0);
|
||||||
|
filterString.add(deptFilter);
|
||||||
|
|
||||||
|
JsonObject productFilter = new JsonObject();
|
||||||
|
productFilter.addProperty("Left", "");
|
||||||
|
productFilter.addProperty("FieldName", "FProductId.FNumber");
|
||||||
|
productFilter.addProperty("Compare", productCompare);
|
||||||
|
productFilter.addProperty("Value", productFilterValue);
|
||||||
|
productFilter.addProperty("Right", "");
|
||||||
|
productFilter.addProperty("Logic", 0);
|
||||||
|
filterString.add(productFilter);
|
||||||
|
|
||||||
|
json.add("FilterString", filterString);
|
||||||
|
json.addProperty("OrderString", "");
|
||||||
|
json.addProperty("TopRowCount", 0);
|
||||||
|
json.addProperty("StartRow", 0);
|
||||||
|
json.addProperty("Limit", 2000);
|
||||||
|
json.addProperty("SubSystemId", "");
|
||||||
|
|
||||||
|
List<PlanPrcessNumDTO> plannedProcesses = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
String resultJson = String.valueOf(client.billQuery(json.toString()));
|
||||||
|
log.info("工序计划 BillQuery(车间+物料) 返回: {}", resultJson);
|
||||||
|
JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class);
|
||||||
|
if (jsonArray == null || jsonArray.size() == 0) {
|
||||||
|
log.info("工序计划 BillQuery(车间+物料) 无数据");
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
List<PlanPrcessNumDTO> rows = objectMapper.readValue(jsonArray.toString(),
|
||||||
|
new TypeReference<List<PlanPrcessNumDTO>>() { });
|
||||||
|
if (rows != null && !rows.isEmpty()) {
|
||||||
|
plannedProcesses.addAll(rows);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("工序计划 BillQuery(车间+物料) 异常: {}", e.getMessage(), e);
|
||||||
|
}
|
||||||
|
return convertToRequiredJson(plannedProcesses);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与 {@link ProcessRouteServiceImpl} 中私有方法逻辑一致:将多行 BillQuery 结果合并为按 FID 聚合的 {@link Model}。
|
||||||
|
*/
|
||||||
|
private List<Model> convertToRequiredJson(List<PlanPrcessNumDTO> plannedProcesses) {
|
||||||
|
Map<Integer, Model> modelMap = new HashMap<>();
|
||||||
|
for (PlanPrcessNumDTO dto : plannedProcesses) {
|
||||||
|
Model model = modelMap.computeIfAbsent(dto.getFID(), fid -> {
|
||||||
|
Model newModel = new Model();
|
||||||
|
newModel.setFID(fid);
|
||||||
|
newModel.setFMONumber(dto.getFMONumber());
|
||||||
|
newModel.setFPlanStartTime(dto.getFPlanStartTime());
|
||||||
|
newModel.setFPlanFinishTime(dto.getFPlanFinishTime());
|
||||||
|
newModel.setFProcessId_number(dto.getFProcessId_number());
|
||||||
|
return newModel;
|
||||||
|
});
|
||||||
|
|
||||||
|
FEntity fEntity = model.getFEntity().stream()
|
||||||
|
.filter(entity -> entity.getFEntryID() == dto.getFEntity_FEntryID())
|
||||||
|
.findFirst()
|
||||||
|
.orElseGet(() -> {
|
||||||
|
FEntity newFEntity = new FEntity();
|
||||||
|
newFEntity.setFEntryID(dto.getFEntity_FEntryID());
|
||||||
|
newFEntity.setFSeqNumber(dto.getFSeqNumber());
|
||||||
|
newFEntity.setFSeqName(dto.getFSeqName());
|
||||||
|
model.getFEntity().add(newFEntity);
|
||||||
|
return newFEntity;
|
||||||
|
});
|
||||||
|
|
||||||
|
FSubEntity fSubEntity = new FSubEntity();
|
||||||
|
fSubEntity.setFDetailID(dto.getFSubEntity_FDetailID());
|
||||||
|
fSubEntity.setFOperNumber(dto.getFOperNumber());
|
||||||
|
fSubEntity.setFOperPlanStartTime(dto.getFOperPlanStartTime());
|
||||||
|
fSubEntity.setFOperPlanFinishTime(dto.getFOperPlanFinishTime());
|
||||||
|
|
||||||
|
FSubEntity.F_HBYT_RKCK rkck = new FSubEntity.F_HBYT_RKCK();
|
||||||
|
rkck.setFNUMBER(dto.getFRKCKFName());
|
||||||
|
fSubEntity.setF_HBYT_RKCK(rkck);
|
||||||
|
|
||||||
|
fEntity.getFSubEntity().add(fSubEntity);
|
||||||
|
}
|
||||||
|
return new ArrayList<>(modelMap.values());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,169 @@
|
|||||||
|
package com.ruoyi.system.service.support;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.kingdee.bos.webapi.entity.RepoRet;
|
||||||
|
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||||
|
import com.ruoyi.system.domain.dto.PlanPrcessNumDTO;
|
||||||
|
import com.ruoyi.system.jdmain.rouplan.FEntity;
|
||||||
|
import com.ruoyi.system.jdmain.rouplan.FSubEntity;
|
||||||
|
import com.ruoyi.system.jdmain.rouplan.Model;
|
||||||
|
import com.ruoyi.system.runner.OperationReportDepartmentSave;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工序汇报单({@link OperationReportDepartmentSave#FORM_ID})按车间+物料条件 BillQuery,
|
||||||
|
* 将分录部门统一为 018 后保存;仅更新 {@link OperationReportDepartmentSave} 中声明的字段。
|
||||||
|
* <p>
|
||||||
|
* BillQuery 使用与工序计划共有的行键字段(FID、分录内码、物料、工序号等),
|
||||||
|
* 若云星空汇报单不支持 {@code FProductId.FNumber} 等过滤键,请在调用处改为该单实际字段。
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class OperationReportWorkshopUpdateService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工序汇报 BillQuery 字段(与工序计划侧常见行键一致,两单都具备时可反序列化到 {@link PlanPrcessNumDTO})。
|
||||||
|
*/
|
||||||
|
public static final String OPERATION_REPORT_BILL_FIELD_KEYS =
|
||||||
|
"FID,FSubEntity_FDetailID,FEntity_FEntryID";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认:部门 67/007、物料 17/-MP,保存部门 018。
|
||||||
|
*/
|
||||||
|
public List<Model> updateOperationReportByWorkshopFilter() throws Exception {
|
||||||
|
return updateOperationReportByWorkshopFilter("67", "007", "17", "-MP");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询工序汇报 → 写分录部门 → Save(NeedUpDateFields 仅 FDepartmentId / FEntity / FSubEntity)。
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
|
public List<Model> updateOperationReportByWorkshopFilter(
|
||||||
|
String departmentCompare, String departmentNumber,
|
||||||
|
String productCompare, String productFilterValue) throws Exception {
|
||||||
|
|
||||||
|
List<Model> models = queryOperationReportModels(
|
||||||
|
departmentCompare, departmentNumber, productCompare, productFilterValue);
|
||||||
|
if (models.isEmpty()) {
|
||||||
|
log.info("工序汇报:无数据,跳过保存");
|
||||||
|
return models;
|
||||||
|
}
|
||||||
|
RepoRet repoRet = OperationReportDepartmentSave.save(models);
|
||||||
|
if (repoRet == null) {
|
||||||
|
log.warn("工序汇报:保存未返回结果");
|
||||||
|
return models;
|
||||||
|
}
|
||||||
|
log.info(repoRet.isSuccessfully() ? "工序汇报更新:成功" : "工序汇报更新:失败");
|
||||||
|
return models;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仅 BillQuery 并组装 {@link Model},不保存。
|
||||||
|
*/
|
||||||
|
public List<Model> queryOperationReportModels(
|
||||||
|
String departmentCompare, String departmentNumber,
|
||||||
|
String productCompare, String productFilterValue) {
|
||||||
|
|
||||||
|
K3CloudApi client = new K3CloudApi();
|
||||||
|
JsonObject json = new JsonObject();
|
||||||
|
json.addProperty("FormId", OperationReportDepartmentSave.FORM_ID);
|
||||||
|
json.addProperty("FieldKeys", OPERATION_REPORT_BILL_FIELD_KEYS);
|
||||||
|
|
||||||
|
JsonArray filterString = new JsonArray();
|
||||||
|
JsonObject deptFilter = new JsonObject();
|
||||||
|
deptFilter.addProperty("Left", "");
|
||||||
|
deptFilter.addProperty("FieldName", "FWorkShopID.FNumber");
|
||||||
|
deptFilter.addProperty("Compare", departmentCompare);
|
||||||
|
deptFilter.addProperty("Value", departmentNumber);
|
||||||
|
deptFilter.addProperty("Right", "");
|
||||||
|
deptFilter.addProperty("Logic", 0);
|
||||||
|
filterString.add(deptFilter);
|
||||||
|
|
||||||
|
JsonObject productFilter = new JsonObject();
|
||||||
|
productFilter.addProperty("Left", "");
|
||||||
|
productFilter.addProperty("FieldName", "FMaterialId.FNumber");
|
||||||
|
productFilter.addProperty("Compare", productCompare);
|
||||||
|
productFilter.addProperty("Value", productFilterValue);
|
||||||
|
productFilter.addProperty("Right", "");
|
||||||
|
productFilter.addProperty("Logic", 0);
|
||||||
|
filterString.add(productFilter);
|
||||||
|
|
||||||
|
json.add("FilterString", filterString);
|
||||||
|
json.addProperty("OrderString", "");
|
||||||
|
json.addProperty("TopRowCount", 0);
|
||||||
|
json.addProperty("StartRow", 0);
|
||||||
|
json.addProperty("Limit", 2000);
|
||||||
|
json.addProperty("SubSystemId", "");
|
||||||
|
|
||||||
|
List<PlanPrcessNumDTO> rows = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
String resultJson = String.valueOf(client.billQuery(json.toString()));
|
||||||
|
log.info("工序汇报 BillQuery 返回: {}", resultJson);
|
||||||
|
JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class);
|
||||||
|
if (jsonArray == null || jsonArray.size() == 0) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
List<PlanPrcessNumDTO> parsed = objectMapper.readValue(jsonArray.toString(),
|
||||||
|
new TypeReference<List<PlanPrcessNumDTO>>() { });
|
||||||
|
if (parsed != null && !parsed.isEmpty()) {
|
||||||
|
rows.addAll(parsed);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("工序汇报 BillQuery 异常: {}", e.getMessage(), e);
|
||||||
|
}
|
||||||
|
return convertBillRowsToModels(rows);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Model> convertBillRowsToModels(List<PlanPrcessNumDTO> plannedProcesses) {
|
||||||
|
Map<Integer, Model> modelMap = new HashMap<>();
|
||||||
|
for (PlanPrcessNumDTO dto : plannedProcesses) {
|
||||||
|
Model model = modelMap.computeIfAbsent(dto.getFID(), fid -> {
|
||||||
|
Model newModel = new Model();
|
||||||
|
newModel.setFID(fid);
|
||||||
|
newModel.setFMONumber(dto.getFMONumber());
|
||||||
|
newModel.setFPlanStartTime(dto.getFPlanStartTime());
|
||||||
|
newModel.setFPlanFinishTime(dto.getFPlanFinishTime());
|
||||||
|
newModel.setFProcessId_number(dto.getFProcessId_number());
|
||||||
|
return newModel;
|
||||||
|
});
|
||||||
|
|
||||||
|
FEntity fEntity = model.getFEntity().stream()
|
||||||
|
.filter(entity -> entity.getFEntryID() == dto.getFEntity_FEntryID())
|
||||||
|
.findFirst()
|
||||||
|
.orElseGet(() -> {
|
||||||
|
FEntity newFEntity = new FEntity();
|
||||||
|
newFEntity.setFEntryID(dto.getFEntity_FEntryID());
|
||||||
|
newFEntity.setFSeqNumber(dto.getFSeqNumber() != null ? dto.getFSeqNumber() : "");
|
||||||
|
newFEntity.setFSeqName(dto.getFSeqName() != null ? dto.getFSeqName() : "");
|
||||||
|
model.getFEntity().add(newFEntity);
|
||||||
|
return newFEntity;
|
||||||
|
});
|
||||||
|
|
||||||
|
FSubEntity fSubEntity = new FSubEntity();
|
||||||
|
fSubEntity.setFDetailID(dto.getFSubEntity_FDetailID());
|
||||||
|
fSubEntity.setFOperNumber(dto.getFOperNumber());
|
||||||
|
fSubEntity.setFOperPlanStartTime(dto.getFOperPlanStartTime());
|
||||||
|
fSubEntity.setFOperPlanFinishTime(dto.getFOperPlanFinishTime());
|
||||||
|
|
||||||
|
if (dto.getFRKCKFName() != null && !dto.getFRKCKFName().isEmpty()) {
|
||||||
|
FSubEntity.F_HBYT_RKCK rkck = new FSubEntity.F_HBYT_RKCK();
|
||||||
|
rkck.setFNUMBER(dto.getFRKCKFName());
|
||||||
|
fSubEntity.setF_HBYT_RKCK(rkck);
|
||||||
|
}
|
||||||
|
|
||||||
|
fEntity.getFSubEntity().add(fSubEntity);
|
||||||
|
}
|
||||||
|
return new ArrayList<>(modelMap.values());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
package com.ruoyi.system.utils;
|
||||||
|
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生产令号解析工具。
|
||||||
|
* <p>常规令号年份取首段「-」后两位;以 {@code EY} 开头的研发令号(如 {@code EY2512-032})年份取 {@code EY} 后紧跟的两位。</p>
|
||||||
|
*/
|
||||||
|
public final class ProductionOrderNoUtils {
|
||||||
|
|
||||||
|
private static final Map<String, String> PROJECT_NAME_MAP;
|
||||||
|
|
||||||
|
static {
|
||||||
|
Map<String, String> mapping = new LinkedHashMap<>();
|
||||||
|
mapping.put("ND3", "宁德三代项目");
|
||||||
|
mapping.put("WL5.0", "蔚来5.0项目");
|
||||||
|
mapping.put("WL5.1", "蔚来5.1项目");
|
||||||
|
PROJECT_NAME_MAP = Collections.unmodifiableMap(mapping);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ProductionOrderNoUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String extractYear(String productionOrderNo) {
|
||||||
|
if (StringUtils.isBlank(productionOrderNo)) {
|
||||||
|
throw new IllegalArgumentException("生产令号为空,无法识别年份");
|
||||||
|
}
|
||||||
|
String code = productionOrderNo.trim();
|
||||||
|
|
||||||
|
// EY 开头研发令号:年份为 EY 后两位,如 EY2512-032 -> 25 -> 2025
|
||||||
|
if (code.length() >= 4 && code.regionMatches(true, 0, "EY", 0, 2)) {
|
||||||
|
String yy = code.substring(2, 4);
|
||||||
|
if (!yy.chars().allMatch(Character::isDigit)) {
|
||||||
|
throw new IllegalArgumentException("EY研发令号年份段不是数字: " + productionOrderNo);
|
||||||
|
}
|
||||||
|
return "20" + yy;
|
||||||
|
}
|
||||||
|
|
||||||
|
int firstDash = code.indexOf('-');
|
||||||
|
if (firstDash < 0 || code.length() < firstDash + 3) {
|
||||||
|
throw new IllegalArgumentException("生产令号格式不正确,缺少年份段: " + productionOrderNo);
|
||||||
|
}
|
||||||
|
String yy = code.substring(firstDash + 1, firstDash + 3);
|
||||||
|
if (!yy.chars().allMatch(Character::isDigit)) {
|
||||||
|
throw new IllegalArgumentException("生产令号年份段不是数字: " + productionOrderNo);
|
||||||
|
}
|
||||||
|
return "20" + yy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String extractYearPart(String productionOrderNo) {
|
||||||
|
String year = extractYear(productionOrderNo);
|
||||||
|
return year.substring(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String resolveProjectName(String productionOrderNo) {
|
||||||
|
if (StringUtils.isBlank(productionOrderNo)) {
|
||||||
|
return "未知项目";
|
||||||
|
}
|
||||||
|
String code = productionOrderNo.trim().toUpperCase();
|
||||||
|
for (Map.Entry<String, String> entry : PROJECT_NAME_MAP.entrySet()) {
|
||||||
|
if (code.startsWith(entry.getKey().toUpperCase())) {
|
||||||
|
return entry.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "未知项目";
|
||||||
|
}
|
||||||
|
}
|
||||||
971
ruoyi-system/src/main/resources/EXCEL模板/event.json
Normal file
971
ruoyi-system/src/main/resources/EXCEL模板/event.json
Normal file
@ -0,0 +1,971 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"finishTime": "2026-05-15T08:38Z",
|
||||||
|
"attachedProcessInstanceIds": [],
|
||||||
|
"businessId": "202605131714000342828",
|
||||||
|
"title": "安宏生提交的技术方案申请表",
|
||||||
|
"originatorDeptId": "1057854496",
|
||||||
|
"operationRecords": [
|
||||||
|
{
|
||||||
|
"date": "2026-05-13T17:14Z",
|
||||||
|
"result": "NONE",
|
||||||
|
"images": [],
|
||||||
|
"showName": "提交申请",
|
||||||
|
"type": "START_PROCESS_INSTANCE",
|
||||||
|
"userId": "455108492423275705"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-13T17:16Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "6650_e9ef",
|
||||||
|
"images": [],
|
||||||
|
"showName": "销售内勤(3)",
|
||||||
|
"remark": "",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "03462113426124233873"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-13T17:49Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "0a8f_4e19",
|
||||||
|
"images": [],
|
||||||
|
"showName": "工业销售总监",
|
||||||
|
"remark": "已确认",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "02580952260533396432"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-14T10:06Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "122b_b71f",
|
||||||
|
"images": [],
|
||||||
|
"showName": "总工程师",
|
||||||
|
"remark": "同意",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "035715651324258877"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-14T10:18Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "7246_df51",
|
||||||
|
"images": [],
|
||||||
|
"showName": "项目负责副总工程师派工",
|
||||||
|
"remark": "",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "3816683726197864"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-14T14:07Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "76d0_7eb3",
|
||||||
|
"images": [],
|
||||||
|
"showName": "项目负责人确认时间",
|
||||||
|
"remark": "已确认",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "264325116326361164"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-14T14:09Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "76d0_7eb3",
|
||||||
|
"images": [],
|
||||||
|
"showName": "项目负责人确认时间",
|
||||||
|
"remark": "",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "283111015435457273"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-14T19:04Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "25d1_3948",
|
||||||
|
"images": [],
|
||||||
|
"showName": "办理人",
|
||||||
|
"remark": "",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "455108492423275705"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-14T19:04Z",
|
||||||
|
"result": "NONE",
|
||||||
|
"activityId": "8e30_b091",
|
||||||
|
"images": [],
|
||||||
|
"showName": "抄送人",
|
||||||
|
"ccUserIds": [
|
||||||
|
"03462113426124233873"
|
||||||
|
],
|
||||||
|
"remark": "",
|
||||||
|
"type": "PROCESS_CC",
|
||||||
|
"userId": "455108492423275705"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-14T19:04Z",
|
||||||
|
"result": "NONE",
|
||||||
|
"activityId": "e584_2a28",
|
||||||
|
"images": [],
|
||||||
|
"showName": "抄送人",
|
||||||
|
"ccUserIds": [
|
||||||
|
"264325116326361164",
|
||||||
|
"283111015435457273",
|
||||||
|
"455108492423275705"
|
||||||
|
],
|
||||||
|
"remark": "",
|
||||||
|
"type": "PROCESS_CC",
|
||||||
|
"userId": "455108492423275705"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-15T08:16Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "ffbb_66b4",
|
||||||
|
"images": [],
|
||||||
|
"showName": "研发技术人员确认提交方案",
|
||||||
|
"remark": "已确认",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "264325116326361164"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-15T08:36Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "ffbb_66b4",
|
||||||
|
"images": [],
|
||||||
|
"showName": "研发技术人员确认提交方案",
|
||||||
|
"remark": "",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "283111015435457273"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2026-05-15T08:38Z",
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "f135_c1ff",
|
||||||
|
"images": [],
|
||||||
|
"showName": "销售确认收到方案",
|
||||||
|
"remark": "",
|
||||||
|
"type": "EXECUTE_TASK_NORMAL",
|
||||||
|
"userId": "03462113426124233873"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"formComponentValues": [
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "方案申请编号",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1BBYI1OFDJA80",
|
||||||
|
"value": "GF-26-114"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "概述名称",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_FRLYG3CQ3CG0",
|
||||||
|
"value": "GF-26-114\t升降台/安宏生/河南帕菲特/20260513"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "InnerContactField",
|
||||||
|
"name": "填表人",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "InnerContactField_9DSIOI7Y7AO0",
|
||||||
|
"value": "安宏生",
|
||||||
|
"extValue": "[{\"emplId\":\"455108492423275705\",\"itemId\":\"455108492423275705\",\"name\":\"安宏生\",\"avatar\":\"https://static.dingtalk.com/media/lQDPM5WVGKaHgqPNAf7NAf6wO-ZGtsVyAdQJQdv6i25iAQ_510_510.jpg\"}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDDateField",
|
||||||
|
"name": "填表日期",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDDateField_1BHYQ7T5N5TS0",
|
||||||
|
"value": "2026-05-13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDDateField",
|
||||||
|
"name": "需求日期",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDDateField_YYD1HAMKFXS0",
|
||||||
|
"value": "2026-05-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "有无前期对接工程师",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_1VS1BX17O9MO0",
|
||||||
|
"value": "无",
|
||||||
|
"extValue": "{\"label\":\"无\",\"key\":\"option_1\"}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "InnerContactField",
|
||||||
|
"name": "前期对接工程师",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "InnerContactField_U886PC45AO00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "客户全称",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1HXMC0VO5TCW0",
|
||||||
|
"value": "河南帕菲特搬运设备有限公司"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "联系人及电话",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_QBMQQBNCTA80",
|
||||||
|
"value": "王经理"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "项目分类",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_845RKMRCBNC",
|
||||||
|
"value": "工业类",
|
||||||
|
"extValue": "{\"label\":\"工业类\",\"key\":\"option_1\"}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "产品名称",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_1XTHOHPHULNK0",
|
||||||
|
"value": "举升链升降台 XCLLT",
|
||||||
|
"extValue": "{\"label\":\"举升链升降台 XCLLT\",\"key\":\"option_MJ62T1V3PI80\"}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "产品应用领域",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1EIAVY538AM80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_N0ZDGQT4UJ40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "技术总工意见",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_GO981AG879K0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "InnerContactField",
|
||||||
|
"name": "项目负责副总工程师",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "InnerContactField_1TXM18E414740",
|
||||||
|
"value": "李德山",
|
||||||
|
"extValue": "[{\"nick\":\"李德山\",\"orgUserName\":\"李德山\",\"emplId\":\"3816683726197864\",\"corpId\":\"dinga5c6eeb2f797ecdbf5bf40eda33b7ba0\",\"name\":\"李德山\",\"selectDeptName\":\"研究院\",\"avatar\":\"https://static.dingtalk.com/media/lADPDiCptl4dganNA_DNAvI_754_1008.jpg\",\"selectDeptId\":1062677229}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "InnerContactField",
|
||||||
|
"name": "项目负责人派工",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "InnerContactField_SHOIEPZ1X8W0",
|
||||||
|
"value": "李瑞娜,赵世通",
|
||||||
|
"extValue": "[{\"emplId\":\"264325116326361164\",\"itemId\":\"264325116326361164\",\"name\":\"李瑞娜\",\"selectDeptName\":\"\",\"avatar\":\"https://static.dingtalk.com/media/lADPDhJzvnPW8vDNASDNASA_288_288.jpg_60x60q90.jpg\",\"selectDeptId\":\"1051631211\"},{\"emplId\":\"283111015435457273\",\"itemId\":\"283111015435457273\",\"name\":\"赵世通\",\"selectDeptName\":\"\",\"avatar\":\"\",\"selectDeptId\":\"1051631211\"}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDDateField",
|
||||||
|
"name": "预计完成日期",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDDateField_1107GY4FF5R40",
|
||||||
|
"value": "2026-05-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "技术人员意见",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_1JNZ7QFU4GLC0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_5UK9OEEPNQG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextNote",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextNote_14QFWOA0NXUK",
|
||||||
|
"value": "举升链升降台 XCLLT / 自导向升降台 XCDLT / 咬合链升降台 XCZLT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "台面尺寸",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_7KHHS2KML4G0",
|
||||||
|
"value": "2*1.8m"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "行程",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_17ONU2GWWQQK0",
|
||||||
|
"value": "2m"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "负载(单位:kg)",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1D66PIGUHPEO0",
|
||||||
|
"value": "3t"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "速度(单位:m/s或mm/s)",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_2E68TAT1P2B",
|
||||||
|
"value": "没有要求"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "最低高度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1FVHYJIFC9340",
|
||||||
|
"value": "0.6m"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "驱动方式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_12J1O9KUMFK00",
|
||||||
|
"value": "伺服电机",
|
||||||
|
"extValue": "{\"label\":\"伺服电机\",\"key\":\"option_1\"}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "有无偏载",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_1CTHXMP1W6000",
|
||||||
|
"value": "有",
|
||||||
|
"extValue": "{\"label\":\"有\",\"key\":\"option_0\"}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "限位方式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_1QQEC44I00G00",
|
||||||
|
"value": "行程检测",
|
||||||
|
"extValue": "{\"label\":\"行程检测\",\"key\":\"option_0\"}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "电源电压",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1X4ISVYJ2E000",
|
||||||
|
"value": "48V"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "使用环境",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_9MIMABZEHW40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "使用频率",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1N728V92Z1LS0",
|
||||||
|
"value": "低"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "有无脚轮",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_4JP6PT1HB480",
|
||||||
|
"value": "无",
|
||||||
|
"extValue": "{\"label\":\"无\",\"key\":\"option_1\"}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "电控要求",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_1WLKQPZU8UF40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "方案补充说明",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_ZCRQZCLP3800"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_704TMWHBUK00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDAttachment",
|
||||||
|
"name": "附件",
|
||||||
|
"id": "DDAttachment_XJYUB17OFGW0",
|
||||||
|
"value": "[{\"spaceId\":\"27823713000\",\"fileName\":\"河南帕菲特搬运设备有限公司.xls\",\"fileSize\":23552,\"fileType\":\"xls\",\"fileId\":\"221145607469\"},{\"spaceId\":\"27823713000\",\"fileName\":\"微信图片_20260513163955_12_59.png\",\"thumbnail\":{\"authCode\":\"\",\"authMediaId\":\"$iwElAqNqcGcDAQTRAcgF0QIBBrDi5mc-dmf47QnZxa-9YegABwAIAAmqZGluZ3BhblBpYwoACwA\",\"rotation\":0,\"width\":456,\"mediaId\":\"\",\"height\":513},\"fileSize\":80830,\"fileType\":\"png\",\"fileId\":\"221145649720\"},{\"spaceId\":\"27823713000\",\"fileName\":\"微信图片_20260513164014_13_59.jpg\",\"fileSize\":784102,\"fileType\":\"jpg\",\"fileId\":\"221145679632\"},{\"spaceId\":\"27823713000\",\"fileName\":\"微信图片_20260513164031_14_59.png\",\"thumbnail\":{\"authCode\":\"\",\"authMediaId\":\"$iwElAqNqcGcDAQTRAmwF0QIEBrAdx_Bs03uJ0AnZxbBfKFcABwAIAAmqZGluZ3BhblBpYwoACwA\",\"rotation\":0,\"width\":716,\"mediaId\":\"\",\"height\":596},\"fileSize\":39858,\"fileType\":\"png\",\"fileId\":\"221145622748\"}]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextNote",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextNote_1S3AH8USXUU80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextNote",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextNote_1S2UFGJ55CDC0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "基坑深度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1JWDW5KVN95S0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "台面尺寸/外形轮廓(可在附件内上传)",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1CTQW75A6XK00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "动载",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_23GWUBGROXWG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "静载(可在附件内上传)",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_SIM35ICCGOW0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "速度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_18UFLIYK2G0W"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "行程",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_EEO52079YWG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "限位方式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_17J58EEU17DS0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "电压频率是否特殊",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_F05H5U3N9NC0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "减速器要求",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_J84FK4ALUOG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "导向形式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_3IXTW5EOSTK0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_OWD8CAEIPCW0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDAttachment",
|
||||||
|
"name": "台下设备参数附件",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDAttachment_ZVUJAK8ZRVK0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextNote",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextNote_196NEZF2GKQO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "安装位置(如有纵/横剖图可附件说明)",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_1BXA83S0L9Q80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "设备形式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_1J17P5TOEU0W0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "卷筒直径",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1ED24R0QOG4G0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "行程",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_62OWJDX5J780"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "速度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_W509DMUVT0W0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "吊点数",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_IR0XM2QFI4G0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "额定载荷",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_MWLXHEAJYDS0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "杆体自重/总载荷",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_GZISO77XGU80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "有无载荷传感器",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_1XGOO6QI7YE80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "其他特殊要求",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_15N86B1OM9R40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_13OIS5R5G4G00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDAttachment",
|
||||||
|
"name": "台上设备参数附件",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDAttachment_Y0KM7E71JY80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextNote",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextNote_65FUYS6PMOG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "行程",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1WOIAN7UXMXS0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "负载",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1B349K9H85FK0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "箱体形式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_V3UBXSM0V400"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "出轴方式/方向",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1N6AOCMUFXXC0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "地脚板位置",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_5B1TRAUGUP80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "是否加装限位",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_R805UL353UO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "使用频率",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_210LMWSH8CCG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "方案补充说明",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_6JU2QSEND4G0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_1OBP4JCUUC1S0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDAttachment",
|
||||||
|
"name": "附件",
|
||||||
|
"id": "DDAttachment_1OQ414MMSQE80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextNote",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextNote_7USWEJCWOHO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "外形尺寸(长宽高)",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_10A0OELOA9CW0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "负载",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1F35DOLS3GJK0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "速度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_G2N28LNPOKO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "是否带升降",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_Y8AKWL5T20G0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "升降高度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1X0CJO3BBELC0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "升降速度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1DCKMEARM96O0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "使用环境",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_8ZYS78VXXKG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "导航方式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_1UNDZ9DNXIN4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "方案补充说明",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_902TJ8AC3BO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_1V6324DSHDMO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDAttachment",
|
||||||
|
"name": "附件",
|
||||||
|
"id": "DDAttachment_19GLQ5UABT9C0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextNote",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextNote_1JGD3A0EBOU80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "刚性链类型",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_JDD37MSAU7K0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "行程",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1ODO49P4QIOW0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "负载",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_15YXLN28VYWW0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "升降速度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_N3EEZETOMLS0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "箱体形式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_MZLNE0WXSYO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "是否加装限位",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_1D1NY47OPRY80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "电机减速机种类",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_CO3RY4XTL800"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "使用频率",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1LJRN85YYW680"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "方案补充说明",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_1W3YXGM2WVWG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_FVVK6OHVSMO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDAttachment",
|
||||||
|
"name": "附件",
|
||||||
|
"id": "DDAttachment_NISKKTWA4LC0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextNote",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextNote_18NMSNM15JLS0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "台面尺寸",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_YON75A1BPDS0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "负载",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_1LA4D1ZNJCO00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "速度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_QZAR20YC9DC0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "最低高度",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_W5VDI6TJE0W0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "驱动方式",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_JQFNCPP9Q8G0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "电源电压",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_X7WT90RW88W0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "使用环境",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_XVWU129IDG00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextField",
|
||||||
|
"name": "使用频率",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextField_21CFZH9VCESG0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "其他特殊要求",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_20MIUBGWHAYO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "ColumnLayout",
|
||||||
|
"name": "分栏",
|
||||||
|
"id": "ColumnLayout_7E01AAY4TUO0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDAttachment",
|
||||||
|
"name": "附件",
|
||||||
|
"id": "DDAttachment_PVHB9480IPS0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "TextareaField",
|
||||||
|
"name": "任务详情",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "TextareaField_I623WTCGKBK0",
|
||||||
|
"value": "出配置表"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDDateField",
|
||||||
|
"name": "方案提交日期",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDDateField_1QY4LG6SI9FK0",
|
||||||
|
"value": "2026-05-15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"componentType": "DDSelectField",
|
||||||
|
"name": "是否收到方案",
|
||||||
|
"bizAlias": "",
|
||||||
|
"id": "DDSelectField_W8ZTK2TQHHS0",
|
||||||
|
"value": "是",
|
||||||
|
"extValue": "{\"label\":\"是\",\"key\":\"option_0\"}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "agree",
|
||||||
|
"bizAction": "NONE",
|
||||||
|
"ccUserIds": [
|
||||||
|
"03462113426124233873",
|
||||||
|
"455108492423275705",
|
||||||
|
"283111015435457273",
|
||||||
|
"264325116326361164"
|
||||||
|
],
|
||||||
|
"createTime": "2026-05-13T17:14Z",
|
||||||
|
"originatorUserId": "455108492423275705",
|
||||||
|
"bizData": "{}",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "25d1_3948",
|
||||||
|
"finishTime": "2026-05-14T19:04Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101080494031&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-14T14:09Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101080494031&businessId=202605131714000342828",
|
||||||
|
"userId": "455108492423275705",
|
||||||
|
"taskId": 101080494031,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "6650_e9ef",
|
||||||
|
"finishTime": "2026-05-13T17:16Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101091313121&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-13T17:14Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101091313121&businessId=202605131714000342828",
|
||||||
|
"userId": "03462113426124233873",
|
||||||
|
"taskId": 101091313121,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "f135_c1ff",
|
||||||
|
"finishTime": "2026-05-15T08:38Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101095534975&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-15T08:36Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101095534975&businessId=202605131714000342828",
|
||||||
|
"userId": "03462113426124233873",
|
||||||
|
"taskId": 101095534975,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "76d0_7eb3",
|
||||||
|
"finishTime": "2026-05-14T14:07Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101102549873&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-14T10:18Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101102549873&businessId=202605131714000342828",
|
||||||
|
"userId": "264325116326361164",
|
||||||
|
"taskId": 101102549873,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "76d0_7eb3",
|
||||||
|
"finishTime": "2026-05-14T14:09Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101102549874&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-14T10:18Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101102549874&businessId=202605131714000342828",
|
||||||
|
"userId": "283111015435457273",
|
||||||
|
"taskId": 101102549874,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "ffbb_66b4",
|
||||||
|
"finishTime": "2026-05-15T08:16Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101118665886&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-14T19:04Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101118665886&businessId=202605131714000342828",
|
||||||
|
"userId": "264325116326361164",
|
||||||
|
"taskId": 101118665886,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "ffbb_66b4",
|
||||||
|
"finishTime": "2026-05-15T08:36Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101118665887&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-14T19:04Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101118665887&businessId=202605131714000342828",
|
||||||
|
"userId": "283111015435457273",
|
||||||
|
"taskId": 101118665887,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "0a8f_4e19",
|
||||||
|
"finishTime": "2026-05-13T17:49Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101127712338&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-13T17:16Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101127712338&businessId=202605131714000342828",
|
||||||
|
"userId": "02580952260533396432",
|
||||||
|
"taskId": 101127712338,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "122b_b71f",
|
||||||
|
"finishTime": "2026-05-14T10:06Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101128816574&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-13T17:49Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101128816574&businessId=202605131714000342828",
|
||||||
|
"userId": "035715651324258877",
|
||||||
|
"taskId": 101128816574,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"result": "AGREE",
|
||||||
|
"activityId": "7246_df51",
|
||||||
|
"finishTime": "2026-05-14T10:18Z",
|
||||||
|
"pcUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101139004605&businessId=202605131714000342828",
|
||||||
|
"createTime": "2026-05-14T10:06Z",
|
||||||
|
"mobileUrl": "aflow.dingtalk.com?procInsId=n5wyieNRTUK28eZkZPbVHQ08411778663674&taskId=101139004605&businessId=202605131714000342828",
|
||||||
|
"userId": "3816683726197864",
|
||||||
|
"taskId": 101139004605,
|
||||||
|
"status": "COMPLETED"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"originatorDeptName": "经营中心-工业事业部-销售科",
|
||||||
|
"status": "COMPLETED"
|
||||||
|
},
|
||||||
|
"success": true
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 184 KiB |
@ -0,0 +1,9 @@
|
|||||||
|
-- 已有表 ding_scheme_application 时按需执行(列已存在会报错,请跳过)
|
||||||
|
|
||||||
|
-- 1)中文名映射(与 wf_values_json 的 key 均为控件 id)
|
||||||
|
ALTER TABLE ding_scheme_application
|
||||||
|
ADD COLUMN form_label_map MEDIUMTEXT NULL COMMENT '控件 id -> 中文 name(JSON)' AFTER form_json;
|
||||||
|
|
||||||
|
-- 2)宽表单值 JSON(替代数百个 wf_* 物理列,避免 InnoDB 1118)
|
||||||
|
ALTER TABLE ding_scheme_application
|
||||||
|
ADD COLUMN wf_values_json LONGTEXT NULL COMMENT '控件 id -> {value,ext} JSON' AFTER form_label_map;
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
-- 已有旧表(含大量 wf_* 列导致 1118)时:先加 JSON 列、升级应用后再按需删除旧 wf_* 列
|
||||||
|
-- 若 wf_values_json 已存在则跳过本段
|
||||||
|
|
||||||
|
ALTER TABLE ding_scheme_application
|
||||||
|
ADD COLUMN wf_values_json LONGTEXT NULL COMMENT '控件 id -> {value,ext} JSON' AFTER form_label_map;
|
||||||
2
script/sql/update/ding-scheme-application-alter-wide.sql
Normal file
2
script/sql/update/ding-scheme-application-alter-wide.sql
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
-- 已废弃:数百个 wf_* 列会触发 MySQL [1118] Row size too large。
|
||||||
|
-- 请使用 ding-scheme-application.sql(新装)或 ding-scheme-application-alter-wf-values-json.sql + wf_values_json。
|
||||||
@ -0,0 +1,229 @@
|
|||||||
|
-- 仅当表上曾创建过数百个 wf_* 列且已成功添加 wf_values_json、应用已改为写 JSON 后执行。
|
||||||
|
-- 列不存在时会报错,可忽略该条。
|
||||||
|
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1bbyi1ofdja80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1bbyi1ofdja80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_frlyg3cq3cg0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_frlyg3cq3cg0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_9dsioi7y7ao0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_9dsioi7y7ao0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1bhyq7t5n5ts0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1bhyq7t5n5ts0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_yyd1hamkfxs0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_yyd1hamkfxs0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1vs1bx17o9mo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1vs1bx17o9mo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_u886pc45ao00`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_u886pc45ao00_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1hxmc0vo5tcw0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1hxmc0vo5tcw0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_qbmqqbncta80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_qbmqqbncta80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_845rkmrcbnc`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_845rkmrcbnc_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1xthohphulnk0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1xthohphulnk0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1eiavy538am80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1eiavy538am80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_n0zdgqt4uj40`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_n0zdgqt4uj40_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_go981ag879k0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_go981ag879k0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_1txm18e414740`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_1txm18e414740_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_shoiepz1x8w0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_innercontactfield_shoiepz1x8w0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1107gy4ff5r40`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1107gy4ff5r40_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1jnz7qfu4glc0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1jnz7qfu4glc0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_5uk9oeepnqg0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_5uk9oeepnqg0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_14qfwoa0nxuk`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_14qfwoa0nxuk_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_7khhs2kml4g0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_7khhs2kml4g0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_17onu2gwwqqk0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_17onu2gwwqqk0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1d66piguhpeo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1d66piguhpeo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_2e68tat1p2b`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_2e68tat1p2b_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1fvhyjifc9340`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1fvhyjifc9340_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_12j1o9kumfk00`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_12j1o9kumfk00_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1cthxmp1w6000`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1cthxmp1w6000_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1qqec44i00g00`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1qqec44i00g00_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1x4isvyj2e000`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1x4isvyj2e000_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_9mimabzehw40`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_9mimabzehw40_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1n728v92z1ls0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1n728v92z1ls0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_4jp6pt1hb480`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_4jp6pt1hb480_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1wlkqpzu8uf40`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1wlkqpzu8uf40_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_zcrqzclp3800`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_zcrqzclp3800_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_704tmwhbuk00`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_704tmwhbuk00_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_xjyub17ofgw0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_xjyub17ofgw0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1s3ah8usxuu80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1s3ah8usxuu80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1s2ufgj55cdc0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1s2ufgj55cdc0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1jwdw5kvn95s0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1jwdw5kvn95s0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ctqw75a6xk00`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ctqw75a6xk00_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_23gwubgroxwg0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_23gwubgroxwg0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_sim35iccgow0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_sim35iccgow0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_18ufliyk2g0w`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_18ufliyk2g0w_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_eeo52079ywg0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_eeo52079ywg0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_17j58eeu17ds0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_17j58eeu17ds0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_f05h5u3n9nc0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_f05h5u3n9nc0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_j84fk4aluog0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_j84fk4aluog0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_3ixtw5eostk0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_3ixtw5eostk0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_owd8caeipcw0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_owd8caeipcw0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_zvujak8zrvk0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_zvujak8zrvk0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_196nezf2gkqo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_196nezf2gkqo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1bxa83s0l9q80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1bxa83s0l9q80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1j17p5toeu0w0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1j17p5toeu0w0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ed24r0qog4g0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ed24r0qog4g0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_62owjdx5j780`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_62owjdx5j780_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_w509dmuvt0w0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_w509dmuvt0w0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_ir0xm2qfi4g0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_ir0xm2qfi4g0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_mwlxheajyds0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_mwlxheajyds0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_gziso77xgu80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_gziso77xgu80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1xgoo6qi7ye80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1xgoo6qi7ye80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_15n86b1om9r40`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_15n86b1om9r40_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_13ois5r5g4g00`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_13ois5r5g4g00_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_y0km7e71jy80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_y0km7e71jy80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_65fuys6pmog0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_65fuys6pmog0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1woian7uxmxs0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1woian7uxmxs0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1b349k9h85fk0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1b349k9h85fk0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_v3ubxsm0v400`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_v3ubxsm0v400_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1n6aocmufxxc0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1n6aocmufxxc0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_5b1traugup80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_5b1traugup80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_r805ul353uo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_r805ul353uo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_210lmwsh8ccg0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_210lmwsh8ccg0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_6ju2qsend4g0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_6ju2qsend4g0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_1obp4jcuuc1s0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_1obp4jcuuc1s0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_1oq414mmsqe80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_1oq414mmsqe80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_7uswejcwoho0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_7uswejcwoho0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_10a0oeloa9cw0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_10a0oeloa9cw0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1f35dols3gjk0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1f35dols3gjk0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_g2n28lnpoko0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_g2n28lnpoko0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_y8akwl5t20g0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_y8akwl5t20g0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1x0cjo3bbelc0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1x0cjo3bbelc0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1dckmearm96o0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1dckmearm96o0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_8zys78vxxkg0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_8zys78vxxkg0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1undz9dnxin4`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1undz9dnxin4_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_902tj8ac3bo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_902tj8ac3bo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_1v6324dshdmo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_1v6324dshdmo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_19glq5uabt9c0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_19glq5uabt9c0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1jgd3a0ebou80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_1jgd3a0ebou80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_jdd37msau7k0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_jdd37msau7k0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1odo49p4qiow0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1odo49p4qiow0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_15yxln28vyww0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_15yxln28vyww0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_n3eezetomls0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_n3eezetomls0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_mzlne0wxsyo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_mzlne0wxsyo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1d1ny47opry80`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_1d1ny47opry80_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_co3ry4xtl800`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_co3ry4xtl800_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ljrn85yyw680`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1ljrn85yyw680_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1w3yxgm2wvwg0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_1w3yxgm2wvwg0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_fvvk6ohvsmo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_fvvk6ohvsmo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_niskktwa4lc0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_niskktwa4lc0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_18nmsnm15jls0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textnote_18nmsnm15jls0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_yon75a1bpds0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_yon75a1bpds0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1la4d1znjco00`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_1la4d1znjco00_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_qzar20yc9dc0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_qzar20yc9dc0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_w5vdi6tje0w0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_w5vdi6tje0w0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_jqfncpp9q8g0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_jqfncpp9q8g0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_x7wt90rw88w0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_x7wt90rw88w0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_xvwu129idg00`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_xvwu129idg00_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_21cfzh9vcesg0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textfield_21cfzh9vcesg0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_20miubgwhayo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_20miubgwhayo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_7e01aay4tuo0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_columnlayout_7e01aay4tuo0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_pvhb9480ips0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddattachment_pvhb9480ips0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_i623wtcgkbk0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_textareafield_i623wtcgkbk0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1qy4lg6si9fk0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_dddatefield_1qy4lg6si9fk0_ext`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_w8ztk2tqhhs0`;
|
||||||
|
ALTER TABLE ding_scheme_application DROP COLUMN `wf_ddselectfield_w8ztk2tqhhs0_ext`;
|
||||||
48
script/sql/update/ding-scheme-application.sql
Normal file
48
script/sql/update/ding-scheme-application.sql
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
-- 钉钉「技术方案申请表」审批通过后落库(业务 MySQL 执行一次)
|
||||||
|
-- 宽表字段改为单列 wf_values_json(避免 InnoDB 行大小 >8126):key=控件 id,value={ "value","ext" }
|
||||||
|
-- 与 form_label_map(id->中文名)键一致,均为钉钉 componentId
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS ding_scheme_application
|
||||||
|
(
|
||||||
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
process_instance_id VARCHAR(64) NOT NULL COMMENT '钉钉审批实例 ID',
|
||||||
|
business_id VARCHAR(64) DEFAULT NULL COMMENT '钉钉 businessId',
|
||||||
|
process_code VARCHAR(128) DEFAULT NULL COMMENT '审批模板 processCode',
|
||||||
|
title VARCHAR(512) DEFAULT NULL COMMENT '审批标题',
|
||||||
|
instance_result VARCHAR(32) DEFAULT NULL COMMENT '实例审批结果 agree/refuse 等',
|
||||||
|
ding_process_status VARCHAR(32) DEFAULT NULL COMMENT '钉钉实例状态 COMPLETED 等',
|
||||||
|
originator_user_id VARCHAR(64) DEFAULT NULL COMMENT '发起人 userId',
|
||||||
|
originator_dept_name VARCHAR(256) DEFAULT NULL COMMENT '发起人部门',
|
||||||
|
ding_instance_create_time DATETIME DEFAULT NULL COMMENT '钉钉实例创建时间',
|
||||||
|
ding_instance_finish_time DATETIME DEFAULT NULL COMMENT '钉钉实例结束时间',
|
||||||
|
trigger_event_type VARCHAR(64) DEFAULT NULL COMMENT '触发入库的事件类型',
|
||||||
|
form_json MEDIUMTEXT COMMENT '表单控件快照 JSON(完整备份)',
|
||||||
|
form_label_map MEDIUMTEXT COMMENT '控件 id -> 中文 name(JSON)',
|
||||||
|
wf_values_json LONGTEXT COMMENT '控件 id -> {value,ext}(JSON,与 gen-ding-scheme-wide IDS 顺序写入)',
|
||||||
|
scheme_apply_no VARCHAR(128) DEFAULT NULL COMMENT '方案申请编号(冗余)',
|
||||||
|
overview_name VARCHAR(1000) DEFAULT NULL COMMENT '概述名称(冗余)',
|
||||||
|
filler_name VARCHAR(128) DEFAULT NULL COMMENT '填表人展示名(冗余)',
|
||||||
|
fill_date DATE DEFAULT NULL COMMENT '填表日期(冗余)',
|
||||||
|
need_date DATE DEFAULT NULL COMMENT '需求日期(冗余)',
|
||||||
|
customer_full_name VARCHAR(512) DEFAULT NULL COMMENT '客户全称(冗余)',
|
||||||
|
contact_and_phone VARCHAR(512) DEFAULT NULL COMMENT '联系人及电话(冗余)',
|
||||||
|
project_category VARCHAR(128) DEFAULT NULL COMMENT '项目分类(冗余)',
|
||||||
|
product_name VARCHAR(256) DEFAULT NULL COMMENT '产品名称(冗余)',
|
||||||
|
task_detail VARCHAR(2000) DEFAULT NULL COMMENT '任务详情(冗余)',
|
||||||
|
scheme_submit_date DATE DEFAULT NULL COMMENT '方案提交日期(冗余)',
|
||||||
|
scheme_received VARCHAR(32) DEFAULT NULL COMMENT '是否收到方案(冗余)',
|
||||||
|
plm_push_status VARCHAR(32) DEFAULT 'PENDING' COMMENT 'PLM 推送状态 PENDING/SUCCESS/FAIL 等',
|
||||||
|
plm_push_time DATETIME DEFAULT NULL COMMENT 'PLM 推送时间',
|
||||||
|
plm_push_message VARCHAR(1000) DEFAULT NULL COMMENT 'PLM 推送结果说明',
|
||||||
|
create_by VARCHAR(64) DEFAULT '',
|
||||||
|
create_time DATETIME DEFAULT NULL,
|
||||||
|
update_by VARCHAR(64) DEFAULT '',
|
||||||
|
update_time DATETIME DEFAULT NULL,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY uk_process_instance (process_instance_id),
|
||||||
|
KEY idx_scheme_apply_no (scheme_apply_no),
|
||||||
|
KEY idx_business_id (business_id),
|
||||||
|
KEY idx_plm_push_status (plm_push_status)
|
||||||
|
) ENGINE = InnoDB
|
||||||
|
ROW_FORMAT = DYNAMIC
|
||||||
|
DEFAULT CHARSET = utf8mb4 COMMENT ='钉钉技术方案申请表审批归档';
|
||||||
3
script/sql/update/evo-route-plan-send-count.sql
Normal file
3
script/sql/update/evo-route-plan-send-count.sql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
-- 工艺计划表钉钉发送次数(在业务库执行一次;若列已存在请跳过)
|
||||||
|
ALTER TABLE process_order_pro
|
||||||
|
ADD COLUMN route_plan_send_count INT NOT NULL DEFAULT 0 COMMENT '工艺计划表(钉钉)发送次数';
|
||||||
261
script/sql/update/gen-ding-scheme-wide.mjs
Normal file
261
script/sql/update/gen-ding-scheme-wide.mjs
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
|
const IDS = [
|
||||||
|
"TextField_1BBYI1OFDJA80",
|
||||||
|
"TextField_FRLYG3CQ3CG0",
|
||||||
|
"InnerContactField_9DSIOI7Y7AO0",
|
||||||
|
"DDDateField_1BHYQ7T5N5TS0",
|
||||||
|
"DDDateField_YYD1HAMKFXS0",
|
||||||
|
"DDSelectField_1VS1BX17O9MO0",
|
||||||
|
"InnerContactField_U886PC45AO00",
|
||||||
|
"TextField_1HXMC0VO5TCW0",
|
||||||
|
"TextField_QBMQQBNCTA80",
|
||||||
|
"DDSelectField_845RKMRCBNC",
|
||||||
|
"DDSelectField_1XTHOHPHULNK0",
|
||||||
|
"TextField_1EIAVY538AM80",
|
||||||
|
"ColumnLayout_N0ZDGQT4UJ40",
|
||||||
|
"TextareaField_GO981AG879K0",
|
||||||
|
"InnerContactField_1TXM18E414740",
|
||||||
|
"InnerContactField_SHOIEPZ1X8W0",
|
||||||
|
"DDDateField_1107GY4FF5R40",
|
||||||
|
"TextareaField_1JNZ7QFU4GLC0",
|
||||||
|
"ColumnLayout_5UK9OEEPNQG0",
|
||||||
|
"TextNote_14QFWOA0NXUK",
|
||||||
|
"TextField_7KHHS2KML4G0",
|
||||||
|
"TextField_17ONU2GWWQQK0",
|
||||||
|
"TextField_1D66PIGUHPEO0",
|
||||||
|
"TextField_2E68TAT1P2B",
|
||||||
|
"TextField_1FVHYJIFC9340",
|
||||||
|
"DDSelectField_12J1O9KUMFK00",
|
||||||
|
"DDSelectField_1CTHXMP1W6000",
|
||||||
|
"DDSelectField_1QQEC44I00G00",
|
||||||
|
"TextField_1X4ISVYJ2E000",
|
||||||
|
"TextareaField_9MIMABZEHW40",
|
||||||
|
"TextField_1N728V92Z1LS0",
|
||||||
|
"DDSelectField_4JP6PT1HB480",
|
||||||
|
"TextareaField_1WLKQPZU8UF40",
|
||||||
|
"TextareaField_ZCRQZCLP3800",
|
||||||
|
"ColumnLayout_704TMWHBUK00",
|
||||||
|
"DDAttachment_XJYUB17OFGW0",
|
||||||
|
"TextNote_1S3AH8USXUU80",
|
||||||
|
"TextNote_1S2UFGJ55CDC0",
|
||||||
|
"TextField_1JWDW5KVN95S0",
|
||||||
|
"TextField_1CTQW75A6XK00",
|
||||||
|
"TextField_23GWUBGROXWG0",
|
||||||
|
"TextField_SIM35ICCGOW0",
|
||||||
|
"TextField_18UFLIYK2G0W",
|
||||||
|
"TextField_EEO52079YWG0",
|
||||||
|
"TextField_17J58EEU17DS0",
|
||||||
|
"TextField_F05H5U3N9NC0",
|
||||||
|
"TextField_J84FK4ALUOG0",
|
||||||
|
"TextField_3IXTW5EOSTK0",
|
||||||
|
"ColumnLayout_OWD8CAEIPCW0",
|
||||||
|
"DDAttachment_ZVUJAK8ZRVK0",
|
||||||
|
"TextNote_196NEZF2GKQO0",
|
||||||
|
"TextareaField_1BXA83S0L9Q80",
|
||||||
|
"DDSelectField_1J17P5TOEU0W0",
|
||||||
|
"TextField_1ED24R0QOG4G0",
|
||||||
|
"TextField_62OWJDX5J780",
|
||||||
|
"TextField_W509DMUVT0W0",
|
||||||
|
"TextField_IR0XM2QFI4G0",
|
||||||
|
"TextField_MWLXHEAJYDS0",
|
||||||
|
"TextField_GZISO77XGU80",
|
||||||
|
"DDSelectField_1XGOO6QI7YE80",
|
||||||
|
"TextareaField_15N86B1OM9R40",
|
||||||
|
"ColumnLayout_13OIS5R5G4G00",
|
||||||
|
"DDAttachment_Y0KM7E71JY80",
|
||||||
|
"TextNote_65FUYS6PMOG0",
|
||||||
|
"TextField_1WOIAN7UXMXS0",
|
||||||
|
"TextField_1B349K9H85FK0",
|
||||||
|
"TextField_V3UBXSM0V400",
|
||||||
|
"TextField_1N6AOCMUFXXC0",
|
||||||
|
"TextField_5B1TRAUGUP80",
|
||||||
|
"DDSelectField_R805UL353UO0",
|
||||||
|
"TextField_210LMWSH8CCG0",
|
||||||
|
"TextareaField_6JU2QSEND4G0",
|
||||||
|
"ColumnLayout_1OBP4JCUUC1S0",
|
||||||
|
"DDAttachment_1OQ414MMSQE80",
|
||||||
|
"TextNote_7USWEJCWOHO0",
|
||||||
|
"TextField_10A0OELOA9CW0",
|
||||||
|
"TextField_1F35DOLS3GJK0",
|
||||||
|
"TextField_G2N28LNPOKO0",
|
||||||
|
"DDSelectField_Y8AKWL5T20G0",
|
||||||
|
"TextField_1X0CJO3BBELC0",
|
||||||
|
"TextField_1DCKMEARM96O0",
|
||||||
|
"TextareaField_8ZYS78VXXKG0",
|
||||||
|
"DDSelectField_1UNDZ9DNXIN4",
|
||||||
|
"TextareaField_902TJ8AC3BO0",
|
||||||
|
"ColumnLayout_1V6324DSHDMO0",
|
||||||
|
"DDAttachment_19GLQ5UABT9C0",
|
||||||
|
"TextNote_1JGD3A0EBOU80",
|
||||||
|
"DDSelectField_JDD37MSAU7K0",
|
||||||
|
"TextField_1ODO49P4QIOW0",
|
||||||
|
"TextField_15YXLN28VYWW0",
|
||||||
|
"TextField_N3EEZETOMLS0",
|
||||||
|
"TextField_MZLNE0WXSYO0",
|
||||||
|
"DDSelectField_1D1NY47OPRY80",
|
||||||
|
"TextField_CO3RY4XTL800",
|
||||||
|
"TextField_1LJRN85YYW680",
|
||||||
|
"TextareaField_1W3YXGM2WVWG0",
|
||||||
|
"ColumnLayout_FVVK6OHVSMO0",
|
||||||
|
"DDAttachment_NISKKTWA4LC0",
|
||||||
|
"TextNote_18NMSNM15JLS0",
|
||||||
|
"TextField_YON75A1BPDS0",
|
||||||
|
"TextField_1LA4D1ZNJCO00",
|
||||||
|
"TextField_QZAR20YC9DC0",
|
||||||
|
"TextField_W5VDI6TJE0W0",
|
||||||
|
"DDSelectField_JQFNCPP9Q8G0",
|
||||||
|
"TextField_X7WT90RW88W0",
|
||||||
|
"TextareaField_XVWU129IDG00",
|
||||||
|
"TextField_21CFZH9VCESG0",
|
||||||
|
"TextareaField_20MIUBGWHAYO0",
|
||||||
|
"ColumnLayout_7E01AAY4TUO0",
|
||||||
|
"DDAttachment_PVHB9480IPS0",
|
||||||
|
"TextareaField_I623WTCGKBK0",
|
||||||
|
"DDDateField_1QY4LG6SI9FK0",
|
||||||
|
"DDSelectField_W8ZTK2TQHHS0",
|
||||||
|
];
|
||||||
|
|
||||||
|
const createSql = `\
|
||||||
|
-- 钉钉「技术方案申请表」审批通过后落库(业务 MySQL 执行一次)
|
||||||
|
-- 宽表字段改为单列 wf_values_json(避免 InnoDB 行大小 >8126):key=控件 id,value={ "value","ext" }
|
||||||
|
-- 与 form_label_map(id->中文名)键一致,均为钉钉 componentId
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS ding_scheme_application
|
||||||
|
(
|
||||||
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
process_instance_id VARCHAR(64) NOT NULL COMMENT '钉钉审批实例 ID',
|
||||||
|
business_id VARCHAR(64) DEFAULT NULL COMMENT '钉钉 businessId',
|
||||||
|
process_code VARCHAR(128) DEFAULT NULL COMMENT '审批模板 processCode',
|
||||||
|
title VARCHAR(512) DEFAULT NULL COMMENT '审批标题',
|
||||||
|
instance_result VARCHAR(32) DEFAULT NULL COMMENT '实例审批结果 agree/refuse 等',
|
||||||
|
ding_process_status VARCHAR(32) DEFAULT NULL COMMENT '钉钉实例状态 COMPLETED 等',
|
||||||
|
originator_user_id VARCHAR(64) DEFAULT NULL COMMENT '发起人 userId',
|
||||||
|
originator_dept_name VARCHAR(256) DEFAULT NULL COMMENT '发起人部门',
|
||||||
|
ding_instance_create_time DATETIME DEFAULT NULL COMMENT '钉钉实例创建时间',
|
||||||
|
ding_instance_finish_time DATETIME DEFAULT NULL COMMENT '钉钉实例结束时间',
|
||||||
|
trigger_event_type VARCHAR(64) DEFAULT NULL COMMENT '触发入库的事件类型',
|
||||||
|
form_json MEDIUMTEXT COMMENT '表单控件快照 JSON(完整备份)',
|
||||||
|
form_label_map MEDIUMTEXT COMMENT '控件 id -> 中文 name(JSON)',
|
||||||
|
wf_values_json LONGTEXT COMMENT '控件 id -> {value,ext}(JSON,与 gen-ding-scheme-wide IDS 顺序写入)',
|
||||||
|
scheme_apply_no VARCHAR(128) DEFAULT NULL COMMENT '方案申请编号(冗余)',
|
||||||
|
overview_name VARCHAR(1000) DEFAULT NULL COMMENT '概述名称(冗余)',
|
||||||
|
filler_name VARCHAR(128) DEFAULT NULL COMMENT '填表人展示名(冗余)',
|
||||||
|
fill_date DATE DEFAULT NULL COMMENT '填表日期(冗余)',
|
||||||
|
need_date DATE DEFAULT NULL COMMENT '需求日期(冗余)',
|
||||||
|
customer_full_name VARCHAR(512) DEFAULT NULL COMMENT '客户全称(冗余)',
|
||||||
|
contact_and_phone VARCHAR(512) DEFAULT NULL COMMENT '联系人及电话(冗余)',
|
||||||
|
project_category VARCHAR(128) DEFAULT NULL COMMENT '项目分类(冗余)',
|
||||||
|
product_name VARCHAR(256) DEFAULT NULL COMMENT '产品名称(冗余)',
|
||||||
|
task_detail VARCHAR(2000) DEFAULT NULL COMMENT '任务详情(冗余)',
|
||||||
|
scheme_submit_date DATE DEFAULT NULL COMMENT '方案提交日期(冗余)',
|
||||||
|
scheme_received VARCHAR(32) DEFAULT NULL COMMENT '是否收到方案(冗余)',
|
||||||
|
plm_push_status VARCHAR(32) DEFAULT 'PENDING' COMMENT 'PLM 推送状态 PENDING/SUCCESS/FAIL 等',
|
||||||
|
plm_push_time DATETIME DEFAULT NULL COMMENT 'PLM 推送时间',
|
||||||
|
plm_push_message VARCHAR(1000) DEFAULT NULL COMMENT 'PLM 推送结果说明',
|
||||||
|
create_by VARCHAR(64) DEFAULT '',
|
||||||
|
create_time DATETIME DEFAULT NULL,
|
||||||
|
update_by VARCHAR(64) DEFAULT '',
|
||||||
|
update_time DATETIME DEFAULT NULL,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY uk_process_instance (process_instance_id),
|
||||||
|
KEY idx_scheme_apply_no (scheme_apply_no),
|
||||||
|
KEY idx_business_id (business_id),
|
||||||
|
KEY idx_plm_push_status (plm_push_status)
|
||||||
|
) ENGINE = InnoDB
|
||||||
|
ROW_FORMAT = DYNAMIC
|
||||||
|
DEFAULT CHARSET = utf8mb4 COMMENT ='钉钉技术方案申请表审批归档';
|
||||||
|
`;
|
||||||
|
|
||||||
|
const alterAddWfJson = `\
|
||||||
|
-- 已有旧表(含大量 wf_* 列导致 1118)时:先加 JSON 列、升级应用后再按需删除旧 wf_* 列
|
||||||
|
-- 若 wf_values_json 已存在则跳过本段
|
||||||
|
|
||||||
|
ALTER TABLE ding_scheme_application
|
||||||
|
ADD COLUMN wf_values_json LONGTEXT NULL COMMENT '控件 id -> {value,ext} JSON' AFTER form_label_map;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const drops = [];
|
||||||
|
for (const cid of IDS) {
|
||||||
|
const c = "wf_" + cid.toLowerCase();
|
||||||
|
drops.push(`ALTER TABLE ding_scheme_application DROP COLUMN \`${c}\`;`);
|
||||||
|
drops.push(`ALTER TABLE ding_scheme_application DROP COLUMN \`${c}_ext\`;`);
|
||||||
|
}
|
||||||
|
const dropSql =
|
||||||
|
"-- 仅当表上曾创建过数百个 wf_* 列且已成功添加 wf_values_json、应用已改为写 JSON 后执行。\n" +
|
||||||
|
"-- 列不存在时会报错,可忽略该条。\n\n" +
|
||||||
|
drops.join("\n") +
|
||||||
|
"\n";
|
||||||
|
|
||||||
|
fs.writeFileSync(path.join(__dirname, "ding-scheme-application.sql"), createSql, "utf8");
|
||||||
|
fs.writeFileSync(path.join(__dirname, "ding-scheme-application-alter-wf-values-json.sql"), alterAddWfJson, "utf8");
|
||||||
|
fs.writeFileSync(path.join(__dirname, "ding-scheme-application-drop-old-wf-columns.sql"), dropSql, "utf8");
|
||||||
|
// 旧版「逐列 ADD wf_*」已不再使用,保留空说明文件避免误执行
|
||||||
|
fs.writeFileSync(
|
||||||
|
path.join(__dirname, "ding-scheme-application-alter-wide.sql"),
|
||||||
|
"-- 已废弃:数百个 wf_* 列会触发 MySQL [1118] Row size too large。\n" +
|
||||||
|
"-- 请使用 ding-scheme-application.sql(新装)或 ding-scheme-application-alter-wf-values-json.sql + wf_values_json。\n",
|
||||||
|
"utf8"
|
||||||
|
);
|
||||||
|
|
||||||
|
const javaPath = path.join(
|
||||||
|
__dirname,
|
||||||
|
"..",
|
||||||
|
"..",
|
||||||
|
"..",
|
||||||
|
"ruoyi-system",
|
||||||
|
"src",
|
||||||
|
"main",
|
||||||
|
"java",
|
||||||
|
"com",
|
||||||
|
"ruoyi",
|
||||||
|
"system",
|
||||||
|
"constant",
|
||||||
|
"DingSchemeFormWideColumns.java"
|
||||||
|
);
|
||||||
|
const javaBody = `package com.ruoyi.system.constant;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与 event.json formComponentValues(146-843) 及 gen-ding-scheme-wide.mjs 的 IDS 一致。
|
||||||
|
* 表单宽数据写入 {@code wf_values_json}:JSON 的 key 为钉钉控件 id(原始大小写),与 {@code form_label_map} 的 key 一致。
|
||||||
|
*/
|
||||||
|
public final class DingSchemeFormWideColumns {
|
||||||
|
|
||||||
|
private DingSchemeFormWideColumns() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final List<String> ORDERED_IDS = Collections.unmodifiableList(Arrays.asList(
|
||||||
|
${IDS.map((id) => ` "${id}"`).join(",\n")}
|
||||||
|
));
|
||||||
|
|
||||||
|
private static final Set<String> ID_SET = new HashSet<>(ORDERED_IDS);
|
||||||
|
|
||||||
|
public static boolean isKnownComponentId(String componentId) {
|
||||||
|
return componentId != null && ID_SET.contains(componentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** JSON 中的控件 id key(与钉钉一致) */
|
||||||
|
public static String jsonKey(String componentId) {
|
||||||
|
return componentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 兼容旧「列名」思路:wf_ + id 小写,仅用于文档/SQL 排查,不再建物理列 */
|
||||||
|
public static String legacyPhysicalColumnName(String componentId) {
|
||||||
|
return "wf_" + componentId.toLowerCase(Locale.ROOT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
fs.mkdirSync(path.dirname(javaPath), { recursive: true });
|
||||||
|
fs.writeFileSync(javaPath, javaBody, "utf8");
|
||||||
|
console.log("OK", javaPath);
|
||||||
55
script/sql/update/kingdee-report-snapshot.sql
Normal file
55
script/sql/update/kingdee-report-snapshot.sql
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
-- 金蝶系统报表快照(工序汇报汇总 / 工序委外转移),在业务 MySQL 执行一次
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS kingdee_operation_report_sum (
|
||||||
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
kingdee_form_id VARCHAR(64) NOT NULL COMMENT '金蝶报表 FormId',
|
||||||
|
scope_begin VARCHAR(64) NOT NULL COMMENT '查询开始(传入金蝶 Model)',
|
||||||
|
scope_end VARCHAR(64) NOT NULL COMMENT '查询结束',
|
||||||
|
org_number VARCHAR(32) NOT NULL DEFAULT '100' COMMENT '加工组织 FNumber',
|
||||||
|
time_unit VARCHAR(16) NOT NULL DEFAULT 'B' COMMENT '统计粒度 FTimeUnit',
|
||||||
|
filter_mo_bill_no VARCHAR(64) DEFAULT NULL COMMENT '过滤条件生产订单号',
|
||||||
|
department_id VARCHAR(128) DEFAULT NULL COMMENT '车间 FDEPARTMENTID',
|
||||||
|
report_date VARCHAR(64) DEFAULT NULL COMMENT '单据日期',
|
||||||
|
mo_bill_no VARCHAR(64) DEFAULT NULL COMMENT '生产订单编号',
|
||||||
|
op_oper VARCHAR(64) DEFAULT NULL COMMENT '工序号',
|
||||||
|
work_center_id VARCHAR(128) DEFAULT NULL COMMENT '工作中心',
|
||||||
|
process_id VARCHAR(128) DEFAULT NULL COMMENT '作业',
|
||||||
|
product_number VARCHAR(128) DEFAULT NULL COMMENT '产品编码',
|
||||||
|
material_name VARCHAR(512) DEFAULT NULL COMMENT '产品名称',
|
||||||
|
finish_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '完工数量',
|
||||||
|
qua_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '合格数量',
|
||||||
|
fail_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '废品数量',
|
||||||
|
create_by VARCHAR(64) DEFAULT '',
|
||||||
|
create_time DATETIME DEFAULT NULL,
|
||||||
|
update_by VARCHAR(64) DEFAULT '',
|
||||||
|
update_time DATETIME DEFAULT NULL,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
KEY idx_kingdee_op_scope (kingdee_form_id, scope_begin, scope_end, org_number, time_unit)
|
||||||
|
) ENGINE = InnoDB
|
||||||
|
DEFAULT CHARSET = utf8mb4 COMMENT ='金蝶工序汇报汇总报表快照';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS kingdee_subcontract_transfer (
|
||||||
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
kingdee_form_id VARCHAR(64) NOT NULL COMMENT '金蝶报表 FormId',
|
||||||
|
scope_start VARCHAR(64) NOT NULL COMMENT '查询开始 FStartDate',
|
||||||
|
scope_finish VARCHAR(64) NOT NULL COMMENT '查询结束 FFinishDate',
|
||||||
|
pro_org_number VARCHAR(32) NOT NULL DEFAULT '100' COMMENT '生产组织 FProOrgId.FNumber',
|
||||||
|
document_status VARCHAR(16) NOT NULL DEFAULT 'C' COMMENT '单据状态',
|
||||||
|
filter_product_order_code VARCHAR(64) DEFAULT NULL COMMENT '过滤生产订单编号',
|
||||||
|
product_number VARCHAR(128) DEFAULT NULL COMMENT '产品编码',
|
||||||
|
product_name VARCHAR(512) DEFAULT NULL COMMENT '产品名称',
|
||||||
|
provider_name VARCHAR(512) DEFAULT NULL COMMENT '供应商名称',
|
||||||
|
product_order_codes VARCHAR(128) DEFAULT NULL COMMENT '生产订单编号',
|
||||||
|
document_date VARCHAR(64) DEFAULT NULL COMMENT '单据日期',
|
||||||
|
shift_task_name VARCHAR(256) DEFAULT NULL COMMENT '委外作业',
|
||||||
|
leave_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '委外发出',
|
||||||
|
enter_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '委外接收',
|
||||||
|
qualified_qty DECIMAL(24, 6) DEFAULT NULL COMMENT '合格数量',
|
||||||
|
create_by VARCHAR(64) DEFAULT '',
|
||||||
|
create_time DATETIME DEFAULT NULL,
|
||||||
|
update_by VARCHAR(64) DEFAULT '',
|
||||||
|
update_time DATETIME DEFAULT NULL,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
KEY idx_kingdee_sub_scope (kingdee_form_id, scope_start, scope_finish, pro_org_number)
|
||||||
|
) ENGINE = InnoDB
|
||||||
|
DEFAULT CHARSET = utf8mb4 COMMENT ='金蝶工序委外转移报表快照';
|
||||||
Loading…
Reference in New Issue
Block a user