|
|
|
|
##角色查询和更新
|
|
|
|
|
|
|
|
|
|
UPDATE t_role_employee re
|
|
|
|
|
SET role_id = 35
|
|
|
|
|
WHERE EXISTS (
|
|
|
|
|
SELECT 1
|
|
|
|
|
FROM t_institutions_punish ti
|
|
|
|
|
LEFT JOIN t_department td
|
|
|
|
|
ON ti.name = td.department_name COLLATE utf8mb4_0900_ai_ci
|
|
|
|
|
LEFT JOIN t_employee te
|
|
|
|
|
ON ti.principal = te.actual_name COLLATE utf8mb4_0900_ai_ci
|
|
|
|
|
AND td.department_id = te.department_id
|
|
|
|
|
WHERE ti.principal IS NOT NULL
|
|
|
|
|
AND te.employee_id IS NOT NULL
|
|
|
|
|
AND te.employee_id = re.employee_id
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
启动脚本
|
|
|
|
|
nohup java -server -Xms1024m -Xmx1024m -jar yun-admin-prod-3.0.0.jar > yun-admin-nohup.out 2>&1 &
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
查询新增律师数据:
|
|
|
|
|
SELECT a.*,t.department_id
|
|
|
|
|
FROM t_lawyers_punish_20261 a
|
|
|
|
|
LEFT JOIN t_department t ON a.practice_institution = t.department_name
|
|
|
|
|
WHERE a.user_id NOT IN(
|
|
|
|
|
SELECT CONVERT(login_name USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
|
|
|
|
FROM t_employee
|
|
|
|
|
)
|
|
|
|
|
如果departmentId有空的可能是新增的机构
|
|
|
|
|
|
|
|
|
|
第二个sql
|
|
|
|
|
SELECT
|
|
|
|
|
a.user_id as login_name,
|
|
|
|
|
a.full_name as actual_name,
|
|
|
|
|
a.mobile_phone as phone,
|
|
|
|
|
a.practice_certificate_no as certificate_number,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN a.gender = '男' THEN 1
|
|
|
|
|
WHEN a.gender = '女' THEN 2
|
|
|
|
|
ELSE NULL
|
|
|
|
|
END as gender,
|
|
|
|
|
t.department_id as department_id
|
|
|
|
|
FROM t_lawyers_punish_20261 a
|
|
|
|
|
LEFT JOIN t_department t ON a.practice_institution = t.department_name
|
|
|
|
|
WHERE a.user_id NOT IN(
|
|
|
|
|
SELECT CONVERT(login_name USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
|
|
|
|
FROM t_employee
|
|
|
|
|
)
|
|
|
|
|
AND t.department_id IS NOT NULL
|
|
|
|
|
|
|
|
|
|
给新增的人员复制律师权限
|
|
|
|
|
|
|
|
|
|
SELECT employee_id, 35 as role_id from t_employee where employee_id not in (select employee_id from t_role_employee)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
查询有没有变更机构的
|
|
|
|
|
|
|
|
|
|
-- 获取每个 user_id 的最新一条处罚记录(按 id 降序取第一条)
|
|
|
|
|
WITH latest_punish AS (
|
|
|
|
|
SELECT lp.user_id, lp.practice_institution
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT user_id, practice_institution,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY id DESC) AS rn
|
|
|
|
|
FROM t_lawyers_punish
|
|
|
|
|
) lp
|
|
|
|
|
WHERE lp.rn = 1
|
|
|
|
|
),
|
|
|
|
|
-- 当前员工机构信息
|
|
|
|
|
current_employee AS (
|
|
|
|
|
SELECT a.login_name, t.department_name AS current_institution,
|
|
|
|
|
t.department_id -- 如果需要直接更新部门ID,保留此字段
|
|
|
|
|
FROM t_employee a
|
|
|
|
|
LEFT JOIN t_department t ON a.department_id = t.department_id
|
|
|
|
|
)
|
|
|
|
|
-- 找出需要更新的记录
|
|
|
|
|
SELECT
|
|
|
|
|
lp.user_id AS identifier,
|
|
|
|
|
lp.practice_institution AS original_institution,
|
|
|
|
|
ce.current_institution,
|
|
|
|
|
ce.department_id AS current_department_id,
|
|
|
|
|
-- 尝试匹配部门名称到 department_id(如果 practice_institution 与 t_department.name 一致)
|
|
|
|
|
(SELECT department_id FROM t_department WHERE department_name = lp.practice_institution COLLATE utf8mb4_unicode_ci LIMIT 1) AS target_department_id,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN ce.login_name IS NULL THEN '员工不存在于当前系统'
|
|
|
|
|
WHEN lp.practice_institution IS NULL THEN '原始机构为空'
|
|
|
|
|
WHEN lp.practice_institution != ce.current_institution OR (ce.current_institution IS NULL AND lp.practice_institution IS NOT NULL) THEN '机构不一致'
|
|
|
|
|
ELSE '一致'
|
|
|
|
|
END AS update_needed
|
|
|
|
|
FROM latest_punish lp
|
|
|
|
|
LEFT JOIN current_employee ce ON lp.user_id COLLATE utf8mb4_unicode_ci = ce.login_name
|
|
|
|
|
WHERE
|
|
|
|
|
-- 只筛选出需要更新的情况:员工存在且机构不一致
|
|
|
|
|
ce.login_name IS NOT NULL
|
|
|
|
|
AND (lp.practice_institution != ce.current_institution
|
|
|
|
|
OR (ce.current_institution IS NULL AND lp.practice_institution IS NOT NULL));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
进行更新
|
|
|
|
|
UPDATE t_employee e
|
|
|
|
|
JOIN (
|
|
|
|
|
WITH latest_punish AS (
|
|
|
|
|
-- 取每个user_id的最新一条处罚记录(按id倒序取第一条,若用日期字段请调整ORDER BY)
|
|
|
|
|
SELECT lp.user_id COLLATE utf8mb4_unicode_ci AS user_id,
|
|
|
|
|
lp.practice_institution COLLATE utf8mb4_unicode_ci AS practice_institution
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT user_id, practice_institution,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY id DESC) AS rn
|
|
|
|
|
FROM t_lawyers_punish
|
|
|
|
|
) lp
|
|
|
|
|
WHERE lp.rn = 1
|
|
|
|
|
),
|
|
|
|
|
current_employee AS (
|
|
|
|
|
-- 当前员工机构信息,统一转为utf8mb4_unicode_ci
|
|
|
|
|
SELECT a.login_name COLLATE utf8mb4_unicode_ci AS login_name,
|
|
|
|
|
t.department_name COLLATE utf8mb4_unicode_ci AS current_institution,
|
|
|
|
|
t.department_id
|
|
|
|
|
FROM t_employee a
|
|
|
|
|
LEFT JOIN t_department t ON a.department_id = t.department_id
|
|
|
|
|
)
|
|
|
|
|
SELECT
|
|
|
|
|
lp.user_id AS identifier, -- 已统一collation
|
|
|
|
|
lp.practice_institution AS original_institution,
|
|
|
|
|
ce.current_institution,
|
|
|
|
|
ce.department_id AS current_department_id,
|
|
|
|
|
-- 尝试将原始机构名称匹配到部门表,获取目标department_id
|
|
|
|
|
(SELECT department_id FROM t_department
|
|
|
|
|
WHERE department_name COLLATE utf8mb4_unicode_ci = lp.practice_institution
|
|
|
|
|
LIMIT 1) AS target_department_id,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN ce.login_name IS NULL THEN '员工不存在于当前系统'
|
|
|
|
|
WHEN lp.practice_institution IS NULL THEN '原始机构为空'
|
|
|
|
|
WHEN lp.practice_institution != ce.current_institution
|
|
|
|
|
OR (ce.current_institution IS NULL AND lp.practice_institution IS NOT NULL) THEN '机构不一致'
|
|
|
|
|
ELSE '一致'
|
|
|
|
|
END AS update_needed
|
|
|
|
|
FROM latest_punish lp
|
|
|
|
|
LEFT JOIN current_employee ce ON lp.user_id = ce.login_name -- 两边collation已统一
|
|
|
|
|
WHERE ce.login_name IS NOT NULL
|
|
|
|
|
AND (lp.practice_institution != ce.current_institution
|
|
|
|
|
OR (ce.current_institution IS NULL AND lp.practice_institution IS NOT NULL))
|
|
|
|
|
) tmp ON e.login_name COLLATE utf8mb4_unicode_ci = tmp.identifier -- 转换e.login_name以匹配
|
|
|
|
|
SET e.department_id = tmp.target_department_id
|
|
|
|
|
WHERE tmp.target_department_id IS NOT NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-----内勤角色-----
|
|
|
|
|
|
|
|
|
|
SELECT DISTINCT a.position_name as login_name,a.name as actual_name,a.phone as phone, 1 as certificate_number,
|
|
|
|
|
1 as gender,
|
|
|
|
|
t.department_id as department_id
|
|
|
|
|
FROM t_employee_import a
|
|
|
|
|
LEFT JOIN t_department t ON a.law_firm = t.department_name
|
|
|
|
|
WHERE a.position_name NOT IN(
|
|
|
|
|
SELECT CONVERT(login_name USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
|
|
|
|
FROM t_employee
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SELECT employee_id, 40 as role_id from t_employee where employee_id not in (select employee_id from t_role_employee)
|