|
|
@@ -356,4 +356,185 @@ interface UserDao {
|
|
|
*/
|
|
|
@Query("update sys_user_characteristic set del_flag = 1 where `group` not in (:fingerprintData) and user_id = :userId")
|
|
|
fun deleteNoUseFingerprint(fingerprintData: List<String>, userId: Long)
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ① 用户管理分页(昵称/状态/卡号/岗位名筛选)
|
|
|
+ * 指纹口径:按 group 去重后计数(与你原 getUserManagerData 保持一致)。
|
|
|
+ *
|
|
|
+ * @param nickname 模糊匹配
|
|
|
+ * @param status "1" 启用 / "0" 禁用;null 不筛选
|
|
|
+ * @param cardNfc 模糊匹配
|
|
|
+ * @param workstationName 模糊匹配
|
|
|
+ * @param size 分页大小
|
|
|
+ * @param offset 偏移(current*size)
|
|
|
+ */
|
|
|
+ @Query("""
|
|
|
+ SELECT
|
|
|
+ u.user_id AS userId,
|
|
|
+ u.nick_name AS nickName,
|
|
|
+ u.user_name AS userName,
|
|
|
+ u.password AS password,
|
|
|
+ u.avatar AS avatar,
|
|
|
+ u.status AS status,
|
|
|
+
|
|
|
+ /* 工卡:取任意一张(你要“最新”可换 MAX(create_time) 再取) */
|
|
|
+ (SELECT MIN(jc.card_nfc)
|
|
|
+ FROM is_job_card jc
|
|
|
+ WHERE jc.user_id = u.user_id) AS cardNfc,
|
|
|
+
|
|
|
+ /* 角色聚合(去重) */
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_id)
|
|
|
+ FROM sys_user_role ur
|
|
|
+ JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleIds,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_name)
|
|
|
+ FROM sys_user_role ur
|
|
|
+ JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleNames,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_key)
|
|
|
+ FROM sys_user_role ur
|
|
|
+ JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleKeys,
|
|
|
+
|
|
|
+ /* 岗位聚合(去重) */
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT w.workstation_id)
|
|
|
+ FROM is_user_workstation uw
|
|
|
+ JOIN is_workstation w ON w.workstation_id = uw.workstation_id
|
|
|
+ WHERE uw.user_id = u.user_id) AS workstationIds,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT w.workstation_name)
|
|
|
+ FROM is_user_workstation uw
|
|
|
+ JOIN is_workstation w ON w.workstation_id = uw.workstation_id
|
|
|
+ WHERE uw.user_id = u.user_id) AS workstationNames,
|
|
|
+
|
|
|
+ /* 指纹数量:与 getUserManagerData 口径一致——按 group 去重 */
|
|
|
+ COALESCE((
|
|
|
+ SELECT COUNT(DISTINCT CASE WHEN c.type='1' THEN c.`group` END)
|
|
|
+ FROM sys_user_characteristic c
|
|
|
+ WHERE c.user_id = u.user_id
|
|
|
+ ), 0) AS fingerprintSize
|
|
|
+
|
|
|
+ FROM sys_user u
|
|
|
+ WHERE u.del_flag = '0'
|
|
|
+ AND (:nickname IS NULL OR u.nick_name LIKE '%'||:nickname||'%')
|
|
|
+ AND (:status IS NULL OR u.status = :status)
|
|
|
+ AND (:cardNfc IS NULL OR EXISTS (
|
|
|
+ SELECT 1 FROM is_job_card x
|
|
|
+ WHERE x.user_id = u.user_id AND x.card_nfc LIKE '%'||:cardNfc||'%'
|
|
|
+ ))
|
|
|
+ AND (:workstationName IS NULL OR EXISTS (
|
|
|
+ SELECT 1
|
|
|
+ FROM is_user_workstation uw
|
|
|
+ JOIN is_workstation w ON w.workstation_id = uw.workstation_id
|
|
|
+ WHERE uw.user_id = u.user_id AND w.workstation_name LIKE '%'||:workstationName||'%'
|
|
|
+ ))
|
|
|
+ ORDER BY u.user_id asc
|
|
|
+ LIMIT :size OFFSET :offset
|
|
|
+ """)
|
|
|
+ fun getUserManagePage(
|
|
|
+ nickname: String?,
|
|
|
+ status: String?,
|
|
|
+ cardNfc: String?,
|
|
|
+ workstationName: String?,
|
|
|
+ size: Int,
|
|
|
+ offset: Int
|
|
|
+ ): List<UserManageVo>
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ② 作业票下的指定用户(限定 userIds + userRole),包含分组名。
|
|
|
+ * 角色/岗位/工卡同样聚合为 CSV,由 TypeConverter 映射到 List。
|
|
|
+ */
|
|
|
+ @Query("""
|
|
|
+ SELECT
|
|
|
+ u.user_id AS userId,
|
|
|
+ u.nick_name AS nickName,
|
|
|
+ u.user_name AS userName,
|
|
|
+ u.avatar AS avatar,
|
|
|
+ u.status AS status,
|
|
|
+
|
|
|
+ (SELECT MIN(jc.card_nfc) FROM is_job_card jc WHERE jc.user_id = u.user_id) AS cardNfc,
|
|
|
+
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_id)
|
|
|
+ FROM sys_user_role ur JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleIds,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_name)
|
|
|
+ FROM sys_user_role ur JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleNames,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_key)
|
|
|
+ FROM sys_user_role ur JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleKeys,
|
|
|
+
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT w.workstation_id)
|
|
|
+ FROM is_user_workstation uw JOIN is_workstation w ON w.workstation_id = uw.workstation_id
|
|
|
+ WHERE uw.user_id = u.user_id) AS workstationIds,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT w.workstation_name)
|
|
|
+ FROM is_user_workstation uw JOIN is_workstation w ON w.workstation_id = uw.workstation_id
|
|
|
+ WHERE uw.user_id = u.user_id) AS workstationNames,
|
|
|
+
|
|
|
+ jtu.group_id AS groupId,
|
|
|
+ (SELECT jtg.group_name FROM is_job_ticket_group jtg WHERE jtg.id = jtu.group_id) AS groupName
|
|
|
+
|
|
|
+ FROM is_job_ticket_user jtu
|
|
|
+ JOIN sys_user u ON u.user_id = jtu.user_id AND u.del_flag='0'
|
|
|
+ WHERE jtu.ticket_id = :ticketId
|
|
|
+ AND jtu.user_role = :userRole
|
|
|
+ AND jtu.del_flag = '0'
|
|
|
+ AND u.user_id IN (:userIds)
|
|
|
+ ORDER BY u.user_id asc
|
|
|
+ """)
|
|
|
+ fun getJobUsersByIdsAndTicket(
|
|
|
+ ticketId: Long,
|
|
|
+ userIds: List<Long>,
|
|
|
+ userRole: String
|
|
|
+ ): List<JobUserVo>
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ③ 按岗位取全体用户(含角色/岗位/工卡)
|
|
|
+ * 指纹口径:直接按记录数计数(与你原 getAllUserDataWithWorkstation 保持一致)。
|
|
|
+ */
|
|
|
+ @Query("""
|
|
|
+ SELECT
|
|
|
+ u.user_id AS userId,
|
|
|
+ u.nick_name AS nickName,
|
|
|
+ u.user_name AS userName,
|
|
|
+ u.password AS password,
|
|
|
+ u.avatar AS avatar,
|
|
|
+ u.status AS status,
|
|
|
+
|
|
|
+ (SELECT MIN(jc.card_nfc)
|
|
|
+ FROM is_job_card jc WHERE jc.user_id = u.user_id) AS cardNfc,
|
|
|
+
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_id)
|
|
|
+ FROM sys_user_role ur JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleIds,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_name)
|
|
|
+ FROM sys_user_role ur JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleNames,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT r.role_key)
|
|
|
+ FROM sys_user_role ur JOIN sys_role r ON r.role_id = ur.role_id
|
|
|
+ WHERE ur.user_id = u.user_id) AS roleKeys,
|
|
|
+
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT w.workstation_id)
|
|
|
+ FROM is_user_workstation uw JOIN is_workstation w ON w.workstation_id = uw.workstation_id
|
|
|
+ WHERE uw.user_id = u.user_id) AS workstationIds,
|
|
|
+ (SELECT GROUP_CONCAT(DISTINCT w.workstation_name)
|
|
|
+ FROM is_user_workstation uw JOIN is_workstation w ON w.workstation_id = uw.workstation_id
|
|
|
+ WHERE uw.user_id = u.user_id) AS workstationNames,
|
|
|
+
|
|
|
+ COALESCE((
|
|
|
+ SELECT SUM(CASE WHEN c.type='1' THEN 1 ELSE 0 END)
|
|
|
+ FROM sys_user_characteristic c
|
|
|
+ WHERE c.user_id = u.user_id
|
|
|
+ ), 0) AS fingerprintSize
|
|
|
+
|
|
|
+ FROM sys_user u
|
|
|
+ WHERE u.del_flag='0'
|
|
|
+ AND EXISTS (
|
|
|
+ SELECT 1 FROM is_user_workstation uw
|
|
|
+ WHERE uw.user_id=u.user_id AND uw.workstation_id = :workstationId
|
|
|
+ )
|
|
|
+ ORDER BY u.user_id asc
|
|
|
+ """)
|
|
|
+ fun getAllUsersWithWorkstation(
|
|
|
+ workstationId: Long
|
|
|
+ ): List<UserManageVo>
|
|
|
}
|