Browse Source

fix:查询排序修改

master
wang 1 month ago
parent
commit
84bc9b0b9d
  1. 91
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java
  2. 9
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java
  3. 7
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java
  4. 22
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java
  5. 25
      yun-admin/src/main/resources/mapper/penaltyapply/PenaltyApplyMapper.xml
  6. 5
      yun-admin/src/main/resources/mapper/service/ServiceApplicationsMapper.xml
  7. 30
      yun-admin/src/main/resources/mapper/system/employee/EmployeeMapper.xml

91
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java

@ -278,10 +278,63 @@ public class ServiceApplicationsService {
public PageResult<ServiceApplicationsVO> queryPageReport(@Valid ServiceApplicationsQueryForm queryForm) {
List<Long> longs = new ArrayList<>();
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
//根据用户角色的查询数据范围来查询数据
RequestEmployee requestUser = AdminRequestUtil.getRequestUser();
List<RoleVO> roleIdList = roleEmployeeService.getRoleIdList(requestUser.getUserId());
String roleCode = AdminRequestUtil.getRoleCode(roleIdList);
// 检查角色类型
boolean isAssociationRole = AdminRequestUtil.isAssociationRole(roleIdList);
boolean isFirmRole = AdminRequestUtil.isFirmRole(roleIdList); // 律所主任或行政
if (!UserTypeEnum.Admin.getDesc().equals(roleCode)) {
if (isAssociationRole) {
// 协会用户(CEO):可以看到所有律所提交的数据,但只显示associationAuditStatus为待审核(1)、通过(3)和拒绝(4)的数据和自己创建的数据
queryForm.setIncludeAssociationReviewed(true);
} else if (isFirmRole) {
// 律所主任或行政:能看到自己部门范围内的数据,但只显示firmAuditStatus为待审核、通过和拒绝的数据和自己创建的数据
Integer oneByRoleId = dataScopeViewService.getOneByRoleId(roleIdList.get(0).getRoleId());
// 获取自己部门范围内的数据
List<Long> departmentEmployees = new ArrayList<>();
if (DataScopeViewTypeEnum.ME.getValue().equals(oneByRoleId)) {
departmentEmployees = dataScopeViewService.getCanViewEmployeeId(DataScopeViewTypeEnum.ME, requestUser.getUserId());
} else if (DataScopeViewTypeEnum.DEPARTMENT.getValue().equals(oneByRoleId)) {
departmentEmployees = dataScopeViewService.getCanViewEmployeeId(DataScopeViewTypeEnum.DEPARTMENT, requestUser.getUserId());
}
// 确保包含当前用户ID,以便能看到自己创建的数据
if (departmentEmployees == null) {
departmentEmployees = new ArrayList<>();
}
if (!departmentEmployees.contains(requestUser.getUserId())) {
departmentEmployees.add(requestUser.getUserId());
}
queryForm.setEmployeeIdList(departmentEmployees);
// 律所主任或行政可以查看部门内所有已审核数据以及自己创建的有效数据(明确排除未提交的草稿)
queryForm.setIncludeFirmReviewed(true);
} else {
// 律所普通用户:只能看到自己提交的数据,包括所有firmAuditStatus状态
Integer oneByRoleId = dataScopeViewService.getOneByRoleId(roleIdList.get(0).getRoleId());
if (DataScopeViewTypeEnum.ME.getValue().equals(oneByRoleId)) {
longs = dataScopeViewService.getCanViewEmployeeId(DataScopeViewTypeEnum.ME, requestUser.getUserId());
} else if (DataScopeViewTypeEnum.DEPARTMENT.getValue().equals(oneByRoleId)) {
longs = dataScopeViewService.getCanViewEmployeeId(DataScopeViewTypeEnum.DEPARTMENT, requestUser.getUserId());
}
// 确保普通用户至少能看到自己的数据
if (longs == null) {
longs = new ArrayList<>();
}
if (!longs.contains(requestUser.getUserId())) {
longs.add(requestUser.getUserId());
}
queryForm.setEmployeeIdList(longs);
// 普通用户不需要审核状态过滤,可以看到自己所有状态的数据
queryForm.setNoStatusFilter(true);
}
queryForm.setCurrentUserId(requestUser.getUserId());
}
queryForm.setUserId(requestUser.getUserId());
List<ServiceApplicationsVO> list = serviceApplicationsDao.queryPage(page, queryForm);
if (!CollectionUtils.isEmpty(list)) {
@ -755,7 +808,41 @@ public class ServiceApplicationsService {
return ResponseDTO.ok();
}
//RequestEmployee requestUser = AdminRequestUtil.getRequestUser();
// 获取当前用户信息
RequestEmployee requestUser = AdminRequestUtil.getRequestUser();
List<RoleVO> roleIdList = roleEmployeeService.getRoleIdList(requestUser.getUserId());
// 检查是否是律所角色(主任或行政)
boolean isFirmRole = AdminRequestUtil.isFirmRole(roleIdList);
if (!isFirmRole) {
return ResponseDTO.error(UserErrorCode.NO_PERMISSION);
}
// 查询这些记录的详细信息,进行权限和状态校验
for (Long id : idList) {
ServiceApplicationsVO record = serviceApplicationsDao.queryById(id);
if (record == null) {
return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST, "记录ID:" + id + "不存在");
}
// 校验1:只能上报本所的数据
if (!record.getFirmId().equals(requestUser.getDepartmentId())) {
return ResponseDTO.error(UserErrorCode.NO_PERMISSION, "只能上报本所的数据");
}
// 校验2:执业机构审核状态必须是已通过(3)
if (!ReviewEnum.PASS.getValue().equals(record.getFirmAuditStatus())) {
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "记录ID:" + id + "未通过执业机构审核,无法上报");
}
// 校验3:协会审核状态必须是未提交(0)或被驳回(4)
Integer associationStatus = record.getAssociationAuditStatus();
if (!ReviewEnum.NOSUBMIT.getValue().equals(associationStatus) &&
!ReviewEnum.REFUSE.getValue().equals(associationStatus)) {
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "记录ID:" + id + "已上报或正在审核中,无法重复上报");
}
}
serviceApplicationsDao.batchSubmitAsAssociation(idList, ReviewEnum.APPROVAL.getValue());
return ResponseDTO.ok();

9
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java

@ -120,4 +120,13 @@ public class EmployeeController {
return employeeService.queryAllEmployee(disabledFlag);
}
@Operation(summary = "搜索员工(下拉框搜索用)")
@GetMapping("/employee/search")
public ResponseDTO<List<EmployeeVO>> searchEmployee(
@RequestParam(value = "firmId", required = false) Long firmId,
@RequestParam(value = "keyword", required = false) String keyword,
@RequestParam(value = "limit", defaultValue = "500") Integer limit) {
return employeeService.searchEmployees(firmId, keyword, limit);
}
}

7
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java

@ -102,4 +102,11 @@ public interface EmployeeDao extends BaseMapper<EmployeeEntity> {
*/
Integer updatePassword(@Param("employeeId") Long employeeId, @Param("password") String password);
/**
* 搜索员工下拉框搜索用
* @param firmId 律所ID律协传null查所有律所传当前律所
* @param keyword 搜索关键字姓名或手机号
* @param limit 返回数量上限
*/
List<EmployeeVO> searchEmployees(@Param("firmId") Long firmId, @Param("keyword") String keyword, @Param("limit") Integer limit);
}

22
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java

@ -447,6 +447,28 @@ public class EmployeeService {
return ResponseDTO.ok(employeeList);
}
/**
* 搜索员工下拉框搜索用
*/
public ResponseDTO<List<EmployeeVO>> searchEmployees(Long firmId, String keyword, Integer limit) {
RequestEmployee requestUser = AdminRequestUtil.getRequestUser();
List<RoleVO> roleIdList = roleEmployeeService.getRoleIdList(requestUser.getEmployeeId());
String roleCode = roleIdList.isEmpty() ? "" : roleIdList.get(0).getRoleCode();
// 律所管理员角色:只看当前律所
// 律协角色(ceo/user):可以看所有律师
Long searchFirmId = null;
if (UserTypeEnum.CTO.getDesc().equals(roleCode)) {
searchFirmId = requestUser.getDepartmentId();
} else if (firmId != null) {
// 如果前端传了firmId,使用传入的值
searchFirmId = firmId;
}
List<EmployeeVO> result = employeeDao.searchEmployees(searchFirmId, keyword, limit);
return ResponseDTO.ok(result);
}
/**
* 根据登录名获取员工
*/

25
yun-admin/src/main/resources/mapper/penaltyapply/PenaltyApplyMapper.xml

@ -41,8 +41,16 @@
<if test="queryForm.userName != null and queryForm.userName != ''">
AND te_employee.actual_name like concat('%',#{queryForm.userName},'%')
</if>
<if test="queryForm.status != null and queryForm.status != ''">
AND tp_apply.status = #{queryForm.status}
<if test="queryForm.status != null">
<!-- CEO用audit_status,其他角色用status -->
<choose>
<when test="queryForm.userType == 'ceo'">
AND tp_apply.audit_status = #{queryForm.status}
</when>
<otherwise>
AND tp_apply.status = #{queryForm.status}
</otherwise>
</choose>
</if>
<if test="queryForm.applyDateStart != null">
AND tp_apply.apply_date &gt;= #{queryForm.applyDateStart}
@ -61,7 +69,18 @@
</if>
</if>
</where>
ORDER BY tp_apply.status, tp_apply.create_time DESC
ORDER BY
CASE
<!-- 未审核/待审核优先 -->
WHEN tp_apply.status = 1 OR tp_apply.audit_status = 1 THEN 0
<!-- 已通过 -->
WHEN tp_apply.status = 2 OR tp_apply.audit_status = 2 THEN 1
<!-- 已驳回/已拒绝 -->
WHEN tp_apply.status = 3 OR tp_apply.audit_status IN (3, 4) THEN 2
<!-- 其他 -->
ELSE 3
END,
tp_apply.create_time DESC
</select>
<update id="batchUpdateDeleted">

5
yun-admin/src/main/resources/mapper/service/ServiceApplicationsMapper.xml

@ -169,8 +169,9 @@
</where>
ORDER BY
CASE
WHEN t_service_applications.firm_audit_status = 1 OR t_service_applications.association_audit_status = 1 THEN 0
ELSE 1
WHEN t_service_applications.firm_audit_status = 0 THEN 0
WHEN t_service_applications.firm_audit_status = 1 OR t_service_applications.association_audit_status = 1 THEN 1
ELSE 2
END ASC,
t_service_applications.report_time DESC,
t_service_applications.application_id DESC

30
yun-admin/src/main/resources/mapper/system/employee/EmployeeMapper.xml

@ -202,4 +202,34 @@
WHERE employee_id = #{employeeId}
</update>
<!-- 搜索员工(下拉框搜索用) -->
<select id="searchEmployees" resultType="net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO">
SELECT
t_employee.employee_id AS employeeId,
t_employee.actual_name AS actualName,
t_employee.department_id AS departmentId,
t_department.department_name AS departmentName,
t_employee.phone AS phone,
t_employee.disabled_flag AS disabledFlag
FROM t_employee
LEFT JOIN t_department ON t_department.department_id = t_employee.department_id
<where>
t_employee.deleted_flag = 0
AND t_employee.disabled_flag = 0
AND t_employee.administrator_flag = 0
<!-- 律所角色:只看当前律所 -->
<if test="firmId != null">
AND t_employee.department_id = #{firmId}
</if>
<!-- 关键字搜索 -->
<if test="keyword != null and keyword != ''">
AND
t_employee.actual_name LIKE CONCAT('%', #{keyword}, '%')
</if>
</where>
ORDER BY t_employee.employee_id ASC
LIMIT #{limit}
</select>
</mapper>
Loading…
Cancel
Save