@ -25,6 +25,7 @@
t_service_applications.association_audit_user,
t_service_applications.association_audit_time,
t_service_applications.record_no,
t_service_applications.filing_no,
t_service_applications.record_status,
t_service_applications.record_time,
t_service_applications.update_time,
@ -122,6 +123,9 @@
<if test= "queryForm.positionId != null and queryForm.positionId != ''" >
and position_id = #{queryForm.positionId}
</if>
<if test= "queryForm.filingNo != null and queryForm.filingNo != ''" >
and filing_no like CONCAT('%', #{queryForm.filingNo}, '%')
</if>
<!-- 协会角色过滤条件:只在没有明确指定任一审核状态时才应用此规则,且对自己创建的数据不过滤 -->
<if test= "queryForm.includeAssociationReviewed != null and queryForm.includeAssociationReviewed and (queryForm.associationAuditStatus == null or queryForm.associationAuditStatus == '') and (queryForm.firmAuditStatus == null or queryForm.firmAuditStatus == '')" >
AND (
@ -305,117 +309,146 @@
LEFT JOIN t_department d ON tsa.firm_id = d.department_id
WHERE tsa.deleted_flag = 0
AND tsa.association_audit_status = 3 <!-- PASS -->
GROUP BY tsa.user_id, tsa.certificate_number, e.actual_name
ORDER BY e.actual_name
GROUP BY tsa.user_id, tsa.certificate_number
ORDER BY annualServiceDuration DESC, tsa.user_id ASC, e.actual_name
</select>
<!-- 律师统计查询(带参数) -->
<select id= "getLawyerStatisticsWithParam" resultType= "net.lab1024.sa.admin.module.service.domain.form.ServiceLawyerImportForm" >
SELECT
e.actual_name AS lawyerName,
e.employee_id as userId,
MAX(d.department_name) AS firmName,
tsa.certificate_number AS certificateNumber,
COALESCE(SUM(tsa.service_duration), 0) AS annualServiceDuration
FROM t_service_applications tsa
LEFT JOIN t_employee e ON tsa.user_id = e.employee_id
LEFT JOIN t_department d ON tsa.firm_id = d.department_id
e.actual_name AS lawyerName,
agg.userId,
d.department_name AS firmName,
agg.certificateNumber,
agg.annualServiceDuration
FROM (
SELECT
tsa.user_id AS userId,
tsa.certificate_number AS certificateNumber,
COALESCE(SUM(tsa.service_duration), 0) AS annualServiceDuration,
MAX(tsa.firm_id) AS firmId
FROM t_service_applications tsa
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
AND tsa.firm_id IS NOT NULL
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.userId != null and queryForm.userId != ''" >
AND tsa.user_id = #{queryForm.userId}
</if>
<if test= "queryForm.firmId != null" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY tsa.user_id, tsa.certificate_number
) agg
LEFT JOIN t_employee e ON agg.userId = e.employee_id
LEFT JOIN t_department d ON agg.firmId = d.department_id
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3 <!-- 只统计律协审核通过的 -->
AND tsa.firm_id IS NOT NULL
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.userId != null and queryForm.userId != ''" >
and tsa.user_id = #{queryForm.userId}
</if>
<if test= "queryForm.lawyerName != null and queryForm.lawyerName != ''" >
AND e.actual_name LIKE CONCAT('%', #{queryForm.lawyerName}, '%')
</if>
<if test= "queryForm.firmName != null and queryForm.firmName != ''" >
AND d.department_name LIKE CONCAT('%', #{queryForm.firmName}, '%')
</if>
<if test= "queryForm.firmId != null" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY tsa.user_id, tsa.certificate_number
ORDER BY e.actual_name
</select>
ORDER BY annualServiceDuration DESC, userId ASC
</select>
<select id= "getLawyerStatisticsWithParamYear"
resultType="net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO">
SELECT
e.actual_name AS lawyerName,
e.employee_id as userId,
tsa.certificate_number AS certificateNumber,
COALESCE(SUM(tsa.service_duration), 0) AS annualServiceDuration
FROM t_service_applications tsa
LEFT JOIN t_employee e ON tsa.user_id = e.employee_id
LEFT JOIN t_department d ON tsa.firm_id = d.department_id
e.actual_name AS lawyerName,
agg.userId,
agg.certificateNumber,
agg.annualServiceDuration
FROM (
SELECT
tsa.user_id AS userId,
tsa.certificate_number AS certificateNumber,
COALESCE(SUM(tsa.service_duration), 0) AS annualServiceDuration,
MAX(tsa.firm_id) AS firmId
FROM t_service_applications tsa
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
AND tsa.firm_id IS NOT NULL
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.userId != null and queryForm.userId != ''" >
AND tsa.user_id = #{queryForm.userId}
</if>
<if test= "queryForm.firmId != null" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY tsa.user_id, tsa.certificate_number
) agg
LEFT JOIN t_employee e ON agg.userId = e.employee_id
LEFT JOIN t_department d ON agg.firmId = d.department_id
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
AND tsa.firm_id IS NOT NULL
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.userId != null and queryForm.userId != ''" >
and tsa.user_id = #{queryForm.userId}
</if>
<if test= "queryForm.lawyerName != null and queryForm.lawyerName != ''" >
AND e.actual_name LIKE CONCAT('%', #{queryForm.lawyerName}, '%')
</if>
<if test= "queryForm.firmName != null and queryForm.firmName != ''" >
AND d.department_name LIKE CONCAT('%', #{queryForm.firmName}, '%')
</if>
<if test= "queryForm.firmId != null" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY tsa.user_id, tsa.certificate_number
ORDER BY annualServiceDuration DESC, userId ASC
</select>
<select id= "getLawyerStatisticsWithParamYearNoPage"
resultType="net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO">
SELECT
e.actual_name AS lawyerName,
e.employee_id as userId,
tsa.certificate_number AS certificateNumber,
COALESCE(SUM(tsa.service_duration), 0) AS annualServiceDuration
FROM t_service_applications tsa
LEFT JOIN t_employee e ON tsa.user_id = e.employee_id
LEFT JOIN t_department d ON tsa.firm_id = d.department_id
e.actual_name AS lawyerName,
agg.userId,
agg.certificateNumber,
agg.annualServiceDuration
FROM (
SELECT
tsa.user_id AS userId,
tsa.certificate_number AS certificateNumber,
COALESCE(SUM(tsa.service_duration), 0) AS annualServiceDuration,
MAX(tsa.firm_id) AS firmId
FROM t_service_applications tsa
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
AND tsa.firm_id IS NOT NULL
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.userId != null and queryForm.userId != ''" >
AND tsa.user_id = #{queryForm.userId}
</if>
<if test= "queryForm.firmId != null" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY tsa.user_id, tsa.certificate_number
) agg
LEFT JOIN t_employee e ON agg.userId = e.employee_id
LEFT JOIN t_department d ON agg.firmId = d.department_id
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
AND tsa.firm_id IS NOT NULL
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.userId != null and queryForm.userId != ''" >
and tsa.user_id = #{queryForm.userId}
</if>
<if test= "queryForm.lawyerName != null and queryForm.lawyerName != ''" >
AND e.actual_name LIKE CONCAT('%', #{queryForm.lawyerName}, '%')
</if>
<if test= "queryForm.firmName != null and queryForm.firmName != ''" >
AND d.department_name LIKE CONCAT('%', #{queryForm.firmName}, '%')
</if>
<if test= "queryForm.firmId != null" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY tsa.user_id, tsa.certificate_number
ORDER BY annualServiceDuration DESC, userId ASC
</select>
<select id= "getLawyerStatistic"
resultType="net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO">
@ -444,6 +477,7 @@
</if>
</where>
GROUP BY tsa.user_id, tsa.certificate_number
ORDER BY annualServiceDuration DESC, tsa.user_id ASC
LIMIT 1
</select>
<select id= "getdepartmentStatistics"
@ -472,34 +506,41 @@
</if>
</where>
GROUP BY d.department_id, d.department_name
ORDER BY annualServiceDuration DESC, d.department_id ASC
</select>
<!-- 律所统计分页查询 -->
<select id= "getdepartmentStatisticsPage"
resultType="net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO">
SELECT
d.department_name AS firmName,
d.department_id as firmId,
COALESCE(SUM(tsa.service_duration), 0) AS annualServiceDuration
FROM t_service_applications tsa
LEFT JOIN t_department d ON tsa.firm_id = d.department_id
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
AND tsa.firm_id IS NOT NULL
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.userId != null and queryForm.userId != ''" >
and tsa.user_id = #{queryForm.userId}
</if>
<if test= "queryForm.firmId != null" >
and tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY d.department_id, d.department_name
agg.firmId AS firmId,
d.department_name AS firmName,
agg.annualServiceDuration
FROM (
SELECT
tsa.firm_id AS firmId,
COALESCE(SUM(tsa.service_duration), 0) AS annualServiceDuration
FROM t_service_applications tsa
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
AND tsa.firm_id IS NOT NULL
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.userId != null and queryForm.userId != ''" >
AND tsa.user_id = #{queryForm.userId}
</if>
<if test= "queryForm.firmId != null" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY tsa.firm_id
) agg
LEFT JOIN t_department d ON agg.firmId = d.department_id
ORDER BY annualServiceDuration DESC, firmId ASC
</select>
<select id= "getdepartmentMothStatistic"
resultType="net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO">
@ -778,7 +819,7 @@
</where>
GROUP BY tsa.user_id, tsa.certificate_number
HAVING annualServiceCost > 0
ORDER BY e.actual_name
ORDER BY annualServiceDuration DESC, tsa.user_id ASC
</select>
<select id= "selectByRecordNoNotMy"
resultType="net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsVO">
@ -932,37 +973,40 @@
<!-- 查询律师列表(分页) -->
<select id= "getLawyerActivityCount" resultType= "net.lab1024.sa.admin.module.service.domain.vo.LawyerActivityCountVO" >
SELECT DISTINCT
tsa.user_id AS userId,
e.actual_name AS lawyerName,
d.department_id AS firmId,
d.department_name AS firmName,
tsa.certificate_number AS certificateNumber,
COALESCE(stats.totalCount, 0) AS totalCount
FROM t_service_applications tsa
LEFT JOIN t_employee e ON tsa.user_id = e.employee_id
LEFT JOIN t_department d ON tsa.firm_id = d.department_id
LEFT JOIN (
SELECT
user_id,
SELECT
stats.user_id AS userId,
stats.lawyerName AS lawyerName,
stats.firmId AS firmId,
stats.firmName AS firmName,
stats.certificateNumber AS certificateNumber,
stats.totalCount AS totalCount
FROM (
SELECT
tsa.user_id AS user_id,
MAX(e.actual_name) AS lawyerName,
MAX(tsa.firm_id) AS firmId,
MAX(d.department_name) AS firmName,
MAX(tsa.certificate_number) AS certificateNumber,
COUNT(*) AS totalCount
FROM t_service_applications
WHERE deleted_flag = 0
AND association_audit_status = 3
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND report_time < = #{queryForm.endTime}
</if>
GROUP BY user_id
) stats ON tsa.user_id = stats.user_id
WHERE tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
<if test= "queryForm.firmId != null and queryForm.firmId != ''" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
ORDER BY totalCount DESC, tsa.user_id
FROM t_service_applications tsa
LEFT JOIN t_employee e ON tsa.user_id = e.employee_id
LEFT JOIN t_department d ON tsa.firm_id = d.department_id
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
<if test= "queryForm.firmId != null and queryForm.firmId != ''" >
AND tsa.firm_id = #{queryForm.firmId}
</if>
</where>
GROUP BY tsa.user_id
) stats
ORDER BY totalCount DESC, stats.user_id
</select>
<!-- 查询指定律师的活动统计 -->
@ -992,6 +1036,33 @@
ORDER BY g.goods_id
</select>
<!-- 批量查询多个律师的活动统计(避免N+1) -->
<select id= "getLawyerActivityDetailBatch" resultType= "net.lab1024.sa.admin.module.service.domain.vo.LawyerActivityCountVO" >
SELECT
tsa.user_id AS userId,
tsa.activity_name_id AS activityId,
g.goods_name AS activityName,
COUNT(*) AS count
FROM t_service_applications tsa
LEFT JOIN t_goods g ON tsa.activity_name_id = g.goods_id
<where >
tsa.deleted_flag = 0
AND tsa.association_audit_status = 3
AND tsa.user_id IN
<foreach collection= "userIds" item= "uid" open= "(" separator= "," close= ")" >
#{uid}
</foreach>
<if test= "queryForm.startTime != null and queryForm.startTime != ''" >
AND tsa.report_time > = #{queryForm.startTime}
</if>
<if test= "queryForm.endTime != null and queryForm.endTime != ''" >
AND tsa.report_time < = #{queryForm.endTime}
</if>
</where>
GROUP BY tsa.user_id, tsa.activity_name_id, g.goods_name
ORDER BY tsa.user_id, tsa.activity_name_id
</select>
<!-- 查询律所列表(分页,按活动总数排序) -->
<select id= "getFirmActivityCount" resultType= "net.lab1024.sa.admin.module.service.domain.vo.FirmActivityCountVO" >
SELECT
@ -1243,4 +1314,13 @@
</if>
ORDER BY tsa.create_time DESC
</select>
<!-- 获取指定前缀的最大备案编号 -->
<select id= "getMaxFilingNo" resultType= "java.lang.String" >
SELECT filing_no
FROM t_service_applications
WHERE filing_no LIKE CONCAT(#{prefix}, '%')
ORDER BY filing_no DESC
LIMIT 1
</select>
</mapper>