Browse Source

fix:服务记录

master
“wangzihua” 3 months ago
parent
commit
4b02fb23bb
  1. 4
      yun-admin/src/main/java/net/lab1024/sa/admin/common/enums/ReviewEnum.java
  2. 28
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/controller/ServiceApplicationsController.java
  3. 31
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/dao/ServiceApplicationsDao.java
  4. 7
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/entity/ServiceApplicationsEntity.java
  5. 5
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsAddForm.java
  6. 40
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsQueryForm.java
  7. 15
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsUpdateForm.java
  8. 17
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceApplicationsVO.java
  9. 35
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceReportStatisticsVO.java
  10. 275
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java
  11. 4
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/position/service/PositionService.java
  12. 4
      yun-base/src/main/java/net/lab1024/sa/base/common/enumeration/UserTypeEnum.java

4
yun-admin/src/main/java/net/lab1024/sa/admin/common/enums/ReviewEnum.java

@ -5,9 +5,9 @@ import net.lab1024.sa.base.common.enumeration.BaseEnum;
public enum ReviewEnum implements BaseEnum { public enum ReviewEnum implements BaseEnum {
NOSUBMIT(0, "未提交"), NOSUBMIT(0, "未提交"),
APPROVAL(1, "待审"), APPROVAL(1, "待审"),
REVIEW(2, "审中"), REVIEW(2, "审中"),
PASS(3, "已通过"), PASS(3, "已通过"),

28
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/controller/ServiceApplicationsController.java

@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.service.controller;
import net.lab1024.sa.admin.module.service.domain.form.*; import net.lab1024.sa.admin.module.service.domain.form.*;
import net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO; import net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO;
import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsVO; import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsVO;
import net.lab1024.sa.admin.module.service.domain.vo.ServiceReportStatisticsVO;
import net.lab1024.sa.admin.module.service.service.ServiceApplicationsService; import net.lab1024.sa.admin.module.service.service.ServiceApplicationsService;
import net.lab1024.sa.base.common.domain.ValidateList; import net.lab1024.sa.base.common.domain.ValidateList;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -32,6 +33,13 @@ public class ServiceApplicationsController {
@Resource @Resource
private ServiceApplicationsService serviceApplicationsService; private ServiceApplicationsService serviceApplicationsService;
//查询详情
@Operation(summary = "查询详情 @author wzh")
@GetMapping("/serviceApplications/queryDetail/{applicationId}")
public ResponseDTO<ServiceApplicationsVO> queryDetail(@PathVariable Long applicationId) {
return ResponseDTO.ok(serviceApplicationsService.queryDetail(applicationId));
}
@Operation(summary = "分页查询 @author wzh") @Operation(summary = "分页查询 @author wzh")
@PostMapping("/serviceApplications/queryPage") @PostMapping("/serviceApplications/queryPage")
//@SaCheckPermission("serviceApplications:query") //@SaCheckPermission("serviceApplications:query")
@ -58,6 +66,13 @@ public class ServiceApplicationsController {
public ResponseDTO<String> review(@RequestBody @Valid ServiceApplicationsUpdateForm updateForm) { public ResponseDTO<String> review(@RequestBody @Valid ServiceApplicationsUpdateForm updateForm) {
return serviceApplicationsService.review(updateForm); return serviceApplicationsService.review(updateForm);
} }
//批量审核
@Operation(summary = "批量审核 @author wzh")
@PostMapping("/serviceApplications/batchReview")
//@SaCheckPermission("serviceApplications:batchReview")
public ResponseDTO<String> batchReview(@RequestBody @Valid ServiceApplicationsUpdateForm updateForm) {
return serviceApplicationsService.batchReview(updateForm);
}
@Operation(summary = "批量提交 @author wzh") @Operation(summary = "批量提交 @author wzh")
@PostMapping("/serviceApplications/batchSubmit") @PostMapping("/serviceApplications/batchSubmit")
//@SaCheckPermission("serviceApplications:batchSubmit") //@SaCheckPermission("serviceApplications:batchSubmit")
@ -65,6 +80,13 @@ public class ServiceApplicationsController {
return serviceApplicationsService.batchSubmit(idList); return serviceApplicationsService.batchSubmit(idList);
} }
@Operation(summary = "批量提交到协会审核 @author wzh")
@PostMapping("/serviceApplications/batchSubmitAsFirm")
//@SaCheckPermission("serviceApplications:batchSubmitAsFirm")
public ResponseDTO<String> batchSubmitAsFirm(@RequestBody ValidateList<Long> idList) {
return serviceApplicationsService.batchSubmitAsFirm(idList);
}
@Operation(summary = "编辑时提交 @author wzh") @Operation(summary = "编辑时提交 @author wzh")
@GetMapping("/serviceApplications/submit/{applicationId}") @GetMapping("/serviceApplications/submit/{applicationId}")
//@SaCheckPermission("serviceApplications:submit") //@SaCheckPermission("serviceApplications:submit")
@ -134,4 +156,10 @@ public class ServiceApplicationsController {
public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) { public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) {
serviceApplicationsService.exportLawyer(queryForm, response); serviceApplicationsService.exportLawyer(queryForm, response);
} }
@Operation(summary = "服务上报统计 @author ")
@PostMapping("/serviceApplications/reportStatistics")
public ResponseDTO<PageResult<ServiceReportStatisticsVO>> getServiceReportStatistics(@RequestBody @Valid ServiceApplicationsQueryForm queryForm) {
return ResponseDTO.ok(serviceApplicationsService.getServiceReportStatistics(queryForm));
}
} }

31
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/dao/ServiceApplicationsDao.java

@ -7,6 +7,7 @@ import net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO;
import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsVO; import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.lab1024.sa.admin.module.service.domain.vo.ServiceReportStatisticsVO;
import net.lab1024.sa.base.common.domain.ValidateList; import net.lab1024.sa.base.common.domain.ValidateList;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -45,6 +46,16 @@ public interface ServiceApplicationsDao extends BaseMapper<ServiceApplicationsEn
void batchSubmit(@Param("idList")List<Long> idList, @Param("deletedFlag")Integer b); void batchSubmit(@Param("idList")List<Long> idList, @Param("deletedFlag")Integer b);
/**
* 批量提交律所审核
*/
void batchSubmitAsFirm(@Param("idList")List<Long> idList, @Param("firmAuditStatus")Integer firmAuditStatus);
/**
* 批量提交协会审核
*/
void batchSubmitAsAssociation(@Param("idList")List<Long> idList, @Param("associationAuditStatus")Integer associationAuditStatus, @Param("userId")Long userId, @Param("submitTime")String submitTime);
/** /**
* 律师统计查询无参数保持向后兼容 * 律师统计查询无参数保持向后兼容
*/ */
@ -86,4 +97,24 @@ public interface ServiceApplicationsDao extends BaseMapper<ServiceApplicationsEn
* 律所统计带参数无分页 * 律所统计带参数无分页
*/ */
List<ServiceDepartmentImportForm> getDepartmentStatisticsWithParam(@Param("queryForm") ServiceLawyerQueryForm queryForm); List<ServiceDepartmentImportForm> getDepartmentStatisticsWithParam(@Param("queryForm") ServiceLawyerQueryForm queryForm);
void batchReview(@Param("fileKeyList") List<String> fileKeyList, @Param("value") Integer value);
/**
* 批量审核 - 律所审核
*/
void batchReviewAsFirm(@Param("fileKeyList") List<String> fileKeyList, @Param("value") Integer value, @Param("userId") Long userId, @Param("reviewTime") String reviewTime);
/**
* 批量审核 - 协会审核
*/
void batchReviewAsAssociation(@Param("fileKeyList") List<String> fileKeyList, @Param("value") Integer value, @Param("userId") Long userId, @Param("reviewTime") String reviewTime);
/**
* 服务上报统计
* @param page
* @param queryForm
* @return
*/
List<ServiceReportStatisticsVO> getServiceReportStatistics(Page page, @Param("queryForm") ServiceApplicationsQueryForm queryForm);
} }

7
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/entity/ServiceApplicationsEntity.java

@ -115,7 +115,7 @@ public class ServiceApplicationsEntity {
/** /**
* 协会审核人 * 协会审核人
*/ */
private Integer associationAuditUser; private Long associationAuditUser;
/** /**
* 协会审核时间 * 协会审核时间
@ -176,4 +176,9 @@ public class ServiceApplicationsEntity {
* 附件id * 附件id
*/ */
private String attachmentIds; private String attachmentIds;
/**
* 职务id
*/
private Long positionId;
} }

5
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsAddForm.java

@ -72,5 +72,8 @@ public class ServiceApplicationsAddForm {
@Schema(description = "附件id集合", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "附件id集合", requiredMode = Schema.RequiredMode.REQUIRED)
private String attachmentIds; private String attachmentIds;
/**
* 职务id
*/
private Long positionId;
} }

40
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsQueryForm.java

@ -145,4 +145,44 @@ public class ServiceApplicationsQueryForm extends PageParam {
private Long activityNameId; private Long activityNameId;
public List<Long> employeeIdList; public List<Long> employeeIdList;
/**
* 职务id
*/
private Long positionId;
/**
* 是否排除草稿状态的数据仅适用于协会角色
*/
private Boolean excludeDraft;
/**
* 是否包含协会审核过的数据协会角色使用
*/
private Boolean includeAssociationReviewed;
/**
* 是否包含律所审核过的数据律所管理员使用
*/
private Boolean includeFirmReviewed;
/**
* 是否需要过滤审核状态普通律所用户使用
*/
private Boolean noStatusFilter;
/**
* 当前用户ID用于SQL中的特殊过滤逻辑
*/
private Long currentUserId;
/**
* 年份
*/
private Integer year;
/**
* 季度
*/
private Integer quarter;
} }

15
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsUpdateForm.java

@ -20,9 +20,8 @@ import java.time.LocalDateTime;
public class ServiceApplicationsUpdateForm{ public class ServiceApplicationsUpdateForm{
@Schema(description = "申报ID", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "申报ID", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "申报ID 不能为空")
private Long applicationId; private Long applicationId;
private String applicationIds;
@Schema(description = "律所审核状态") @Schema(description = "律所审核状态")
private Integer firmAuditStatus; private Integer firmAuditStatus;
@Schema(description = "申报律师") @Schema(description = "申报律师")
@ -66,4 +65,16 @@ public class ServiceApplicationsUpdateForm{
@Schema(description = "附件id集合") @Schema(description = "附件id集合")
private String attachmentIds; private String attachmentIds;
@Schema(description = "协会审核状态")
private Integer associationAuditStatus;
@Schema(description = "协会审核意见")
private String associationAuditOpinion;
/**
* 职务id
*/
private Long positionId;
} }

17
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceApplicationsVO.java

@ -3,7 +3,10 @@ package net.lab1024.sa.admin.module.service.domain.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import lombok.Data; import lombok.Data;
import net.lab1024.sa.base.module.support.file.domain.entity.FileEntity;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -78,7 +81,7 @@ public class ServiceApplicationsVO {
private String associationAuditOpinion; private String associationAuditOpinion;
@Schema(description = "协会审核人") @Schema(description = "协会审核人")
private Integer associationAuditUser; private Long associationAuditUser;
@Schema(description = "协会审核时间") @Schema(description = "协会审核时间")
private LocalDateTime associationAuditTime; private LocalDateTime associationAuditTime;
@ -98,18 +101,22 @@ public class ServiceApplicationsVO {
@Schema(description = "职业证号") @Schema(description = "职业证号")
private String certificateNumber; private String certificateNumber;
@NotBlank(message = "活动类别 ")
private String activityCategory; private String activityCategory;
@NotBlank(message = "活动名称 ")
private String activityName; private String activityName;
@NotBlank(message = "活动类别id ")
private Long activityCategoryId; private Long activityCategoryId;
@NotBlank(message = "活动名称id ")
private Long activityNameId; private Long activityNameId;
@Schema(description = "附件id集合") @Schema(description = "附件id集合")
private String attachmentIds; private String attachmentIds;
@Schema(description = "附件地址集合")
private List<FileEntity> attachmentList;
/**
* 职务id
*/
private Long positionId;
private String positionName;
private String associationAuditUserName;
} }

35
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceReportStatisticsVO.java

@ -0,0 +1,35 @@
package net.lab1024.sa.admin.module.service.domain.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 服务上报统计VO
*
* @Author
* @Date 2026-01-11
* @Copyright
*/
@Data
public class ServiceReportStatisticsVO {
@Schema(description = "律所id")
private Long firmId;
@Schema(description = "律所名称")
private String firmName;
@Schema(description = "律师数量")
private Long lawyerCount;
@Schema(description = "上报数量")
private Long reportCount;
@Schema(description = "已审批")
private Long approvedCount;
@Schema(description = "未审批")
private Long pendingCount;
@Schema(description = "总服务时长")
private Double totalServiceDuration;
}

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

@ -16,19 +16,16 @@ import net.lab1024.sa.admin.module.service.domain.entity.ServiceApplicationsEnti
import net.lab1024.sa.admin.module.service.domain.form.*; import net.lab1024.sa.admin.module.service.domain.form.*;
import net.lab1024.sa.admin.module.service.domain.form.LawyerStatisticsQueryForm; import net.lab1024.sa.admin.module.service.domain.form.LawyerStatisticsQueryForm;
import net.lab1024.sa.admin.common.enums.DateTimeEnum; import net.lab1024.sa.admin.common.enums.DateTimeEnum;
import net.lab1024.sa.admin.module.service.domain.vo.ActivityCategoryConverter; import net.lab1024.sa.admin.module.service.domain.vo.*;
import net.lab1024.sa.admin.module.service.domain.vo.ActivityNameConverter;
import net.lab1024.sa.admin.module.service.domain.vo.EmployeeNameConverter;
import net.lab1024.sa.admin.module.service.domain.vo.OrganizationNameConverter;
import net.lab1024.sa.admin.module.service.domain.vo.LawyerStatisticsVO;
import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsTemplateVO;
import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsVO;
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEnum; import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEnum;
import net.lab1024.sa.admin.module.system.datascope.service.DataScopeViewService; import net.lab1024.sa.admin.module.system.datascope.service.DataScopeViewService;
import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEntity; import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEntity;
import net.lab1024.sa.admin.module.system.department.service.DepartmentService; import net.lab1024.sa.admin.module.system.department.service.DepartmentService;
import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity;
import net.lab1024.sa.admin.module.system.employee.service.EmployeeService; import net.lab1024.sa.admin.module.system.employee.service.EmployeeService;
import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee;
import net.lab1024.sa.admin.module.system.position.service.PositionService;
import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEntity;
import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO;
import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService; import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService;
import net.lab1024.sa.admin.module.system.role.service.RoleService; import net.lab1024.sa.admin.module.system.role.service.RoleService;
@ -36,9 +33,11 @@ import net.lab1024.sa.admin.util.AdminRequestUtil;
import net.lab1024.sa.admin.util.CellStyleStrategy; import net.lab1024.sa.admin.util.CellStyleStrategy;
import net.lab1024.sa.admin.util.DateTimeUtil; import net.lab1024.sa.admin.util.DateTimeUtil;
import net.lab1024.sa.admin.util.TimeVo; import net.lab1024.sa.admin.util.TimeVo;
import net.lab1024.sa.base.common.code.UserErrorCode;
import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.PageResult;
import net.lab1024.sa.base.common.domain.RequestUser; import net.lab1024.sa.base.common.domain.RequestUser;
import net.lab1024.sa.base.common.domain.ResponseDTO; import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.enumeration.UserTypeEnum;
import net.lab1024.sa.base.common.exception.BusinessException; import net.lab1024.sa.base.common.exception.BusinessException;
import net.lab1024.sa.base.common.util.SmartBeanUtil; import net.lab1024.sa.base.common.util.SmartBeanUtil;
import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.common.util.SmartPageUtil;
@ -58,6 +57,7 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -90,6 +90,37 @@ public class ServiceApplicationsService {
private DataScopeViewService dataScopeViewService; private DataScopeViewService dataScopeViewService;
@Resource @Resource
private RoleEmployeeService roleEmployeeService; private RoleEmployeeService roleEmployeeService;
@Resource
PositionService positionService;
//查看详情
public ServiceApplicationsVO queryDetail(Long applicationId) {
ServiceApplicationsVO serviceApplicationsVO = new ServiceApplicationsVO();
ServiceApplicationsEntity item = serviceApplicationsDao.selectById(applicationId);
SmartBeanUtil.copyProperties(item, serviceApplicationsVO);
if (item.getFirmId() != null) {
serviceApplicationsVO.setDepartmentName(departmentService.queryByFirmId(item.getFirmId()).getDepartmentName());
}
if (item.getUserId() != null){
serviceApplicationsVO.setUserName(employeeService.queryById(item.getUserId()).getActualName());
}
if (item.getFirmAuditUser() != null){
serviceApplicationsVO.setFirmAuditUserName(employeeService.queryById(item.getFirmAuditUser()).getActualName());
}
if (item.getActivityCategoryId() != null) {
serviceApplicationsVO.setActivityCategory(categoryService.queryById(item.getActivityCategoryId()).getCategoryName());
}
if (item.getActivityNameId() != null) {
serviceApplicationsVO.setActivityName(goodsService.queryById(item.getActivityNameId()).getGoodsName());
}
if (item.getPositionId() != null) {
serviceApplicationsVO.setPositionName(positionService.queryById(item.getPositionId()).getPositionName());
}
return serviceApplicationsVO;
}
/** /**
* 分页查询 * 分页查询
*/ */
@ -99,15 +130,77 @@ public class ServiceApplicationsService {
//根据用户角色的查询数据范围来查询数据 //根据用户角色的查询数据范围来查询数据
RequestUser requestUser = AdminRequestUtil.getRequestUser(); RequestUser requestUser = AdminRequestUtil.getRequestUser();
List<RoleVO> roleIdList = roleEmployeeService.getRoleIdList(requestUser.getUserId()); List<RoleVO> roleIdList = roleEmployeeService.getRoleIdList(requestUser.getUserId());
String roleCode = roleIdList.get(0).getRoleCode();
// 检查角色类型
boolean isAssociationRole = UserTypeEnum.CEO.getDesc().equals(roleCode);
boolean isFirmAdminRole = UserTypeEnum.CTO.getDesc().equals(roleCode); // 律所管理员
if (isAssociationRole) {
// 协会用户(CEO):可以看到所有律所提交的数据,但只显示associationAuditStatus为待审核(1)、通过(3)和拒绝(4)的数据和自己创建的数据
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);
// 设置只显示associationAuditStatus为待审核、通过、拒绝的数据
queryForm.setIncludeAssociationReviewed(true);
} else if (isFirmAdminRole) {
// 律所管理员(cto):能看到自己部门范围内的数据,但只显示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);
// 设置只查看firmAuditStatus为待审核、通过和拒绝的数据
queryForm.setIncludeFirmReviewed(true);
} else {
// 律所普通用户:只能看到自己提交的数据,包括所有firmAuditStatus状态
Integer oneByRoleId = dataScopeViewService.getOneByRoleId(roleIdList.get(0).getRoleId()); Integer oneByRoleId = dataScopeViewService.getOneByRoleId(roleIdList.get(0).getRoleId());
//获取权限范围
if (DataScopeViewTypeEnum.ME.getValue().equals(oneByRoleId)) { if (DataScopeViewTypeEnum.ME.getValue().equals(oneByRoleId)) {
longs = dataScopeViewService.getCanViewEmployeeId(DataScopeViewTypeEnum.ME, requestUser.getUserId()); longs = dataScopeViewService.getCanViewEmployeeId(DataScopeViewTypeEnum.ME, requestUser.getUserId());
} else if (DataScopeViewTypeEnum.DEPARTMENT.getValue().equals(oneByRoleId)) { } else if (DataScopeViewTypeEnum.DEPARTMENT.getValue().equals(oneByRoleId)) {
longs = dataScopeViewService.getCanViewEmployeeId(DataScopeViewTypeEnum.DEPARTMENT, requestUser.getUserId()); longs = dataScopeViewService.getCanViewEmployeeId(DataScopeViewTypeEnum.DEPARTMENT, requestUser.getUserId());
}
// 确保普通用户至少能看到自己的数据,如果longs为空或不包含当前用户ID,则添加当前用户ID
if (longs == null) {
longs = new ArrayList<>();
}
if (!longs.contains(requestUser.getUserId())) {
longs.remove(requestUser.getUserId());
} }
queryForm.setEmployeeIdList(longs); queryForm.setEmployeeIdList(longs);
// 普通用户不需要审核状态过滤,可以看到自己所有状态的数据
queryForm.setNoStatusFilter(true);
}
queryForm.setCurrentUserId(requestUser.getUserId()); // 传递当前用户ID用于SQL中的特殊过滤
List<ServiceApplicationsVO> list = serviceApplicationsDao.queryPage(page, queryForm); List<ServiceApplicationsVO> list = serviceApplicationsDao.queryPage(page, queryForm);
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
//翻译单位名称和用户名称 //翻译单位名称和用户名称
@ -119,7 +212,7 @@ public class ServiceApplicationsService {
item.setUserName(employeeService.queryById(item.getUserId()).getActualName()); item.setUserName(employeeService.queryById(item.getUserId()).getActualName());
} }
if (item.getFirmAuditUser() != null){ if (item.getFirmAuditUser() != null){
item.setFirmAuditUserName(employeeService.queryById(item.getUserId()).getActualName()); item.setFirmAuditUserName(employeeService.queryById(item.getFirmAuditUser()).getActualName());
} }
if (item.getActivityCategoryId() != null) { if (item.getActivityCategoryId() != null) {
item.setActivityCategory(categoryService.queryById(item.getActivityCategoryId()).getCategoryName()); item.setActivityCategory(categoryService.queryById(item.getActivityCategoryId()).getCategoryName());
@ -127,6 +220,13 @@ public class ServiceApplicationsService {
if (item.getActivityNameId() != null) { if (item.getActivityNameId() != null) {
item.setActivityName(goodsService.queryById(item.getActivityNameId()).getGoodsName()); item.setActivityName(goodsService.queryById(item.getActivityNameId()).getGoodsName());
} }
if (item.getPositionId() != null) {
item.setPositionName(positionService.queryById(item.getPositionId()).getPositionName());
}
//协会审核人
if (item.getAssociationAuditUser() != null) {
item.setAssociationAuditUserName(employeeService.queryById(item.getAssociationAuditUser()).getActualName());
}
}); });
} }
return SmartPageUtil.convert2PageResult(page, list); return SmartPageUtil.convert2PageResult(page, list);
@ -160,9 +260,27 @@ public class ServiceApplicationsService {
if (null == applicationId){ if (null == applicationId){
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(applicationId); ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(applicationId);
// 检查当前用户角色是否为CEO
RequestUser requestUser = AdminRequestUtil.getRequestUser();
List<RoleVO> roles = roleEmployeeService.getRoleIdList(requestUser.getUserId());
if (!roles.isEmpty()) {
String roleCode = roles.get(0).getRoleCode();
// 如果是CEO角色提交申报,默认通过律所审核和协会审核
if (UserTypeEnum.CEO.getDesc().equals(roleCode)) {
serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.PASS.getValue());
serviceApplicationsEntity.setFirmAuditUser(requestUser.getUserId());
serviceApplicationsEntity.setFirmAuditTime(LocalDateTime.now());
serviceApplicationsEntity.setAssociationAuditStatus(ReviewEnum.PASS.getValue());
serviceApplicationsEntity.setAssociationAuditUser(requestUser.getUserId());
serviceApplicationsEntity.setAssociationAuditTime(LocalDateTime.now());
}
}else {
serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.APPROVAL.getValue()); serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.APPROVAL.getValue());
serviceApplicationsEntity.setReportTime(LocalDateTime.now()); serviceApplicationsEntity.setReportTime(LocalDateTime.now());
}
serviceApplicationsDao.updateById(serviceApplicationsEntity); serviceApplicationsDao.updateById(serviceApplicationsEntity);
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
@ -361,6 +479,11 @@ public class ServiceApplicationsService {
} }
} }
/**
* 批量提交
* @param idList
* @return
*/
public ResponseDTO<String> batchSubmit(List<Long> idList) { public ResponseDTO<String> batchSubmit(List<Long> idList) {
if (CollectionUtils.isEmpty(idList)){ if (CollectionUtils.isEmpty(idList)){
return ResponseDTO.ok(); return ResponseDTO.ok();
@ -370,10 +493,62 @@ public class ServiceApplicationsService {
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
/**
* 批量上报
* @param idList
* @return
*/
public ResponseDTO<String> batchSubmitAsFirm(List<Long> idList) {
if (CollectionUtils.isEmpty(idList)){
return ResponseDTO.ok();
}
RequestUser requestUser = AdminRequestUtil.getRequestUser();
// 查询用户角色是律所管理员,则修改律所的审核状态
// 如果是ceo则修改协会审核状态
List<RoleVO> roles = roleEmployeeService.getRoleIdList(requestUser.getUserId());
if (roles.isEmpty()) {
return ResponseDTO.error(UserErrorCode.NO_PERMISSION);
}
String roleCode = roles.get(0).getRoleCode();
// 设置审核时间
String reviewTime = LocalDateTime.now().toString();
// 根据不同角色执行不同的提交操作
if (UserTypeEnum.CEO.getDesc().equals(roleCode)) {
// CEO角色:修改协会审核状态
serviceApplicationsDao.batchSubmitAsAssociation(idList, ReviewEnum.PASS.getValue(), requestUser.getUserId(), reviewTime);
} else {
// 其他角色(如律所管理员):修改律所审核状态
serviceApplicationsDao.batchSubmitAsFirm(idList, ReviewEnum.REVIEW.getValue());
}
return ResponseDTO.ok();
}
public ResponseDTO<String> addSubmit(@Valid ServiceApplicationsAddForm addForm) { public ResponseDTO<String> addSubmit(@Valid ServiceApplicationsAddForm addForm) {
ServiceApplicationsEntity serviceApplicationsEntity = SmartBeanUtil.copy(addForm, ServiceApplicationsEntity.class); ServiceApplicationsEntity serviceApplicationsEntity = SmartBeanUtil.copy(addForm, ServiceApplicationsEntity.class);
serviceApplicationsEntity.setRecordStatus(ReviewEnum.APPROVAL.getValue()); serviceApplicationsEntity.setRecordStatus(ReviewEnum.APPROVAL.getValue());
serviceApplicationsEntity.setReportTime(LocalDateTime.now()); serviceApplicationsEntity.setReportTime(LocalDateTime.now());
// 检查当前用户角色是否为CEO
RequestUser requestUser = AdminRequestUtil.getRequestUser();
List<RoleVO> roles = roleEmployeeService.getRoleIdList(requestUser.getUserId());
if (!roles.isEmpty()) {
String roleCode = roles.get(0).getRoleCode();
// 如果是CEO角色创建申报,默认通过律所审核和协会审核
if (UserTypeEnum.CEO.getDesc().equals(roleCode)) {
serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.PASS.getValue());
serviceApplicationsEntity.setFirmAuditUser(requestUser.getUserId());
serviceApplicationsEntity.setFirmAuditTime(LocalDateTime.now());
serviceApplicationsEntity.setAssociationAuditStatus(ReviewEnum.PASS.getValue());
serviceApplicationsEntity.setAssociationAuditUser(requestUser.getUserId());
serviceApplicationsEntity.setAssociationAuditTime(LocalDateTime.now());
}
}
if (null == addForm.getApplicationId()){ if (null == addForm.getApplicationId()){
serviceApplicationsDao.insert(serviceApplicationsEntity); serviceApplicationsDao.insert(serviceApplicationsEntity);
}else { }else {
@ -384,11 +559,43 @@ public class ServiceApplicationsService {
} }
public ResponseDTO<String> review(@Valid ServiceApplicationsUpdateForm updateForm) { public ResponseDTO<String> review(@Valid ServiceApplicationsUpdateForm updateForm) {
RequestUser requestUser = AdminRequestUtil.getRequestUser(); RequestEmployee requestUser = AdminRequestUtil.getRequestUser();
// 查询用户角色是律所管理员,则修改律所的审核状态
// 如果是ceo则修改协会审核状态
List<RoleVO> roles = roleEmployeeService.getRoleIdList(requestUser.getEmployeeId());
if (roles.isEmpty()) {
return ResponseDTO.error(UserErrorCode.NO_PERMISSION);
}
String roleCode = roles.get(0).getRoleCode();
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(updateForm.getApplicationId()); ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(updateForm.getApplicationId());
// 根据不同角色执行不同的审核操作
if (UserTypeEnum.CEO.getDesc().equals(roleCode)) {
//如果是CEO自己创建的数据
if (serviceApplicationsEntity.getUserId().equals(requestUser.getEmployeeId())) {
// 修改所有状态审核状态
serviceApplicationsEntity.setAssociationAuditStatus(updateForm.getAssociationAuditStatus());
serviceApplicationsEntity.setAssociationAuditUser(requestUser.getEmployeeId());
serviceApplicationsEntity.setAssociationAuditTime(LocalDateTime.now());
serviceApplicationsEntity.setAssociationAuditOpinion(updateForm.getAssociationAuditOpinion());
serviceApplicationsEntity.setFirmAuditStatus(updateForm.getAssociationAuditStatus());
serviceApplicationsEntity.setFirmAuditUser(requestUser.getEmployeeId());
serviceApplicationsEntity.setFirmAuditTime(LocalDateTime.now());
}else {
// CEO角色:修改协会审核状态
serviceApplicationsEntity.setAssociationAuditStatus(updateForm.getAssociationAuditStatus());
serviceApplicationsEntity.setAssociationAuditUser(requestUser.getEmployeeId());
serviceApplicationsEntity.setAssociationAuditTime(LocalDateTime.now());
serviceApplicationsEntity.setAssociationAuditOpinion(updateForm.getAssociationAuditOpinion());
}
} else {
// 其他角色(如律所管理员):修改律所审核状态
serviceApplicationsEntity.setFirmAuditStatus(updateForm.getFirmAuditStatus()); serviceApplicationsEntity.setFirmAuditStatus(updateForm.getFirmAuditStatus());
serviceApplicationsEntity.setFirmAuditUser(requestUser.getUserId()); serviceApplicationsEntity.setFirmAuditUser(requestUser.getEmployeeId());
serviceApplicationsEntity.setFirmAuditTime(LocalDateTime.now()); serviceApplicationsEntity.setFirmAuditTime(LocalDateTime.now());
}
serviceApplicationsDao.updateById(serviceApplicationsEntity); serviceApplicationsDao.updateById(serviceApplicationsEntity);
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
@ -450,6 +657,40 @@ public class ServiceApplicationsService {
exportExcel(response, "律所统计信息.xlsx", "律所统计信息", ServiceDepartmentImportForm.class, lawyerStatisticsWithParamYear); exportExcel(response, "律所统计信息.xlsx", "律所统计信息", ServiceDepartmentImportForm.class, lawyerStatisticsWithParamYear);
} }
@Transactional
public ResponseDTO<String> batchReview(@Valid ServiceApplicationsUpdateForm updateForm) {
RequestUser requestUser = AdminRequestUtil.getRequestUser();
// 查询用户角色是律所管理员,则修改律所的审核状态
// 如果是ceo则修改协会审核状态
List<RoleVO> roles = roleEmployeeService.getRoleIdList(requestUser.getUserId());
if (roles.isEmpty()) {
return ResponseDTO.error(UserErrorCode.NO_PERMISSION);
}
String roleCode = roles.get(0).getRoleCode();
String applicationIds = updateForm.getApplicationIds();
if (applicationIds == null || applicationIds.trim().isEmpty()) {
return ResponseDTO.ok();
}
String[] fileKeyArray = applicationIds.split(",");
List<String> fileKeyList = Arrays.asList(fileKeyArray);
// 设置审核时间
String reviewTime = LocalDateTime.now().toString();
// 根据不同角色执行不同的审核操作
if (UserTypeEnum.CEO.getDesc().equals(roleCode)) {
// CEO角色:修改协会审核状态
serviceApplicationsDao.batchReviewAsAssociation(fileKeyList, ReviewEnum.PASS.getValue(), requestUser.getUserId(), reviewTime);
} else {
// 其他角色(如律所管理员):修改律所审核状态
serviceApplicationsDao.batchReviewAsFirm(fileKeyList, ReviewEnum.PASS.getValue(), requestUser.getUserId(), reviewTime);
}
return ResponseDTO.ok();
}
/** /**
* Excel下拉列表处理器 * Excel下拉列表处理器
*/ */
@ -870,4 +1111,14 @@ public class ServiceApplicationsService {
throw new BusinessException("Excel导出失败:" + e.getMessage()); throw new BusinessException("Excel导出失败:" + e.getMessage());
} }
} }
/**
* 服务上报统计
* @return
*/
public PageResult<ServiceReportStatisticsVO> getServiceReportStatistics(ServiceApplicationsQueryForm queryForm) {
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
List<ServiceReportStatisticsVO> list = serviceApplicationsDao.getServiceReportStatistics(page, queryForm);
return SmartPageUtil.convert2PageResult(page, list);
}
} }

4
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/position/service/PositionService.java

@ -102,4 +102,8 @@ public class PositionService {
List<PositionVO> list = positionDao.queryList(Boolean.FALSE); List<PositionVO> list = positionDao.queryList(Boolean.FALSE);
return list; return list;
} }
public PositionEntity queryById(Long positionId) {
return positionDao.selectById(positionId);
}
} }

4
yun-base/src/main/java/net/lab1024/sa/base/common/enumeration/UserTypeEnum.java

@ -4,7 +4,9 @@ package net.lab1024.sa.base.common.enumeration;
* 用户类型 * 用户类型
*/ */
public enum UserTypeEnum implements BaseEnum { public enum UserTypeEnum implements BaseEnum {
CEO(2, "ceo"),
CTO(3, "cto"),
USER(4, "user"),
/** /**
* 管理端 员工用户 * 管理端 员工用户
*/ */

Loading…
Cancel
Save