Merge remote-tracking branch 'refs/remotes/origin/master' into feature/payment-apply-bfi-sync

# Conflicts:
#	blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java
This commit is contained in:
刘泉佳
2026-10-01 13:47:00 +08:00
206 changed files with 4885 additions and 4913 deletions
@@ -303,6 +303,7 @@ CREATE TABLE `blade_dept` (
`dept_name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门名',
`full_name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门全称',
`dept_code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织编码',
`kingdee_dept_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '金蝶部门代码',
`short_name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织简称',
`pinyin_mnemonic` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '拼音助记码',
`mnemonic_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '助记码',
@@ -0,0 +1,43 @@
-- MK 业务ID与表单实例ID绑定
CREATE TABLE IF NOT EXISTS `blade_mk_form_bind`
(
`id` bigint NOT NULL COMMENT '主键',
`tenant_id` varchar(12) DEFAULT '000000' COMMENT '租户ID',
`biz_type` varchar(64) NOT NULL DEFAULT '' COMMENT '业务类型',
`biz_id` bigint NOT NULL COMMENT '业务主键',
`form_instance_id` bigint NOT NULL COMMENT 'MK表单实例id',
`process_instance_id` varchar(64) DEFAULT NULL COMMENT 'MK流程实例id',
`is_current` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否当前生效(1是0否)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_blade_mk_form_bind_form_instance_id` (`form_instance_id`) USING BTREE,
KEY `idx_blade_mk_form_bind_biz_current` (`biz_type`, `biz_id`, `is_current`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_general_ci COMMENT ='MK表单实例绑定表';
-- 业务流程表增加表单实例id
ALTER TABLE `blade_business_process`
ADD COLUMN `form_instance_id` bigint DEFAULT NULL COMMENT 'MK表单实例id' AFTER `biz_id`;
-- 历史数据:原 biz_id 即 formInstanceId,回填并写入绑定表
UPDATE `blade_business_process`
SET `form_instance_id` = `biz_id`
WHERE `form_instance_id` IS NULL;
INSERT INTO `blade_mk_form_bind` (`id`, `tenant_id`, `biz_type`, `biz_id`, `form_instance_id`,
`process_instance_id`, `is_current`, `create_time`, `update_time`)
SELECT `id`,
IFNULL(`tenant_id`, '000000'),
'',
`biz_id`,
`biz_id`,
`process_instance_id`,
1,
IFNULL(`create_time`, NOW()),
IFNULL(`update_time`, NOW())
FROM `blade_business_process` bp
WHERE NOT EXISTS (SELECT 1
FROM `blade_mk_form_bind` b
WHERE b.`form_instance_id` = bp.`biz_id`);
@@ -0,0 +1,4 @@
-- 机构表:新增「金蝶部门代码」字段,非必填
ALTER TABLE `blade_dept`
ADD COLUMN `kingdee_dept_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '金蝶部门代码' AFTER `dept_code`;
+1
View File
@@ -283,6 +283,7 @@ CREATE TABLE `blade_waybill` (
`plan_name` varchar(100) DEFAULT NULL COMMENT '计划名称',
`master_no` varchar(100) DEFAULT NULL COMMENT '多联总单',
`loading_no` varchar(100) DEFAULT NULL COMMENT '配载单号',
`loading_identifier` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '配载标识号',
`batch_no` varchar(100) DEFAULT NULL COMMENT '运单批次号',
`relation_no` varchar(100) DEFAULT NULL COMMENT '关联单号',
`current_process_node` varchar(100) DEFAULT NULL COMMENT '当前过程节点',
@@ -0,0 +1,2 @@
ALTER TABLE `blade_waybill`
ADD COLUMN `loading_identifier` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '配载标识号' AFTER `loading_no`;
@@ -0,0 +1,443 @@
-- 统计指定账号在指定日期内、各业务模块创建的数据量
--
-- 使用前只改下面两个日期(含首尾)。单日统计时两个日期填同一天。
-- 统计口径:
-- 1. 按 blade_user.account 找到用户 ID,再按各业务主表 create_user、create_time 计数。
-- 2. 同一账号若存在多个用户 ID(含已删除账号),历史数据会一并计入该账号。
-- 3. 只统计各功能列表对应的主表。随主单保存的明细、联系人、附件、变更流水不重复计数。
-- 4. 含已逻辑删除的数据,因为这些记录确实被创建过。
-- 5. 客商档案菜单挂在「车/船务管理」下,这里按统计口径单独计入「客商管理」。
-- 6. 未纳入:结算管理、首付款管理、在途管理,以及系统管理下的开票项目。
-- 7. 导入运单产生的运单计入「业务模块-运单管理」,不另计导入批次。
SET NAMES utf8mb4;
SET @stat_start = '2026-09-29';
SET @stat_end = '2026-09-29';
SET @stat_end_exclusive = DATE_ADD(@stat_end, INTERVAL 1 DAY);
DROP TEMPORARY TABLE IF EXISTS tmp_stat_account;
CREATE TEMPORARY TABLE tmp_stat_account (
sort_no INT NOT NULL,
account VARCHAR(45) NOT NULL,
PRIMARY KEY (account)
);
INSERT INTO tmp_stat_account (sort_no, account) VALUES
(1, 'zhanghu01'),
(2, 'zhanghu02'),
(3, 'zhanghu03'),
(4, 'zhanghu04'),
(5, 'zhanghu05'),
(6, 'zhanghu06'),
(7, 'zhanghu07'),
(8, 'zhanghu08'),
(9, 'zhanghu09'),
(10, 'zhanghu10'),
(11, 'zhanghu11'),
(12, 'zhanghu12'),
(13, 'zhanghu13'),
(14, 'zhanghu14'),
(15, 'zhanghu15'),
(16, 'zhanghu16');
DROP TEMPORARY TABLE IF EXISTS tmp_stat_user;
CREATE TEMPORARY TABLE tmp_stat_user AS
SELECT u.id, u.account, u.real_name, u.tenant_id, u.is_deleted, a.sort_no
FROM blade_user u
INNER JOIN tmp_stat_account a ON a.account = u.account;
ALTER TABLE tmp_stat_user ADD PRIMARY KEY (id);
ALTER TABLE tmp_stat_user ADD INDEX idx_tmp_stat_user_account (account);
DROP TEMPORARY TABLE IF EXISTS tmp_stat_detail;
CREATE TEMPORARY TABLE tmp_stat_detail (
create_user BIGINT NOT NULL,
module_sort INT NOT NULL,
module_name VARCHAR(32) NOT NULL,
biz_sort INT NOT NULL,
biz_name VARCHAR(64) NOT NULL,
table_name VARCHAR(64) NOT NULL,
cnt BIGINT NOT NULL,
KEY idx_tmp_stat_detail_user (create_user)
);
-- 每张表单独插入。MySQL 不允许同一条语句多次打开临时表。
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 1, '客商类型', 'blade_customer_type', COUNT(*)
FROM blade_customer_type t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 2, '费用项', 'blade_fee_item', COUNT(*)
FROM blade_fee_item t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 3, '币种汇率管理', 'blade_currency', COUNT(*)
FROM blade_currency t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 4, '计量单位', 'blade_measurement_unit', COUNT(*)
FROM blade_measurement_unit t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 5, '货物类型', 'blade_cargo_type', COUNT(*)
FROM blade_cargo_type t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 6, '行政区划', 'blade_region', COUNT(*)
FROM blade_region t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 7, '港口码头主数据', 'blade_port_terminal', COUNT(*)
FROM blade_port_terminal t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 8, '空港机场主数据', 'blade_airport_master', COUNT(*)
FROM blade_airport_master t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 9, '铁路车站主数据', 'blade_railway_station', COUNT(*)
FROM blade_railway_station t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 1, '基础配置', 10, '保险OCR识别模板', 'blade_insurance_ocr_template', COUNT(*)
FROM blade_insurance_ocr_template t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 2, '基础数据', 1, '常用地址', 'blade_common_address', COUNT(*)
FROM blade_common_address t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 3, '客商管理', 1, '客商档案', 'blade_customer_archive', COUNT(*)
FROM blade_customer_archive t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 4, '项目管理', 1, '项目管理', 'blade_project_apply', COUNT(*)
FROM blade_project_apply t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 4, '项目管理', 2, '临时额度管理', 'blade_temporary_credit_limit', COUNT(*)
FROM blade_temporary_credit_limit t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 5, '合同模块', 1, '合同管理', 'blade_contract_manage', COUNT(*)
FROM blade_contract_manage t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 1, '常用货物', 'blade_common_cargo', COUNT(*)
FROM blade_common_cargo t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 2, '常用线路', 'blade_common_route', COUNT(*)
FROM blade_common_route t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 3, '发货模板', 'blade_shipping_template', COUNT(*)
FROM blade_shipping_template t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 4, '过程配置', 'blade_process_config', COUNT(*)
FROM blade_process_config t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 5, '总单管理', 'blade_master_order', COUNT(*)
FROM blade_master_order t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 6, '运输计划', 'blade_transport_plan', COUNT(*)
FROM blade_transport_plan t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 7, '配载管理', 'blade_loading_manage', COUNT(*)
FROM blade_loading_manage t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 8, '运单管理', 'blade_waybill', COUNT(*)
FROM blade_waybill t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 6, '业务模块', 9, '凭证管理', 'blade_voucher_manage', COUNT(*)
FROM blade_voucher_manage t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 1, '设备台账', 'blade_equipment_ledger', COUNT(*)
FROM blade_equipment_ledger t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 2, '保险记录', 'blade_insurance_record', COUNT(*)
FROM blade_insurance_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 3, '年检记录', 'blade_annual_inspection_record', COUNT(*)
FROM blade_annual_inspection_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 4, '保养记录', 'blade_vehicle_maintenance_plan', COUNT(*)
FROM blade_vehicle_maintenance_plan t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 5, '维修记录', 'blade_vehicle_maintenance_record', COUNT(*)
FROM blade_vehicle_maintenance_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 6, '违章记录', 'blade_violation_record', COUNT(*)
FROM blade_violation_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 7, '事故记录', 'blade_accident_record', COUNT(*)
FROM blade_accident_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 8, 'ETC记录', 'blade_etc_record', COUNT(*)
FROM blade_etc_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 9, '油电记录', 'blade_oil_electric_record', COUNT(*)
FROM blade_oil_electric_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 10, '里程记录', 'blade_mileage_record', COUNT(*)
FROM blade_mileage_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 11, '换胎记录', 'blade_tire_replacement_record', COUNT(*)
FROM blade_tire_replacement_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 12, '其他费用记录', 'blade_other_expense_record', COUNT(*)
FROM blade_other_expense_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 13, '变更记录', 'blade_transport_change_record', COUNT(*)
FROM blade_transport_change_record t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 7, '车/船务模块', 14, '评分量化表', 'blade_credit_score_quantification', COUNT(*)
FROM blade_credit_score_quantification t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 8, '运力模块', 1, '车辆管理', 'blade_transport_vehicle', COUNT(*)
FROM blade_transport_vehicle t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 8, '运力模块', 2, '船舶管理', 'blade_transport_ship', COUNT(*)
FROM blade_transport_ship t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 8, '运力模块', 3, '司机管理', 'blade_transport_driver', COUNT(*)
FROM blade_transport_driver t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user
;
INSERT INTO tmp_stat_detail (create_user, module_sort, module_name, biz_sort, biz_name, table_name, cnt)
SELECT t.create_user, 8, '运力模块', 4, '车辆调度', 'blade_transport_vehicle_dispatch', COUNT(*)
FROM blade_transport_vehicle_dispatch t
INNER JOIN tmp_stat_user u ON u.id = t.create_user
WHERE t.create_time >= @stat_start AND t.create_time < @stat_end_exclusive
GROUP BY t.create_user;
-- 结果 1:账号匹配情况。用户 ID 为空表示库中没有该账号。
SELECT
a.sort_no AS `序号`,
a.account AS `账号`,
u.id AS `用户ID`,
u.real_name AS `姓名`,
u.tenant_id AS `租户`,
CASE WHEN u.id IS NULL THEN '未找到' WHEN u.is_deleted = 0 THEN '正常' ELSE '已删除' END AS `账号状态`
FROM tmp_stat_account a
LEFT JOIN tmp_stat_user u ON u.account = a.account
ORDER BY a.sort_no, u.id;
-- 结果 2:按账号、模块汇总创建数量。
SELECT
a.account AS `账号`,
IFNULL(GROUP_CONCAT(DISTINCT NULLIF(u.real_name, '') ORDER BY u.id SEPARATOR '、'), '') AS `姓名`,
IFNULL(SUM(CASE WHEN d.module_name = '基础配置' THEN d.cnt ELSE 0 END), 0) AS `基础配置`,
IFNULL(SUM(CASE WHEN d.module_name = '基础数据' THEN d.cnt ELSE 0 END), 0) AS `基础数据`,
IFNULL(SUM(CASE WHEN d.module_name = '客商管理' THEN d.cnt ELSE 0 END), 0) AS `客商管理`,
IFNULL(SUM(CASE WHEN d.module_name = '项目管理' THEN d.cnt ELSE 0 END), 0) AS `项目管理`,
IFNULL(SUM(CASE WHEN d.module_name = '合同模块' THEN d.cnt ELSE 0 END), 0) AS `合同模块`,
IFNULL(SUM(CASE WHEN d.module_name = '业务模块' THEN d.cnt ELSE 0 END), 0) AS `业务模块`,
IFNULL(SUM(CASE WHEN d.module_name = '车/船务模块' THEN d.cnt ELSE 0 END), 0) AS `车/船务模块`,
IFNULL(SUM(CASE WHEN d.module_name = '运力模块' THEN d.cnt ELSE 0 END), 0) AS `运力模块`,
IFNULL(SUM(d.cnt), 0) AS `合计`
FROM tmp_stat_account a
LEFT JOIN tmp_stat_user u ON u.account = a.account
LEFT JOIN tmp_stat_detail d ON d.create_user = u.id
GROUP BY a.sort_no, a.account
ORDER BY a.sort_no;
-- 结果 3:按账号、功能展开,只显示创建数量大于 0 的项。
SELECT
a.account AS `账号`,
d.module_name AS `模块`,
d.biz_name AS `功能`,
d.table_name AS `数据表`,
SUM(d.cnt) AS `创建数量`
FROM tmp_stat_account a
INNER JOIN tmp_stat_user u ON u.account = a.account
INNER JOIN tmp_stat_detail d ON d.create_user = u.id
GROUP BY a.sort_no, a.account, d.module_sort, d.module_name, d.biz_sort, d.biz_name, d.table_name
ORDER BY a.sort_no, d.module_sort, d.biz_sort;