✨ 异常处置支持归属过程节点并新增打卡门禁

异常上报强制选择过程节点,节点归属写入 node_code / node_name;节点存在未了结
异常时,该节点及其后节点不可打卡(异常门禁),被拦节点仍可展开查看回填内容。

另新增顺序门禁:前置打卡节点未完成时后续节点不可打卡且不可展开;在途节点不受
顺序门禁约束,但仍受异常门禁约束。

配套:
- 过程配置「上传货量为是、货量类型为空」的脏配置订正为不采集货量
- 网关补充 /blade-resource/** 路由(图片上传,小程序打卡与异常上报照片均经此)
This commit is contained in:
2026-10-05 15:10:24 +08:00
parent 7296a5af21
commit 7c30ead839
10 changed files with 517 additions and 8 deletions
@@ -12,6 +12,8 @@ CREATE TABLE IF NOT EXISTS `blade_exception_disposal` (
`is_deleted` int(11) DEFAULT '0' COMMENT '是否已删除',
`waybill_id` bigint(20) DEFAULT NULL COMMENT '运单ID',
`waybill_no` varchar(100) DEFAULT NULL COMMENT '运单号',
`node_code` varchar(64) DEFAULT NULL COMMENT '过程节点 key(为空表示未指明节点)',
`node_name` varchar(64) DEFAULT NULL COMMENT '过程节点名称(上报时复制,此后不随过程配置变化)',
`loading_or_master_no` varchar(100) DEFAULT NULL COMMENT '配载单号/总单号',
`project_id` bigint(20) DEFAULT NULL COMMENT '项目ID',
`project_name` varchar(100) DEFAULT NULL COMMENT '项目',
@@ -0,0 +1,37 @@
-- 异常处置增加过程节点归属
-- 日期:2026-10-05
-- 节点归属用于打卡门禁:某节点有未了结异常时,该节点及其后的节点不可打卡。
-- node_code 为空表示未指明节点(全局入口上报),此类异常阻断该运单所有尚未打卡的节点。
-- node_name 在上报时复制,此后不随过程配置变化,与车牌、项目、承运商等展示字段同一口径。
DELIMITER $$
DROP PROCEDURE IF EXISTS `upgrade_blade_exception_disposal_node_code_20261005`$$
CREATE PROCEDURE `upgrade_blade_exception_disposal_node_code_20261005`()
BEGIN
DECLARE db_name varchar(128);
SET db_name = DATABASE();
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_schema = db_name
AND table_name = 'blade_exception_disposal'
AND column_name = 'node_code') THEN
ALTER TABLE `blade_exception_disposal`
ADD COLUMN `node_code` varchar(64) DEFAULT NULL COMMENT '过程节点 key(为空表示未指明节点)'
AFTER `waybill_no`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_schema = db_name
AND table_name = 'blade_exception_disposal'
AND column_name = 'node_name') THEN
ALTER TABLE `blade_exception_disposal`
ADD COLUMN `node_name` varchar(64) DEFAULT NULL COMMENT '过程节点名称(上报时复制,此后不随过程配置变化)'
AFTER `node_code`;
END IF;
END$$
CALL `upgrade_blade_exception_disposal_node_code_20261005`()$$
DROP PROCEDURE `upgrade_blade_exception_disposal_node_code_20261005`$$
DELIMITER ;
@@ -0,0 +1,19 @@
-- 订正过程配置中「上传货量为是、货量类型为空」的脏配置
-- 日期:2026-10-05
--
-- 成因:过程配置页的「到场」「回单」两个节点模板缺 supportCargo 字段,货量开关
-- 在界面上不渲染,导致这两个节点被写成 uploadCargo=true 且 cargoTypes 恒为空。
-- 语义:「是否需要采集货量」以已勾选的货量类型为准——类型为空即不采集,
-- 不存在「没配类型所以三项全采集」。
-- 影响:订正后这些节点在小程序不再显示货量表单。因司机端解析过程配置时优先取
-- 启用中的活配置,本次订正会同时改变所有引用该项目的运单(含历史运单)的呈现。
-- 范围:只订正过程配置表,不修改 blade_waybill.process_json 快照列(那是历史留痕)。
-- 幂等:执行后目标子串不再存在,重复执行匹配 0 行。
UPDATE `blade_process_config`
SET `node_config_json` = REPLACE(
`node_config_json`,
'"uploadCargo":true,"cargoTypes":[]',
'"uploadCargo":false,"cargoTypes":[]')
WHERE `is_deleted` = 0
AND `node_config_json` LIKE '%"uploadCargo":true,"cargoTypes":[]%';